- 主题:HIMEM.SYS 也是有限制的
API是我想当然了,
不过65M是实现限制不是API限制。
65535个句柄*65535个unit*1k的unit大小 = 4T呢
【 在 hgoldfish 的大作中提到: 】
: 啥新的 API,哪里有文档呢?给个提示词我查查?
: 那我理解的旧的 XMS API 只能管理到 65MB 内存没错吧?
: edit: 从 himemsx.sys 的 github 项目里面看到了。
: ...................
--
修改:kirbyzhou FROM 114.247.175.*
FROM 114.247.175.*
smartdrv呀,不依赖emm386的.
然后国产的一堆中文系统,字库加载到xms,也是不依赖ems的
【 在 mephistoxp 的大作中提到: 】
: 可以完全不加载微软家的himem和emm386,只用QEMM一个设备驱动就可以全搞定……
: ps:DOS下面,有哪些常见程序(所以排除windows3.x)是单纯调用XMS,而不用EMS的呢?
--
修改:kirbyzhou FROM 114.247.175.*
FROM 114.247.175.*
你为啥乘1k啊,要乘65535k
Allocate Extended Memory Block (Function 09h):
----------------------------------------------
ARGS: AH = 09h
DX = Amount of extended memory being requested
in K-bytes
RETS: AX = 0001h if the block is allocated,
0000h otherwise
DX = 16-bit handle to the allocated block
【 在 hgoldfish 的大作中提到: 】
: 63+1k * 1k = 63+1 MB,
: 怎么算出 4T ?
--
修改:kirbyzhou FROM 114.247.175.*
FROM 114.247.175.*
Query Free Extended Memory (Function 08h):
------------------------------------------
ARGS: AH = 08h
RETS: AX = Size of the largest free extended memory block
in K-bytes
DX = Total amount of free extended memory in K-bytes
这个里面有点限制是最多告诉你有65535k可用内存。
但是API上可以实际分出来65535个65535k。
【 在 hgoldfish 的大作中提到: 】
: 63+1k * 1k = 63+1 MB,
: 怎么算出 4T ?
--
FROM 114.247.175.*
1k1个句柄那用起来得多麻烦。
EMS还16k页呢。
【 在 hgoldfish 的大作中提到: 】
: 哦哦哦。原来如此。我一直以为只能以 1KB 为单位。
--
FROM 124.64.129.*
当时的硬件价格决定了2048就够用。
可以保留点bit以备干别的用途。
比如区分内存速度,持久性之类的标志位。
【 在 mephistoxp 的大作中提到: 】
: EMS为什么只有2048个16KB内存页呢?一个word如果有16bit的话,EMS竟然只用了其中的11bit来表示页数量~
--
FROM 114.247.175.*
新的都是himem就行了,通过xms api分配内存并获取物理地址,然后通过dos4gw dpms之类的dos extender进保护模式直接干。
【 在 tom6bj 的大作中提到: 】
: 新一点的都只需要xms不需要ems吧, 印象中没有ems不给运行的就一个, 光荣三国志4代
: 可以完全不加载微软家的himem和emm386,只用QEMM一个设备驱动就可以全搞定……
: ps:DOS下面,有哪些常见程序(所以排除windows3.x)是单纯调用XMS,而不用EMS的呢?
: ...................
--
FROM 114.247.175.*
那会又不是每个用户都有Windows
而且Windows写程序可比dos4gw+遗产代码麻烦多了
【 在 hgoldfish 的大作中提到: 】
: 都写 dos4gw 了,还不如直接 windows 算了。
--
FROM 114.247.175.*