home *** CD-ROM | disk | FTP | other *** search
- Copyright 1984 by Dan Rollins
- ╔═════════════════════════════════════════════════════════════════════════════╗
- ║ The Interrupt Phone Book ║
- ║ ║
- ║ by ║
- ║ ║
- ║ Dan Rollins ║
- ╚═════════════════════════════════════════════════════════════════════════════╝
-
-
- EDITOR'S NOTE: Due to diskette space limitations this
- article has been abridged. The remainder will appear in the
- next issue of PCFL.
-
-
- ┌───────────────────────────────┬─────────────────────────────────────────────┐
- │ Interrupt │ │
- ├──────┬─────────┬──────────────┤ NAME/Description │
- │ Type │ Address │ Subfunctions │ │
- ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
- │ │ │
- │ 0 0-3 none │ DIVIDE_BY_0/Automatically taken upon div- │
- │ │ ision overflow │
- │ │ │
- │ 1 4-7 none │ SINGLE_STEP/taken after every instruction │
- │ │ when CPU Trap Flag indicates single-step │
- │ │ mode (bit 8 of FLAGS is 1) │
- │ │ │
- │ 2 8-B none │ NON_MASKABLE/vector not disabled via CLI │
- │ │ │
- │ 3 C-F none │ BREAKPOINT/taken when CPU executes the │
- │ │ 1-byte INT 3 (0CCH) │
- │ │ │
- │ 4 10-13 none │ OVERFLOW/taken when OF=1 and INTO opcode │
- │ │ is executed │
- │ │ │
- │ 5 14-17 none │ PRINT_SCREEN/service dumps the screen to │
- │ │ the printer Invoked by KBD_INT for shifted │
- │ │ key 55 (PrtSc) │
- │ │ │
- │ 6 18-1B none │ reserved │
- │ │ │
- │ 7 1C-1F none │ reserved │
- │ │ │
- │ 8 20-23 none │ TIMER_INT/55ms timer "tick" taken 18.2 │
- │ │ times per second. Updates BIOS clock and │
- │ │ turns off diskette drive motors after 2 │
- │ │ seconds of inactivity. │
- │ │ │
- │ 9 24-27 none │ KBD_INT/taken whenever a key is pressed or │
- │ │ released. Stores characters/scan-codes in │
- │ │ buffer at [0040:001E]. Updates shift-key │
- │ │ status at [0040:0017,18] │
- │ │ │
- │ A 28-2B none │ reserved │
- │ │ │
- │ B 2C-2F none │ reserved │
- │ │ │
- │ C 30-33 none │ reserved │
- │ │ │
- │ D 34-37 none │ reserved │
- │ │ │
- │ E 38-3B none │ DISKETTE_INT/indicates that a seek is in │
- │ │ progress (sets bit-8 of 40:003E) │
- │ │ │
- │ F 3C-3F none │ reserved │
- │ │ │
- └───────────────────────────────┴─────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ VIDEO_IO/services handle video output │
- │ 10 │ 40-43 │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ SET_MODE/initializes for one of 7 text or graphics modes │
- │ │ AL = 0: 40x25 BW │
- │ │ AL = 1: 40x25 color │
- │ │ AL = 2: 80x25 BW │
- │ │ AL = 3: 80x25 color graphics │
- │ │ AL = 4: 320x200 color graphics │
- │ │ AL = 5: 320x200 BW graphics │
- │ │ AL = 6: 640x200 BW graphics │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ SET_CUR_TYPE/set the size of the cursor or turn it off │
- │ │ CH=start line (bit 5=no cursor), CL=end line │
- │ │ CL=end line │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 2 │ SET_CUR_POS/re-position the cursor │
- │ │ DH=row (0-24) │
- │ │ DL=column (0-79 or 0-39) │
- │ │ BH=video page │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 3 │ READ_CUR_POS/return the position of the cursor │
- │ │ BH=video page │
- │ │ returns: DH=row, DL=clm, CX=cursor size │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 4 │ READ_LIGHT_PEN/fetch light pen information │
- │ │ returns: AH=0 light pen not triggered │
- │ │ AH=1: DH,DL=character row,column │
- │ │ CH,CL=graphics row,column │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 5 │ SELECT_ACTIVE_PAGE/set page number for services 6 and 7 │
- │ │ AL = new page (0-7 for modes 0 & 1, 0-3 for modes 2 & 3) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 6 │ SCROLL_PAGE_UP/scroll up or clear a display "window" │
- │ │ AL=number of lines to scroll (0=blank entire window) │
- │ │ CH,CL=row,column of top left corner of window │
- │ │ DH,DL=row,column of lowest right corner of window │
- │ │ BH=video attribute for blanked lines │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 7 │ SCROLL_PAGE_DOWN/scroll down or clear a display "window" │
- │ │ (see sub-function 6 for parameters) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 8 │ READ_CHAR_ATTR/fetch a character from the cursor position │
- │ │ BH=page number │
- │ │ returns: AL=character, AH=attribute │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 9 │ WRITE_CHAR_ATTR/display character(s) & attribute at cursor │
- │ │ AL=character to display │
- │ │ BH=display page, │
- │ │ BL=attribute (graphics modes: BL=color (or 80H for XOR) │
- │ │ CX=repeat count │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ A │ WRITE_CHAR/display character(s) only (use current attribute) │
- │ │ (see sub-function 9 for parameters) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ B │ SET_COLOR_PALETTE/set palette for graphics or text border │
- │ │ BH=0: select border (text mode) │
- │ │ BL=color (0-15, 16-31 for high-intensity chars. │
- │ │ BH=1: select graphics palette │
- │ │ BL=palette code (0=grn/red/yel, 1=cyan/mag/white) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ C │ WRITE_DOT/plot one graphics pixel │
- │ │ DX=row, │
- │ │ CX=clm │
- │ │ AL=color (bit 7 to XOR the dot) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ D │ READ_DOT/determine the color of one graphics pixel │
- │ │ DX=row, │
- │ │ CX=clm, │
- │ │ returns: AL=color of dot │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ E │ WRITE_TTY/write one character and update cursor. Also │
- │ │ handles CR (0DH), beep (07H), and scrolls screen if │
- │ │ needed. │
- │ │ AL=char to write │
- │ │ BL=foreground if in graphics mode │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ F │ VIDEO_STATE/fetch the mode and size of the screen │
- │ │ returns: AL=mode (see sub-function 0), │
- │ │ AH=size, │
- │ │ BH=page │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌───────────────────────────────┬─────────────────────────────────────────────┐
- │ Interrupt │ │
- ├──────┬─────────┬──────────────┤ NAME/Description │
- │ Type │ Address │ Subfunctions │ │
- ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
- │ 11 44-47 none │ EQUIPMENT_CHECK/fetch a code describing │
- │ │ active peripherals. │
- │ │ returns: AX=equipment code bits: │
- │ │ │
- │ │ PP-JSSS-DDVVRR-I │
- │ │ │
- │ │ PP = number of printers │
- │ │ J = joystick │
- │ │ SSS = serial devices (RS-232 ports) │
- │ │ DD = number of disk drives (00=1, 01=2, │
- │ │ 10=3, 11=4) │
- │ │ VV = video (11=BW card, 01 & 10 = color │
- │ │ card) │
- │ │ RR = RAM in mother-board ( 00=16K... │
- │ │ 11=64K), │
- │ │ I = disk-existance (0=no drives in │
- │ │ system) │
- │ │ │
- │ 12 48-4B none │ MEMORY_SIZE/fetch AX=count of contiguous │
- │ │ 1K RAM blocks │
- └───────────────────────────────┴─────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ DISKETTE_IO/access the 5-1/4 inch diskette drives │
- │ 13 │ 4C-4F │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ RESET/reset the disk controller chip │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ GET_STATUS/fetch AL=status of most recent operation │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 2 │ READ_SECTORS/read one or more sectors from diskette │
- │ │ DH = head DL = drive (0=A, 1=B, etc.) │
- │ │ CH = track CL = sector (1-8 or 1-9 for DOS 2.0) │
- │ │ AL = sectors to read │
- │ │ ES:BX = address to store/fetch data │
- │ │ [0000:0078] = doubleword pointer to diskette parms │
- │ │ returns: Carry Flag = NC (0) for successful │
- │ │ Carry Flag = CY (1) failure │
- │ │ AH = disk status (error reason) │
- │ │ 80H = timeout: disk failed to respond │
- │ │ 40H = seek operation failure │
- │ │ 20H = NEC disk drive controller failed │
- │ │ 10H = bad Cyclical Redundancy Check (CRC) │
- │ │ 09H = attempted access across 64K boundary │
- │ │ 08H = DMA overrun │
- │ │ 04H = record not found │
- │ │ 03H = write protect error │
- │ │ 02H = sector ID error (can't find address mark) │
- │ │ 01H = unknown command │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 3 │ WRITE_SECTORS/write from memory to disk │
- │ │ (parameters as with sub-function 2) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 4 │ VERIFY/verify that a write operation was successful │
- │ │ (parameters as with sub-function 2, but ES:BX not needed) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 5 │ FORMAT_TRACK/write sector-ID bytes for 1 track │
- │ │ ES:BX points to 8 (or 9) 4-byte sector ID marks: │
- │ │ byte 0 = track number │
- │ │ byte 1 = head number │
- │ │ byte 2 = sector number │
- │ │ byte 3 = bytes in sector (0=128, 1=256, 2=512, 3=1024) │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ RS232_IO/initialize and access serial communications │
- ├────────┼─────────┤ port. │
- │ 14 │ 50-53 │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ RS232_IO/initialize and access serial communications port │
- │ │ INIT_COM/initialize port named by DX (0 or 1) │
- │ │ initialization bit pattern: BBBPPSLL │
- │ │ BBB = baud rate: 110,150,300,600,1200,2400,4800,9600 │
- │ │ PP = parity: 01 = odd, 11 = even │
- │ │ S = stop bits: 0 = 1, 1 = 2 │
- │ │ LL = word length: 10 = 7-bits, 11 = 8-bits │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ SEND_CHAR/send character to comm port DX (0 or 1) │
- │ │ AL = character │
- │ │ returns: bit 7 of AH = 1 if error │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 2 │ AWAIT_COMM_CHAR/wait for a character from comm port DX │
- │ │ returns: AL = character │
- │ │ AH = error code (0 for no error) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 3 │ COMM_STATUS/fetch the status of comm port DX (0 or 1) │
- │ │ returns: comm-line status in AH, modem status in AL │
- │ │ AH bit 7 = timeout │
- │ │ bit 6 = empty transmit shift register │
- │ │ bit 5 = empty transmit holding register │
- │ │ bit 4 = break detected ("long-space") │
- │ │ bit 3 = framing error │
- │ │ bit 2 = parity error │
- │ │ bit 1 = overrun error │
- │ │ bit 0 = data ready │
- │ │ AL bit 7 = received line signal detect │
- │ │ bit 6 = ring indicator │
- │ │ bit 5 = data set ready │
- │ │ bit 4 = clear to send │
- │ │ bit 3 = delta receive line signal detect │
- │ │ bit 2 = trailing edge ring detector │
- │ │ bit 1 = delta data set ready │
- │ │ bit 0 = delta clear to send │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ CASSETTE_IO/access cassette tape drive │
- ├────────┼─────────┤ (NOP for IBM-XT) │
- │ 15 │ 54-57 │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ CASS_ON/start the motor │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ CASS_OFF/turn the motor off │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 2 │ CASS_READ/read CX bytes into ES:BX buffer │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 3 │ CASS_WRITE/write CX bytes from ES:BX buffer to tape │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ KBD_IO/access the keyboard buffer │
- │ 16 │ 58-5B │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ AWAIT_CHAR/read the next character in keyboard buffer, │
- │ │ If no key ready, wait for one. │
- │ │ returns: AL = ASCII character, AH = scan-code │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ PREVIEW_KEY/see if key is ready │
- │ │ returns: ZF = ZR (1) if no key ready, else │
- │ │ ZF = NZ and AX=char/scan-code │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 2 │ SHIFT_STATUS/fetch bit flags indicating shift status │
- │ │ returns: AL = bit codes (same as [0040:0017]) │
- │ │ bit 7 = Insert state │
- │ │ bit 6 = CapsLock state │
- │ │ bit 5 = NumLock state │
- │ │ bit 4 = ScrollLock state │
- │ │ bit 3 = Alternate shift (Alt key) │
- │ │ bit 2 = Control shift (Ctrl key) │
- │ │ bit 1 = Left shift (left caps-shift key) │
- │ │ bit 0 = Right shift (right caps-shift key) │
- │ │ note: other codes found at [0040:0018] │
- │ │ bit 7 = Insert shift (Ins key) │
- │ │ bit 6 = Caps shift (CapsLock key) │
- │ │ bit 5 = Num shift (NumLock key) │
- │ │ bit 4 = Scroll shift (ScrollLock key) │
- │ │ bit 3 = Hold state (Ctrl-NumLock is in effect) │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ PRINTER_IO/access the parallel printer(s) │
- │ 17 │ 5C-5F │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ PRINT_CHAR/send AL to printer DX (0, 1, or 2) │
- │ │ returns: AH=1 for timeout error, AL=status (see below) │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ INIT_PRINTER/set init line low, send 0CH to printer DX │
- │ │ returns: status as below │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 2 │ PRINTER_STATUS/read status of printer DX into AH │
- │ │ returns: bit flags: │
- │ │ bit 7 = Printer is busy │
- │ │ bit 6 = Acknowledge line state │
- │ │ bit 5 = Out-of-paper line state │
- │ │ bit 4 = printer selected line state │
- │ │ bit 3 = I/O error │
- │ │ bit 2 = unused │
- │ │ bit 1 = unused │
- │ │ bit 0 = Time-out error │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌───────────────────────────────┬─────────────────────────────────────────────┐
- │ Interrupt │ │
- ├──────┬─────────┬──────────────┤ NAME/Description │
- │ Type │ Address │ Subfunctions │ │
- ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
- │ │ │
- │ 18 60-63 none │ ROM_BASIC/execute non-disk BASIC at │
- │ │ F600:0000 │
- │ │ │
- │ 19 64-67 none │ BOOT_STRAP/read track 0, sector 1 into │
- │ │ 0000:7C00, then transfer control to that │
- │ │ address. If no diskette drive available, │
- │ │ transfers to ROM-BASIC. │
- └───────────────────────────────┴─────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ TIME_OF_DAY/access the PC internal clock │
- │ 1A │ 68-6B │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌────┬────────────────────────────────────────────────────────────────────────┐
- │ AH │ NAME/Description │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 0 │ READ_CLOCK/fetch count of 55ms "ticks" since power-on │
- │ │ returns: CX = high word of count │
- │ │ DX = low word of count │
- │ │ AL = 0 when no 24-hour overflow since power-on │
- ├────┼────────────────────────────────────────────────────────────────────────┤
- │ 1 │ SET_CLOCK/set number of 55ms in clock variable │
- │ │ CX = high word of timer ticks │
- │ │ DX = low word of timer ticks │
- │ │ note: the clock ticks are incremented by TIMER_INT │
- │ │ at about 18.2 times per second. Therefore: │
- │ │ counts per second = 18 (12H) │
- │ │ counts per minute = 1092 (444H) │
- │ │ counts per hour = 65543 (10011H) │
- │ │ counts per day = 1573040 (1800B0H) │
- └────┴────────────────────────────────────────────────────────────────────────┘
-
-
- ┌───────────────────────────────┬─────────────────────────────────────────────┐
- │ Interrupt │ │
- ├──────┬─────────┬──────────────┤ NAME/Description │
- │ Type │ Address │ Subfunctions │ │
- ├──────┴─────────┴──────────────┼─────────────────────────────────────────────┤
- │ 1B 6C-6F none │ KEYBOARD_BREAK/routine taken when KBD_INT │
- │ │ senses Ctrl-Break. │
- │ 1C 70-73 none │ │
- │ │ USER_TIMER_INT/taken 18.2 times per │
- │ │ second; invoked by the TIMER_INT; │
- │ │ normally vectors to dummy IRET. │
- └───────────────────────────────┴─────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ VIDEO_PARMS_PTR/vector of video initialization │
- ├────────┼─────────┤ parameters. │
- │ 1D │ 74-77 │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ NAME/Description │
- ├─────────────────────────────────────────────────────────────────────────────┤
- │ VIDEO_PARMS_PTR/vector of video initialization parameters │
- │ │
- │ This doubleword address points to 3 sets of 16-bytes │
- │ containing data to initialize for video modes for video │
- │ modes 0&1 (40 clm), 2&3 (80 clm), and 4,5&6 (graphics). │
- │ Parm table format corresponds to the Motorola 6845 CRT │
- │ controller registers: │
- │ R0 : horiz. total (horiz. sync in characters) │
- │ R1 : horiz. displayed (chars per line) │
- │ R2 : horiz. sync position (move display left or right) │
- │ R3 : sync width (vert. and horiz. pulse: 4-bits each) │
- │ R4 : vertical total (total character lines) │
- │ R5 : vertical adjust (adjust for 50 or 60 Hz refresh) │
- │ R6 : vert. displayed (lines of chars displayed) │
- │ R7 : Vert. sync position (lines shifted up or down) │
- │ R8 : Interlace (bits 4 and 5) and skew (bits 6 and 7) │
- │ R9 : Max scan line addr (scan lines per char row) │
- │ R10: Cursor start (starting scan line of cursor) │
- │ R11: Cursor stop (ending scan line of cursor) │
- │ R12: vid-mem start address high byte (6-bits) │
- │ R13: vid-mem start address low byte (8-bits) │
- │ R14: cursor address high byte (6-bits) │
- │ R15: cursor address low byte (8-bits) │
- └─────────────────────────────────────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ DISKETTE_PARMS_PTR/vector of diskette controller parms │
- │ 1E │ 78-7B │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ NAME/Description │
- ├─────────────────────────────────────────────────────────────────────────────┤
- │ DISKETTE_PARMS_PTR/vector of diskette controller parms: │
- │ │
- │ This doubleword address points to data that is used │
- │ by DISKETTE_IO. 11-byte table format: │
- │ byte 0 : 4-bit step rate, 4-bit head unload time │
- │ byte 1 : 7-bit head load time, 1-bit DMA flag │
- │ byte 2 : 55ms counts--delay till motor off │
- │ byte 3 : sector size (0=128, 1=256, 2=512, 3=1024) │
- │ byte 4 : last sector on track │
- │ byte 5 : gap between sectors │
- │ byte 6 : data length for DMA transfers │
- │ byte 7 : gap length for format │
- │ byte 8 : fill byte for format │
- │ byte 9 : head settle time (in milliseconds) │
- │ byte 10: motor start time (in 1/8 second intervals) │
- └─────────────────────────────────────────────────────────────────────────────┘
-
-
- ┌────────┬─────────┬──────────────────────────────────────────────────────────┐
- │ Type │ Address │ │
- ├────────┼─────────┤ DISKETTE_PARMS_PTR/vector of diskette controller parms │
- │ 1F │ 7C-7F │ │
- └────────┴─────────┴──────────────────────────────────────────────────────────┘
- ┌─────────────────────────────────────────────────────────────────────────────┐
- │ NAME/Description │
- ├─────────────────────────────────────────────────────────────────────────────┤
- │ GRAPHICS_TBL_PTR/vector of data used by VIDEO_IO to │
- │ display characters above ASCII 127 in graphics modes. │
- │ Doubleword address points to 1K table composed of 128 │
- │ 8-byte character definition bit-patterns. First byte │
- │ of each entry is top row, last byte is bottom row. │
- └─────────────────────────────────────────────────────────────────────────────┘
-
-
-
-
-
- ┌──────────────────────────────────┐
- │ File Name: ██ dos3.txt ██ │
- └──────────────────────────────────┘