一種新穎的技術:Delphi for DOS!!! (轉)

worldblog發表於2007-12-04
一種新穎的技術:Delphi for DOS!!! (轉)[@more@]

看看題目,是不是覺得很怪? 從誕生起就是 for 的,那裡有 for D的?如果你過去曾用過 Borland 的 Turbo Pascal 系列編寫,那麼你應當對 Turbo Pascal 的特點了解一些。Turbo Pascal 直到 6.0 版都不支援 DOS 下的保護(DPMI)。直到 Borland Pascal 7.0 出世,然而令人遺憾的是, BP7 僅支援 16 位的保護模式程式設計,而真正意義上的 32 位 DPMI 模式卻不支援。而且 BP7 是 Borland Pascal 的 DOS 終結版。所以,那個時代很多的遊戲都只能打上 DOS4GW 的烙印(由 WatC++ 開發)。 其實,在 1996 年,Delphi 2.0 已經是一個真正的 32 位保護模式了,只不過她不能產生 DOS MZ 格式的,僅能產生 PE 程式。而這個時候,一個名為 WDOSX 的 32 位 DOS 擴充套件器已經悄然出現了。這個擴充套件器的最大特點就是專門為 Delphi 2 度身定做,能夠將 Delphi 2 編譯的“控制檯應用程式”(也就是 Console Application)直接複合成為一個真正的 32 位 DOS 保護模式程式,其效果與 Watcom C++ 編譯產生的 32 位 DOS DPMI 程式(執行時依賴 DOS4GW 擴充套件器)是一樣的!而它產生的程式已經自帶擴充套件器,不需要執行時的擴充套件服務程式(比如 DOS4GW)。WDOSX 採用 Borland 的 Turbo Assembler 5.0 開發,為 Delphi 2 專門提供了用於保護模式下的 CRT、DOS 等單元,與過去的 Turbo Pascal 提供的單元十分相似。WDOSX 採用 Win32 模擬庫以便支援在 32 位 DOS DPMI 環境下的功能 ,所以經過複合後的 Delphi 2 控制檯程式是執行在一個 Win32 模擬環境中的,Win32 的特點被保留,而實際確實執行在真正的 32 位 DOS DPMI 環境下。這就是 WDOSX 的奇妙之處。 現在 WDOSX 的最新版本為 0.96,已經能夠很好的支援 Delphi 2/3/4/5 各種版本了,它甚至為 Delphi 提供了完備的圖形處理庫(包含 支援),用來編寫 DOS 遊戲真是變得異乎尋常的簡便了,而效果卻是驚人的:真正的 32 位保護模式 DOS 環境、直接對顯示 程式設計處理影像、方便的 DOS 中斷呼叫支援。Watcom C++ 和 DJGPP 的優點她都能夠讓 Delphi 具備!這得益於 Delphi 32 位編譯器的強大能力和 WDOSX 的神奇力量。那些在 Win32 環境下的諸多限制徹底不存在了,你用 Delphi 2/3/4/5 編譯的“控制檯應用程式(Console Application)” 經過 WDOSX 複合以後產生的 32-bit DOS DPMI 程式能夠自由地對進行訪問,而記憶體則是真正的 32 位線性 Flat Modal !再也沒有老的按照“段”來劃分的概念了。理論上程式能夠使用的記憶體空間將是 4GB !WDOSX 的複合原理是將自己的一個保護模式功能及一個微型執行模組加在正常的 Win32 PE 檔案的頭部,並修改檔案頭為 32 位 DOS DPMI MZP 檔案頭,同時將原來的執行程式碼作適當的處理,並加入一個很小的 Win32 環境模擬器。由此可見 WDOSX 的作者公里是相當深厚的!目前 WDOSX 除了對 Delphi 2/3/4/5 和 Turbo Assembler 提供最完善的支援外,還支援 C++Builder、 Visual C++。 畢竟,DOS 還不可能從我們的世界中徹底消失,有一些執行在 DOS 下也許會獲得更出色的效果。而編寫 DOS 環境下的程式令人感到十分自由,沒有什麼限制。並且採用卓越的 32 位保護模式將更能發揮程式的威力。有了 WDOSX ,有了 Delphi ,一切都變得那麼容易和輕鬆了,何樂而不為? WDOSX 這個東西還真不好找,我好不容易從網上弄下來了。我這裡有一個用 Delphi 5 + WDOSX 編寫的一個很有趣的 32-bit DOS DPMI 程式,效果是模擬一團熊熊燃燒的火焰,效果十分驚人,會令你意想不到(姑且


讓我這麼說吧)!!!我可以將完整的WDOSX 軟體包和部分演示程式寄給對此感興趣的朋友(很小,才幾百K字


節)。歡迎大家與我共同探討這個問題。:)


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-987866/,如需轉載,請註明出處,否則將追究法律責任。

相關文章