作者erspicu (.)
看板Emulator
标题[闲聊] C#写的8086老电脑模拟器
时间Fri Sep 16 03:17:45 2016
https://dl.dropboxusercontent.com/u/61164954/project/Apr8086/index.htm
by c#
目前发布的仅只是概念雏形验证版本 code也还没算优化好和整理好(有些写法日後会改写)
除了可以show一下demo 跑到BIOS booting check ram阶段外(然後就停止掉)
没其他用处 主要还是因为缺漏了周边控制io的功能
目前周边控制io的回传内容 是藉由fakepc以执行步骤和io回传值来记录
so....会看到 io_step.dat这档案,就是记录着执行到几步骤时 io 回传值
後续看看有没有动力.耐性和能力去补足这块 总之还缺很多东西
光cpu只是模拟器其中一部分而已 这booting画面可以参考底下
https://www.vogons.org/viewtopic.php?f=25&t=45125
https://www.youtube.com/watch?v=M4zOXwYTMrM
http://www.phatcode.net/downloads.php?id=101
总之是很古老的产物就是....
ps.
8086 可以跑 dos win3.0
80286 可以跑到 win3.1 (定址能力提升且开始支援保护模式)
80386 可以跑到 win95 intel第一颗32位元CPU 定址能力再提升,且开始有32bits暂存器
虽然8086已经是古早时代产物 1978年发售 连我都还没出生....
拿来当最基础的学习对项还算适合 但这东西比起它的上一代 8008
CPU模拟来又复杂很多了....
最主要是X86复杂的定址法 节区观念 还有一些prefix指令
一些细节没注意 到处都是地雷.. 但比较难的 我觉得还是io周边学习
--
※ 编辑: erspicu (61.70.88.120), 09/16/2016 03:22:42
1F:→ eva19452002: 第一次见到x86模拟器 09/16 10:48
2F:推 kagemusha: dosbox很常见啊 09/16 19:37
3F:推 rockmanx52: 我说啊 VirtualBox、VMware跟PD都是有名的X86模拟器啊 09/17 15:26
4F:推 kagemusha: VirtualBox、VMware不算模拟器.... 09/17 15:31
这边补充说明一下 有说错的地方 请指正
不论是 dosbox qemu bochs VMware VirtualBox 最终的应用目的
都是为了要建构独立的隔绝环境 但做法各自不太相同 如果以广义概念来看
都算是模拟一个独立的环境 但如果就做法细节去看 用技术讨论的话
VirtualBox VMware 和最近火红的docker都不太算是模拟器
(但它的确模拟了一个独立环境)
最主要是因为里面的运作并没有像是模拟器指令再经过一层模拟运算
是直接用实体机器的cpu直接跑 效能理论上会比真正的模拟器好很多
而dosbox算是模拟器 但事它模拟的是能够与dos相容的作业环境
以dos相关的中断服务实作达成dos相关程式相容
而bochs则是完整电脑环境的模拟器
https://www.dosbox.com/links.php
Bochs emulates a full x86 based pc. Unlike DOSBox that tries
to mainly emulate dos programs.
qemu的话也是模拟器,而且模拟x86只是它功能的一个部份,包括其他cpu的电脑环境,
也是qemu功能版图,不过qemu使用到的特殊 dynamic binary translation 技术,
理论上会比直译式模拟器架构好.
其他尚待补充...另外虽然docker很红,但尚没有实际使用经验,
看一些文章描述,docker比较像是独立的环境容器,比起VirtualBox VMware更简易使用,
但跟OS层绑得也比较多一点,不知道有没有理解错误就是.
※ 编辑: erspicu (61.70.88.120), 09/17/2016 18:00:14
5F:→ playerlin: DOSBox官方定调只模拟游戏需要的功能,应用程式不支援 09/17 18:22
6F:→ playerlin: (所以官版不支援Windows系统,只能靠非官方版) 09/17 18:22
7F:→ playerlin: 虽然还是模拟器,可以跑游戏和一些DOS程式,但是如果是 09/17 18:24
8F:→ playerlin: 需要特殊IO控制那种的应用就不行了。 09/17 18:24
9F:推 jizang: VisualStudio 是哪个版本的?我用2010可编译但不能执行! 09/18 22:18
https://www.youtube.com/watch?v=88jwlKHlcuk
我也是2010 没问题...但这还只是DMEO验证展示 不如等以後更完善後再看看吧?
※ 编辑: erspicu (61.70.88.120), 09/18/2016 23:36:06
10F:→ dave01: 这晶片其实生命力很强 在单晶片市场仍有相关产品 09/19 04:46
11F:推 conpo: 感谢分享 09/19 13:56
12F:推 Jedidiah: 同为C#人推,不过不同领域就是 XD 09/19 15:46
13F:推 jizang: XP上面会有问题,Win10(x64)正常~ 09/20 00:26
14F:推 AllanCat: 推 另外最近刚好有人打算要开发16bit window emu 09/20 11:25
这作法也是很有趣概念阿 想像成类似WINE但却拥有自己的模拟CPU
老实说还真希望作者能做得更广 让dos游戏之类的也直接相容
※ 编辑: erspicu (60.248.56.181), 09/20/2016 14:50:38
16F:推 playerlin: 我一直在想何时才有Win16模拟器,跑Win95的游戏就不需 09/20 18:54
17F:→ playerlin: 要虚拟机... 09/20 18:54
18F:→ playerlin: 另外文章看一下,作者应该对真实DOS的兴趣应该不大。 09/20 18:55
19F:→ playerlin: 他的发想只是如果想跑Windows 3(win16)的游戏程式就得 09/20 18:56
20F:→ playerlin: 用虚拟机装32位系统才行,然後想到自己写一个能跑Win16 09/20 18:57
21F:→ playerlin: 的模拟器这样(我相信他可能也觉得有DOSBox了) 09/20 18:57
第二集出刊 竟然也是C#写的
http://tinyurl.com/h4he4or
※ 编辑: erspicu (61.70.88.120), 09/21/2016 22:09:31
22F:推 playerlin: 很明确的提到他用C#的主因:更方便调用Windows APIs... 09/21 22:46
23F:→ playerlin: 而且不意外的,他只实作游戏需要的APIs,其他的就不管 09/21 22:46
24F:→ playerlin: 这作者似乎很喜欢用C#的样子,介绍了他没放出来的Z-80 09/21 22:47
25F:→ playerlin: based游戏机的模拟器。 09/21 22:47
26F:推 jizang: Part-II 最有趣的段落应该是讲 Debuger 那段了~ 09/22 00:32
28F:→ playerlin: debugging CPU bugs看起来很麻烦。 :3 09/27 14:33