home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / warptlk3.zip / TOOLKIT / INC / VDMBIOS.INC < prev    next >
Text File  |  1995-08-24  |  21KB  |  582 lines

  1. ;       SCCSID = @(#)vdmbios.inc    6.1 92/03/25
  2. ;***    VDMBIOS.INC
  3. ;
  4. ;
  5. ;       MVDM ROM BIOS Data Definitions
  6. ;       Copyright (c) IBM Corporation 1987, 1992
  7. ;
  8. ;       All Rights Reserved
  9.  
  10. ;***    Low memory/ROM and EBIOS defines - used by VBIOS
  11.  
  12.  
  13.  
  14.  
  15. ;***    BIOS Interrupt Vectors
  16. ;
  17.  
  18. BIOSINT_PARITYCHECK     EQU     002h
  19. BIOSINT_PRINTSCREEN     EQU     005h
  20. BIOSINT_TIMERINTERRUPT  EQU     008h
  21. BIOSINT_KEYINTERRUPT    EQU     009h
  22. BIOSINT_COM2INTERRUPT   EQU     00Bh
  23. BIOSINT_COM1INTERRUPT   EQU     00Ch
  24. BIOSINT_LPT2INTERRUPT   EQU     00Dh
  25. BIOSINT_FLOPPYINTERRUPT         EQU     00Eh
  26. BIOSINT_LPT1INTERRUPT   EQU     00Fh
  27. BIOSINT_VIDEO   EQU     010h
  28. BIOSINT_EQUIPMENTCHECK  EQU     011h
  29. BIOSINT_MEMORYCHECK     EQU     012h
  30. BIOSINT_DISKIO  EQU     013h
  31. BIOSINT_COMIO   EQU     014h
  32. BIOSINT_OSHOOK  EQU     015h
  33. BIOSINT_KEYBOARD        EQU     016h
  34. BIOSINT_PRINTERIO       EQU     017h
  35. BIOSINT_ROMBASIC        EQU     018h
  36. BIOSINT_REBOOT  EQU     019h
  37. BIOSINT_TIMEOFDAY       EQU     01Ah
  38. BIOSINT_KEYBREAK        EQU     01Bh
  39. BIOSINT_CLOCKTICK       EQU     01Ch
  40. BIOSINT_VIDEOPARMS      EQU     01Dh
  41. BIOSINT_DISKPARMS       EQU     01Eh
  42. BIOSINT_VIDEOGRAPH      EQU     01Fh
  43. BIOSINT_OLDDISKIO       EQU     040h
  44. BIOSINT_HDISK1PARMS     EQU     041h
  45. BIOSINT_OLDVIDEO        EQU     042h
  46. BIOSINT_EXTVIDEOGRAPH   EQU     043h
  47. BIOSINT_HDISK2PARMS     EQU     046h
  48.  
  49.  
  50. ;***    Int 10h Equates (AH values)
  51. ;
  52.  
  53. INT10_SETMODE   EQU     000h
  54. INT10_SETCURSORTYPE     EQU     001h
  55. INT10_SETCURSORPOS      EQU     002h
  56. INT10_QUERYCURSORPOS    EQU     003h
  57. INT10_QUERYLPEN         EQU     004h
  58. INT10_SETACTIVEPAGE     EQU     005h
  59. INT10_SCROLLUP  EQU     006h
  60. INT10_SCROLLDOWN        EQU     007h
  61. INT10_READCHARATTR      EQU     008h
  62. INT10_WRITECHARATTR     EQU     009h
  63. INT10_WRITECHAR         EQU     00Ah
  64. INT10_SETPALETTE        EQU     00Bh
  65. INT10_WRITEPIXEL        EQU     00Ch
  66. INT10_READPIXEL         EQU     00Dh
  67. INT10_WRITETTY  EQU     00Eh
  68. INT10_QUERYMODE         EQU     00Fh
  69. INT10_EGASETPALETTE     EQU     010h
  70. INT10_EGASELECTFONT     EQU     011h
  71. INT10_EGASELECTMISC     EQU     012h
  72. INT10_EGAWRITESTRING    EQU     013h
  73. INT10_VGADISPLAYCODES   EQU     01Ah
  74. INT10_VGAQUERYSTATE     EQU     01Bh
  75. INT10_VGASAVERESTORE    EQU     01Ch
  76.  
  77.  
  78. ;***    Int 13h Equates (AH values)
  79. ;
  80.  
  81. INT13_DISKRESET         EQU     000h
  82. INT13_DISKSTATUS        EQU     001h
  83. INT13_READSECTORS       EQU     002h
  84. INT13_WRITESECTORS      EQU     003h
  85. INT13_VERIFYSECTORS     EQU     004h
  86. INT13_FORMATTRACK       EQU     005h
  87. INT13_QUERYDRVPARMS     EQU     008h
  88. INT13_DISKSEEK  EQU     00Ch            ;@235
  89. INT13_QUERYDASDTYPE     EQU     015h
  90. INT13_QUERYCHANGE       EQU     016h
  91. INT13_SETDISKTYPE       EQU     017h
  92. INT13_SETMEDIATYPE      EQU     018h
  93.  
  94.  
  95. ;***    Int 13h Status Equates (return in AH)
  96. ;
  97.  
  98. INT13STATUS_SUCCESS     EQU     000h    ;successful completion
  99. INT13STATUS_BADCMD      EQU     001h    ;bad command
  100. INT13STATUS_BADADDRMARK         EQU     002h    ;address mark not found
  101. INT13STATUS_WRTPROTECT  EQU     003h    ;write on write-protected disk
  102. INT13STATUS_RECNOTFOUND         EQU     004h    ;sector not found
  103. INT13STATUS_BADRESET    EQU     005h    ;reset failed
  104. INT13STATUS_MEDIACHANGE         EQU     006h    ;media changed
  105. INT13STATUS_INITFAIL    EQU     007h    ;parm. act. failed
  106. INT13STATUS_BADDMA      EQU     008h    ;DMA overrun
  107. INT13STATUS_DMABOUNDARY         EQU     009h    ;DMA across 64K boundary
  108. INT13STATUS_BADSECTOR   EQU     00ah    ;bad sector detected
  109. INT13STATUS_BADTRACK    EQU     00bh    ;bad track detected
  110. INT13STATUS_BADMEDIATYPE        EQU     00ch   ;unsupported track
  111. INT13STATUS_BADFMTSECNUM        EQU     00dh   ;bad # of sectors on format
  112. INT13STATUS_ADDRMARKDET         EQU     00eh    ;ctrl data addr mark detected (HD
  113. INT13STATUS_DMAARBERR   EQU     00fh    ;DMA arbitration error
  114. INT13STATUS_BADCRCECC   EQU     010h    ;bad CRC/ECC
  115. INT13STATUS_DATACORRECT         EQU     011h    ;data ECC corrected
  116. INT13STATUS_BADCNTLR    EQU     020h    ;controller failure
  117. INT13STATUS_BADSEEK     EQU     040h    ;seek failed
  118. INT13STATUS_TIMEOUT     EQU     080h    ;time out
  119. INT13STATUS_DRVNOTREADY         EQU     0aah    ;drive not ready
  120. INT13STATUS_UNDEFERR    EQU     0bbh    ;undefined error
  121. INT13STATUS_WRITEFAULT  EQU     0cch    ;write fault
  122. INT13STATUS_STATUSERROR         EQU     0e0h    ;status register error
  123. INT13STATUS_SENSEFAIL   EQU     0ffh    ;sense operation failed
  124.  
  125.  
  126. ;***    Int 15h Equates (AH values)
  127. ;
  128.  
  129. INT15AH_KEYINTERCEPT    EQU     04fh
  130. INT15AH_KEYSYSREQ       EQU     085h
  131. INT15AH_DEVBUSY         EQU     090h
  132. INT15AH_INTCOMPLETE     EQU     091h
  133.  
  134.  
  135. ;***    Int 15h Equates (AL values)
  136. ;
  137.  
  138. INT15AL_DISKETTE        EQU     001h
  139. INT15AL_KEYBOARD        EQU     002h
  140.  
  141.  
  142. ;***    Int 16h Equates (AH values)
  143. ;
  144. INT16_READCHAR  EQU     000h
  145. INT16_PEEKCHAR  EQU     001h
  146. INT16_QUERYSHIFT        EQU     002h
  147. INT16_SETDELAYS         EQU     003h
  148. INT16_WRITECHAR         EQU     005h
  149. INT16_READEXTCHAR       EQU     010h
  150. INT16_PEEKEXTCHAR       EQU     011h
  151. INT16_QUERYEXTSHIFT     EQU     012h
  152. INT16_READ122CHAR       EQU     020h
  153. INT16_PEEK122CHAR       EQU     021h
  154. INT16_QUERY122SHIFT     EQU     022h
  155.  
  156.  
  157. ;***    Diskette Parameter Table (pointed by vector BIOSINT_DISKPARMS (1Eh))
  158. ;
  159.  
  160. DefStruc ,fdparmtable_s
  161.     _BYTE    fdp_bSpecify1              ;step-rate, head-unload
  162.     _BYTE    fdp_bSpecify2              ;head-load, DMA mode
  163.     _BYTE    fdp_bMotorOff              ;motor-off delay
  164.     _BYTE    fdp_bSectorSize            ;bytes/sec (0=128,1=256,2=512,3=1024)
  165.     _BYTE    fdp_nLastSector            ;(or think of it as # sectors/track)
  166.     _BYTE    fdp_lenGapRW               ;
  167.     _BYTE    fdp_lenData                ;
  168.     _BYTE    fdp_lenGapFormat           ;
  169.     _BYTE    fdp_bFormatData            ;format initialization byte
  170.     _BYTE    fdp_bSettle                ;head settle time
  171.     _BYTE    fdp_bMotorOn               ;motor start-up time
  172. EndStruc FDPARMTABLE
  173. DefType PFDPARMTABLE,dd                 ;pointer to diskette parameter table
  174.  
  175.  
  176. ;***    Fixed Disk Parameter Table
  177. ;
  178.  
  179. DefStruc ,hdparmtable_s
  180.     _WORD    hdp_wMaxCylinders          ;maximum number of cylinders
  181.     _BYTE    hdp_bMaxHeads              ;maximum number of heads
  182.     _WORD    hdp_wReserve1              ;reserved (not used)
  183.     _WORD    hdp_wWritePrecompCyl       ;starting write precompensation cyl.
  184.     _BYTE    hdp_bMaxECCDataBurstLen    ;maximum ECC data burst length
  185.     _BYTE    hdp_bControl               ;control byte
  186.     _BYTE    hdp_abReserve2,,3          ;reserved (not used)
  187.     _WORD    hdp_wLandingZone           ;landing zone for head parking
  188.     _BYTE    hdp_bSectorsPerTrack       ;number of sectors per track
  189.     _BYTE    hdp_bReserve3              ;reserved for future use
  190. EndStruc HDPARMTABLE
  191. DefType PHDPARMTABLE,dd                 ;pointer to hard disk parameter table
  192.  
  193.  
  194. ;***    Hard disk parameter - control byte bit mask
  195. ;
  196.  
  197. HDPCTRL_DISABLERETRY    EQU     0c0h    ;disable retries
  198. HDPCTRL_EXCEED8HEADS    EQU     008h    ;more than 8 heads
  199.  
  200.  
  201. ;***    Model byte equates (located at F000:FFFE in actual ROM)
  202. ;
  203. ROMMODEL_PC1    EQU     00FFh           ;PC-1, Expansion, Old PC2
  204. ROMMODEL_PC2    EQU     00FEh           ;PC-2, Newer
  205. ROMMODEL_JR     EQU     00FDh           ;HALO
  206. ROMMODEL_AT     EQU     00FCh           ;Salmon (PC-3)
  207.  
  208.  
  209. ;***    ROM format
  210. ;
  211. ROMHDR_SIGNATURE        EQU     0AA55h
  212. ROMHDR_INCR     EQU     2048
  213. BLOCKSIZE       EQU     512
  214. BLOCKSPERPAGE   EQU     (PAGESIZE / BLOCKSIZE)
  215.  
  216.  
  217. DefStruc ,romhdr_s
  218.     _WORD romhdr_wSignature     ;should be ROMHDR_SIGNATURE
  219.     _BYTE romhdr_bnBlocks       ;# of ROM blocks
  220.     _BYTE romhdr_abFiller,,ROMHDR_INCR-3
  221. EndStruc ROMHDR
  222.  
  223. DefType PROMHDR,dd
  224.  
  225.  
  226. ;***    ROM BIOS Data Area
  227. ;
  228. DefStruc ,romdata_s
  229.  
  230. VPVOID  rb_avpIVT,,IVT_LEN/4   ;interrupt vector table
  231.  
  232.  
  233. ;***    Start of ROM BIOS Data Areas (0400h)
  234. ;
  235. _WORD    rb_awCOM,,4            ;RS232_BASE   (addresses of serial cards)
  236. _WORD    rb_awLPT,,4            ;PRINTER_BASE (addresses of printer cards)
  237. _WORD    rb_fsEquip             ;EQUIP_FLAG   (installed hardware)
  238.  
  239. BIOSEQUIP_FLOPPY        EQU     000001h     ;machine has a floppy
  240. BIOSEQUIP_X87   EQU     000002h     ;X87=1 if coprocessor installed
  241. BIOSEQUIP_VIDEOMASK     EQU     000030h     ;video configuration bits
  242. BIOSEQUIP_COLOR40VIDEO  EQU     000010h     ;
  243. BIOSEQUIP_COLOR80VIDEO  EQU     000020h     ;
  244. BIOSEQUIP_MONOVIDEO     EQU     000030h     ;
  245. BIOSEQUIP_FLOPPYMASK    EQU     0000C0h     ;# floppies-1 (if IPLDISK=1)
  246. BIOSEQUIP_COMMASK       EQU     000E00h     ;# COM ports
  247. BIOSEQUIP_PRINTERMASK   EQU     00C000h     ;# LPT ports
  248.  
  249. BBOOL   rb_bfMfgTest           ;MFG_TST      (initialization flag)
  250. _WORD    rb_wMemSize            ;MEMORY_SIZE  (memory size in Kbytes)
  251. BBOOL   rb_bfMfgError,,2       ;MFG_ERR_FLAG (scratchpad for manufacturing)
  252.  
  253.  
  254. ;***    Start of keyboard data area (0417h)
  255. ;
  256. _BYTE    rb_fbKFlag             ;KB_FLAG      (keyboard shift states)
  257.  
  258. BIOSKFLAG_RIGHTSHIFT    EQU     001h
  259. BIOSKFLAG_LEFTSHIFT     EQU     002h
  260. BIOSKFLAG_SHIFTMASK     EQU     003h
  261. BIOSKFLAG_CTRL  EQU     004h
  262. BIOSKFLAG_ALT   EQU     008h
  263. BIOSKFLAG_SCROLLLOCK    EQU     010h
  264. BIOSKFLAG_NUMLOCK       EQU     020h
  265. BIOSKFLAG_CAPSLOCK      EQU     040h
  266. BIOSKFLAG_INSERT        EQU     080h
  267.  
  268. _BYTE    rb_fbKFlag1            ;KB_FLAG_1    (second byte of keyboard status)
  269.  
  270. BIOSKFLAG1_LEFTCTRL     EQU     001h        ;left CTRL down
  271. BIOSKFLAG1_LEFTALT      EQU     002h        ;left ALT down
  272. BIOSKFLAG1_SYSSHIFT     EQU     004h        ;SysReq pressed and held
  273. BIOSKFLAG1_HOLDSTATE    EQU     008h        ;Ctrl-NumLock has been pressed
  274. BIOSKFLAG1_SCROLLDOWN   EQU     010h
  275. BIOSKFLAG1_NUMDOWN      EQU     020h
  276. BIOSKFLAG1_CAPSDOWN     EQU     040h
  277. BIOSKFLAG1_INSDOWN      EQU     080h
  278.  
  279. _BYTE    rb_bKAlt               ;ALT_INPUT    (storage for Alt-keypad entry)
  280. _WORD    rb_npKHead             ;BUFFER_HEAD  (advanced at task-time)
  281. _WORD    rb_npKTail             ;BUFFER_TAIL  (advanced at interrupt-time)
  282. _WORD    rb_abKBuf,,16          ;KB_BUFFER
  283.  
  284.  
  285. ;***    Start of floppy data area (043Eh)
  286. ;
  287. _BYTE    rb_fbFSeekStatus       ;SEEK_STATUS
  288.  
  289. BIOSSEEK_DRV0NORECAL    EQU     001h
  290. BIOSSEEK_DRV1NORECAL    EQU     002h
  291. BIOSSEEK_DRV2NORECAL    EQU     004h
  292. BIOSSEEK_DRV3NORECAL    EQU     008h
  293. BIOSSEEK_DRVINTERRUPT   EQU     080h
  294.  
  295. _BYTE    rb_fbFMotorStatus      ;MOTOR_STATUS
  296.  
  297. BIOSMOTOR_DRV0RUNNING   EQU     001h
  298. BIOSMOTOR_DRV1RUNNING   EQU     002h
  299. BIOSMOTOR_DRV2RUNNING   EQU     004h
  300. BIOSMOTOR_DRV3RUNNING   EQU     008h
  301. BIOSMOTOR_DRVSELECT     EQU     030h
  302. BIOSMOTOR_WRTOPERATION  EQU     080h
  303.  
  304. _BYTE    rb_bFMotorCount        ;MOTOR_COUNT
  305. _BYTE    rb_bFStatus            ;DISKETTE_STATUS
  306. _BYTE    rb_abFCtlStatus,,7     ;NEC_STATUS (also CMD_BLOCK and HD_ERROR)
  307.  
  308.  
  309. ;***    Start of video data area (0449h)
  310. ;
  311. _BYTE    rb_bVMode              ;CRT_MODE
  312.  
  313. BIOSVMODE_BW40  EQU     000h
  314. BIOSVMODE_CO40  EQU     001h
  315. BIOSVMODE_BW80  EQU     002h
  316. BIOSVMODE_CO80  EQU     003h
  317. BIOSVMODE_CO320X200X4   EQU     004h
  318. BIOSVMODE_BW320X200X4   EQU     005h
  319. BIOSVMODE_CO640X200X2   EQU     006h
  320. BIOSVMODE_MONO80        EQU     007h
  321. BIOSVMODE_PCJR1         EQU     008h
  322. BIOSVMODE_PCJR2         EQU     009h
  323. BIOSVMODE_PCJR3         EQU     00Ah
  324. BIOSVMODE_COLRFONT      EQU     00Bh
  325. BIOSVMODE_MONOFONT      EQU     00Ch
  326. BIOSVMODE_CO320X200X16  EQU     00Dh
  327. BIOSVMODE_CO640X200X16  EQU     00Eh
  328. BIOSVMODE_MONO640X350X4         EQU     00Fh
  329. BIOSVMODE_CO640X350X16  EQU     010h
  330. BIOSVMODE_CO640X480X2   EQU     011h
  331. BIOSVMODE_CO640X480X16  EQU     012h
  332. BIOSVMODE_CO320X200X256         EQU     013h
  333.  
  334. _WORD    rb_nVCols              ;CRT_COLS
  335. _WORD    rb_wVLen               ;CRT_LEN
  336. _WORD    rb_wVStart             ;CRT_START
  337. _WORD    rb_awVCursorPos,,8     ;CURSOR_POSN
  338. _WORD    rb_wVCursorMode        ;CURSOR_MODE
  339. _BYTE    rb_bVPage              ;ACTIVE_PAGE
  340. _WORD    rb_wVPort              ;ADDR_6845
  341. _BYTE    rb_bVModeByte          ;CRT_MODE_SET
  342. _BYTE    rb_bVPalByte           ;CRT_PALETTE
  343.  
  344.  
  345. ;***    Start of POST data area (0467h)
  346. ;
  347. VPVOID  rb_vpRomInit           ;IO_ROM_INIT and IO_ROM_SEG
  348. BBOOL   rb_fInterrupt          ;INTR_FLAG
  349.  
  350.  
  351. ;***    Start of timer data area (046Ch)
  352. ;
  353. ULONG   rb_ulTickCount         ;TIMER_LOW and TIMER_HIGH
  354. _BYTE    rb_bTickOverflow       ;TIMER_OFL
  355.  
  356.  
  357. ;***    Start of system data area (0471h)
  358. ;
  359. BBOOL   rb_fBreak              ;BIOS_BREAK
  360.  
  361. BIOSBREAK_SET   EQU     080h
  362.  
  363. SBOOL   rb_fReset              ;RESET_FLAG
  364.  
  365. BIOSRESET_WARMBOOT      EQU     01234h
  366.  
  367.  
  368. ;***    Start of hard disk data area (0474h)
  369. ;
  370. _BYTE    rb_bDStatus            ;DISK_STATUS1 (fixed disk status byte)
  371. _BYTE    rb_nDTotal             ;HF_NUM       (count of fixed disk drives)
  372. _BYTE    rb_bDControl           ;CONTROL_BYTE (control byte drive options)
  373. _BYTE    rb_bDPortOffset        ;PORT_OFF     (port offset)
  374.  
  375.  
  376. ;***    Start of COM and LPT time-out data area (0478h)
  377. ;
  378. _BYTE    rb_abLPTtimeout,,4     ;PRINT_TIM_OUT
  379. _BYTE    rb_abCOMtimeout,,4     ;RS232_TIM_OUT
  380.  
  381.  
  382. ;***    Start of additional keyboard data area (0480h)
  383. ;
  384. _WORD    rb_npKBufStart         ;BUFFER_START
  385. _WORD    rb_npKBufEnd           ;BUFFER_END
  386.  
  387.  
  388. ;***    Start of EGA/VGA data area (0484h)
  389. ;
  390. _BYTE    rb_nVRows              ;ROWS         (# rows-1)
  391. _WORD    rb_nVCharHeight        ;POINTS       (height of char in pixels)
  392. _BYTE    rb_bVInfo              ;INFO
  393.  
  394. BIOSVINFO_NOEMULATE     EQU     001h    ;(controls cursor emulation)
  395. BIOSVINFO_EGAMONO       EQU     002h    ;
  396. BIOSVINFO_WAITRETRC     EQU     004h    ;
  397. BIOSVINFO_EGAINACTIVE   EQU     008h    ;
  398. BIOSVINFO_MEMMASK       EQU     060h    ;(00=64k, 01=128k, 10=192k, 11=256k)
  399. BIOSVINFO_DONTCLEAR     EQU     080h    ;(don't clear screen on resets)
  400.  
  401. _BYTE    rb_bVSwitches          ;INFO_3
  402.  
  403. BIOSVSW_SW1OFF  EQU     001h
  404. BIOSVSW_SW2OFF  EQU     002h
  405. BIOSVSW_SW3OFF  EQU     004h
  406. BIOSVSW_SW4OFF  EQU     008h
  407. BIOSVSW_FEATUREBITS     EQU     0F0h
  408.  
  409. _BYTE    rb_bVFlags             ;Flags (for VGA and MCGA)
  410.  
  411. BIOSVFLAGS_VGAACTIVE    EQU     001h
  412. BIOSVFLAGS_GRAYSCALES   EQU     002h
  413. BIOSVFLAGS_VGAMONO      EQU     004h
  414. BIOSVFLAGS_NODEFPALETTE         EQU     008h
  415. BIOSVFLAGS_DSPSWITCHING         EQU     040h
  416.  
  417. BIOSVFLAGS_350INES      EQU     000h
  418. BIOSVFLAGS_400INES      EQU     010h
  419. BIOSVFLAGS_200INES      EQU     080h
  420. BIOSVFLAGS_RESRVDLINES  EQU     090h
  421.  
  422.  
  423. ;***    Reserved area (048Ah)
  424. ;
  425. _BYTE    rb_bReserved1,,1       ;reserved
  426.  
  427.  
  428. ;***    Start of additional diskette data area (048Bh)
  429. ;
  430. _BYTE    rb_bFLastRate          ;LASTRATE
  431.  
  432.  
  433. ;***    Start of additional hard disk data area (048Ch)
  434. ;
  435. _BYTE    rb_bDStatusReg         ;HF_STATUS
  436. _BYTE    rb_bDErrorReg          ;HF_ERROR
  437. BBOOL   rb_fDInterrupt         ;HF_INT_FLAG
  438. BBOOL   rb_fDCombo             ;HF_CNTRL     (combo hard disk/diskette card)
  439.  
  440.  
  441. ;***    Start of additional diskette data area (0490h)
  442. ;
  443. _BYTE    rb_bF0State            ;DSK_STATE    (drive 0 media state)
  444. _BYTE    rb_bF1State            ;             (drive 1 media state)
  445. _BYTE    rb_bF0StartState       ;             (drive 0 operation start state)
  446. _BYTE    rb_bF1StartState       ;             (drive 1 operation start state)
  447. _BYTE    rb_bF0Cyl              ;DSK_TRK      (drive 0 current cylinder)
  448. _BYTE    rb_bF1Cyl              ;             (drive 1 current cylinder)
  449.  
  450.  
  451. ;***    Start of additional keyboard data area (0496h)
  452. ;
  453. _BYTE    rb_fbKFlag3            ;KB_FLAG_3
  454.  
  455. BIOSKFLAG3_E1PREFIX     EQU     001h    ;supported
  456. BIOSKFLAG3_SECPREFIX    EQU     002h    ;supported
  457. BIOSKFLAG3_RIGHTCTRL    EQU     004h    ;right CTRL down
  458. BIOSKFLAG3_RIGHTALT     EQU     008h    ;right ALT down
  459. BIOSKFLAG3_KBX  EQU     010h    ;supported
  460. BIOSKFLAG3_SETNUMLOCK   EQU     020h    ;supported
  461. BIOSKFLAG3_LASTID       EQU     040h    ;supported
  462. BIOSKFLAG3_READINGID    EQU     080h    ;supported (we never SET it though!)
  463.  
  464. _BYTE    rb_fbKFlag2            ;KB_FLAG_2
  465.  
  466. BIOSKFLAG2_LEDS         EQU     007h    ;supported
  467. BIOSKFLAG2_ACK  EQU     010h    ;supported
  468. BIOSKFLAG2_RESEND       EQU     020h    ;supported
  469. BIOSKFLAG2_LEDUPDATE    EQU     040h    ;always clear
  470. BIOSKFLAG2_XMITERROR    EQU     080h    ;always clear
  471.  
  472.  
  473. ;***    Start of real-time CMOS clock data area (0498h)
  474. ;
  475. VPVOID  rb_vpWaitFlag          ;USER_FLAG and USER_FLAG_SEG
  476. ULONG   rb_ulWaitFlag          ;RTC_LOW and RTC_HIGH
  477. BBOOL   rb_fWaitActive         ;RTC_WAIT_FLAG
  478.  
  479. _BYTE    rb_bReserved2,,7        ;this should "ORG" us to 04A8h
  480.  
  481.  
  482. ;***    Start of additional EGA/VGA data area (04A8h)
  483. ;
  484. VPVOID  rb_vpVideoPtrTable
  485.  
  486. ;***    Format of VideoPtrTable:
  487. ;
  488. ;        VPVOID[0]      Parameter Table Pointer
  489. ;                       Initialized to BIOS Video Parameter Table.
  490. ;                       This value MUST exist.  For a VGA, the table is:
  491. ;
  492. ;                       _BYTE    Value for CRT_COLS
  493. ;                       _BYTE    Value for ROWS
  494. ;                       _BYTE    Value for POINTS
  495. ;                       _WORD    Value for CRT_LEN
  496. ;                       _BYTE*4  Values for SEQ registers 1-4
  497. ;                       _BYTE    Value for Miscellaneous Output register
  498. ;                       _BYTE*25 Values for CRT registers 0-18h
  499. ;                       _BYTE*20 Values for ATC registers 0-13h
  500. ;                       _BYTE*9  Values for GDC registers 0-8
  501. ;
  502. ;        VPVOID[1]      Parameter Save Area Pointer
  503. ;                       Initialized to 0000:0000, this value is optional.
  504. ;                       When non-zero, this pointer will be used as pointer
  505. ;                       to a RAM area where certain dynamic values are to
  506. ;                       be saved. When in EGA operation this RAM area will
  507. ;                       hold the 16 EGA palette register values plus
  508. ;                       the overscan value in bytes 00h-10h respectively.
  509. ;                       At least 256 bytes must be allocated for this area.
  510. ;
  511. ;        VPVOID[2]      Alpha Character Set Override Pointer
  512. ;                       Initialized to 0000:0000, this value is optional.
  513. ;                       When non-zero, this pointer is used as a pointer
  514. ;                       to a tables described as follows:
  515. ;
  516. ;                       _BYTE    Bytes/character
  517. ;
  518. ;                       _BYTE    Block to load, should be zero for normal
  519. ;                               operation
  520. ;
  521. ;                       _WORD    Count to store, should be 256 for normal
  522. ;                               operation
  523. ;
  524. ;                       _WORD    Character offset, should be zero for normal
  525. ;                               operation
  526. ;
  527. ;                       VPVOID  Pointer to a font table
  528. ;
  529. ;                       _BYTE    Displayable rows
  530. ;                               if 'FF' the maximum calculated value will be
  531. ;                               used, else this value will be used
  532. ;
  533. ;                       _BYTE    Consecutive bytes of mode values for which
  534. ;                               this font description is to be used.
  535. ;                               The end of this stream is indicated by a
  536. ;                               byte code of 'FF'
  537. ;
  538. ;        VPVOID[3]      Graphics Character Set Override Pointer
  539. ;                       Initialized to 0000:0000, this value is optional.
  540. ;                       When non-zero, this pointer is used as a pointer
  541. ;                       to a tables described as follows:
  542. ;
  543. ;                       _BYTE    Displayable rows
  544. ;
  545. ;                       _WORD    Bytes per character
  546. ;
  547. ;                       VPVOID  Pointer to a font table
  548. ;
  549. ;                       _BYTE    Consecutive bytes of mode values for which
  550. ;                               this font description is to be used.
  551. ;                               The end of this stream is indicated by a
  552. ;                               byte code of 'FF'
  553. ;
  554. ;        VPVOID[4]      Address of Secondary Video Pointer Table (VGA ONLY):
  555. ;
  556. ;                       _WORD    Length of this table, in bytes
  557. ;                       VPVOID  Pointer to Display Combination Code Table
  558. ;                       VPVOID  Pointer to second Alpha Character Set Override
  559. ;                       VPVOID  Pointer to User Palette Profile Table
  560. ;                       VPVOID  Reserved
  561. ;                       VPVOID  Reserved
  562. ;                       VPVOID  Reserved
  563. ;
  564. ;        VPVOID[5]      Reserved and set to 0000:0000.
  565. ;
  566. ;        VPVOID[6]      Reserved and set to 0000:0000.
  567. ;
  568.  
  569. _BYTE    rb_bReserved3,,054h    ;this should "ORG" us to 0500h
  570.  
  571. ;***    Extra data area (0500h)
  572. ;
  573. _BYTE    rb_bPrtScrStatus       ;STATUS_BYTE
  574. EndStruc ROMDATA
  575.  
  576. DefType PROMDATA,dd
  577.  
  578.  
  579.  
  580. VDMBase   equ <ds:[0]>
  581. .errnz  (size romdata_s NE 0501h)
  582.