home *** CD-ROM | disk | FTP | other *** search
/ RBBS in a Box Volume 1 #3.1 / RBBSIABOX31.cdr / ajut / addrsses.txt < prev    next >
Text File  |  1990-09-29  |  10KB  |  292 lines

  1.     page    ,132
  2. ;--------------------------
  3. ; This text is a partial listing of BIOS low memory
  4. ;      see tech ref.
  5. ; Malcolm McCorquodale
  6. ;--------------------------
  7. data        segment at 40h
  8. rs232_base    dw    4 dup(?)    ;addr of rs232 adapters.
  9. printer_base    dw    4 dup(?)    ;addr of printers
  10. equip_flag    dw    ?        ;installed hardware
  11. mfg_test    db    ?        ;initialization flag
  12. memory_size    dw    ?        ;memory size in k bytes
  13. io_ram_size    dw    ?        ;memory in I/O channel
  14. ;--------------------------
  15. ; keyboard data areas
  16. ;--------------------------
  17. kb_flag     db    ?
  18.  
  19. ;---------- shift flag equates w/i kb_flag
  20.  
  21. ins_state    equ    80h    ;insert state is active
  22. caps_state    equ    40h    ;caps lock state has been toggled
  23. num_state    equ    20h    ;num lock state has been toggled
  24. scroll_state    equ    10h    ;scroll lock state has been toggled
  25. alt_shift    equ    08h    ;alt shift key depressed
  26. ctl_shift    equ    04h    ;ctl shift key depressed
  27. left_shift    equ    02h    ;left shift key depressed
  28. right_shift    equ    01h    ;right shift key depressed
  29.  
  30. kb_flag_1    db    ?
  31.  
  32. ins_shift    equ    80h    ;insert state is depressed
  33. caps_shift    equ    40h    ;caps lock state is depressed
  34. num_shift    equ    20h    ;num lock state is depressed
  35. scroll_shift    equ    10h    ;scroll lock state is depressed
  36. hold_state    equ    08h    ;suspend key has been toggled
  37.  
  38. alt_input    db    ?    ;storage for alternate keypad entry
  39. buffer_head    dw    ?    ;ptr to head of keyboard buffer
  40. buffer_tail    dw    ?    ;pointer to tail of keyboard buffer
  41. kb_buffer    dw    16 dup(?) ; room for 15 entries
  42. kb_buffer_end    label    word
  43. ;---------------------------------
  44. ; diskette data areas w/o equates
  45. ;---------------------------------
  46. seek_status    db    ?
  47. motor_status    db    ?
  48. motor_count    db    ?
  49. diskette_status db    ?
  50. nec_status    db    7 dup(?)
  51. ;----------------------------------
  52. ; video display data area
  53. ;----------------------------------
  54. crt_mode    db    ?    ;current crt mode
  55. crt_cols    dw    ?    ;number of columns on screen
  56. crt_len     dw    ?    ;length of regen in bytes
  57. crt_start    dw    ?    ;starting address in regen buffer
  58. cursor_posn    dw    8 dup(?) ;cursor for each of up to 8 pages
  59. cursor_mode    dw    ?    ;current cursor mode setting
  60. active_page    db    ?    ;current page being displayed
  61. addr_6845    dw    ?    ;base address for active display card
  62. crt_mode_set    db    ?    ;current setting of the 3x8 register
  63. crt_pallette    db    ?    ;current pallette setting color card
  64. data        ends
  65.  
  66. ;--------------------------------
  67. ; video diplay buffer
  68. ;--------------------------------
  69. video_ram    segment at 0b800h
  70. regen    label    byte
  71. regenw    label    word
  72. video_ram    ends
  73.  
  74. ;--------------------------------
  75. ; Stack segment
  76. ;--------------------------------
  77. stack    segment stack 'stack'
  78. stk    db    32 dup (?)
  79. stack    ends
  80. ; from gaithersburg md ibm pc bulletin board 19mar83
  81. ;
  82. ;
  83.         SUBTTL ROM BIOS DATA AREAS AND EQUATES
  84. ;--------------------------------
  85. ;   EQUATES
  86. ;--------------------------------
  87. PORT_A        EQU    60H         ; 8255 PORT A ADDR
  88. PORT_B        EQU    61H         ; 8255 PORT B ADDR
  89. PORT_C        EQU    62H         ; 8255 PORT C ADDR
  90. CMD_PORT    EQU    63H
  91. INTA00        EQU    20H         ; 8259 PORT
  92. INTA01        EQU    21H         ; 8259 PORT
  93. EOI        EQU    20H
  94. TIMER        EQU    40H
  95. TIM_CTL     EQU    43H         ; 8253 TIMER CONTROL PORT ADDR
  96. TIMER0        EQU    40H         ; 8253 TIMER/CNTER 0 PORT ADDR
  97. TMINT        EQU    01         ; TIMER 0 INTR RECVD MASK
  98. DMA08        EQU    08         ; DMA STATUS REG PORT ADDR
  99. DMA        EQU    00         ; DMA CHANNEL 0 ADDRESS REG PORT ADDR
  100. MAX_PERIOD    EQU    540H
  101. MIN_PERIOD    EQU    410H
  102. KBD_IN        EQU    60H         ; KEYBOARD DATA IN ADDR PORT
  103. KBDINT        EQU    02         ; KEYBOARD INTR MASK
  104. KB_DATA     EQU    60H         ; KEYBOARD SCAN CODE PORT
  105. KB_CTL        EQU    61H         ; CONTROL BITS FOR KEYBOARD SENSE DATA
  106. ;--------------------------------
  107. ;  8088 INTERRUPT LOCATIONS
  108. ;--------------------------------
  109. ABS0        SEGMENT AT 0
  110. STG_LOC0    LABEL    BYTE
  111.         ORG    2*4
  112. NMI_PTR     LABEL    WORD
  113.         ORG    5*4
  114. INTS_PTR    LABEL    WORD
  115.         ORG    8*4
  116. INT_ADDR    LABEL    WORD
  117. INT_PTR     LABEL    DWORD
  118.         ORG    10H*4
  119. VIDEO_INT    LABEL    WORD
  120.         ORG    1DH*4
  121. PARM_PTR    LABEL    DWORD         ; POINTER TO VIDEO PARMS
  122.         ORG    01EH*4         ; INTERRUPT 1EH
  123. DISK_PTR    LABEL    DWORD
  124.         ORG    01FH*4         ; LOCATION OF POINTER
  125. EXT_PTR     LABEL    DWORD         ; POINTER TO EXTENSION
  126.         ORG    7C00H
  127. BOOT_LOCN    LABEL    FAR
  128. ABS0        ENDS
  129.         PAGE
  130. ;--------------------------------
  131. ;  STACK -- USED DURING INITIALIZATION ONLY
  132. ;--------------------------------
  133. STACK        SEGMENT AT 30H
  134.         DW    128 DUP(?)
  135. TOS        LABEL    WORD
  136. STACK        ENDS
  137. ;--------------------------------
  138. ;  ROM BIOS DATA AREAS
  139. ;--------------------------------
  140. DATA        SEGMENT AT 40H
  141. RS232_BASE    DW    4 DUP(?)     ; ADDRESSES OF RS232 ADAPTERS
  142. PRINTER_BASE    DW    4 DUP(?)     ; ADDRESSES OF PRINTERS
  143. EQUIP_FLAG    DW    ?         ; INSTALLED HARDWARE
  144. MFG_TST     DB    ?         ; INITIALIZATION FLAG
  145. MEMORY_SIZE    DW    ?         ; MEMORY SIZE IN K BYTES
  146. IO_RAM_SIZE    DW    ?         ; MEMORY IN I/O CHANNEL
  147.         PAGE
  148. ;-------------------------------
  149. ;  KEYBOARD DATA AREAS
  150. ;-------------------------------
  151. KB_FLAG     DB    ?
  152. ;------ SHIFT FLAG EQUATES WITHIN KB_FLAG
  153. INS_STATE    EQU    80H         ; INSERT STATE IS ACTIVE
  154. CAPS_STATE    EQU    40H         ; CAPS LOCK STATE HAS BEEN TOGGLED
  155. NUM_STATE    EQU    20H         ; NUM LOCK STATE HAS BEEN TOGGLED
  156. SCROLL_STATE    EQU    10H         ; SCROLL LOCK STATE HAS BEEN TOGGLED
  157. ALT_STATE    EQU    08H         ; ALTERNATE SHIFT KEY DEPRESSED
  158. CTL_SHIFT    EQU    04H         ; CONTROL SHIFT KEY DEPRESSED
  159. LEFT_SHIFT    EQU    02H         ; LEFT SHIFT KEY DEPRESSED
  160. RIGHT_SHIFT    EQU    01H         ; RIGHT SHIFT KEY DEPRESSED
  161. ;-------------------------------
  162. KB_FLAG_1    DB    ?         ; SECOND BYTE OF KEYBOARD STATUS
  163. INS_SHIFT    EQU    80H         ; INSERT KEY IS DEPRESSED
  164. CAPS_SHIFT    EQU    40H         ; CAPS LOCK KEY IS DEPRESSED
  165. NUM_SHIFT    EQU    20H         ; NUM LOCK KEY IS DEPRESSED
  166. SCROLL_SHIFT    EQU    10H         ; SCROLL LOCK KEY IS DEPRESSED
  167. HOLD_STATE    EQU    08H         ; SUSPEND KEY HAS BEEN TOGGLED
  168. ;-------------------------------
  169. ALT_INPUT    DB    ?         ; STORAGE FOR ALTERNATE KEYPAD ENTRY
  170. BUFFER_HEAD    DW    ?         ; POINTER TO HEAD OF KEYBOARD BUFFER
  171. BUFFER_TAIL    DW    ?         ; POINTER TO TAIL OF KEYBOARD BUFFER
  172. KB_BUFFER    DW    16 DUP(?)     ; ROOM FOR 15 ENTRIES
  173. KB_BUFFER_END    LABEL    WORD
  174. ;------ HEAD = TAIL INDICATES THAT THE BUFFER IS EMPTY
  175. NUM_KEY     EQU    69         ; SCAN CODE FOR NUMBER LOCK
  176. SCROLL_KEY    EQU    70         ; SCROLL LOCK KEY
  177. ALT_KEY     EQU    56         ; ALTERNATE SHIFT KEY SCAN CODE
  178. CTL_KEY     EQU    29         ; SCAN CODE FOR CONTROL KEY
  179. CAPS_KEY    EQU    58         ; SCAN CODE FOR SHIFT LOCK
  180. LEFT_KEY    EQU    42         ; SCAN CODE FOR LEFT SHIFT
  181. RIGHT_KEY    EQU    54         ; SCAN CODE FOR RIGHT SHIFT
  182. INS_KEY     EQU    82         ; SCAN CODE FOR INSERT KEY
  183. DEL_KEY     EQU    83         ; SCAN CODE FOR DELETE KEY
  184.         PAGE
  185. ;-------------------------------
  186. ;   DISKETTE DATA AREAS
  187. ;-------------------------------
  188. SEEK_STATUS    DB    ?         ; DRIVE RECALIBRATION STATUS
  189. ;                     BIT 3-0 = DRIVE 3-0 NEEDS RECAL BEFORE
  190. ;                     NEXT SEEK IF BIT IS = 0
  191. INT_FLAG    EQU    080H         ; INTERRUPT OCCURRENCE FLAG
  192. MOTOR_STATUS    DB    ?         ; MOTOR STATUS
  193. ;             BIT 3-0 = DRIVE 3-0 IS CURRENTLY RUNNING
  194. ;             BIT 7     = CURRENT OPERATION IS A WRITE, REQUIRES DELAY
  195. MOTOR_COUNT    DB    ?         ; TIME OUT COUNTER FOR DRIVE TURN OFF
  196. MOTOR_WAIT    EQU    37       ; TWO SECONDS OF COUNTS FOR MOTOR TURN OFF
  197. ;
  198. DISKETTE_STATUS DB    ?       ; SINGLE BYTE OF RETURN CODE INFO FOR STATUS
  199. TIME_OUT    EQU    80H       ; ATTACHMENT FAILED TO RESPOND
  200. BAD_SEEK    EQU    40H       ; SEEK OPERATION FAILED
  201. BAD_NEC     EQU    20H       ; NEC CONTROLLER HAS FAILED
  202. BAD_CRC     EQU    10H       ; BAD CRC ON DISKETTE READ
  203. DMA_BOUNDARY    EQU    09H       ; ATTEMPT TO DMA ACROSS 64K BOUNDARY
  204. BAD_DMA     EQU    08H       ; DMA OVERRUN ON OPERATION
  205. RECORD_NOT_FND    EQU    04H       ; REQUESTED SECTOR NOT FOUND
  206. WRITE_PROTECT    EQU    03H       ; WRITE ATTEMPTED ON WRITE PROT DISK
  207. BAD_ADDR_MARK    EQU    02H       ; ADDRESS MARK NOT FOUND
  208. BAD_CMD     EQU    01H       ; BAD COMMAND PASSED TO DISKETTE I/O
  209. ;
  210. NEC_STATUS    DB    7 DUP(?)   ; STATUS BYTES FROM NEC
  211. ;--------------------------------
  212. ;   VIDEO DISPLAY DATA AREA
  213. ;--------------------------------
  214. CRT_MODE    DB    ?       ; CURRENT CRT MODE
  215. CRT_COLS    DW    ?       ; NUMBER OF COLUMNS ON SCREEN
  216. CRT_LEN     DW    ?       ; LENGTH OF REGEN IN BYTES
  217. CRT_START    DW    ?       ; STARTING ADDRESS IN REGEN BUFFER
  218. CURSOR_POSN    DW    8 DUP(?)   ; CURSOR FOR EACH OF UP TO 8 PAGES
  219. CURSOR_MODE    DW    ?       ; CURRENT CURSOR MODE SETTING
  220. ACTIVE_PAGE    DB    ?       ; CURRENT PAGE BEING DISPLAYED
  221. ADDR_6845    DW    ?       ; BASE ADDRESS FOR ACTIVE DISPLAY CARD
  222. CRT_MODE_SET    DB    ?       ; CURRENT SETTING OF THE 3X8 REGISTER
  223. CRT_PALLETTE    DB    ?       ; CURRENT PALLETTE SETTING COLOR CARD
  224.         PAGE
  225. ;--------------------------------
  226. ;   CASSETTE DATA AREA
  227. ;--------------------------------
  228. EDGE_CNT    DW    ?       ; TIME COUNT AT DATA EDGE
  229. CRC_REG     DW    ?       ; CRC REGISTER
  230. LAST_VAL    DB    ?       ; LAST INPUT VALUE
  231. ;--------------------------------
  232. ;   TIMER DATA AREA
  233. ;--------------------------------
  234. TIMER_LOW    DW    ?       ; LOW WORD OF TIMER COUNT
  235. TIMER_HIGH    DW    ?       ; HIGH WORD OF TIMER COUNT
  236. TIMER_OFL    DB    ?       ; TIMER HAS ROLLED OVER SINCE LAST READ
  237. ;COUNTS_SEC    EQU    18
  238. ;COUNTS_MIN    EQU    1092
  239. ;COUNTS_HOUR    EQU    65543
  240. ;COUNTS_DAY    EQU    1573040 = 1800B0H
  241. ;-------------------------------
  242. ;   SYSTEM DATA AREA
  243. ;-------------------------------
  244. BIOS_BREAK    DB    ?       ; BIT 7 = 1 IF BREAK KEY HAS BEEN DEPRESSED
  245. RESET_FLAG    DW    ?       ; WORD = 1234H IF KEYBOARD RESET UNDERWAY
  246. DATA        ENDS
  247. ;
  248. ;--------------------------------
  249. ;   EXTRA DATA AREA
  250. ;--------------------------------
  251. XXDATA        SEGMENT AT 50H
  252. STATUS_BYTE    DB    ?
  253. XXDATA        ENDS
  254. ;
  255. ;--------------------------------
  256. ;   VIDEO DISPLAY BUFFER
  257. ;--------------------------------
  258. VIDEO_RAM    SEGMENT AT 0B800H
  259. REGEN        LABEL    BYTE
  260. REGENW        LABEL    WORD
  261.         DB    16384 DUP(?)
  262. VIDEO_RAM    ENDS
  263. ;
  264. ;--------------------------------
  265. ;   ROM RESIDENT CODE
  266. ;--------------------------------
  267. ROMCODE     SEGMENT AT 0F000H
  268.         DB    57344 DUP(?)         ; FILL LOWEST 56K
  269.         DB    '5700051 CORP. IBM 1981' ; COPYRIGHT NOTICE
  270. ROMCODE     ENDS
  271. ;
  272. ;--------------------------------
  273. ;   PROGRAM SEGMENT PREFIX
  274. ;--------------------------------
  275. ;
  276. PROGRAM     SEGMENT
  277. INT20        DW            ;INT 20 for DOS return
  278. MEMORYSIZE    DW            ;TOTAL MEMORY SIZE
  279. CALLDOS_FAR    DB    5 DUP(?)    ; LONG CALL DOS DISPATCHER
  280. TERMADDR    DB    4 DUP(?)    ; TERMINATE ADDRESS (ip,cs)
  281. CTRLBREAK    DB    4 DUP(?)    ; ctrl_break EXIT ADDRESS
  282. RESERVED    DB    4ah DUP(?)    ; RESERVED AREA
  283. FCB_ONE     DB    10H DUP(?)    ; unopened fcb #1
  284. FCB_TWO     DB    10H DUP(?)    ; unopened fcb #2
  285. PARM_LENGTH    DB            ; LENGTH OF PARAMETERS
  286. PARM_FIELD    DB    19 DUP(?)    ; PARAMETER STRING DATA
  287. ;
  288.         SUBTTL
  289.         PAGE
  290.         ORG    100H        ; DEFAULT ENTRY ADDRESS
  291. PROGRAM_ENTRY    EQU    $
  292.