中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: [转帖]◇ DOS程式設計的未來 上一主题 | 下一主题
Dark-Destroy
元老会员





积分 8312
发帖 3551
注册 2003-3-22
状态 离线
『楼 主』:  [转帖]◇ DOS程式設計的未來


--------------------------------------------------------------------------------發信人: EightCloud.bbs@csie.nctu (嵐雲), 信區: programming
標  題: DOS程式設計的未來
發信站: 交大資工天龍新聞社 (Thu Jan 26 02:10:28 1995)
轉信站: cis_nctu!news.cis.nctu!news.cc.nctu!news.csie.nctu!nctubbsgate!csie.nc

        未來, Windows NT & Windows 95 將是 M$ OS 中的主角, 縱使
M$ 繼續出 DOS 7.0, 那似乎也只淪為配角, 那是否我現在學的 DOS 程
式試計都沒用了呢? 一定要去學 Windows 的 GUI 程式,以 message-drivern
的觀念, 用 SDK 或是 MFC,OWL 那種 frame class 去寫程式呢? 答案不是那
樣的, 現在的 dos 程式, 仍可在 NT&95 下重新 compile, 成為 Win32 中
console 的程式, 也就是文字模式的程式.

        不過,當然有些程式設計的技巧是以後用不上,或者是不能用的. 在
這裏, 我是想提供一些有關此類的資訊, 跟大家分享討論.

        首先,介紹一下 Win32 API. API 是 Application Programming
Interface(程式設計介面) 的縮寫, 類似 system call(系統函式呼叫). 要知道,
在一個 OS 中, 不允許一個 AP(應用程式) 直接去接觸硬體, 一切都要透過
OS來處理, 而 API 就是一些由系統提供的函式, 讓程式設計者使用. 而 M$
定義了 Win32 API, 做為今後 M$ OS 的標準.

        Win32 API 不僅適用於 Windows GUI 程式,  同時也適用於 32 bit
的 console(DOS mode) 程式. 例如, 你現在可以在 console(dos) 下用
LocalAlloc 配置記憶體, 或是用 CreateProcess 建立一個新的 process,
就像 Unix 中的 fork 功能一樣; 在 dos 中,仍然可以使用到
dll, ole2, dde, clipboard....., dos 和 windows 界限不再那麼清楚.
換句話說, console(dos) 是 winNT&95 的文字模式, 傳統 win3.1 程式是屬
於 winnt&95 的 圖形使用介面(GUI)模式, 兩者同是 Win32 程式.

        在 Windows NT 上, 系統提供你完整的 Win32 API. 在 Windows 95
上, 只提供一 Win32 的子集, 名稱似乎未定, 可能為 Win32r(去年m$對外公佈
文件有提到) 或是 Win32c (beta 版文件提到). 沒提供的 API, 也就是 Win95
中沒有的功能,像有關 C2 security, NTFS 的 API 等等. 在 Windows 3.1 上,
利用了一些 dll, 提供了另一子集 Win32s API. Win32s 大部份是舊有 API 的
32 bit 版, 沒有 任何多工,或者是 security 的東東.

        因此, 寫 Win32 程式可以適用於今後的 Dos&WinNT&Win95, 透過 NT
的跨平台, 你的程式也可以在 PowerPC, Alpha, Mips 上跑.

        在 WinNT&95 中, 舊 dos 中的 64k 限制將不再存在,  任何指標都是
32bit, 不再分 near far, 所有 new,malloc 都沒有 64K 限制, 也因此不在再
有什麼 tiny,small,large...mode. 使用的是 flat addressing mode, 每一個
程式都有 4GB 定址空間, 不再有 segment 的出現, Expand&Extent Memeory
的名詞將步入歷史.

        不要透過任何中斷(不管是bios或是dos的)或直接去硬體接觸,要去利用
Win32 API. 中斷是屬於 real mode 且是 16 bit 程式, 重要的是並沒有考
慮到多工下的執行環境.  若需要寫程式和硬體週邊設備溝通,那就要用到 DDK 了,
不能在一般 AP 裏做此事情. 在 win95 的 dos 中,直接和硬體接觸的程式應該不會出
問題,這是它為了要維持和舊AP的相容性(也因此些破壞了系統的穩定性), 並不是
理想的做法.

        TSR 常駐程式這個名詞,也將成為歷史吧! 在一個 preemptive 的多工,
任何程式只要不結束,就是常駐程式. 喜歡用 TSR 去攔截 中斷, 有相對利用 dll
去攔截 API 的呼叫.

        嗯! 現在就想到這麼多,若有想到,再補充. 若有錯誤,歡迎指教.



MSN:tiqit2@hotmail.com
2003-6-20 00:00
查看资料  发送邮件  访问主页  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: