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