home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / tolkit45.zip / os2tk45 / inc / vdmbios.inc < prev    next >
Text File  |  1999-04-30  |  17KB  |  592 lines

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