home *** CD-ROM | disk | FTP | other *** search
/ Shareware Overload / ShartewareOverload.cdr / progm / assemutl.zip / ROMBIOS.ASM < prev    next >
Assembly Source File  |  1984-09-23  |  8KB  |  213 lines

  1. ; from gaithersburg md ibm pc bulletin board 19mar83
  2. ;
  3. ;
  4.         SUBTTL ROM BIOS DATA AREAS AND EQUATES
  5. ;--------------------------------
  6. ;   EQUATES
  7. ;--------------------------------
  8. PORT_A        EQU    60H         ; 8255 PORT A ADDR
  9. PORT_B        EQU    61H         ; 8255 PORT B ADDR
  10. PORT_C        EQU    62H         ; 8255 PORT C ADDR
  11. CMD_PORT    EQU    63H
  12. INTA00        EQU    20H         ; 8259 PORT
  13. INTA01        EQU    21H         ; 8259 PORT
  14. EOI        EQU    20H
  15. TIMER        EQU    40H
  16. TIM_CTL     EQU    43H         ; 8253 TIMER CONTROL PORT ADDR
  17. TIMER0        EQU    40H         ; 8253 TIMER/CNTER 0 PORT ADDR
  18. TMINT        EQU    01         ; TIMER 0 INTR RECVD MASK
  19. DMA08        EQU    08         ; DMA STATUS REG PORT ADDR
  20. DMA        EQU    00         ; DMA CHANNEL 0 ADDRESS REG PORT ADDR
  21. MAX_PERIOD    EQU    540H
  22. MIN_PERIOD    EQU    410H
  23. KBD_IN        EQU    60H         ; KEYBOARD DATA IN ADDR PORT
  24. KBDINT        EQU    02         ; KEYBOARD INTR MASK
  25. KB_DATA     EQU    60H         ; KEYBOARD SCAN CODE PORT
  26. KB_CTL        EQU    61H         ; CONTROL BITS FOR KEYBOARD SENSE DATA
  27. ;--------------------------------
  28. ;  8088 INTERRUPT LOCATIONS
  29. ;--------------------------------
  30. ABS0        SEGMENT AT 0
  31. STG_LOC0    LABEL    BYTE
  32.         ORG    2*4
  33. NMI_PTR     LABEL    WORD
  34.         ORG    5*4
  35. INTS_PTR    LABEL    WORD
  36.         ORG    8*4
  37. INT_ADDR    LABEL    WORD
  38. INT_PTR     LABEL    DWORD
  39.         ORG    10H*4
  40. VIDEO_INT    LABEL    WORD
  41.         ORG    1DH*4
  42. PARM_PTR    LABEL    DWORD         ; POINTER TO VIDEO PARMS
  43.         ORG    01EH*4         ; INTERRUPT 1EH
  44. DISK_PTR    LABEL    DWORD
  45.         ORG    01FH*4         ; LOCATION OF POINTER
  46. EXT_PTR     LABEL    DWORD         ; POINTER TO EXTENSION
  47.         ORG    7C00H
  48. BOOT_LOCN    LABEL    FAR
  49. ABS0        ENDS
  50.         PAGE
  51. ;--------------------------------
  52. ;  STACK -- USED DURING INITIALIZATION ONLY
  53. ;--------------------------------
  54. STACK        SEGMENT AT 30H
  55.         DW    128 DUP(?)
  56. TOS        LABEL    WORD
  57. STACK        ENDS
  58. ;--------------------------------
  59. ;  ROM BIOS DATA AREAS
  60. ;--------------------------------
  61. DATA        SEGMENT AT 40H
  62. RS232_BASE    DW    4 DUP(?)     ; ADDRESSES OF RS232 ADAPTERS
  63. PRINTER_BASE    DW    4 DUP(?)     ; ADDRESSES OF PRINTERS
  64. EQUIP_FLAG    DW    ?         ; INSTALLED HARDWARE
  65. MFG_TST     DB    ?         ; INITIALIZATION FLAG
  66. MEMORY_SIZE    DW    ?         ; MEMORY SIZE IN K BYTES
  67. IO_RAM_SIZE    DW    ?         ; MEMORY IN I/O CHANNEL
  68.         PAGE
  69. ;-------------------------------
  70. ;  KEYBOARD DATA AREAS
  71. ;-------------------------------
  72. KB_FLAG     DB    ?
  73. ;------ SHIFT FLAG EQUATES WITHIN KB_FLAG
  74. INS_STATE    EQU    80H         ; INSERT STATE IS ACTIVE
  75. CAPS_STATE    EQU    40H         ; CAPS LOCK STATE HAS BEEN TOGGLED
  76. NUM_STATE    EQU    20H         ; NUM LOCK STATE HAS BEEN TOGGLED
  77. SCROLL_STATE    EQU    10H         ; SCROLL LOCK STATE HAS BEEN TOGGLED
  78. ALT_STATE    EQU    08H         ; ALTERNATE SHIFT KEY DEPRESSED
  79. CTL_SHIFT    EQU    04H         ; CONTROL SHIFT KEY DEPRESSED
  80. LEFT_SHIFT    EQU    02H         ; LEFT SHIFT KEY DEPRESSED
  81. RIGHT_SHIFT    EQU    01H         ; RIGHT SHIFT KEY DEPRESSED
  82. ;-------------------------------
  83. KB_FLAG_1    DB    ?         ; SECOND BYTE OF KEYBOARD STATUS
  84. INS_SHIFT    EQU    80H         ; INSERT KEY IS DEPRESSED
  85. CAPS_SHIFT    EQU    40H         ; CAPS LOCK KEY IS DEPRESSED
  86. NUM_SHIFT    EQU    20H         ; NUM LOCK KEY IS DEPRESSED
  87. SCROLL_SHIFT    EQU    10H         ; SCROLL LOCK KEY IS DEPRESSED
  88. HOLD_STATE    EQU    08H         ; SUSPEND KEY HAS BEEN TOGGLED
  89. ;-------------------------------
  90. ALT_INPUT    DB    ?         ; STORAGE FOR ALTERNATE KEYPAD ENTRY
  91. BUFFER_HEAD    DW    ?         ; POINTER TO HEAD OF KEYBOARD BUFFER
  92. BUFFER_TAIL    DW    ?         ; POINTER TO TAIL OF KEYBOARD BUFFER
  93. KB_BUFFER    DW    16 DUP(?)     ; ROOM FOR 15 ENTRIES
  94. KB_BUFFER_END    LABEL    WORD
  95. ;------ HEAD = TAIL INDICATES THAT THE BUFFER IS EMPTY
  96. NUM_KEY     EQU    69         ; SCAN CODE FOR NUMBER LOCK
  97. SCROLL_KEY    EQU    70         ; SCROLL LOCK KEY
  98. ALT_KEY     EQU    56         ; ALTERNATE SHIFT KEY SCAN CODE
  99. CTL_KEY     EQU    29         ; SCAN CODE FOR CONTROL KEY
  100. CAPS_KEY    EQU    58         ; SCAN CODE FOR SHIFT LOCK
  101. LEFT_KEY    EQU    42         ; SCAN CODE FOR LEFT SHIFT
  102. RIGHT_KEY    EQU    54         ; SCAN CODE FOR RIGHT SHIFT
  103. INS_KEY     EQU    82         ; SCAN CODE FOR INSERT KEY
  104. DEL_KEY     EQU    83         ; SCAN CODE FOR DELETE KEY
  105.         PAGE
  106. ;-------------------------------
  107. ;   DISKETTE DATA AREAS
  108. ;-------------------------------
  109. SEEK_STATUS    DB    ?         ; DRIVE RECALIBRATION STATUS
  110. ;                     BIT 3-0 = DRIVE 3-0 NEEDS RECAL BEFORE
  111. ;                     NEXT SEEK IF BIT IS = 0
  112. INT_FLAG    EQU    080H         ; INTERRUPT OCCURRENCE FLAG
  113. MOTOR_STATUS    DB    ?         ; MOTOR STATUS
  114. ;             BIT 3-0 = DRIVE 3-0 IS CURRENTLY RUNNING
  115. ;             BIT 7     = CURRENT OPERATION IS A WRITE, REQUIRES DELAY
  116. MOTOR_COUNT    DB    ?         ; TIME OUT COUNTER FOR DRIVE TURN OFF
  117. MOTOR_WAIT    EQU    37       ; TWO SECONDS OF COUNTS FOR MOTOR TURN OFF
  118. ;
  119. DISKETTE_STATUS DB    ?       ; SINGLE BYTE OF RETURN CODE INFO FOR STATUS
  120. TIME_OUT    EQU    80H       ; ATTACHMENT FAILED TO RESPOND
  121. BAD_SEEK    EQU    40H       ; SEEK OPERATION FAILED
  122. BAD_NEC     EQU    20H       ; NEC CONTROLLER HAS FAILED
  123. BAD_CRC     EQU    10H       ; BAD CRC ON DISKETTE READ
  124. DMA_BOUNDARY    EQU    09H       ; ATTEMPT TO DMA ACROSS 64K BOUNDARY
  125. BAD_DMA     EQU    08H       ; DMA OVERRUN ON OPERATION
  126. RECORD_NOT_FND    EQU    04H       ; REQUESTED SECTOR NOT FOUND
  127. WRITE_PROTECT    EQU    03H       ; WRITE ATTEMPTED ON WRITE PROT DISK
  128. BAD_ADDR_MARK    EQU    02H       ; ADDRESS MARK NOT FOUND
  129. BAD_CMD     EQU    01H       ; BAD COMMAND PASSED TO DISKETTE I/O
  130. ;
  131. NEC_STATUS    DB    7 DUP(?)   ; STATUS BYTES FROM NEC
  132. ;--------------------------------
  133. ;   VIDEO DISPLAY DATA AREA
  134. ;--------------------------------
  135. CRT_MODE    DB    ?       ; CURRENT CRT MODE
  136. CRT_COLS    DW    ?       ; NUMBER OF COLUMNS ON SCREEN
  137. CRT_LEN     DW    ?       ; LENGTH OF REGEN IN BYTES
  138. CRT_START    DW    ?       ; STARTING ADDRESS IN REGEN BUFFER
  139. CURSOR_POSN    DW    8 DUP(?)   ; CURSOR FOR EACH OF UP TO 8 PAGES
  140. CURSOR_MODE    DW    ?       ; CURRENT CURSOR MODE SETTING
  141. ACTIVE_PAGE    DB    ?       ; CURRENT PAGE BEING DISPLAYED
  142. ADDR_6845    DW    ?       ; BASE ADDRESS FOR ACTIVE DISPLAY CARD
  143. CRT_MODE_SET    DB    ?       ; CURRENT SETTING OF THE 3X8 REGISTER
  144. CRT_PALLETTE    DB    ?       ; CURRENT PALLETTE SETTING COLOR CARD
  145.         PAGE
  146. ;--------------------------------
  147. ;   CASSETTE DATA AREA
  148. ;--------------------------------
  149. EDGE_CNT    DW    ?       ; TIME COUNT AT DATA EDGE
  150. CRC_REG     DW    ?       ; CRC REGISTER
  151. LAST_VAL    DB    ?       ; LAST INPUT VALUE
  152. ;--------------------------------
  153. ;   TIMER DATA AREA
  154. ;--------------------------------
  155. TIMER_LOW    DW    ?       ; LOW WORD OF TIMER COUNT
  156. TIMER_HIGH    DW    ?       ; HIGH WORD OF TIMER COUNT
  157. TIMER_OFL    DB    ?       ; TIMER HAS ROLLED OVER SINCE LAST READ
  158. ;COUNTS_SEC    EQU    18
  159. ;COUNTS_MIN    EQU    1092
  160. ;COUNTS_HOUR    EQU    65543
  161. ;COUNTS_DAY    EQU    1573040 = 1800B0H
  162. ;-------------------------------
  163. ;   SYSTEM DATA AREA
  164. ;-------------------------------
  165. BIOS_BREAK    DB    ?       ; BIT 7 = 1 IF BREAK KEY HAS BEEN DEPRESSED
  166. RESET_FLAG    DW    ?       ; WORD = 1234H IF KEYBOARD RESET UNDERWAY
  167. DATA        ENDS
  168. ;
  169. ;--------------------------------
  170. ;   EXTRA DATA AREA
  171. ;--------------------------------
  172. XXDATA        SEGMENT AT 50H
  173. STATUS_BYTE    DB    ?
  174. XXDATA        ENDS
  175. ;
  176. ;--------------------------------
  177. ;   VIDEO DISPLAY BUFFER
  178. ;--------------------------------
  179. VIDEO_RAM    SEGMENT AT 0B800H
  180. REGEN        LABEL    BYTE
  181. REGENW        LABEL    WORD
  182.         DB    16384 DUP(?)
  183. VIDEO_RAM    ENDS
  184. ;
  185. ;--------------------------------
  186. ;   ROM RESIDENT CODE
  187. ;--------------------------------
  188. ROMCODE     SEGMENT AT 0F000H
  189.         DB    57344 DUP(?)         ; FILL LOWEST 56K
  190.         DB    '5700051 CORP. IBM 1981' ; COPYRIGHT NOTICE
  191. ROMCODE     ENDS
  192. ;
  193. ;--------------------------------
  194. ;   PROGRAM SEGMENT PREFIX
  195. ;--------------------------------
  196. ;
  197. PROGRAM     SEGMENT
  198. INT20        DW            ;INT 20 for DOS return
  199. MEMORYSIZE    DW            ;TOTAL MEMORY SIZE
  200. CALLDOS_FAR    DB    5 DUP(?)    ; LONG CALL DOS DISPATCHER
  201. TERMADDR    DB    4 DUP(?)    ; TERMINATE ADDRESS (ip,cs)
  202. CTRLBREAK    DB    4 DUP(?)    ; ctrl_break EXIT ADDRESS
  203. RESERVED    DB    4ah DUP(?)    ; RESERVED AREA
  204. FCB_ONE     DB    10H DUP(?)    ; unopened fcb #1
  205. FCB_TWO     DB    10H DUP(?)    ; unopened fcb #2
  206. PARM_LENGTH    DB            ; LENGTH OF PARAMETERS
  207. PARM_FIELD    DB    19 DUP(?)    ; PARAMETER STRING DATA
  208. ;
  209.         SUBTTL
  210.         PAGE
  211.         ORG    100H        ; DEFAULT ENTRY ADDRESS
  212. PROGRAM_ENTRY    EQU    $
  213.