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

Yedda avatar
By Yedda
at 2016-09-16T03:17

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

陸行鳥賽車問題QQ

Gary avatar
By Gary
at 2016-09-16T01:43
各位大大好, 小弟最近抓了PS模擬器想重溫陸行鳥賽車這個經典的遊戲。 最近才發現有以前都不知道的鏡像模式。 只是爬文後說要在GP模式裡面拿到皇冠(不確定到底是銀皇冠還是金黃冠) 不知道為何我的模式都沒有皇冠QQ 到底要怎樣做才能開啟巴哈姆特難度呢Orz 請大家幫我解答一下吧 拜託各位了... ...

CNEX主題紀錄片影展《我在快打求旋風》

Dorothy avatar
By Dorothy
at 2016-09-15T13:10
※ [本文轉錄自 streetfight 看板 #1NqPTNAa ] 作者: nicolekao163 (可樂白) 看板: streetfight 標題: [情報] CNEX主題紀錄片影展《我在快打求旋風》 時間: Fri Sep 9 00:52:37 2016 2016 CNEX主題紀錄片影展《我 ...

大神-02-大神降臨

Jessica avatar
By Jessica
at 2016-09-14T23:16
最近滿多煩的事,所以做了很多雜事散心(詳見FB)XDDD 進度有點緩慢,有在等的人抱歉了。 本作由於宣傳標語是「この世の命が、蘇る/讓世上的生命重獲甦醒」 因此天照不管在奔馳/跳躍/水上移動、打倒敵人等狀況,都會出現許多花草樹木 象徵著,順著太陽的足跡,生命跟著甦醒的含意,喜歡大自然的人絕對要來玩這款! ══ ...

A BATHING APE × CAPCOM 聯名服飾系列

Franklin avatar
By Franklin
at 2016-09-13T22:35
A BATHING APE × CAPCOM 聯名服飾系列 日本知名的潮流品牌「A Bathing Ape」宣布與日本知名電玩公司「CAPCOM」(卡普空)聯 名合作,將推出一系列以CAPCOM 旗下經典遊戲所設計的服飾,將於9月15日的東京電玩展 2016搶先開賣,並於9月17日正式開賣。 https: ...

元祖太空戰鬥機(DARIUS) 登上PS4平台

Thomas avatar
By Thomas
at 2016-09-13T00:32
標題不夠寬阿~ http://dengekionline.com/elem/000/001/341/1341872/ 一句話 那個三銀幕的 第一代 太空戰鬥機 DARIUS 登上PS4的and#34;アーケードアーカイブスand#34;了 售價823日圓含稅~ 看了半個月好像都沒人貼 來補一下 內容除了 ...