Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
去年关闭。
Improve this question
我想在程序集8086中制造MS-DOS的音频驱动程序,该驱动程序会将游戏和其他软件中的Tandy声音发送到非Tandy 1000计算机(没有Tandy 1000声音芯片的计算机)上的PC扬声器。
想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
去年关闭。
Improve this question
我想在程序集8086中制造MS-DOS的音频驱动程序,该驱动程序会将游戏和其他软件中的Tandy声音发送到非Tandy 1000计算机(没有Tandy 1000声音芯片的计算机)上的PC扬声器。
最佳答案
这有点难以实现。 Tandy声卡通过将数据写入端口0xc0
来工作。为了模拟声卡,您需要截取对该端口的写入并使用您的软件进行处理。在8086上这是不可能的,而对于80286上的实模式软件来说,这是不可能的,因此您至少需要80386才能运行。
关键思想是使您的CPU进入虚拟8086模式,然后为其提供IO许可权掩码,除端口0xc0–0xc7之外,该许可权掩码在所有地方均为0。这将导致所有硬件访问均正常进行,除非您尝试访问Tandy声卡。在这种情况下,您将获得一个VM出口,可用于模拟硬件。
对this project中的LPT端口adlib卡也做了类似的事情。您应该能够根据自己的目的修改代码。
请注意,这给如何完全模拟声卡的声音留下了疑问。我不能帮你。 Tandy使用SN76489芯片生成声音,所以我猜想看看是否有人尝试过模仿它。
关于assembly - 如何制作MS-DOS的音频驱动程序? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56741884/
10-13 03:44