我想在汇编8086中为MS-DOS制作音频驱动程序,将游戏和其他软件中的Tandy声音发送到非Tandy 1000计算机(没有Tandy 1000声音芯片的计算机)上的PC扬声器。
发布于 2019-06-25 02:26:02
这有点难以实现。Tandy声卡通过将数据写入端口0xc0
来工作。为了模拟声卡,您需要截获对该端口的写入,并使用软件处理它们。这在8086上是不可能的,对于80286上的实模式软件来说也是不可能的,所以你至少需要80386才能工作。
关键思想是将您的CPU踢入Virtual 8086模式,然后为其提供IO权限掩码,除了端口0xc0-0xc7之外,任何地方的IO权限掩码都为0。这会导致除您尝试访问Tandy声卡时以外的所有硬件访问都能正常工作。在这种情况下,您将获得一个VM出口,您可以使用它来模拟硬件。
对于this project中的LPT port adlib卡,也做了类似的事情。您应该能够根据您的目的调整代码。
请注意,这使得如何实际模拟声卡的声音的问题完全没有解决。我帮不了你。Tandy使用了SN76489芯片来产生声音,所以我猜,看看以前是否有人试图效仿它。
https://stackoverflow.com/questions/56741884
复制相似问题