作者zlw (洞房不败)
看板ASM
标题Re: [问题] 想请问各位大大有关写作业系统@@>
时间Sun Feb 15 21:59:57 2009
※ 引述《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
1F:推 po953:linux上要玩dos 装dosemu更方便 他是用freedos核心 02/16 12:58
2F:→ po953:sudo apt-get install dosemu就好了 02/16 12:58
3F:→ zlw:谢谢推荐。dosemu用起来会跟虚拟机器开的DOS差不多吗? 02/16 19:20
※ 编辑: zlw 来自: 124.8.145.164 (02/17 16:30)
4F:推 garyzyg:dosemu 可用 msdos. 网路上 msdos 7.10 都是假的 (非官方) 02/17 18:36
5F:→ zlw:试了一下,dosemu内容蛮完整,不过预设是v86也许还要设定一下 02/17 22:25
6F:推 suhorng:可以把Floppy mount後用DOS/Windows格式化成FAT XD 02/26 21:06