textfiles/programming/ibmbios.txt

271 lines
14 KiB
Plaintext
Raw Normal View History

2021-04-15 11:31:59 -07:00
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