小编jac*_*cks的帖子

如何在DOS扩展器或DPMI环境下进行DMA传输?

程序如何在DOS扩展程序+ DPMI环境下运行时使用DMA传输?

我的意思是我们如何分配和获取分配的dma缓冲区的物理地址,以便将该物理地址提供给DMA控制器或PCI总线主设备.

有两种可能性:

DOS Extender或DPMI服务器/主机支持虚拟内存.例如铜锣湾.

DOS Extender或DPMI服务器/主机不支持虚拟内存,但启用了分页.例如DOS32a.

我正在使用Open Watcom C编译器.

运行时环境是:

FreeDOS + XMS(无EMS/EMM386)+ DOS扩展器(DOS32a)

对于DJGPP,解决方案就在这里

但最后提到的解决方案即通过XMS,也可以使用DOS32a吗?

DOS32a文档说在切换到保护模式之前,它会分配所有可用的扩展内存,然后我们的程序可以通过DPMI函数501h分配该内存.

注意:dma缓冲区可能是1MB左右,所以我不能使用常规内存.

x86 assembly dos watcom

3
推荐指数
1
解决办法
1662
查看次数

标签 统计

assembly ×1

dos ×1

watcom ×1

x86 ×1