Re: [問題] 想請問各位大大有關寫作業系統@@>

看板ASM (組合語言)作者 (洞房不敗)時間16年前 (2009/02/15 21:59), 編輯推噓3(303)
留言6則, 4人參與, 最新討論串2/3 (看更多)
※ 引述《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
linux上要玩dos 裝dosemu更方便 他是用freedos核心
02/16 12:58, 1F

02/16 12:58, , 2F
sudo apt-get install dosemu就好了
02/16 12:58, 2F

02/16 19:20, , 3F
謝謝推薦。dosemu用起來會跟虛擬機器開的DOS差不多嗎?
02/16 19:20, 3F
※ 編輯: zlw 來自: 124.8.145.164 (02/17 16:30)

02/17 18:36, , 4F
dosemu 可用 msdos. 網路上 msdos 7.10 都是假的 (非官方)
02/17 18:36, 4F

02/17 22:25, , 5F
試了一下,dosemu內容蠻完整,不過預設是v86也許還要設定一下
02/17 22:25, 5F

02/26 21:06, , 6F
可以把Floppy mount後用DOS/Windows格式化成FAT XD
02/26 21:06, 6F
文章代碼(AID): #19c1_UU7 (ASM)
文章代碼(AID): #19c1_UU7 (ASM)