不過無論是在Cmd窗口下執(zhí)行16位DOS命令,還是直接打開Command窗口,實際上都是由一個名為NTVDM.exe的進程提供NT下的DOS虛擬機支持(NT Virtual DOS Machine,簡稱NTVDM)。因此可以說WinXP已完全擺脫了對16位DOS的依賴,此系統(tǒng)上所謂的DOS程序運行環(huán)境不過是一個完全虛擬的PC 機!理解這一點很重要,因為這預(yù)示著這個虛擬的“PC機”與你真實的硬件毫不相關(guān),所有的硬件環(huán)境都是虛擬出來的,因此能夠?qū)崿F(xiàn)更好的兼容性。
然而虛擬機所提供的的內(nèi)存容量絕對超過1MB,這部分被稱作擴展內(nèi)存,由于在使用上必須服從擴展內(nèi)存標準(eXtend Memory Standard),而被簡稱為XMS,要使用XMS就必須在Config.sys(現(xiàn)在是Config.nt)中加載Himem.sys驅(qū)動程序。當然擴展內(nèi)存最底層,靠近剛才所說的那1MB的地方,有近64kB的容量,DOS不使用XMS標準即可訪問,這一內(nèi)存區(qū)域被稱為高端內(nèi)存區(qū)(High Memory Area),DOS經(jīng)常會將自己的一部分駐留在此區(qū)域(MS-DOS resident in High Memory Area),以將常規(guī)內(nèi)存盡量空出一些給應(yīng)用程序使用。
這款游戲由ELF出品,以情節(jié)設(shè)計的巧妙贏得了不少玩家的欣賞,我們看能不能在WinXP系統(tǒng)下正常運行。首先必須根據(jù)游戲說明其安裝在C盤根目錄下,進入安裝目錄c:\dra4,雙擊執(zhí)行其中的Play.bat,出現(xiàn)的情況仍然是黑屏的一晃而過。于是按照實例1中的方法用記事本打開Play.bat,發(fā)現(xiàn)其中只有一行:dra4 start.mes H x C,這是一個帶參數(shù)運行的命令,主程序是dra4,不過卻在安裝目錄下發(fā)現(xiàn)了兩個可執(zhí)行dra4文件:dra4.com和dra4.exe,這里你需要知道.com文件執(zhí)行的優(yōu)先度高于.exe。于是對dra4.com的屬性進行修改,將EMS設(shè)為8192kB??墒呛臀覀兊囊庠赶喾矗p擊 Play.bat后還是黑色窗口一閃而過……
于是回到剛才討論的內(nèi)存知識中來,除了EMS,還有一個內(nèi)存殺手就是常規(guī)內(nèi)存。還記得上面圖9中的“最大可執(zhí)行程序大?。↙argest executable program size)”嗎?有沒有可能581 120字節(jié)的內(nèi)存仍不夠dra4.com使用呢?不妨試著從常規(guī)內(nèi)存中清理出一些空間來。
具體使用方法就更簡單了,仍以《大富翁3》為例,你只需在Play.bat上點擊右鍵,選擇菜單中的“Run With VDMS”即可(圖22),初次使用時,軟件會彈出一個小Tips窗口(圖23),筆者建議如果條件允許,可仔細閱讀其中的每條提示(軟件有一個小 Bug,就是不會自動更換Tips,因此逐條閱讀比較好),能讓你學到不少知識。接下來軟件快速做了一下初始化工作,黑色DOS屏幕一過,你就能聽到熟悉的音樂了!
還是“自己動手,豐衣足食”吧。從報錯信息著手,在報錯窗口右下角有一個叫“請單擊此處”的鏈接,照辦后會彈出較詳細的錯誤報告,從這里可以看出,都是一個叫“MCIAVI32.dll”的動態(tài)鏈接庫惹的禍(圖43),這又是何許“庫”也?MCI是Media Control Interface(媒體控制接口)的縮寫,凡是和這個詞沾邊的文件大多是和視頻及音頻控制有關(guān)的。事實上也是如此,它是一個32位的AVI媒體驅(qū)動,因此判斷出錯原因是老版本W(wǎng)indows程序調(diào)用了新系統(tǒng)的接口,而通過該接口指向的驅(qū)動卻不同,從而造成了錯誤。