Re: [問題] 想請問各位大大有關寫作業系統@@>
※ 引述《king19880326 (OK的啦~我都可以接受)》之銘言:
: 看了"自己動手寫作業系統"一書
: 他提到要在virtual PC上灌 實模式的DOS
: 不過現在已經找不到那樣的程式了OTZ
我是從 http://www.cn-dos.net/newdos/doswarea.htm
抓了「MS-DOS 7.10 完整安裝光盤ISO版」及「MS-DOS 7.10 啟動盤」
(應該就是以前 Windows 的開機片吧)
: 想請問各位大大有辦法在XP的情形下進入實模式的DOS嗎??
XP 是保護模式,好像頂多透過 V86 模式可以像 debug.exe 一樣稍微跑一下?
除非用虛擬機器才能進去真實模式的DOS。我是用 Virtual PC 跟上面說的 MS-DOS 7.1
啟動盤,把書上的程式3-1也就是 pmtest1.com 轉成資料光碟 iso,mount後執行可以
正確印出P來,我猜可能確實有從真實模式進入到保護模式吧?
: 另外它提到.IMG檔(virtual floppy)的格式化
: 想請問該怎麼用virtual PC做到呢??
格式化?沒看到這部份,不知道你在說什麼。
--
這陣子看這本書,很有趣,分享一點看書心得:
裝免費的 Virtual PC 2007 後,在 DOS下面要跟 host os 搞共享資料夾就是上網找
DOS Virtual Machine Additions.vfd 這檔案
然後由軟碟把這個檔掛上去,執行A:\裡的dosadd.bat,再來就很簡單的圖形介面設定啦
--
如果有img檔 (軟碟映像檔) 比如利用本書附的 FloppyWriter (亂碼用AppLocale解決)
把 boot.bin 做成 Tinix.img 後得到,
除了可以直接用虛擬機器的 mount 功能,也可以用 Virtual Floppy Drive 這軟體,
做一個虛擬軟碟機,掛到A:\
然後我推薦免費的 Hxd,可以對軟碟、光碟、硬碟..等做很方便的16進位 sector 編輯
軟碟是一個sector有512 byte 光碟有 2048 byte,會自動判定,另外,他的切換磁區
介面蠻方便。如果要更好用就是 WinHex 了,功能真的很強大,但要錢。
--
那如果沒有軟碟機,或者就是不想用軟碟測試 boot sector,可以改用光碟或隨身碟,
隨身碟的狀況比較複雜,光碟的話比較單純。
用 imgburn 選擇 Create image file from file/folder,然後進去 Advanced,
選 Bootable Disc,Make image bootable,最後模擬類型
如果選 Floppy 的話,你就要餵一個 1440 k 的 img 映像檔才行,比較麻煩
如果選 None (Custom) 就可以只丟 boot.bin 就好。最後製造出來的iso檔,看是要虛擬
機器mount測試,或燒成真的光碟片,然後重開機實測都行。
但是不管是 Virtual PC 或 VMware 在使用光碟當開機來源時,似乎都不會把boot sector
放到 0x7c00 處,當初為了這個去查可開機光碟的規格,研究 El Torito 搞了好久。
後來裝了 VirtualBox 發現可以正常執行,而且把程式改成不需要與 7c00 位址有關後
也可以跑,才判定應該是 VMware 跟 Virtual PC 的問題。
--
另外書上提到要用 Turbo Debugger 測試,但網路上常見的 5.5 版不太好用。TASM 5.0
裡面的比較完整。但是TD好像只能測試16 bits的程式,那這樣的話還不如版上推薦
的 emu8086 好用 (共享軟體,有試用期限) (有個大陸網站叫 fixdown)
--
另外如果照書上要裝 Linux,我比較推薦 Debian (lenny),就裝個 base system
然後先不要裝桌面,改裝 LXDE,然後進去桌面環境後再去裝 gdb、gcc、nasm...這些,
大概 VirtualBox 設個192MB(我只有512),硬碟留個3g就夠用,還夠設個幾次
snapshot 備份了。用 aptitude 裝軟體實在很方便啊
當然如果電腦配備很強,就隨便裝吧
--
補充推薦:
http://biosengineer.blogspot.com/2008/05/dos-dump.html
DOS Dump 1.0,台灣的前輩撰寫的工具。可以dump出記憶體的內容,指定任意位置跟大小
比debug的dump功能有彈性。
http://home.educities.edu.tw/wanker742126/asm/ch30.html
這個網頁提到的 Debug32.exe,用 Virtual PC 2007 在 MS-DOS 7.10 開機片試用了一下
會顯示「Real Mode」,且A20開啟,難怪讀寫 FFFF:0010 時都沒有發現什麼 wrap
那如果用之前說的 MS-DOS 7.10 完整安裝光盤ISO版,而且有 emm386
那執行 debug32 會寫「Virtual 8086 Mode」。
不要啟動 emm386 這一版的 DOS 就會運行在真實模式。
--
02/17 補充,關閉A20心得
http://hengch.blog.163.com/blog/static/107800672009013104623747/
這個網頁有詳細的介紹
http://www.ctyme.com/intr/rb-1335.htm
Int 15/AX=2400h 介紹
1. 在 Vitual PC 2007,測試 port 92h 跟 int 15 兩種方法,怎樣都無法 disable A20
(config.sys 設定 REM DEVICE=HIMEM.SYS 以及 DOS=LOW,NOUMB,NOAUTO)
2. 在 VirtualBox 2.1.2 配合 DOS 7.1 開機片,沒有跑 emm386、himem.sys 使用 debug
把 ax 改為 2400h 後接著執行 int 15,成功 disable A20 line
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 124.8.149.236
推
02/16 12:58, , 1F
02/16 12:58, 1F
→
02/16 12:58, , 2F
02/16 12:58, 2F
→
02/16 19:20, , 3F
02/16 19:20, 3F
※ 編輯: zlw 來自: 124.8.145.164 (02/17 16:30)
推
02/17 18:36, , 4F
02/17 18:36, 4F
→
02/17 22:25, , 5F
02/17 22:25, 5F
推
02/26 21:06, , 6F
02/26 21:06, 6F
討論串 (同標題文章)
ASM 近期熱門文章
PTT數位生活區 即時熱門文章