看板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
※ 引述《[email protected] (嘉羽 拙火瑜珈)》之铭言:
没有时间一一细回,
不过绘图方面的东西,
大部分是藉由呼叫 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:
[email protected]
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"的狂狷不驯;属於年少的轻狂色彩 ◎
1F:推 wahaha99:想不出在DOS下硬干Thread有什麽好处.... 218.166.54.21 11/19 02:39
2F:→ wahaha99:DOS我记得是单工OS不是吗@@(虽然可以TSR) 218.166.54.21 11/19 02:40
3F:推 FlyinDeath:背景音乐 音效 之类的吧... 211.76.34.67 11/19 02:43
4F:→ FlyinDeath:虽然说buffer弄大一点 在gameloop里面 211.76.34.67 11/19 02:44
5F:→ FlyinDeath:处理这些也没有问题就是了 211.76.34.67 11/19 02:44
6F:推 utility:好书..我也有一本.. 61.224.74.151 11/19 23:28