I B M P C B I O S S e r v i c e R o u t i n e s Adapted from IBM Technical Reference Release 11/08/82 by Roy Smith ---------------------------------------------------------------------------- Vector Interrupt BIOS Entry Address Number Name label ---------------------------------------------------------------------------- 00-03 0 Divide by Zero D11 04-07 1 Single Step D11 08-0B 2 Nonmaskable NMI_INT 0C-0F 3 Breakpoint D11 10-13 4 Overflow D11 14-17 5 Print Screen PRINT_SCREEN 18-1B 6 Reserved D11 1C-1F 7 Reserved D11 ---- Hardware Service Routines --------------------------------------------- 20-23 8 Time of Day Service TIMER_INT 24-27 9 Keyboard Service KB_INT 28-2B A Reserved D11 2C-2F B Communications Service COM2: D11 30-33 C Communications Service COM1: D11 34-37 D Disk Service D11 38-3B E Diskette Service DISK_INT 3C-3F F Printer Service D11 ---------------------------------------------------------------------------- 40-43 10 Video I/O VIDEO_IO 44-47 11 Equipment Check EQUIPMENT 48-4B 12 Memory MEMORY_SIZE_DETERMINE 4C-4F 13 Diskette/Disk I/O DISKETTE_IO 50-53 14 Communications RS232_IO 54-57 15 Cassette CASSETTE_IO 58-5B 16 Keyboard I/O KEYBOARD_IO 5C-5F 17 Printer PRINTER_IO 60-63 18 Resident BASIC F600:0000 64-67 19 Bootstrap BOOT_STRAP 68-6B 1A Time of Day TIME_OF_DAY 6C-6F 1B Keyboard Break DUMMY_RETURN 70-73 1C Timer Tick (18.2 per second) DUMMY_RETURN 74-77 1D Video Initialization VIDEO_PARMS 78-7B 1E Diskette Operating Parameters DISK_BASE 7C-7F 1F Video Graphics Characters 0 +--------------------------------------------------------------------------+ | I B M P C B I O S I n t e r f a c e R o u t i n e s | +--------------------------------------------------------------------------+ Intr Func In Out Comments # (AH) Regs Regs 10 --------------- Video I/O --------------------------------------------- --- 0 Set CRT Mode AL 0=40 x 25 Black & white 1= 40 x 25 Color 2=80 x 25 Black & white 3= 80 x 25 Color 4=320 x 200 Medium resolution color 5=320 x 200 Medium resolution black & white 6=640 x 200 High resolution black & white --- 1 Set Cursor Type CH Start scan line (0-7 C/G, 0-14 Mono) CL End scan line (set start to 20H for no curs.) --- 2 Set Cursor Position DH,DL Row, column (0,0 = Home) BH Video page --- 3 Read Cursor Position BH Video page DH,DL Row, column (0,0 = Home) --- 4 Read Light Pen AH 0=Light pen not trig, 1=valid info in regs: DH,DL Row, column of character LP position CH Raster line BX Pixel column (0-319 med-res,0-619 hi-res) --- 5 Select Active Page AL New page (0-7 for 40x25,0-3 for 80x25) --- 6 Scroll Active Page Up --- 7 Scroll Active Page Down AL Number of lines to scroll (0 if entire screen) CH,CL Row, column of upper left corner DH,DL Row, column of lower right corner BH Attribute to use in blanked lines --- 8 Read Attribute / Character at current cursor position BH Video page AL Character read AH Attribute of char (alpha modes only) --- 9 Write Attribute / Character at current cursor position BH Video page CX Count of characters to write AL Character to write BL Attribute to write --- A Write Character only at current cursor position BH Video page CX Count of characters to write AL Character to write --- B Set Color Palette BH Palette color ID being set BL Color value to be used with that color ID --- C Write Dot DX,CX Row, column number AL Color value (If bit 7=1, value is OR'ed in) --- D Read Dot DX,CX Row, column number AL Dot read --- E Write Teletype to Active Page AL Character to write BL Foreground color in graphics mode --- F Get Current Video State AL Mode currently set (see func. 0) AH Columns on screen +--------------------------------------------------------------------------+ | I B M P C B I O S I n t e r f a c e R o u t i n e s | +--------------------------------------------------------------------------+ Intr Func In Out Comments # (AH) Regs Regs 11 -------------------------------------------------+ Intr Func In Out Comments # (AH) Regs Regs 11 --------------- Equipment --------------------------------------------- None AX Equipment attached : Bits set as follows A H A L 0 0 X 0 0 0 0 X 0 0 0 0 0 0 X 0 --- - ----- --- --- --- - 1 2 3 4 5 6 7 1 Number of printers 2 Game I/O 3 RS232 cards 4 Drives 5 Initial video mode 6 System board RAM 7 IPL from diskette 12 -------------- Memory Size --------------------------------------------- None AX Number of bytes in Kbytes 13 ------------- Diskette I/O --------------------------------------------- --- 0 Reset Diskette System None None Hard resets all diskette drives, recal req'd --- 1 Read Diskette Status AL Status byte : Bits set as follows 80 Attachment failed to respond 40 Seek operation failed 20 NEC controller failure 10 Bad CRC on diskette read 09 Attempt to DMA across a 64k bound 08 DMA overrun on operation 04 DMA overrun on operation 03 Write attempted on wrt prot disk 02 Address mark not found 01 Bad command passed to diskette I/O --- 2 Read the desired sectors into memory --- 3 Write the desired sectors from memory --- 4 Verify the desired sectors --- 5 Format the desired track DL Drive number (0-3) DH Head number CH Track number CL Sector number AL Number of sectors (not used for format) ES:BX Address of buffer (not used for verify) AH Status of operation (see above) CY 1 if failed, 0 if ok +--------------------------------------------------------------------------+ | I B M P C B I O S I n t e r f a c e R o u t i n e s | +--------------------------------------------------------------------------+ Intr Func In Out Comments # (AH) Regs Regs 14 ------------- RS-232 I/O ----------------------------------------------- --- 0 Initialize Communications Port DX Interface card (0=COM1:, 1=COM2:) AL Parameters to set up : Bits are as follows A L 0 0 0 0 0 0 0 0 --- - --- ----- 1 2 3 4 1 Word length (10=7 bit, 11=8 bit) 2 Stopbits (0=1, 1=2) 3 Parity (00=none, gth (10=7 bit, 11=8 bit) 2 Stopbits (0=1, 1=2) 3 Parity (00=none, 01=odd, 11=even) 4 Baud (000=110, 001=150, 010=300, 011=600, 100=1200, 101=2400, 110=4800, 111=9600) AH Set as in status (call 3) --- 1 Send Character to 100=1200, 101=2400, 110=4800, 111=9600) AH Set as in status (call 3) --- 1 Send Character to Communications Line DX Interface card (0=COM1:, 1=COM2:) AL Character to send AH Set as in status (call 3) --- 2 Recieve Character from Communications Line DX Interface card (0=COM1:, 1=COM2:) AL Character AH 0 if no error, set as status if nonzero --- 3 Get Communications Status DX Interface card (0=COM1:, 1=COM2:) AH Line status : Bits set as follows 80 Time out 40 Transmit shift reg empty 20 Transmit holding reg empty 10 Break detect 08 Framing error 04 Parity error 02 Overrun error 01 Data ready AL Modem status : Bits set as follows 80 Recieved line signal detect 40 Ring indicator 20 Data set ready 10 Clear to send 08 Delta recieved line signal detect 04 Trailing edge ring detector 02 Delta data set ready 01 Delta clear to send 15 ----------- Cassette I/O ----( Obsolete )------------------------------- +--------------------------------------------------------------------------+ | I B M P C B I O S I n t e r f a c e R o u t i n e s | +--------------------------------------------------------------------------+ Intr Func In Out Comments # (AH) Regs Regs 16 ----------- Keyboard I/O ----------------------------------------------- --- 0 Read Next Character AL Character struck AH Scan code of key --- 1 Check Typeahead Status ZF 1 if no key available, 0 if key available AL,AH Character/Scan code if available. Keystroke remains in buffer. --- 2 Get Current Shift Status AL Shift flag status : Bits set as follows 80 Insert state 40 Caps lock state 20 Num lock state 10 Scroll lock state 08 Alt shift is depressed 04 Ctl shift is depressed 02 Left shift is depressed 01 Right shift is depressed 17 ----------- Printer I/O ------------------------------------------------ --- 0 Print Character DX Printer to be used (0,1,2) AL Character to print AH Status set as in call 2 --- 1 Initialize Printer Port DX Printer to be used (0,1,2) AH Status set as in call 2 --- 2 Get Printer Status DX Printer to be used (0,1,2) AH Printer status : Bits set as follows 80 Not busy (ready?) 40 Acknowledge 20 Out of paper 10 Selected 08 I/O error 01 Time out