home *** CD-ROM | disk | FTP | other *** search
/ Programmer 7500 / MAX_PROGRAMMERS.iso / PASCAL / MADTRB18.ZIP / DOS3.TXT < prev    next >
Encoding:
Text File  |  1985-07-31  |  26.4 KB  |  497 lines

  1. Copyright 1984 by Dan Rollins
  2. ╔═════════════════════════════════════════════════════════════════════════════╗
  3. ║               The Interrupt Phone Book                  ║
  4. ║                                          ║
  5. ║                      by                      ║
  6. ║                                          ║
  7. ║                  Dan Rollins                      ║
  8. ╚═════════════════════════════════════════════════════════════════════════════╝
  9.  
  10.  
  11.       EDITOR'S  NOTE:  Due  to  diskette  space  limitations  this
  12.       article  has been abridged. The remainder will appear in the
  13.       next issue of PCFL.
  14.  
  15.  
  16. ┌───────────────────────────────┬─────────────────────────────────────────────┐
  17. │        Interrupt        │                          │
  18. ├──────┬─────────┬──────────────┤        NAME/Description          │
  19. │ Type │ Address │ Subfunctions │                          │
  20. ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
  21. │                │                          │
  22. │  0      0-3           none    │ DIVIDE_BY_0/Automatically taken  upon div-  │
  23. │                │ ision overflow                  │
  24. │                │                          │
  25. │  1      4-7           none    │ SINGLE_STEP/taken  after every instruction  │
  26. │                │ when    CPU  Trap Flag indicates single-step  │
  27. │                │ mode (bit 8 of FLAGS is 1)              │
  28. │                │                          │
  29. │  2      8-B           none    │ NON_MASKABLE/vector not disabled via CLI    │
  30. │                │                          │
  31. │  3      C-F           none    │ BREAKPOINT/taken  when  CPU  executes  the  │
  32. │                │ 1-byte INT 3 (0CCH)                  │
  33. │                │                          │
  34. │  4      10-13        none    │ OVERFLOW/taken  when    OF=1 and INTO opcode  │
  35. │                │ is executed                      │
  36. │                │                          │
  37. │  5      14-17        none    │ PRINT_SCREEN/service    dumps  the screen to  │
  38. │                │ the printer Invoked by KBD_INT for shifted  │
  39. │                │ key 55 (PrtSc)                  │
  40. │                │                          │
  41. │  6      18-1B        none    │ reserved                      │
  42. │                │                          │
  43. │  7      1C-1F        none    │ reserved                      │
  44. │                │                          │
  45. │  8      20-23        none    │ TIMER_INT/55ms  timer  "tick"  taken  18.2  │
  46. │                │ times  per  second. Updates BIOS clock and  │
  47. │                │ turns  off  diskette    drive motors after 2  │
  48. │                │ seconds of inactivity.              │
  49. │                │                          │
  50. │  9      24-27        none    │ KBD_INT/taken whenever a key is pressed or  │
  51. │                │ released. Stores  characters/scan-codes in  │
  52. │                │ buffer  at  [0040:001E]. Updates shift-key  │
  53. │                │ status at [0040:0017,18]              │
  54. │                │                          │
  55. │  A      28-2B        none    │ reserved                      │
  56. │                │                          │
  57. │  B      2C-2F        none    │ reserved                      │
  58. │                │                          │
  59. │  C      30-33        none    │ reserved                      │
  60. │                │                          │
  61. │  D      34-37        none    │ reserved                      │
  62. │                │                          │
  63. │  E      38-3B        none    │ DISKETTE_INT/indicates  that    a seek is in  │
  64. │                │ progress (sets bit-8 of 40:003E)          │
  65. │                │                          │
  66. │  F      3C-3F        none    │ reserved                      │
  67. │                │                          │
  68. └───────────────────────────────┴─────────────────────────────────────────────┘
  69.  
  70.  
  71. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  72. │  Type  │ Address │                                  │
  73. ├────────┼─────────┤           VIDEO_IO/services handle video output          │
  74. │  10     │  40-43  │                                  │
  75. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  76. ┌────┬────────────────────────────────────────────────────────────────────────┐
  77. │ AH │                  NAME/Description                  │
  78. ├────┼────────────────────────────────────────────────────────────────────────┤
  79. │ 0  │      SET_MODE/initializes for one of 7 text or graphics modes          │
  80. │    │         AL = 0: 40x25 BW                          │
  81. │    │         AL = 1: 40x25 color                          │
  82. │    │         AL = 2: 80x25 BW                          │
  83. │    │         AL = 3: 80x25 color graphics                      │
  84. │    │         AL = 4: 320x200 color graphics                   │
  85. │    │         AL = 5: 320x200 BW graphics                      │
  86. │    │         AL = 6: 640x200 BW graphics                      │
  87. ├────┼────────────────────────────────────────────────────────────────────────┤
  88. │ 1  │      SET_CUR_TYPE/set the size of the cursor or turn it off          │
  89. │    │         CH=start line (bit 5=no cursor), CL=end line              │
  90. │    │         CL=end line                              │
  91. ├────┼────────────────────────────────────────────────────────────────────────┤
  92. │ 2  │      SET_CUR_POS/re-position the cursor                      │
  93. │    │         DH=row (0-24)                              │
  94. │    │         DL=column (0-79 or 0-39)                      │
  95. │    │         BH=video page                              │
  96. ├────┼────────────────────────────────────────────────────────────────────────┤
  97. │ 3  │      READ_CUR_POS/return the position of the cursor              │
  98. │    │         BH=video page                              │
  99. │    │         returns: DH=row, DL=clm, CX=cursor size              │
  100. ├────┼────────────────────────────────────────────────────────────────────────┤
  101. │ 4  │      READ_LIGHT_PEN/fetch light pen information                  │
  102. │    │         returns: AH=0 light pen not triggered                  │
  103. │    │                  AH=1: DH,DL=character row,column              │
  104. │    │                    CH,CL=graphics row,column              │
  105. ├────┼────────────────────────────────────────────────────────────────────────┤
  106. │ 5  │      SELECT_ACTIVE_PAGE/set page number for services 6 and 7          │
  107. │    │         AL = new page (0-7 for modes 0 & 1, 0-3 for modes 2 & 3)     │
  108. ├────┼────────────────────────────────────────────────────────────────────────┤
  109. │ 6  │      SCROLL_PAGE_UP/scroll up or clear a display "window"                │
  110. │    │         AL=number of lines to scroll (0=blank entire window)          │
  111. │    │         CH,CL=row,column of top left corner of window              │
  112. │    │         DH,DL=row,column of lowest right corner of window          │
  113. │    │         BH=video attribute for blanked lines                  │
  114. ├────┼────────────────────────────────────────────────────────────────────────┤
  115. │ 7  │      SCROLL_PAGE_DOWN/scroll down or clear a display "window"            │
  116. │    │         (see sub-function 6 for parameters)                  │
  117. ├────┼────────────────────────────────────────────────────────────────────────┤
  118. │ 8  │      READ_CHAR_ATTR/fetch a character from the cursor position          │
  119. │    │         BH=page number                           │
  120. │    │         returns: AL=character, AH=attribute                  │
  121. ├────┼────────────────────────────────────────────────────────────────────────┤
  122. │ 9  │      WRITE_CHAR_ATTR/display character(s) & attribute at cursor          │
  123. │    │         AL=character to display                      │
  124. │    │         BH=display page,                          │
  125. │    │         BL=attribute (graphics modes: BL=color (or 80H for XOR)      │
  126. │    │         CX=repeat count                          │
  127. ├────┼────────────────────────────────────────────────────────────────────────┤
  128. │ A  │      WRITE_CHAR/display  character(s)  only  (use current attribute)     │
  129. │    │         (see sub-function 9 for parameters)                  │
  130. ├────┼────────────────────────────────────────────────────────────────────────┤
  131. │ B  │      SET_COLOR_PALETTE/set palette for graphics or text border          │
  132. │    │         BH=0: select border (text mode)                  │
  133. │    │               BL=color (0-15, 16-31 for high-intensity chars.          │
  134. │    │         BH=1: select graphics palette                      │
  135. │    │               BL=palette code (0=grn/red/yel, 1=cyan/mag/white)      │
  136. ├────┼────────────────────────────────────────────────────────────────────────┤
  137. │ C  │      WRITE_DOT/plot one graphics pixel                      │
  138. │    │         DX=row,                              │
  139. │    │         CX=clm                               │
  140. │    │         AL=color (bit 7 to XOR the dot)                  │
  141. ├────┼────────────────────────────────────────────────────────────────────────┤
  142. │ D  │      READ_DOT/determine the color of one graphics pixel              │
  143. │    │         DX=row,                              │
  144. │    │         CX=clm,                              │
  145. │    │         returns: AL=color of dot                      │
  146. ├────┼────────────────────────────────────────────────────────────────────────┤
  147. │ E  │      WRITE_TTY/write one character and update cursor.  Also          │
  148. │    │           handles CR (0DH), beep (07H), and scrolls screen if          │
  149. │    │           needed.                              │
  150. │    │         AL=char to write                          │
  151. │    │         BL=foreground if in graphics mode                  │
  152. ├────┼────────────────────────────────────────────────────────────────────────┤
  153. │ F  │      VIDEO_STATE/fetch the mode and size of the screen              │
  154. │    │         returns: AL=mode (see sub-function 0),               │
  155. │    │              AH=size,                          │
  156. │    │              BH=page                          │
  157. └────┴────────────────────────────────────────────────────────────────────────┘
  158.  
  159.  
  160. ┌───────────────────────────────┬─────────────────────────────────────────────┐
  161. │        Interrupt        │                          │
  162. ├──────┬─────────┬──────────────┤        NAME/Description          │
  163. │ Type │ Address │ Subfunctions │                          │
  164. ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
  165. │  11     44-47           none    │ EQUIPMENT_CHECK/fetch  a  code  describing  │
  166. │                │ active peripherals.                  │
  167. │                │ returns:     AX=equipment    code    bits:  │
  168. │                │                          │
  169. │                │           PP-JSSS-DDVVRR-I           │
  170. │                │                          │
  171. │                │ PP  = number of printers              │
  172. │                │ J   = joystick                  │
  173. │                │ SSS = serial devices (RS-232 ports)          │
  174. │                │ DD  = number    of disk drives (00=1, 01=2,   │
  175. │                │     10=3, 11=4)                  │
  176. │                │ VV  = video  (11=BW card, 01 & 10 = color   │
  177. │                │     card)                      │
  178. │                │ RR  = RAM in mother-board ( 00=16K...       │
  179. │                │     11=64K),                  │
  180. │                │ I   = disk-existance     (0=no    drives    in    │
  181. │                │     system)                  │
  182. │                │                          │
  183. │  12     48-4B           none    │ MEMORY_SIZE/fetch  AX=count  of contiguous  │
  184. │                │     1K RAM blocks                  │
  185. └───────────────────────────────┴─────────────────────────────────────────────┘
  186.  
  187.  
  188. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  189. │  Type  │ Address │                                  │
  190. ├────────┼─────────┤     DISKETTE_IO/access the 5-1/4 inch diskette drives    │
  191. │  13     │  4C-4F  │                                  │
  192. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  193. ┌────┬────────────────────────────────────────────────────────────────────────┐
  194. │ AH │                  NAME/Description                  │
  195. ├────┼────────────────────────────────────────────────────────────────────────┤
  196. │ 0  │      RESET/reset the disk controller chip                      │
  197. ├────┼────────────────────────────────────────────────────────────────────────┤
  198. │ 1  │      GET_STATUS/fetch AL=status of most recent operation              │
  199. ├────┼────────────────────────────────────────────────────────────────────────┤
  200. │ 2  │      READ_SECTORS/read one or more sectors from diskette              │
  201. │    │         DH = head   DL = drive (0=A, 1=B, etc.)              │
  202. │    │         CH = track  CL = sector (1-8 or 1-9 for DOS 2.0)          │
  203. │    │         AL = sectors to read                          │
  204. │    │         ES:BX = address to store/fetch data                  │
  205. │    │         [0000:0078] = doubleword pointer to diskette parms          │
  206. │    │         returns: Carry Flag = NC (0) for successful              │
  207. │    │              Carry Flag = CY (1) failure                  │
  208. │    │              AH = disk status (error reason)              │
  209. │    │               80H = timeout: disk failed to respond          │
  210. │    │               40H = seek operation failure               │
  211. │    │               20H = NEC disk drive controller failed          │
  212. │    │               10H = bad Cyclical Redundancy Check (CRC)          │
  213. │    │               09H = attempted access across 64K boundary          │
  214. │    │               08H = DMA overrun                      │
  215. │    │               04H = record not found                  │
  216. │    │               03H = write protect error                  │
  217. │    │               02H = sector ID error (can't find address mark)    │
  218. │    │                01H = unknown command                  │
  219. ├────┼────────────────────────────────────────────────────────────────────────┤
  220. │ 3  │      WRITE_SECTORS/write from memory to disk                  │
  221. │    │       (parameters as with sub-function 2)                      │
  222. ├────┼────────────────────────────────────────────────────────────────────────┤
  223. │ 4  │      VERIFY/verify that a write operation was successful              │
  224. │    │       (parameters as with sub-function 2, but ES:BX not needed)          │
  225. ├────┼────────────────────────────────────────────────────────────────────────┤
  226. │ 5  │      FORMAT_TRACK/write sector-ID bytes for 1 track              │
  227. │    │       ES:BX points to 8 (or 9) 4-byte sector ID marks:              │
  228. │    │         byte 0 = track number                          │
  229. │    │         byte 1 = head number                          │
  230. │    │         byte 2 = sector number                          │
  231. │    │         byte 3 = bytes in sector (0=128, 1=256, 2=512, 3=1024)          │
  232. └────┴────────────────────────────────────────────────────────────────────────┘
  233.  
  234.  
  235. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  236. │  Type  │ Address │   RS232_IO/initialize and access serial communications   │
  237. ├────────┼─────────┤   port.                              │
  238. │  14     │  50-53  │                                  │
  239. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  240. ┌────┬────────────────────────────────────────────────────────────────────────┐
  241. │ AH │                  NAME/Description                  │
  242. ├────┼────────────────────────────────────────────────────────────────────────┤
  243. │ 0  │      RS232_IO/initialize and access serial communications port          │
  244. │    │       INIT_COM/initialize port named by DX (0 or 1)              │
  245. │    │        initialization bit pattern: BBBPPSLL                  │
  246. │    │        BBB = baud rate:   110,150,300,600,1200,2400,4800,9600          │
  247. │    │        PP    = parity:      01 = odd, 11 = even                  │
  248. │    │        S    = stop bits:   0 = 1, 1 = 2                      │
  249. │    │        LL    = word length: 10 = 7-bits, 11 = 8-bits               │
  250. ├────┼────────────────────────────────────────────────────────────────────────┤
  251. │ 1  │      SEND_CHAR/send character to comm port DX (0 or 1)              │
  252. │    │       AL = character                              │
  253. │    │       returns: bit 7 of AH = 1 if error                      │
  254. ├────┼────────────────────────────────────────────────────────────────────────┤
  255. │ 2  │      AWAIT_COMM_CHAR/wait for a character from comm port DX          │
  256. │    │       returns: AL = character                          │
  257. │    │            AH = error code (0 for no error)                  │
  258. ├────┼────────────────────────────────────────────────────────────────────────┤
  259. │ 3  │      COMM_STATUS/fetch the status of comm port DX (0 or 1)           │
  260. │    │       returns: comm-line status in AH, modem status in AL              │
  261. │    │        AH bit 7 = timeout                              │
  262. │    │           bit 6 = empty transmit shift register                  │
  263. │    │           bit 5 = empty transmit holding register                  │
  264. │    │           bit 4 = break detected ("long-space")                          │
  265. │    │           bit 3 = framing error                          │
  266. │    │           bit 2 = parity error                          │
  267. │    │           bit 1 = overrun error                          │
  268. │    │           bit 0 = data ready                          │
  269. │    │        AL bit 7 = received line signal detect                  │
  270. │    │           bit 6 = ring indicator                          │
  271. │    │           bit 5 = data set ready                          │
  272. │    │           bit 4 = clear to send                          │
  273. │    │           bit 3 = delta receive line signal detect               │
  274. │    │           bit 2 = trailing edge ring detector                  │
  275. │    │           bit 1 = delta data set ready                      │
  276. │    │           bit 0 = delta clear to send                      │
  277. └────┴────────────────────────────────────────────────────────────────────────┘
  278.  
  279.  
  280. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  281. │  Type  │ Address │           CASSETTE_IO/access cassette tape drive          │
  282. ├────────┼─────────┤           (NOP for IBM-XT)                   │
  283. │  15     │  54-57  │                                  │
  284. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  285. ┌────┬────────────────────────────────────────────────────────────────────────┐
  286. │ AH │                  NAME/Description                  │
  287. ├────┼────────────────────────────────────────────────────────────────────────┤
  288. │ 0  │      CASS_ON/start the motor                          │
  289. ├────┼────────────────────────────────────────────────────────────────────────┤
  290. │ 1  │      CASS_OFF/turn the motor off                          │
  291. ├────┼────────────────────────────────────────────────────────────────────────┤
  292. │ 2  │      CASS_READ/read CX bytes into ES:BX buffer                  │
  293. ├────┼────────────────────────────────────────────────────────────────────────┤
  294. │ 3  │      CASS_WRITE/write CX bytes from ES:BX buffer to tape              │
  295. └────┴────────────────────────────────────────────────────────────────────────┘
  296.  
  297.  
  298. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  299. │  Type  │ Address │                                  │
  300. ├────────┼─────────┤        KBD_IO/access the keyboard buffer          │
  301. │  16     │  58-5B  │                                  │
  302. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  303. ┌────┬────────────────────────────────────────────────────────────────────────┐
  304. │ AH │                  NAME/Description                  │
  305. ├────┼────────────────────────────────────────────────────────────────────────┤
  306. │ 0  │      AWAIT_CHAR/read the next character in keyboard buffer,          │
  307. │    │       If no key ready, wait for one.                      │
  308. │    │       returns: AL = ASCII character, AH = scan-code              │
  309. ├────┼────────────────────────────────────────────────────────────────────────┤
  310. │ 1  │      PREVIEW_KEY/see if key is ready                      │
  311. │    │       returns: ZF = ZR (1) if no key ready, else                  │
  312. │    │            ZF = NZ and AX=char/scan-code                  │
  313. ├────┼────────────────────────────────────────────────────────────────────────┤
  314. │ 2  │      SHIFT_STATUS/fetch bit flags indicating shift status              │
  315. │    │       returns: AL = bit codes (same as [0040:0017])              │
  316. │    │           bit 7 = Insert state                       │
  317. │    │           bit 6 = CapsLock state                      │
  318. │    │           bit 5 = NumLock state                      │
  319. │    │           bit 4 = ScrollLock state                      │
  320. │    │           bit 3 = Alternate shift (Alt key)                  │
  321. │    │           bit 2 = Control shift (Ctrl key)                  │
  322. │    │           bit 1 = Left shift (left caps-shift key)              │
  323. │    │           bit 0 = Right shift (right caps-shift key)              │
  324. │    │       note: other codes found at [0040:0018]                  │
  325. │    │           bit 7 = Insert shift (Ins key)                  │
  326. │    │           bit 6 = Caps shift (CapsLock key)                  │
  327. │    │           bit 5 = Num shift (NumLock key)                  │
  328. │    │           bit 4 = Scroll shift (ScrollLock key)              │
  329. │    │           bit 3 = Hold state (Ctrl-NumLock is in effect)          │
  330. └────┴────────────────────────────────────────────────────────────────────────┘
  331.  
  332.  
  333. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  334. │  Type  │ Address │                                  │
  335. ├────────┼─────────┤        PRINTER_IO/access the parallel printer(s)          │
  336. │  17     │  5C-5F  │                                  │
  337. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  338. ┌────┬────────────────────────────────────────────────────────────────────────┐
  339. │ AH │                  NAME/Description                  │
  340. ├────┼────────────────────────────────────────────────────────────────────────┤
  341. │ 0  │      PRINT_CHAR/send AL to printer DX (0, 1, or 2)               │
  342. │    │       returns: AH=1 for timeout error, AL=status (see below)          │
  343. ├────┼────────────────────────────────────────────────────────────────────────┤
  344. │ 1  │      INIT_PRINTER/set init line low, send 0CH to printer DX          │
  345. │    │       returns: status as below                          │
  346. ├────┼────────────────────────────────────────────────────────────────────────┤
  347. │ 2  │      PRINTER_STATUS/read status of printer DX into AH              │
  348. │    │       returns: bit flags:                              │
  349. │    │            bit 7 = Printer is busy                      │
  350. │    │            bit 6 = Acknowledge line state                  │
  351. │    │            bit 5 = Out-of-paper line state                  │
  352. │    │            bit 4 = printer selected line state               │
  353. │    │            bit 3 = I/O error                          │
  354. │    │            bit 2 = unused                          │
  355. │    │            bit 1 = unused                          │
  356. │    │            bit 0 = Time-out error                      │
  357. └────┴────────────────────────────────────────────────────────────────────────┘
  358.  
  359.  
  360. ┌───────────────────────────────┬─────────────────────────────────────────────┐
  361. │        Interrupt        │                          │
  362. ├──────┬─────────┬──────────────┤        NAME/Description          │
  363. │ Type │ Address │ Subfunctions │                          │
  364. ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
  365. │                │                          │
  366. │  18     60-63           none    │ ROM_BASIC/execute    non-disk   BASIC   at  │
  367. │                │ F600:0000                      │
  368. │                │                          │
  369. │  19     64-67           none    │ BOOT_STRAP/read  track  0,  sector  1 into  │
  370. │                │ 0000:7C00,  then  transfer control to that  │
  371. │                │ address.  If    no diskette drive available,  │
  372. │                │ transfers to ROM-BASIC.              │
  373. └───────────────────────────────┴─────────────────────────────────────────────┘
  374.  
  375.  
  376. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  377. │  Type  │ Address │                                  │
  378. ├────────┼─────────┤         TIME_OF_DAY/access the PC internal clock          │
  379. │  1A     │  68-6B  │                                  │
  380. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  381. ┌────┬────────────────────────────────────────────────────────────────────────┐
  382. │ AH │                  NAME/Description                  │
  383. ├────┼────────────────────────────────────────────────────────────────────────┤
  384. │ 0  │      READ_CLOCK/fetch count of 55ms "ticks" since power-on               │
  385. │    │       returns: CX = high word of count                      │
  386. │    │            DX = low word of count                      │
  387. │    │            AL = 0 when no 24-hour overflow since power-on          │
  388. ├────┼────────────────────────────────────────────────────────────────────────┤
  389. │ 1  │       SET_CLOCK/set number of 55ms in clock variable              │
  390. │    │        CX = high word of timer ticks                      │
  391. │    │        DX = low word of timer ticks                      │
  392. │    │       note: the clock ticks are incremented by TIMER_INT              │
  393. │    │         at about 18.2 times per second.  Therefore:              │
  394. │    │         counts per second = 18      (12H)                  │
  395. │    │         counts per minute = 1092    (444H)                  │
  396. │    │         counts per hour   = 65543   (10011H)                  │
  397. │    │         counts per day    = 1573040 (1800B0H)                  │
  398. └────┴────────────────────────────────────────────────────────────────────────┘
  399.  
  400.  
  401. ┌───────────────────────────────┬─────────────────────────────────────────────┐
  402. │        Interrupt        │                          │
  403. ├──────┬─────────┬──────────────┤        NAME/Description          │
  404. │ Type │ Address │ Subfunctions │                          │
  405. ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
  406. │  1B     6C-6F           none    │ KEYBOARD_BREAK/routine taken when KBD_INT   │
  407. │                │ senses Ctrl-Break.                  │
  408. │  1C     70-73           none    │                          │
  409. │                │ USER_TIMER_INT/taken     18.2    times    per   │
  410. │                │ second;   invoked   by   the     TIMER_INT;   │
  411. │                │ normally vectors to dummy IRET.          │
  412. └───────────────────────────────┴─────────────────────────────────────────────┘
  413.  
  414.  
  415. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  416. │  Type  │ Address │      VIDEO_PARMS_PTR/vector of video initialization      │
  417. ├────────┼─────────┤      parameters.                          │
  418. │  1D     │  74-77  │                                  │
  419. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  420. ┌─────────────────────────────────────────────────────────────────────────────┐
  421. │                  NAME/Description                      │
  422. ├─────────────────────────────────────────────────────────────────────────────┤
  423. │      VIDEO_PARMS_PTR/vector of video initialization parameters          │
  424. │                                          │
  425. │         This doubleword address points to 3 sets of 16-bytes          │
  426. │         containing data to initialize for video modes for video          │
  427. │         modes 0&1 (40 clm), 2&3 (80 clm), and 4,5&6 (graphics).          │
  428. │         Parm table format corresponds to the Motorola 6845 CRT          │
  429. │         controller registers:                          │
  430. │           R0 : horiz. total (horiz. sync in characters)              │
  431. │           R1 : horiz. displayed (chars per line)                  │
  432. │           R2 : horiz. sync position (move display left or right)          │
  433. │           R3 : sync width (vert. and horiz. pulse: 4-bits each)          │
  434. │           R4 : vertical total (total character lines)              │
  435. │           R5 : vertical adjust (adjust for 50 or 60 Hz refresh)          │
  436. │           R6 : vert. displayed (lines of chars displayed)              │
  437. │           R7 : Vert. sync position (lines shifted up or down)          │
  438. │           R8 : Interlace (bits 4 and 5) and skew (bits 6 and 7)          │
  439. │           R9 : Max scan line addr (scan lines per char row)          │
  440. │           R10: Cursor start (starting scan line of cursor)           │
  441. │           R11: Cursor stop (ending scan line of cursor)              │
  442. │           R12: vid-mem start address high byte (6-bits)              │
  443. │           R13: vid-mem start address low byte (8-bits)              │
  444. │           R14: cursor address high byte (6-bits)                  │
  445. │           R15: cursor address low byte (8-bits)                  │
  446. └─────────────────────────────────────────────────────────────────────────────┘
  447.  
  448.  
  449. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  450. │  Type  │ Address │                                  │
  451. ├────────┼─────────┤  DISKETTE_PARMS_PTR/vector of diskette controller parms  │
  452. │  1E     │  78-7B  │                                  │
  453. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  454. ┌─────────────────────────────────────────────────────────────────────────────┐
  455. │                  NAME/Description                      │
  456. ├─────────────────────────────────────────────────────────────────────────────┤
  457. │      DISKETTE_PARMS_PTR/vector of diskette controller parms:          │
  458. │                                          │
  459. │         This doubleword address points to data that is used          │
  460. │         by DISKETTE_IO.  11-byte table format:                  │
  461. │           byte 0 : 4-bit step rate, 4-bit head unload time           │
  462. │           byte 1 : 7-bit head load time, 1-bit DMA flag              │
  463. │           byte 2 : 55ms counts--delay till motor off              │
  464. │           byte 3 : sector size (0=128, 1=256, 2=512, 3=1024)          │
  465. │           byte 4 : last sector on track                      │
  466. │           byte 5 : gap between sectors                      │
  467. │           byte 6 : data length for DMA transfers                  │
  468. │           byte 7 : gap length for format                      │
  469. │           byte 8 : fill byte for format                      │
  470. │           byte 9 : head settle time (in milliseconds)              │
  471. │           byte 10: motor start time (in 1/8 second intervals)          │
  472. └─────────────────────────────────────────────────────────────────────────────┘
  473.  
  474.  
  475. ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
  476. │  Type  │ Address │                                  │
  477. ├────────┼─────────┤  DISKETTE_PARMS_PTR/vector of diskette controller parms  │
  478. │  1F     │  7C-7F  │                                  │
  479. └────────┴─────────┴──────────────────────────────────────────────────────────┘
  480. ┌─────────────────────────────────────────────────────────────────────────────┐
  481. │                  NAME/Description                      │
  482. ├─────────────────────────────────────────────────────────────────────────────┤
  483. │      GRAPHICS_TBL_PTR/vector of data used by VIDEO_IO to              │
  484. │       display characters above ASCII 127 in graphics modes.          │
  485. │       Doubleword address points to 1K table composed of 128          │
  486. │       8-byte character definition bit-patterns.  First byte          │
  487. │       of each entry is top row, last byte is bottom row.              │
  488. └─────────────────────────────────────────────────────────────────────────────┘
  489.  
  490.  
  491.  
  492.  
  493.  
  494.              ┌──────────────────────────────────┐
  495.              │ File Name:  ██      dos3.txt  ██    │
  496.              └──────────────────────────────────┘
  497.