我也是Dos的愛用者,開發過的Dos測試程式比在其他作業系統上的測試程式多得多,寫程式的功力也是從這邊開始練起。
基本上使用Watcom若是default使用protect mode, 那麼寫Dos程式幾乎跟在windows上感覺差不多,但是Watcom可以透過inline assembly神不知鬼不覺地使用原始 real mode 的中斷。
由於中斷很多,這篇僅列出我常使用的中斷給大家參考:
1. Access PCI configuration: INT 1A
提供範例函數來讀取PCI cfg data:
+
+ //Author: Martin Lee
+ const unsigned char PCI_FUNCTION_ID= 0xB1;
+ const unsigned char READ_CONFIG_DWORD 0x0A
+
+ DWORD READ_PCI_CONFIG_DWORD(WORD BDF, WORD index)
+ {
+
+ DWORD data;
+ __asm
+ {
+ // 1AB109 INT 1A - PCI BIOS v2.0c+ - READ CONFIGURATION WORD
+ // BH = bus number
+ // BL = device/function number (bits 7-3 device, bits 2-0 function)
+ // ECX = dword read
+ mov BX, BDF
+ mov di, index
+ mov ah, PCI_FUNCTION_ID
+ mov al, READ_CONFIG_DWORD
+ int 1ah
+ mov data, ecx
+ }
+ return data;
+ }
2. 對碟機做讀寫: INT 13
3. 設定螢幕的顏色游標什麼的: INT 10 (Watcom有很多內建的函數可以使用,使用上方便又美觀), 像我這個介面就完全是呼叫Watcom 的library做的
(待續)