ralf@b.gp.cs.cmu.edu (Ralf Brown) (12/18/88)
Please redistribute the following files as a group, in an archive named INTER988: INTERRUP.LST this file, 162 pages at 60 lines per page INTERRUP.SUM a one-line-per-function summary, 15 pages INTERRUP.PRI a brief introduction to interrupts INTERRUP.1ST the read-me file, containing credits --------------------------------------------- Release 88.9 Last change 12/17/88 --------------------------------------------- If you know of any information which is not in this list, or which the list states incorrectly, please let me know! It is only with YOUR help that the list can continue to grow at the current rate. Please read the file INTERRUP.1ST before asking me any questions. You may find that it's already been addressed. Ralf Brown ARPA: ralf@cs.cmu.edu \ UUCP: {ucbvax,harvard}!cs.cmu.edu!ralf > preferred BIT: ralf%cs.cmu.edu@cmuccvma / FIDO: Ralf Brown 1:129/31 or post a message to the DR_DEBUG echo I reply to all submissions and inquiries, but some of my replies bounce because of bad return paths. If you don't get a response from me within a reasonable period of time, send it again with a better return path (starting at harvard or ucbvax for UUCP, from the ARPA Internet for others). --------------------------------------------- Key to system abbreviations (unless otherwise indicated, a function is available on all systems) PC IBM PC XT IBM PC XT PORT IBM PC Portable (uses same BIOS as XT) Jr IBM PCjr AT IBM PC AT XT2 IBM PC XT 2 XT286 IBM PC XT/286 CONV IBM Convertible PS IBM PS/2, any model PS30 IBM PS/2 Model 30 and below PS50+ IBM PS/2 Models 50,60,70,80 CGA Color Graphics Adapter EGA Enhanced Graphics Adapter VGA Video Graphics Array MCGA Multi-Color Graphics Array TopView TopView/DESQview/TaskView/OmniView/other compatibles --------------------------------------------- To keep the lawyers happy: Microsoft, MS, MS DOS, OS/2 are trademarks of Microsoft Corp. IBM, PC, PCjr, PC/XT, PC/AT, XT/286, PS/2, TopView are trademarks of IBM Corp. Compaq is a registered trademark of Compaq Corp. Turbo C and Turbo Pascal are registered trademarks of Borland International Tandy 1000 is a registered trademark of Tandy Corp. DESQview is a trademark of Quarterdeck Office Systems TaskView and OmniView are trademarks of Sunny Hill Software 10-Net is a trademark of Fox Research, Inc. Mouse Systems is a trademark of Mouse Systems Corp. NetWare is a trademark of Novell, Inc. TesSeRact is a trademark of the TesSeRact Development Team. Various other names are trademarks or registered trademarks of their respective companies --------------------------------------------- DISCLAIMER: I verify the information contained in this list to the best of my ability, but I cannot be held responsible for any problems caused by use or misuse of the information, especially for those functions not officially documented. If it is marked "internal", you should check it carefully to make sure it works the same way in your version of the software (and please let me know if it works differently). --------------------------------------------- The use of -> instead of = signifies that the indicated register or register pair contains a pointer to the specified item --------------------------------------------- INT 00 - internal - DIVIDE ERROR Automatically called at end of DIV or IDIV operation that results in error or overflow. Normally set by DOS to display an error message and abort the program. --------------------------------------------- INT 01 - internal - SINGLE-STEP Generated at end of each machine instruction if TF bit in FLAGS is set. This is what makes the T command of DEBUG work for single-stepping. It is not generated after MOV to segment register or POP of segment register (unless you have a very early 8088 with a microcode bug). --------------------------------------------- INT 02 - hardware - NMI (NON-MASKABLE INTERRUPT) Generated by NMI signal in hardware. This signal has various uses: Parity error: all except Jr and CONV Coprocessor interrupt: all except Jr and CONV Keyboard interrupt: Jr, CONV I/O channel check: CONV, PS50+ Disk-controller power-on request: CONV System suspend: CONV Real-time clock: CONV System watch-dog timer, time-out interrupt: PS50+ DMA timer time-out interrupt: PS50+ --------------------------------------------- INT 03 - ONE-BYTE INTERRUPT Generated by opcode CCh. Generally used to set breakpoints for debuggers. Also used by Turbo Pascal versions 1,2,3 when {$U+} specified --------------------------------------------- INT 04 - internal - OVERFLOW Generated by INTO instruction if OF flag is set. If flag is not set, INTO is effectively a NOP. Used to trap any arithmetic errors before the erroneous results propagate further through the computation. --------------------------------------------- INT 05 - PRINT-SCREEN KEY Automatically called by keyboard scanner when print-screen key is pressed. Normally executes routine to print the screen, but may call any routine that can safely be executed from inside the keyboard scanner. Status and result byte for default handler is at address 0050:0000. --------------------------------------------- INT 05 - internal - BOUND CHECK FAILED (80186/80286) Generated by BOUND instruction when the value to be tested is less than the indicated lower bound or greater than the indicated upper bound. --------------------------------------------- INT 06 - internal - UNDEFINED OPCODE (80286) --------------------------------------------- INT 07 - internal - NO MATH UNIT AVAILABLE (80286) Can be used to emulate a numeric coprocessor in software --------------------------------------------- INT 08 - IRQ0 - TIMER INTERRUPT Generated 18.2 times per second, this interrupt is used to keep the time-of-day clock updated. --------------------------------------------- INT 08 - internal - DOUBLE FAULT (80286 protected mode) Called when multiple exceptions occur on one instruction, or an exception occurs in an exception handler. If an exception occurs in the double fault handler, the CPU goes into SHUTDOWN mode (which circuitry in the PC/AT converts to a reset). --------------------------------------------- INT 09 - IRQ1 - KEYBOARD INTERRUPT Generated when data is received from the keyboard. This is normally a scan code, but may also be an ACK or NAK of a command on AT-class keyboards. --------------------------------------------- INT 09 - internal - MATH UNIT PROTECTION FAULT (80286 protected mode) --------------------------------------------- INT 0A - IRQ2 - EGA VERTICAL RETRACE Notes: on the Tandy 1000, this interrupt is used by the hard disk the TOPS and PCnet adapters use this interrupt request line by default --------------------------------------------- INT 0A - internal - INVALID TASK STATE SEGMENT (80286 protected-mode) --------------------------------------------- INT 0B - IRQ3 - COM2 INTERRUPT Note: the TOPS and PCnet adapters use this interrupt request line as an alternate Note: on PS/2's, COM2 through COM8 share this interrupt on many PC's, COM4 shares this interrupt --------------------------------------------- INT 0B - internal - NOT PRESENT (80286 protected-mode) Generated when loading a segment register if the segment descriptor indicates that the segment is not currently in memory. May be used to implement virtual memory. --------------------------------------------- INT 0C - IRQ4 - COM1 INTERRUPT Note: on many PC's, COM3 shares this interrupt --------------------------------------------- INT 0C - internal - STACK FAULT (80286 protected-mode) Generated on stack overflow/underflow. Note that the 80286 will shut down in real mode if SP=1 before a push. --------------------------------------------- INT 0D - IRQ5 - FIXED DISK (PC), LPT2 (AT/PS) Note: the Tandy 1000 uses this line for the 60Hhz RAM refresh --------------------------------------------- INT 0D - internal - GENERAL PROTECTION VIOLATION (80286) Called in real mode when an instruction attempts to access a word operand located at offset FFFFh --------------------------------------------- INT 0E - IRQ6 - DISKETTE INTERRUPT Generated by floppy disk controller on completion of an operation --------------------------------------------- INT 0E - internal - PAGE FAULT (80386 native mode) --------------------------------------------- INT 0F - IRQ7 - PRINTER INTERRUPT Generated by the LPT1 printer adapter when printer becomes ready. Note: most printer adapters do not reliably generate this interrupt. --------------------------------------------- INT 10 - internal - COPROCESSOR ERROR (80286/80386) Generated by the CPU when the -ERROR pin is asserted by the coprocessor. AT's and clones usually wire the coprocessor to use IRQ13, but not all get it right. --------------------------------------------- INT 10 - VIDEO - SET VIDEO MODE AH = 00h AL = mode (graphics mode if graphics resolution listed) text pixel graphic color disp scrn system resol box resoltn page addr 00h = 40x25 8x8 B&W 8 B800 CGA = 40x25 8x14 B&W 8 B800 ATI VIP 01h = 40x25 8x8 16 8 B800 CGA = 40x25 8x14 16 8 B800 ATI VIP 02h = 80x25 8x8 B&W 4 B800 CGA = 80x25 8x8 B&W 8 B800 EGA/MCGA/VGA = 80x25 8x14 B&W 8 B800 ATI VIP 03h = 80x25 8x8 16 4 B800 CGA = 80x25 8x8 16 8 B800 EGA/MCGA/VGA 04h = 40x25 8x8 320x200 4 1 B800 CGA 05h = 40x25 8x8 320x200 4 gray 1 B800 CGA 06h = 80x25 8x8 640x200 B&W 1 B800 CGA 07h = 80x25 9x14 mono 1 B000 MDA/Hercules = 80x25 8 EGA/VGA = 80x25 9x14 mono B000 ATI VIP 08h = 20x25 8x8 160x200 16 B800 PCjr/Tandy 1000 09h = 40x25 8x8 320x200 16 B800 PCjr/Tandy 1000 0Ah = 80x25 8x8 640x200 4 B800 PCjr/Tandy 1000 0Bh = reserved (used internally by EGA BIOS) 0Ch = reserved (used internally by EGA BIOS) 0Dh = 40x25 8x8 320x200 16 8 A000 EGA/VGA 0Eh = 80x25 8x8 640x200 16 4 A000 EGA/VGA 0Fh = 80x25 8x14 640x350 mono 2 A000 EGA/VGA 10h = 80x25 8x14 640x350 4or16 2 A000 EGA/VGA 11h = 80x30 8x16 640x480 mono A000 VGA/MCGA/ATI EGA/ATI VIP 12h = 80x30 8x16 640x480 16 A000 VGA/ATI VIP = 80x30 8x16 640x480 16/64 A000 ATI EGA Wonder 13h = 40x25 8x8 320x200 256 A000 VGA/MCGA/ATI VIP 14h = 80x25 8x8 640x200 Lava Chrome II EGA 15h = 80x25 8x14 640x350 Lava Chrome II EGA 16h = 80x25 8x14 640x350 Lava Chrome II EGA 17h = 80x34 8x14 640x480 Lava Chrome II EGA 18h = 132x44 8x8 mono Tseng Labs EVA = 80x34 8x14 640x480 Lava Chrome II EGA 19h = 132x25 8x14 mono Tseng Labs EVA 1Ah = 132x28 8x13 mono Tseng Labs EVA 22h = 132x44 8x8 Tseng, Ahead 23h = 132x25 6x14 Tseng Labs EVA = 132x25 8x14 Ahead Systems EGA2001 = 132x25 8x8 16 B800 ATI EGA Wonder/ATI VIP 24h = 132x28 6x13 Tseng Labs EVA 25h = 80x60 8x8 640x480 Tseng Labs EVA = 640x480 16 VEGA VGA 26h = 80x60 8x8 Tseng Labs EVA = 80x60 8x8 640x480 Ahead Systems EGA2001 27h = 720x512 16 VEGA VGA = 132x25 8x8 mono B000 ATI EGA Wonder/ATI VIP 28h = ???x??? VEGA VGA 29h = 800x600 16 VEGA VGA 2Dh = 640x350 256 VEGA VGA 2Eh = 640x480 256 VEGA VGA 2Fh = 720x512 256 VEGA VGA 30h = 800x600 256 VEGA VGA = ???x??? B800 AT&T 6300 33h = 132x44 8x8 16 B800 ATI EGA Wonder/ATI VIP 36h = 960x720 16 VEGA VGA 37h = 1024x768 16 VEGA VGA = 132x44 8x8 mono B000 ATI EGA Wonder/ATI VIP 40h = 80x25 8x16 640x400 2 1 B800 AT&T 6300, Compaq Portable = 80x43 VEGA VGA 41h = 640x200 16 1 AT&T 6300 = 132x25 VEGA VGA 42h = 80x25 8x16 640x400 16 AT&T 6300 = 132x43 VEGA VGA 43h = unsupported 640x200 of 640x400 viewport AT&T 6300 = 80x60 VEGA VGA 44h = disable VDC and DEB output AT&T 6300 = 100x60 VEGA VGA 48h = 80x50 8x8 640x400 2 B800 AT&T 6300 49h = 80x30 8x16 640x480 Lava Chrome II EGA 4Dh = 120x25 VEGA VGA 4Eh = 120x43 VEGA VGA 4Fh = 132x25 VEGA VGA 50h = 132x25 9x14 mono Ahead Systems EGA2001 = 80x30 8x16 640x480 16 Paradise EGA-480 = 80x43 mono VEGA VGA = 640x480 mono??? Taxan 565 EGA = 80x34 Lava Chrome II EGA 51h = 80x30 8x16 Paradise EGA-480 = 132x25 mono VEGA VGA = 80x34 8x14 640x480 16 ATI EGA Wonder = 80x30 Lava Chrome II EGA 52h = 132x44 9x8 mono Ahead Systems EGA2001 = 132x43 mono VEGA VGA = 94x29 8x14 752x410 16 ATI EGA Wonder = 80x60 Lava Chrome II EGA 53h = 100x40 8x14 800x560 16 ATI EGA Wonder/ATI VIP = 132x43 Lava Chrome II EGA 54h = 132x43 8x8 Paradise EGA-480 = 132x43 7x9 16/256k B800 Paradise VGA = 132x43 8x9 16/256k B800 Paradise VGA on multisync = 132x43 Taxan 565 EGA = 100x42 8x14 800x600 16 A000 ATI EGA Wonder = 132x25 Lava Chrome II EGA 55h = 132x25 8x14 Paradise EGA-480 = 132x25 7x16 16/256k B800 Paradise VGA = 132x25 8x16 16/256k B800 Paradise VGA on multisync = 132x25 Taxan 565 EGA = 80x66 8x8 16/256k A000 ATI VIP = 94x29 8x14 752x410 Lava Chrome II EGA 56h = 132x43 8x8 3??? 2 B000 NSI Smart EGA+ = 132x43 7x9 4 B000 Paradise VGA = 132x43 8x9 4 B000 Paradisk VGA on multisync = 132x43 mono Taxan 565 EGA 57h = 132x25 8x14 3??? 4 B000 NSI Smart EGA+ = 132x25 7x16 4 B000 Paradise VGA = 132x25 8x16 4 B000 Paradise VGA on multisync = 132x25 mono Taxan 565 EGA 58h = 100x75 8x8 800x600 16/256k A000 Paradise VGA = 80x33 8x14 16 B800 ATI EGA Wonder/ATI VIP 59h = 100x75 8x8 800x600 2 A000 Paradise VGA = 80x66 8x8 16/256k A000 ATI VIP 5Eh = 640x400 256 Paradise VGA,VEGA VGA 5Fh = 640x480 256 Paradise VGA 60h = 80x??? ???x400 Corona/Cordata BIOS v4.10+ = 752x410 VEGA VGA 61h = ???x400 Corona/Cordata BIOS v4.10+ = 720x540 VEGA VGA 62h = 800x600 VEGA VGA 70h = extended mode set (see below) Everex Micro Enhancer EGA 71h = 100x35 8x16 800x600 16of64 A000 NSI Smart EGA+ 74h = 640x400 2 B800 Toshiba 3100 AT&T mode 7Eh = special mode set (see below) Paradise VGA 7Fh = special function set (see below) Paradise VGA 82h = 80x25 B&W AT&T VDC overlay mode * 83h = 80x25 AT&T VDC overlay mode * 86h = 640x200 B&W AT&T VDC overlay mode * C0h = 640x400 2/prog pallet AT&T VDC overlay mode * C4h = disable output AT&T VDC overlay mode * D0h = 640x400 2 B800 DEC VAXmate AT&T mode ??? = 640x225 Z-100 ??? = 640x400 Z-100 * for AT&T VDC overlay modes, BL contains the DEB mode, which may be 06h, 40h, or 44h Note: IBM standard modes do not clear the screen if the high bit of AL is set --------------------------------------------- INT 10 - VIDEO - Everex Micro Enhancer EGA - EXTENDED MODE SET AX = 0070h BL = mode (graphics mode if graphics resolution listed) text pixel graphic color disp scrn monitor resol box resoltn page addr 00h = 640x480 multisync'ing 01h = 752x410 multisync'ing 02h = reserved 03h = 80x34 multisync'ing 04h = 80x60 multisync'ing 05h = 94x29 multisync'ing 06h = 94x51 multisync'ing 07h = reserved 08h = reserved 09h = 80x44 EGA 0Ah = 132x25 EGA 0Bh = 132x44 EGA 0Ch = 132x25 CGA 0Dh = 80x44 mono 0Eh = 132x25 mono 0Fh = 132x44 mono --------------------------------------------- INT 10 - VIDEO - Paradise VGA - SET SPECIAL MODE AX = 007Eh BX = The horizontal dimension of the mode desired CX = The vertical dimension of the mode desired (both BX/CX in pixels for graphics modes, rows for alpha modes) DX = The number of colors of the mode desired (use 0 for monochrome modes) Return: BH = 7Eh if successful. --------------------------------------------- INT 10 - VIDEO - Paradise VGA - EXTENDED FUNCTIONS AX = 007Fh BH = 00h set VGA operation BH = 01h set non-VGA operation Color modes (0,1,2,3,4,5,6) will set non-VGA CGA operation. Monochrome mode 7 will set non-VGA MDA/Hercules operation. BH = 02h query mode status Return: BL = 0 if operating in VGA mode, 1 if non-VGA mode. CH = Total video RAM size in 64k byte units. CL = Video RAM used by the current mode. BH = 03h lock current mode Allows current mode (VGA or non-VGA) to survive re-boot. BH = 0Ah,0Bh,0Ch,0Dh,0Eh,0Fh WRITE PARADISE REGISTERS 0,1,2,3,4,5 (port 03CEh indices A,B,C,D,E,F) BL = Value to set in the paradise register. BH = 1Ah,1Bh,1Ch,1Dh,1Eh,1Fh READ PARADISE REGISTERS 0,1,2,3,4,5 (port 03CEh indices A,B,C,D,E,F) Return: BL = Value of the paradise register. BH = 7Fh if successful. --------------------------------------------- INT 10 - VIDEO - SET CURSOR CHARACTERISTICS AH = 01h CH bits 0-4 = start line for cursor in character cell bits 5-6 = blink attribute (00=normal, 01=invisible, 10=slow, 11=fast) CL bits 0-4 = end line for cursor in character cell Note: buggy on EGA systems--BIOS remaps cursor shape in 43 line modes, but returns unmapped cursor shape --------------------------------------------- INT 10 - VIDEO - SET CURSOR POSITION AH = 02h DH,DL = row, column (0,0 = upper left) BH = page number 0 in graphics modes 0-3 in modes 2&3 0-7 in modes 0&1 --------------------------------------------- INT 10 - VIDEO - READ CURSOR POSITION AH = 03h BH = page number 0 in graphics modes 0-3 in modes 2&3 0-7 in modes 0&1 Return: DH,DL = row,column CH = cursor start line CL = cursor end line --------------------------------------------- INT 10 - VIDEO - READ LIGHT PEN POSITION (all but PS) AH = 04h Return: AH = 0: light pen switch not activated AH = 1: light pen values in registers DH,DL = row,column of current position CH = raster line (0-199) (EGA) old graphics modes CX = (EGA) raster line (0-nnn) new graphics modes BX = pixel column (0-319 or 0-639) --------------------------------------------- INT 10 - VIDEO - SELECT DISPLAY PAGE AH = 05h AL = 0-7: new page value for modes 0 & 1 0-3: new page value for modes 2 & 3 80h: read CRT/CPU page registers [PCjr only] 81h: set CPU page register to value in BL [PCjr only] 82h: set CRT page register to value in BH [PCjr only] 83h: set both display registers to values in BH, BL [PCjr only] {Corona/Cordata BIOS v4.10+} 00h: set address of graphics bitmap buffer (video modes 60h,61h) BX = segment of buffer 0Fh: get address of graphics bitmap buffer (video modes 60h,61h) Return: BH = CRT page register (if AL >= 80h) BL = CPU page register (if AL >= 80h) DX = segment of graphics bitmap buffer (video modes 60h,61h; AL=0Fh) --------------------------------------------- INT 10 - VIDEO - SCROLL PAGE UP AH = 06h AL = number of lines to scroll window (0 = blank whole window) BH = attributes to be used on blanked lines CH,CL = row,column of upper left corner of window to scroll DH,DL = row,column of lower right corner of window --------------------------------------------- INT 10 - VIDEO - SCROLL PAGE DOWN AH = 07h AL = number of lines to scroll window (0 = blank whole window) BH = attributes to be used on blanked lines CH,CL = row,column of upper left corner of window to scroll DH,DL = row,column of lower right corner of window --------------------------------------------- INT 10 - VIDEO - READ ATTRIBUTES/CHARACTER AT CURSOR POSITION AH = 08h BH = display page Return: AL = character AH = attribute of character (alpha modes) --------------------------------------------- INT 10 - VIDEO - WRITE ATTRIBUTES/CHARACTERS AT CURSOR POS AH = 09h AL = character BH = display page BL = attributes of char (alpha modes) or color (graphics modes) if bit 7 == 1 in graphics mode, character is xor'ed onto screen CX = number of times to write character Note: all characters are displayed, including CR, LF, and BS --------------------------------------------- INT 10 - VIDEO - WRITE CHARACTERS ONLY AT CURSOR POS AH = 0Ah AL = character BH = display page - alpha mode BL = color of character (graphics mode, PCjr only) if bit 7 == 1 in graphics mode, character is xor'ed onto screen CX = number of times to write character (EGA) in graphics modes, replication count in CX works correctly only if all character written are contains on the same row Note: all characters are displayed, including CR, LF, and BS --------------------------------------------- INT 10 - VIDEO - SET COLOR PALETTE AH = 0Bh BH = 0 BL = border color (0-15) (text modes) border color and background color (graphics modes) (EGA) BL = border color (0-15) and high-intensity background color (16-31??? maybe should be high nybble?) BH = 1 BL = palette (0-3) --------------------------------------------- INT 10 - VIDEO - WRITE DOT ON SCREEN AH = 0Ch AL = color of dot (0/1 in mode 6, 0-3 in modes 4 and 5) if bit 7 set, new color will be XORed with current pixel BH = display page (ignored if mode only supports one page) CX = column DX = row Note: only valid in graphics modes --------------------------------------------- INT 10 - VIDEO - READ DOT ON SCREEN AH = 0Dh BH = display page (ignored if mode only supports one page) CX = column DX = row Return: AL = color read Note: only valid in graphics modes --------------------------------------------- INT 10 - VIDEO - WRITE CHARACTER AND ADVANCE CURSOR (TTY WRITE) AH = 0Eh AL = character BH = display page (alpha modes) BL = foreground color (graphics modes) Note: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted and do the expected things --------------------------------------------- INT 10 - VIDEO - GET CURRENT VIDEO MODE AH = 0Fh Return: AH = number of columns on screen AL = current video mode (see INT 10h/AH=00h) BH = current active display page Note: if mode was set with bit 7 set ("no blanking"), the returned mode will also have bit 7 set --------------------------------------------- INT 10 - VIDEO - SET PALETTE REGISTERS (Jr, PS, TANDY 1000, EGA, VGA) AH = 10h AL = subfunction 00h set palette register BL = palette register to set BH = color value to store (on MCGA, only BX = 0712h is supported) 01h set border color register BH = color value to store 02h set all palette registers and overscan ES:DX -> 17-byte list bytes 0-15 = values for palette regs. 0-15 byte 16 = value for border color register --------------------------------------------- INT 10 - VIDEO - TOGGLE INTENSITY/BLINKING BIT (Jr, PS, TANDY 1000, EGA, VGA) AX = 1003h BL = 00h enable intensity = 01h enable blink --------------------------------------------- INT 10 - VIDEO - GET PALETTE REGISTERS (VGA) AH = 10h AL = subfunction 07h read individual palette register BL = palette register number Return: BH = palette register value 08h read overscan (border color) register Return: BH = value 09h read all palette registers and overscan register ES:DX = buffer address (17 bytes) --------------------------------------------- INT 10 - VIDEO - GET/SET DAC REGISTERS (EGA, VGA/MCGA) AH = 10h AL = subfunction 10h set individual DAC register BX = register number CH = new value for green (0-63) CL = new value for blue (0-63) DH = new value for red (0-63) 12h set block of DAC registers BX = starting color register CX = number of registers to set ES:DX = Table of 3*CX bytes where each 3 byte group represents one byte each of red, green and blue (0-63) 13h select video DAC color page (VGA only) BL = 00h Select paging mode BH = 00h Select 4 blocks of 64 BH = 01h Select 16 blocks of 16 BL = 01h Select Page BH = page number (00h to 03h) or (00h to 0Fh) (not valid in mode 13h) 15h read individual DAC register BL = palette register number Return: DH = red value CH = green value CL = blue value 17h read block of DAC registers BX = starting palette register CX = number of palette registers to read ES:DX = buffer (3 * CX bytes in size) Return: CX number of red, green and blue triples in buffer 18h *UNDOCUMENTED* set PEL mask BL = new PEL value 19h *UNDOCUMENTED* read PEL mask BL = value read 1Ah read video DAC color-page state (VGA only) Return: BL = paging mode 0 four pages of 64 1 sixteen pages of 16 BH = current page 1Bh perform gray-scale summing BX = starting palette register CX = number of registers to convert --------------------------------------------- INT 10 - VIDEO - TEXT-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA) AH = 11h The following functions will cause a mode set, completely resetting the video environment, but without clearing the video buffer AL = 00h, 10h: load user-specified patterns ES:BP -> user table CX = count of patterns to store DX = character offset into map 2 block BL = block to load in map 2 BH = number of bytes per character pattern AL = 01h, 11h: load ROM monochrome patterns (8 by 14) BL = block to load AL = 02h, 12h: load ROM 8 by 8 double-dot patterns BL = block to load AL = 03h: set block specifier BL = block specifier (EGA/MCGA) bits 0,1 = block selected by chars with attribute bit 3 = 0 bits 2,3 = block selected by chars with attribute bit 3 = 1 (VGA) bits 0,1,4 = block selected by attribute bit 3 = 0 bits 2,3,5 = block selected by attribute bit 3 = 1 AL = 04h, 14h: load ROM 8x16 character set (VGA) The routines called with AL=1xh are designed to be called only immediately after a mode set and are similar to the routines called with AL=0xh, except that: Page 0 must be active. Bytes/character is recalculated. Max character rows is recalculated. CRT buffer length is recalculated. CRTC registers are reprogrammed as follows: R09 = bytes/char-1 ; max scan line (mode 7 only) R0A = bytes/char-2 ; cursor start R0B = 0 ; cursor end R12 = ((rows+1)*(bytes/char))-1 ; vertical display end R14 = bytes/char ; underline loc (*** BUG: should be 1 less ***) --------------------------------------------- INT 10 - VIDEO - GRAPHICS-MODE CHARACTER GENERATOR FUNCTIONS (PS, EGA, VGA) AH = 11h AL = 20h: set user 8 by 8 graphics characters (INT 1Fh) ES:BP -> user table AL = 21h: set user graphics characters ES:BP -> user table CX = bytes per character BL = row specifier 0: user set DL = number of rows 1: 14 rows 2: 25 rows 3: 43 rows AL = 22h: ROM 8 by 14 set BL = row specifier AL = 23h: ROM 8 by 8 double dot BL = row specifier AL = 24h: load 8x16 graphics characters (VGA/MCGA) BL = row specifier Note: these functions are meant to be called only after a mode set --------------------------------------------- INT 10 - VIDEO - GET FONT INFORMATION (EGA, MCGA, VGA) AX = 1130h BH = pointer specifier 0: INT 1Fh pointer 1: INT 44h pointer 2: ROM 8 by 14 character font pointer 3: ROM 8 by 8 double dot font pointer 4: ROM 8 by 8 DD font (top half) 5: ROM alpha alternate (9 by 14) pointer Return: ES:BP = specified pointer CX = bytes/character DL = character rows on screen --------------------------------------------- INT 10 - VIDEO - ALTERNATE FUNCTION SELECT (PS, EGA, VGA, MCGA) AH = 12h BL = 10h: return EGA information Return: BH = 0: color mode in effect (3Dx) 1: mono mode in effect (3Bx) BL = 0: 64k bytes memory installed 1: 128k bytes memory installed 2: 192k bytes memory installed 3: 256k bytes memory installed CH = feature bits CL = switch settings BL = 20h: select alternate print screen routine BL = 30h: select vertical resolution for alphanumeric modes (VGA only) AL = 00h 200 scan lines 01h 350 scan lines 02h 400 scan lines Return: AL = 12h if function supported BL = 31h: enable/disable default palette loading (VGA/MCGA) AL = 00h enable default palette loading 01h disable default palette loading Return: AL = 12h if function was supported BL = 32h: enable/disable video addressing (VGA/MCGA) AL = 00h enable video 01h disable video Return: AL = 12h if function was supported BL = 33h: enable/disable default gray-scale summing (VGA/MCGA) AL = 00h enable gray scale summing 01h disable gray scale summing Return: AL = 12h if function was supported BL = 34h: enable/disable alphanumeric cursor emulation (VGA only) AL = 00h enable cursor emulation 01h disable cursor emulation Return: AL = 12h if function was supported BL = 35h: PS/2 display-switch interface AL = 00h initial adapter video off 01h initial planar video on 02h switch active video off 03h switch inactive video on 80h *UNDOCUMENTED* set system board video active flag ES:DX = buffer (128 byte save area if AL = 0, 2 or 3) Return: AL = 12h if function was supported BL = 36h: video refresh control (VGA/PS) AL = 00h enable refresh 01h disable refresh Return: AL = 12h if function supported BX = 5500h ??? (used by ATI and TAXAN) BX = 5502h ??? (used by ATI and TAXAN) --------------------------------------------- INT 10 - VIDEO - WRITE STRING (AT,XT286,PS,EGA,VGA) AH = 13h AL = mode bit 0: set in order to move cursor after write bit 1: set if string contains alternating characters and attributes BL = attribute if AL bit 1 clear BH = display page number DH,DL = row,column of starting cursor position CX = length of string ES:BP -> start of string Note: recognizes CR, LF, BS, and bell --------------------------------------------- INT 10 - VIDEO - LOAD LCD CHARACTER FONT (CONVERTIBLE) AH = 14h AL = 0 load user-specified font ES:DI -> character font BH = number of bytes per character BL = 0: load main font (block 0) 1: load alternate font (block 1) CX = number of characters to store DX = character offset into RAM font area AL = 1 load system rom default font BL = 0: load main font (block 0) 1: load alternate font (block 1) AL = 2 set mapping of LCD high intensity attributes BL = 0: ignore high intensity attribute 1: map high intensity to underscore 2: map high intensity to reverse video 3: map high intensity to selected alternate font --------------------------------------------- INT 10 - VIDEO - GET PHYSICAL DISPLAY PARAMETERS (CONVERTIBLE) AH = 15h Return: AX = alternate display adapter type 0000h none 5140h LCD 5153h CGA 5151h mono ES:DI -> parameter table word 0: monitor model number 1: vertical pixels per meter 2: horizontal pixels per meter 3: total vertical pixels 4: total horizontal pixels 5: horizontal pixel separation in micrometers 6: vertical pixel separation in micrometers --------------------------------------------- INT 10 - VIDEO - DISPLAY COMBINATION (PS,VGA/MCGA) AH = 1Ah AL = 00h read display combination code Return: BL = active display code BH = alternate display code 01h set display combination code BL = active display code BH = alternate display code Return: AL = 1Ah if function was supported Display combination codes: 00h no display 01h monochrome adapter w/ monochrome display 02h CGA w/ color display 03h reserved 04h EGA w/ color display 05h EGA w/ monochrome display 06h PGA w/ color display 07h VGA w/ monochrome analog display 08h VGA w/ color analog display 09h reserved 0Ah MCGA w/ digital color display 0Bh MCGA w/ monochrome analog display 0Ch MCGA w/ color analog display FFh unknown display type --------------------------------------------- INT 10 - VIDEO - FUNCTIONALITY/STATE INFORMATION (PS,VGA/MCGA) AH = 1Bh BX = implementation type = 0000h return funtionality/state information ES:DI -> 64 byte buffer Return: AL = 1Bh if function supported ES:DI buffer filled 00h address of static funtionality table 04h video mode in effect 05h number of columns 07h length of regen buffer in bytes 09h starting address of regen buffer 0Bh cursor position for page 0 0Dh cursor position for page 1 0Fh cursor position for page 2 11h cursor position for page 3 13h cursor position for page 4 15h cursor position for page 5 17h cursor position for page 6 19h cursor position for page 7 1Bh cursor type 1Dh active display page 1Eh CRTC port address 20h current setting of register (3?8) 21h current setting of register (3?9) 22h number of rows 23h bytes/character 25h DCC of active display 26h DCC of alternate display 27h number of colors supported in current mode 29h number of pages supported in current mode 2Ah number of scan lines active (0,1,2,3) = (200,350,400,480) 2Bh primary character block 2Ch secondary character block 2Dh Miscellaneous flags bit 0 all modes on all displays on 1 gray summing on 2 monochrome display attached 3 default palette loading disabled 4 cursor emulation enabled 5 0 = intensity; 1 = blinking 6 reserved 7 reserved 2Eh to 30h reserved 31h video memory available 00h = 64K, 01h = 128K, 02h = 192K, 03h = 256K 32h save pointer state flags bit 0 512 character set active 1 dynamic save area present 2 alpha font override active 3 graphics font override active 4 palette override active 5 DCC override active 6 reserved 7 reserved 33h to 3Fh reserved State Functionality Table format (16 bytes) 00h modes supported #1 bit 0 to bit 7 = 1 modes 0,1,2,3,4,5,6 supported 01h modes supported #2 bit 0 to bit 7 = 1 modes 8,9,A,B,C,D,E,F supported 02h modes supported #3 bit 0 to bit 3 = 1 modes 10,11,12,13 supported bit 4 to bit 7 reserved 03h to 06h reserved 07h scan lines supported bit 0 to bit 2 = 1 if scan lines 200,350,400 supported 08h total number of character blocks available in text modes 09h maximum number of active character blocks in text modes 0Ah miscellaneous function flags #1 bit 0 all modes on all displays function supported 1 gray summing function supported 2 character font loading function supported 3 default palette loading enable/disable supported 4 cursor emulation function supported 5 EGA palette present 6 color palette present 7 color paging function supported 0Bh miscellaneous function flags #2 bit 0 light pen supported 1 save/restore state function 1Ch supported 2 intensity blinking function supported 3 Display Combination Code supported 4-7 reserved 0Ch to 0Dh reserved 0Eh Save pointer function flags bit 0 512 character set supported 1 dynamic save area supported 2 alpha font override supported 3 graphics font override supported 4 palette override supported 5 DCC extension supported 6 reserved 7 reserved 0Fh reserved --------------------------------------------- INT 10 - VIDEO - SAVE/RESTORE VIDEO STATE (PS50+,VGA) AH = 1Ch CX = requested states bit 0 video hardware 1 BIOS data areas 2 color registers and DAC state 3-15 reserved AL = 0: return state buffer size Return: BX = number of 64 byte blocks needed 1: save video state ES:BX = buffer address 2: restore video state ES:BX = buffer address of previously saved state Return: AL = 1Ch if function supported --------------------------------------------- INT 10 - VIDEO - SET GRAPHICS MODE (Hercules GRAFIX) AH = 40h --------------------------------------------- INT 10 - VIDEO - SET TEXT MODE (Hercules GRAFIX) AH = 41h --------------------------------------------- INT 10 - VIDEO - CLEAR CURRENT PAGE (Hercules GRAFIX) AH = 42h --------------------------------------------- INT 10 - VIDEO - SELECT DRAWING PAGE (Hercules GRAFIX) AH = 43h AL = page number (0,1) --------------------------------------------- INT 10 - VIDEO - SELECT DRAWING FUNCTION (Hercules GRAFIX) AH = 44h AL = drawing function 00h clear pixels 01h set pixels 02h invert pixels --------------------------------------------- INT 10 - VIDEO - SELECT PAGE TO DISPLAY (Hercules GRAFIX) AH = 45h AL = page number (0,1) --------------------------------------------- INT 10 - VIDEO - DRAW ONE PIXEL (Hercules GRAFIX) AH = 46h DI = x (0-720) BP = y (0-347) Note: function 44h determines operation and function 43h which page to use --------------------------------------------- INT 10 - VIDEO - FIND PIXEL VALUE (Hercules GRAFIX) AH = 47h DI = x (0-720) BP = y (0-347) Return: AL = 0 pixel clear AL = 1 pixel set Note: function 43h specifies which page is used --------------------------------------------- INT 10 - VIDEO - MOVE TO POINT (Hercules GRAFIX) AH = 48h DI = x (0-720) BP = y (0-347) --------------------------------------------- INT 10 - VIDEO - DRAW TO POINT (Hercules GRAFIX) AH = 49h DI = x (0-720) BP = y (0-347) Note: function 48h or 49h specify first point, 44h operation and 43h page to use --------------------------------------------- INT 10 - VIDEO - BLOCK FILL (Hercules GRAFIX) AH = 4Ah --------------------------------------------- INT 10 - VIDEO - DISPLAY CHARACTER (Hercules GRAFIX) AH = 4Bh AL = character to display DI = x (0-720) BP = y (0-347) Note: Unlike the other BIOS character functions character position is specified in pixels rather than rows and columns. --------------------------------------------- INT 10 - VIDEO - DRAW ARC (Hercules GRAFIX) AH = 4Ch --------------------------------------------- INT 10 - VIDEO - DRAW CIRCLE (Hercules GRAFIX) AH = 4Dh --------------------------------------------- INT 10 - VIDEO - FILL AREA (Hercules GRAFIX) AH = 4Eh --------------------------------------------- INT 10 - Direct Graphics Interface Standard (DGIS) - INQUIRE AVAILABLE DEVICES AX = 6A00h BX = 0 CX = 0 DX = buffer length (may be 0) ES:DI = address of buffer Return: BX = number of bytes stored in buffer CX = bytes required for all descriptions (0 if no DGIS) Note: buffer contains descriptions and addresses of DGIS-compatible display(s) and printer(s) --------------------------------------------- INT 10 - DGIS - REDIRECT CHARACTER OUTPUT AX = 6A01h CX = 0 ES:DI = address of device to send INT 10 output to Return: CX = 0 output could not be redirected else INT 10h output now routed to requested display --------------------------------------------- INT 10 - DGIS - INQUIRE INT 10 OUTPUT DEVICE AX = 6A02h ES:DI = 0:0 Return: ES:DI = 0:0 if current display is non-DGIS else address of the current DGIS INT 10 display --------------------------------------------- INT 10 - VIDEO - SET VIDEO MODE (VEGA EXTENDED EGA/VGA) AX = 6F05h BL = mode (graphics mode if graphics resolution listed) text pixel graphic color disp scrn system resol box resoltn page addr 62h = 800x600 16 VEGA Extended EGA 65h = 1024x768 16 VEGA Extended EGA 66h = 640x400 256 VEGA Extended VGA 67h = 640x480 256 VEGA Extended VGA 68h = 720x540 256 VEGA Extended VGA 69h = 800x600 256 VEGA Extended VGA --------------------------------------------- INT 10 - VIDEO - GET VIDEO RAM ADDRESS (TANDY 1000) AH = 70h Return: AX = segment address of the following [BX] = offset address of green plane [CX] = segment address of green plane [DX] = segment address of red/blue plane (red offset = 0, blue offset = 4000) --------------------------------------------- INT 10 - VIDEO - GET INCRAM ADDRESSES (TANDY 1000) AH = 71h Return: AX = segment address of the following [BX] = segment address of INCRAM [CX] = offset address of INCRAM --------------------------------------------- INT 10 - VIDEO - SCROLL SCREEN RIGHT (TANDY 1000) AH = 72h AL = number of columns blanked at left of window 0 = blank entire window BH = attributes to be used on blank columns CH,CL = row, column of upper left corner of window DH,DL = row, column of lower right corner -------------------------------------------- INT 10 - VIDEO - SCROLL SCREEN LEFT (TANDY 1000) AH = 73h AL = number of columns blanked at right of window 0 = blank entire window BH = attributes to be used on blank columns CH,CL = row, column of upper left corner of window DH,DL = row, column of lower right corner --------------------------------------------- INT 10 - VIDEO (DESQview 2.0x only) - SET ??? HANDLER AH = 80h DX = 4456h ('DV') ES:DI -> FAR subroutine to be called on ??? Return: DS = segment of DESQview data structure for video buffer Note: this function is probably meant for internal use only, due to the magic value required in DX the subroutine seems to be called when the DESQview menu is accessed; on entry, AL = 3 or 4 --------------------------------------------- INT 10 - VIDEO (DESQview 2.0x only) - GET ??? AH = 81h DX = 4456h ('DV') Return: ES = segment of DESQview data structure for video buffer BYTE ES:[0] = current window number in DV 2.0x Note: this function is probably meant for internal use only, due to the magic value required in DX --------------------------------------------- INT 10 - VIDEO (DESQview 2.0x only) - GET CURRENT WINDOW INFO AH = 82h DX = 4456h ('DV') Return: DS = segment in DESQview for data structure in DV 2.00, BYTE DS:[0] = window number WORD DS:[1] = segment of other data structure WORD DS:[3] = segment of window's object handle ES = segment of DESQview data structure for video buffer AL = current window number AH = ??? BL = direct screen writes 0 program does not do direct writes 1 program does direct writes, so shadow buffer not usable BH = ??? CL = current video mode CH = ??? Note: this function is probably meant for internal use only, due to the magic value required in DX --------------------------------------------- INT 10 - VIDEO - Compaq Portable Extensions AH = BFh AL = subfunction 00h select external monitor all registers preserved and the internal monitor is blanked and the external monitor is now the active monitor 01h select internal monitor all registers preserved and the external monitor is blanked and the internal monitor is now the active monitor 02h set master mode of the currently active video controller BH = 04h CGA BH = 05h EGA BH = 07h MDA 03h get environment BX = 0000 Return: BH = active monitor 00h = external 01h = internal BL = master mode 00h = switchable VDU not present 04h = CGA 05h = EGA 07h = MDA CH = 00h (reserved) CL = switchable VDU mode supported bit 0 = CGA supported bits 1,2 = reserved (1) bit 3 = MDA supported bits 4-7 = reserved (1) DH = internal monitor type 00h = none 01h = Dual-mode monitor 02h = 5153 RGB monitor 03h = Compaq Color monitor 04h = 640x400 flat panel DL = external monitor type 00h = none 01h = dual-mode monitor 02h = 5153 RGB monitor 03h = Compaq Color monitor 04h = 640x400 flat panel 04h set mode switch delay BH = switch 00h = enable delay 01h = disable delay --------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - READ ONE REGISTER AH = F0h BL = register number DX = group index Pointer/data chips 00h CRT Controller (25 reg) 3B4h mono modes, 3D4h color modes 08h Sequencer (5 registers) 3C4h 10h Graphics Controller (9 registers) 3CEh 18h Attribute Controller (20 registers) 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color modes) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh Return: BL = data --------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - WRITE ONE REGISTER AH = F1h DX = group index (see function F0h) BL = register number BH = value to write Return: BL = data --------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - READ REGISTER RANGE AH = F2h CH = starting register number CL = Number of registers (>1) DX = group index 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h ES:BX -> buffer, CL bytes --------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - WRITE REGISTER RANGE AH = F3h CH = starting register CL = number of registers (>1) DX = group index 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h ES:BX -> buffer, CL bytes --------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - READ REGISTER SET AH = F4h CX = number of registers (>1) ES:BX -> table of records in this format: bytes 1-2 group index Pointer/data chips 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh byte 3 register number (0 for single registers) byte 4 register value --------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - READ REGISTER SET AH = F5h CX = number of registers (>1) ES:BX -> table of records in this format: bytes 1-2 port number Pointer/data chips 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh byte 3 register number (0 for single registers) byte 4 register value -------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - REVERT TO DEFAULT REGISTERS AH = F6h -------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - DEFINE DEFAULT REGISTER TABLE AH = F7h DX = port number Pointer/data chips 00h CRTC (3B4h mono modes, 3D4h color modes) 08h Sequencer 3C4h 10h Graphics Controller 3CEh 18h Attribute Controller 3C0h Single registers 20h Miscellaneous Output register 3C2h 28h Feature Control register (3BAh mono modes, 3DAh color modes) 30h Graphics 1 Position register 3CCh 38h Graphics 2 Position register 3CAh ES:BX address of table of one byte entries, one byte to be written to each register -------------------------------------------- INT 10 - Microsoft Mouse driver EGA support - INTERROGATE DRIVER AH = FAh BX = 0 Return: BX = 0 if mouse driver not present ES:BX -> EGA Register Interface version number, if present: byte 1 = major release number byte 2 = minor release number -------------------------------------------- INT 10 - VIDEO (TopView) - GET VIDEO BUFFER AH = FEh ES:DI = segment:offset of assumed video buffer Return: ES:DI = segment:offset of actual video buffer --------------------------------------------- INT 10 - VIDEO (TopView) - UPDATE REAL SCREEN FROM VIDEO BUFFER AH = FFh CX = number of sequential characters that have been modified DI = offset of first character that has been modified ES = segment of video buffer Note: avoid CX=0 --------------------------------------------- INT 11 - EQUIPMENT DETERMINATION Return: AX = equipment flag bits 0 diskette installed 1 8087 present 2 mouse installed (PS2 only) 2,3 number of 16K banks of RAM on motherboard (PC only) number of 64K banks of RAM on motherboard (XT only) always = 11 on AT and above 4,5 initial video mode 01 = 40x25 color 10 = 80x25 color 11 = 80X25 IBM monochrome 6,7 number of diskette drives (only if bit 0 = 1) 00 = 1, 01 = 2, 10 = 3, 11 = 4 8 0 = dma present, 1 = no dma on system (PCjr???) 9-11 number of RS232 cards 12 game I/O attached 13 serial printer installed (PCjr) internal modem installed (PC/Convertible) 14,15 number of printers --------------------------------------------- INT 12 - MEMORY SIZE Return: AX = number of contiguous 1K blocks of memory --------------------------------------------- INT 13 - DISK - RESET DISK SYSTEM AH = 00h DL = drive (if bit 7 is set both hard disks and floppy disks reset) --------------------------------------------- INT 13 - DISK - STATUS OF DISK SYSTEM AH = 01h DL = drive (hard disk if bit 7 set) Return: AL = status 00h = successful completion 01h = bad command 02h = address mark not found 03h = write attempted on write-protected disk 04h = sector not found 05h = reset failed (hard disk) 06h = diskette changed 07h = parameter act. failed (hard disk) 08h = DMA overrun (floppy disk) 09h = DMA across 64K boundary 0Ah = bad sector detected (hard disk) 0Bh = bad track detected (hard disk) 0Ch = unsupported track 0Dh = invalid number of sectors on format (hard disk) 0Eh = control data address mark detected (hard disk) 0Fh = DMA arbitration error (hard disk) 10h = bad CRC/ECC 11h = data ECC corrected (hard disk) 20h = controller failure 40h = seek failed 80h = time out AAh = drive not ready (hard disk) BBh = undefined error (hard disk) CCh = write fault (hard disk) E0h = status register error (hard disk) FFh = sense operation failed (hard disk) --------------------------------------------- INT 13 - DISK - READ SECTORS INTO MEMORY AH = 02h AL = number of sectors to read CH = track (for hard disk, bits 8,9 in high bits of CL) CL = sector DH = head DL = drive ES:BX = address of buffer to fill Return: CF set on error AH = status (see AH=1 above) AL = number of sectors read --------------------------------------------- INT 13 - DISK - WRITE SECTORS FROM MEMORY AH = 03h AL = number of sectors to write CH = track (if hard disk, bits 8,9 in high bits of CL) CL = sector (if hard disk, high two bits are high bits of track #) DH = head DL = drive ES:BX = address of buffer Return: CF set on error AH = status (see AH=1 above) AL = number of sectors written --------------------------------------------- INT 13 - DISK - VERIFY SECTORS AH = 04h AL = number of sectors to verify CH = track (for hard disk, bits 8,9 in high bits of CL) CL = sector DH = head DL = drive Return: CF set on error AH = status (see AH=1 above) AL = number of sectors verified --------------------------------------------- INT 13 - FLOPPY - FORMAT TRACK AH = 05h AL = number of sectors to create on this track CH = track CL = sector DH = head DL = drive ES:BX -> array of 4-byte address fields byte 1 = track byte 2 = head byte 3 = sector byte 4 = bytes/sector 0=128, 1=256, 2=512, 3=1024 Return: CF set if error occurred AH = status code (see AH=1 above) --------------------------------------------- INT 13 - FIXED DISK - FORMAT TRACK AH = 05h AL = interleave value (XT only) ES:BX = 512-byte format buffer the first 2*(sectors/track) bytes contain F,N for each sector F = 00 for good sector, 80h for bad sector N = sector number CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see AH=1 above) --------------------------------------------- INT 13 - FIXED DISK - FORMAT TRACK AND SET BAD SECTOR FLAGS (XT,PORT) AH = 06h AL = interleave value CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see AH=1 above) --------------------------------------------- INT 13 - FIXED DISK - FORMAT DRIVE STARTING AT GIVEN TRACK (XT,PORT) AH = 07h AL = interleave value (XT only) ES:BX = 512-byte format buffer, see AH=6 above CH = cylinder number (bits 8,9 in high bits of CL) CL = sector number DH = head DL = drive Return: AH = status code (see AH=1 above) --------------------------------------------- INT 13 - DISK - GET CURRENT DRIVE PARAMETERS (XT,AT,XT286,CONV,PS) AH = 08h DL = drive number Return: CF set on error AH = status code (see AH=1 above) BL = drive type (see AH=17h below) (AT/PS2 floppies only) DL = number of consecutive acknowledging drives DH = maximum value for head number CL = maximum value fo sector number CH = maximum value for cylinder number ES:DI = drive parameter table --------------------------------------------- INT 13 - FIXED DISK - INITIALIZE TWO FIXED DISK BASE TABLES (XT,AT,XT286,PS) AH = 09h Return: CF set on error AH = status code (see AH=1 above) INT 41h points to table for drive 0 INT 46h points to table for drive 1 --------------------------------------------- INT 13 - FIXED DISK - READ LONG (XT,AT,XT286,PS) AH = 0Ah DL = drive ID DH = head CH = cylinder (bits 8,9 in high bits of CL) CL = sector ES:BX -> buffer to fill Return: CF set on error AH = status code (see AH=1 above) --