發信人tinlans.bbs@whshs.cs.nccu.edu.tw (汀),
看板Programming
標 題Re: [問題]好奇 D O S 時代 遊戲是怎麼寫的????
發信站政大狂狷年少 (Sun Nov 19 01:37:37 2006)
轉信站ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.cs.nthu!WHSHS
※ 引述《VElysian.bbs@ptt.cc (嘉羽 拙火瑜珈)》之銘言:
沒有時間一一細回,
不過繪圖方面的東西,
大部分是藉由呼叫 VGA BIOS 完成的,
簡單說它是一組直接燒在主機板 BIOS 裡的函式庫,
主要是用來控制 screen,
DOS 的話利用 INT 10 的軟體中斷就可以叫得到,
呼叫的函式取決於你產生 INT 10 中斷時 AX(AH/AL) 暫存器裡面的數值,
不過後期大家學到的其實都是 VESA BIOS 的東西,
因為比原先的 VGA BIOS 來得更強大;
另外就是顯示卡的 video ram 會 map 到你 memory address 的某一段去,
對這一段 address 做 write 就等於 write 到 video ram 上;
你說的什麼 Turbo C 的 graphic library,
其底層的實作方式也跟這些脫不了關係。
至於 mouse 的 I/O,
是在你載入 mouse driver 以後,
會多出 INT 33 系列的中斷服務,
當你先把 AX 設成 3 再叫 INT 33 的話,
mouse 的目前狀態就會用 BX CX DX 傳回來給你;
最簡單的做法就是寫個 infinite loop 去 polling,
這也用不著什麼 thread,
只要設計好 loop 內的 flow 就沒問題了,
總之 DOS 時代寫程式都很暴力;
如果你想問 DOS 時代有沒有 multi-thread,
那麼答案是有,
不過很顯然一定是 user-level thread,
以 library 的形式實作出來的,
而非 OS 本身就有支援,
以當時的電腦等級來說,
用起來並不會有太大的好處。
中文書的話,
我們實驗室裡的書櫃裡剛好看到一本以前我常用的,
不過實驗室這本是 97 年最新修訂版,
比我家裡的還新,
我可以把這本書的書籍資料打給你:
IBM PC 80X86 組合語言徹底研究
林承戰 林俊杰著
波全資訊股份有限公司
ISBN 957-723-204-3
其實每所學校的資工系實驗室逛一逛都會發現不少學生還有這本書,
所以就算絕版的話我想應該也不會太難弄到手才是,
圖書館找找說不定也會有。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │
* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮
< IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰
* From:61-230-216-180.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎
推 wahaha99:想不出在DOS下硬幹Thread有什麼好處.... 218.166.54.21 11/19 02:39
→ wahaha99:DOS我記得是單工OS不是嗎@@(雖然可以TSR) 218.166.54.21 11/19 02:40
推 FlyinDeath:背景音樂 音效 之類的吧... 211.76.34.67 11/19 02:43
→ FlyinDeath:雖然說buffer弄大一點 在gameloop裡面 211.76.34.67 11/19 02:44
→ FlyinDeath:處理這些也沒有問題就是了 211.76.34.67 11/19 02:44
推 utility:好書..我也有一本.. 61.224.74.151 11/19 23:28