C#寫的8086老電腦模擬器 - 模擬器

Table of Contents


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
eva19452002: 第一次見到x86模擬器 09/16 10:48
kagemusha: dosbox很常見啊 09/16 19:37
rockmanx52: 我說啊 VirtualBox、VMware跟PD都是有名的X86模擬器啊 09/17 15:26
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
playerlin: DOSBox官方定調只模擬遊戲需要的功能,應用程式不支援 09/17 18:22
playerlin: (所以官版不支援Windows系統,只能靠非官方版) 09/17 18:22
playerlin: 雖然還是模擬器,可以跑遊戲和一些DOS程式,但是如果是 09/17 18:24
playerlin: 需要特殊IO控制那種的應用就不行了。 09/17 18:24
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
dave01: 這晶片其實生命力很強 在單晶片市場仍有相關產品 09/19 04:46
conpo: 感謝分享 09/19 13:56
Jedidiah: 同為C#人推,不過不同領域就是 XD 09/19 15:46
jizang: XP上面會有問題,Win10(x64)正常~ 09/20 00:26
AllanCat: 推 另外最近剛好有人打算要開發16bit window emu 09/20 11:25
AllanCat: Win3mu https://goo.gl/gZe5yf 概念還滿有趣的 09/20 11:25
這作法也是很有趣概念阿 想像成類似WINE但卻擁有自己的模擬CPU
老實說還真希望作者能做得更廣 讓dos遊戲之類的也直接相容
※ 編輯: erspicu (60.248.56.181), 09/20/2016 14:50:38
playerlin: 我一直在想何時才有Win16模擬器,跑Win95的遊戲就不需 09/20 18:54
playerlin: 要虛擬機... 09/20 18:54
playerlin: 另外文章看一下,作者應該對真實DOS的興趣應該不大。 09/20 18:55
playerlin: 他的發想只是如果想跑Windows 3(win16)的遊戲程式就得 09/20 18:56
playerlin: 用虛擬機裝32位系統才行,然後想到自己寫一個能跑Win16 09/20 18:57
playerlin: 的模擬器這樣(我相信他可能也覺得有DOSBox了) 09/20 18:57
第二集出刊 竟然也是C#寫的 http://tinyurl.com/h4he4or
※ 編輯: erspicu (61.70.88.120), 09/21/2016 22:09:31
playerlin: 很明確的提到他用C#的主因:更方便調用Windows APIs... 09/21 22:46
playerlin: 而且不意外的,他只實作遊戲需要的APIs,其他的就不管 09/21 22:46
playerlin: 這作者似乎很喜歡用C#的樣子,介紹了他沒放出來的Z-80 09/21 22:47
playerlin: based遊戲機的模擬器。 09/21 22:47
jizang: Part-II 最有趣的段落應該是講 Debuger 那段了~ 09/22 00:32
playerlin: http://tinyurl.com/zzspvc7 第三篇,講CPU的模擬... 09/27 14:31
playerlin: debugging CPU bugs看起來很麻煩。 :3 09/27 14:33

All Comments

Tracy avatarTracy2016-09-20
第一次見到x86模擬器
Lucy avatarLucy2016-09-22
dosbox很常見啊
Todd Johnson avatarTodd Johnson2016-09-25
我說啊 VirtualBox、VMware跟PD都是有名的X86模擬器啊
Agnes avatarAgnes2016-09-25
VirtualBox、VMware不算模擬器....
Ingrid avatarIngrid2016-09-29
DOSBox官方定調只模擬遊戲需要的功能,應用程式不支援
(所以官版不支援Windows系統,只能靠非官方版)
Lydia avatarLydia2016-10-04
雖然還是模擬器,可以跑遊戲和一些DOS程式,但是如果是
需要特殊IO控制那種的應用就不行了。
Doris avatarDoris2016-10-06
VisualStudio 是哪個版本的?我用2010可編譯但不能執行!
Megan avatarMegan2016-10-10
這晶片其實生命力很強 在單晶片市場仍有相關產品
Poppy avatarPoppy2016-10-14
感謝分享
Olivia avatarOlivia2016-10-18
同為C#人推,不過不同領域就是 XD
Isabella avatarIsabella2016-10-22
XP上面會有問題,Win10(x64)正常~
Quanna avatarQuanna2016-10-24
推 另外最近剛好有人打算要開發16bit window emu
Win3mu https://goo.gl/gZe5yf 概念還滿有趣的
Daph Bay avatarDaph Bay2016-10-27
我一直在想何時才有Win16模擬器,跑Win95的遊戲就不需
要虛擬機...
Xanthe avatarXanthe2016-10-31
另外文章看一下,作者應該對真實DOS的興趣應該不大。
Dorothy avatarDorothy2016-11-02
他的發想只是如果想跑Windows 3(win16)的遊戲程式就得
Yedda avatarYedda2016-11-07
用虛擬機裝32位系統才行,然後想到自己寫一個能跑Win16
的模擬器這樣(我相信他可能也覺得有DOSBox了)
Hazel avatarHazel2016-11-10
很明確的提到他用C#的主因:更方便調用Windows APIs...
而且不意外的,他只實作遊戲需要的APIs,其他的就不管
Hardy avatarHardy2016-11-13
這作者似乎很喜歡用C#的樣子,介紹了他沒放出來的Z-80
based遊戲機的模擬器。
Charlotte avatarCharlotte2016-11-15
Part-II 最有趣的段落應該是講 Debuger 那段了~
Daph Bay avatarDaph Bay2016-11-17
http://tinyurl.com/zzspvc7 第三篇,講CPU的模擬...
Elma avatarElma2016-11-20
debugging CPU bugs看起來很麻煩。 :3