home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v2.zip / DDKX86 / DBCSDD / INC / VDMBIOS.INC < prev    next >
Text File  |  1995-04-14  |  18KB  |  598 lines

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