Gaslight Software, Berea, Ohio - Programmers reference		Page 132

The following describes the services available using the interrupt routines
embedded in the IBM PC-XT bios roms.  Also listed are relevant data locations.

Bios data locations:

Address		Data Type	Content description
-----------------------------------------------------------------------------
0040:0000h	(4) word array	Port addresses (up to 4) of RS232 adapters in
				system (COM1, COM2, COM3 and COM4)
0040:0008h	(4) word array	Port addresses (up to 4) of printer adapters
				in system (LPT1, LPT2, LPT3 and LPT4)
0040:0010h	word		Equipment flag representing installed hardware
				(refer to INT type 11h for description).
0040:0013h	word		Installed memory size in 1k increments.
0040:0017h	byte		Keyboard flag no. 1 (refer to INT type 16h for
				bit position description).
0040:0018h	byte		Keyboard flag no. 2. Bit positions:
					Bit 7 - Insert key is pressed.
					Bit 6 - Caps lock key is pressed.
					Bit 5 - Num lock key is pressed.
					Bit 4 - Scroll lock key is pressed.
					Bit 3 - Suspend key has been toggled.
					Bit 2 - ?
					Bit 1 - ?
					Bit 0 - ?
0040:001Ah	word		Pointer to keyboard buffer head.
0040:001Ch	word		Pointer to keyboard buffer tail.
0040:001Eh	(16) byte array	Keyboard buffer (room for 15 entries).
0040:0041h	byte		Diskette status byte (refer to INT type 13h
				for description).
0040:0049h	byte		Current video mode (refer to INT type 10h for
				description).
0040:004Ah	word		Number of columns on screen.
0040:004Ch	word		Length of video screen buffer (in bytes).
0040:004Eh	word		Starting address (offset) of video screen buffer. 
0040:0050h	(8) word array	Cursor position for each of up to 8 pages.
0040:0060h	word		Current cursor mode.
0040:0062h	byte		Current video page being displayed.
0040:0063h	word		Port address of current video adapter.
0040:0065h	byte		Current setting of video 3 x 8 register.
0040:0066h	byte		Current color palette for color card.
0040:006Ch	double word	double word timer count (refer to INT type 1Ah
				for description of timer).
0040:0070h	byte		Timer rollover flag (refer to INT type 1Ah).
0040:0078h	(4) byte array	Printer port timeout values (up to 4 ports).
0040:007Ch	(4) byte array	RS232 port timeout values (up to 4 ports).
B000:0000h			Start of monochrome video screen buffer.
B800:0000h			Start of color video screen buffer.

Gaslight Software, Berea, Ohio - Programmers reference		Page 133

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 5h
Interrupt name: Print screen
Description:    This routine will copy the current contents of the screen
                buffer to the printer device.  The cursor position at the 
                time this routine is invoked will be saved and restored upon
                completion.  The routine is intended to run with interrupts
                enabled.  If a subsequent 'print screen` key is depressed
                during the time this routine is printing, it will be ignored.
                Address 50:0 contains the status of the print screen:
                0050:0000 = 0 - Either print screen has not been called or
                                upon return from a call this indicates a
                                successful operation.
		0050:0000 = 1 - Print screen is in progress.
		0050:0000 = FFh - An error was encounterd during printing.
		
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 134

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 10h
Interrupt name: Video I/O
Description:    These routines provide the CRT interface.
                -------------------------------------------------------------
Inputs:		(AH)=0 - Set video mode. (AL) contains the mode value:
			(AL)=0 - 40 x 25 bw text (power on default)
			(AL)=1 - 40 x 25 color text
			(AL)=2 - 80 x 25 bw text
			(AL)=3 - 80 x 25 color text
			(AL)=4 - 320 x 200 color graphics
			(AL)=5 - 320 x 200 bw graphics
			(AL)=6 - 640 x 200 bw graphics
			(AL)=7 - 80 x 25 monochrome card text
			NOTE: Bw mode operates same as color modes except color
			burst signal is not enabled.
                -------------------------------------------------------------
                (AH)=1 - Set cursor type.  CX defines cursor as follows:
			(CH) - Start line for cursor (0-31)
			(CL) - End line for cursor (0-31)
                -------------------------------------------------------------
                (AH)=2 - Set cursor position. (0,0) is upper left corner.
                	(DH) - Row
                	(DL) - Column
                	(BH) - Page (must be 0 for graphics modes)
                -------------------------------------------------------------
                (AH)=3 - Read cursor position.
                	(BH) - Page number (must be 0 for graphics modes)
                	On exit:
                	(DH) - Cursor row
                	(DL) - Cursor column
                	(CX) - Cursor mode as set above (set cursor type).
                -------------------------------------------------------------
                (AH)=4 - Read light pen position.
                	On exit:
                	(AH) = 0 - Light pen switch not down/not triggered
                	(AH) = 1 - Valid light pen value in registers:
                		(DH) - Row of character light pen position.
                		(DL) - Column of character light pen position.
                		(CH) - Raster line (0-199)
                		(BX) - Pixel column (0-319,639)
                -------------------------------------------------------------
                (AH)=5 - Select active display page (valid only for text modes).
                	(AL) = New page (0-7 for modes 0&1, 0-3 for modes 2&3).
                -------------------------------------------------------------
                (AH)=6 - Scroll defined window region on active page up.
                	(AL) = Number of lines to scroll (0 will blank entire
                	       window). Input lines blanked at bottom of window.
                	(CH) = Row of upper left corner of window.
                	(CL) = Column of upper left corner of window.
                	(DH) = Row of lower right corner of window.
                	(DL) = Column of lower right corner of window.
                	(BH) = Attribute to use on blank fill lines at bottom.
                -------------------------------------------------------------

Gaslight Software, Berea, Ohio - Programmers reference		Page 135

                (AH)=7 - Scroll defined window region on active page down.
                	(AL) = Number of lines to scroll (0 will blank entire
                	       window). Input lines blanked at top of window.
                	(CH) = Row of upper left corner of window.
                	(CL) = Column of upper left corner of window.
                	(DH) = Row of lower right corner of window.
                	(DL) = Column of lower right corner of window.
                	(BH) = Attribute to use on blank fill lines at bottom.
                -------------------------------------------------------------
                (AH)=8 - Read attribute and character at current cursor position.
                	(BH) = Display page to read from (valid for text modes)
                	On exit:
                	(AL) = Character at current cursor position.
                	(AH) = Attribute of character at current cursor position.
                -------------------------------------------------------------
                (AH)=9 - Write attribute and character at current cursor position.
                	(BH) = Display page to write to (valid for text modes).
                	(CX) = Count of characters to write.
                	(AL) = Character to write.
                	(BL) = Attribute of character (text mode) or color of
                	       character (graphics modes).  If bit 7 of BL = 1,
                	       then the color value is exclusive or'd with the
                	       current contents at cursor position.
                -------------------------------------------------------------
                (AH)=0Ah - Write character only at current cursor position.
                	(BH) = Display page to write to (valid for text modes).
                	(CX) = Count of characters to write.
                	(AL) = Character to write.
                -------------------------------------------------------------
                (AH)=0Bh - Set color palette.
                	(BH) = Palette color id being set (0-127).
                	(BL) = Color value to be used with that color id.
                	NOTE: For the current color card, this entry point
                	      has meaning only for 320 x 200 graphics.
                	      Color id = 0 selects the background color (0-15).
                	      Color id = 1 selects the palette to be used:
                	      	0 = Green(1) /   Red(2)   / Yellow(3)
                	      	1 = Cyan(1)  / Magenta(2) / White(3)
                	      In 40 x 25 or 80 x 25 alpha modes, the value set
                	      for palette color 0 indicates the border color
                	      to be used (0-31 where 16-31 select the high
                	      intensity background set).
                -------------------------------------------------------------
                (AH)=0Ch - Write dot to specified pixel location.
                	(DX) = Pixel row number.
                	(CX) = Pixel column number.
                	(AL) = Color value.  If bit 7 of AL = 1 then the color
                	       value is exclusive or'd with the current contents
                	       of the dot.
                -------------------------------------------------------------
                (AH)=0Dh - Read dot at specified pixel location.
                	(DX) = Pixel row number.
                	(CX) = Pixel column number.
                	On exit:
                	(AL) = The dot read.
                -------------------------------------------------------------

Gaslight Software, Berea, Ohio - Programmers reference		Page 136

                (AH)=0Eh - Write character to active page.
                	(AL) = Character to write.
                	(BL) = Foreground color in graphics mode.
                	NOTE: Screen width is controlled by previous mode set.
                -------------------------------------------------------------
		(AH)=0Fh - Return the current video state (mode).
			On exit:
			(AL) = 0 - 40 x 25 bw text (power on default)
			(AL) = 1 - 40 x 25 color text
			(AL) = 2 - 80 x 25 bw text
			(AL) = 3 - 80 x 25 color text
			(AL) = 4 - 320 x 200 color graphics
			(AL) = 5 - 320 x 200 bw graphics
			(AL) = 6 - 640 x 200 bw graphics
			(AL) = 7 - 80 x 25 monochrome card text
			(AH) = Number of character columns on screen.
			(BH) = Current active display page.
                -------------------------------------------------------------
Output:		Registers CS, SS, DS, ES, BX, CX, DX preserved during call.
		All other destroyed.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 137

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 11h
Interrupt name: Equipment determination
Description:    This routine attempts to determine what optional devices are
		attached to the system.
                -------------------------------------------------------------
Output:		(AX) is set as follows to indicate the attached I/O:
			Bit 15,14 - Number of printers attached.
			Bit 13  - Not used
			Bit 12  - Game I/O attached.
			Bit 11,10,9 - Number of RS232 cards attached.
			Bit 8   - Not used.
			Bit 7,6 - Number of diskette drives (00=1, 01=2,
			        10=3, 11=4 only if bit 0 = 1)
			Bit 5,4 - Initial video mode:
				00 - unused
				01 - 40 x 25 bw using color card
				10 - 80 x 25 bw using color card
				11 - 80 x 25 using monochrome card
			Bit 3,2 - Planar RAM size (00=16k,01=32k,10=48k,11=64k)
			Bit 1   - Not used.
			Bit 0   - IPL from diskette, this bit indicates that
				there are diskette drives on the system.
                -------------------------------------------------------------
		No other registers affected.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 138

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 12h
Interrupt name: Memory size
Description:    This routine determines the amount of memory in the system as
		represented by the switches on the base board.  Note that the
		system may not be able to use I/O memory unless there is a full
		complement of 64k bytes on the base board.
                -------------------------------------------------------------
Outputs:	(AX) = Number of contiguous 1k blocks of memory installed.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 139

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 13h
Interrupt name: Diskette I/O (PC bios without fixed disk)
Description:    This interface provides access to the 5 1/4 diskette drives.
                -------------------------------------------------------------
Input:		(AH)=0 - Reset diskette system.  Hardware reset to NEC con-
			troller, prepare command, recal required on all drives.
                -------------------------------------------------------------
                (AH)=1 - Read the status of the system into (AL).  DISKETTE_
                	STATUS (byte at 0000:0441h) from last operation is
                	returned.
                -------------------------------------------------------------
                (AH)=2 - Read the desired sectors into memory. (see below).
                -------------------------------------------------------------
                (AH)=3 - Write the desired sectors from memory. (see below).
                -------------------------------------------------------------
                (AH)=4 - Verify the desired sectors. (see below).
                -------------------------------------------------------------
                (AH)=5 - Format the desired track.  For the format operation,
                	the buffer pointer (ES:BX) must point to the collection
                	of desired address fields for the track.  Each field
                	is composed of 4 bytes (C,H,R,N) where:
                	C = track number, H = head number, R = sector number
                	and N = number of bytes per sector (00=128, 01=256,
                	02=512, 03=1024).  There must be one entry for every
                	sector on the track.  This information is used to find
                	the requested sector during read/write access.
                -------------------------------------------------------------
                Register parameters for read/write/verify/format
                	(DL) - Drive number (0-3 allowed, value checked)
                	(DH) - Head number (0-1 allowed, not value checked)
                	(CH) - Track number (0-39, not value checked)
                	(CL) - Sector number (1-8, not value checked, not
                	       used for format)
                	(AL) - Number of sectors (max=8, not value checked,
                	       not used for format)
                	(ES:BX) - pointer to buffer (not required for verify)
                -------------------------------------------------------------
                Data variable - Double word pointer (DISK_POINTER at 0000:
                	0078h) points to the current disk parameter table.
                -------------------------------------------------------------
Output:		(AH) - Status of operation.  Status codes are defined as
			follows:
			80h - TIME_OUT, attached device failed to respond
			40h - BAD_SEEK, seek operation failed
			20h - BAD_NEC, NEC controller has failed
			10h - BAD_CRC, bad CRC on diskette read
			09h - DMA_BOUNDARY, attempt to DMA across 64k boundary
			08h - BAD_DMA, DMA overrun on operation
			04h - RECORD_NOT_FOUND, requested sector not found
			03h - WRITE_PROTECT, write attempted to write prot disk
			02h - BAD_ADDR_MARK, address mark not found
			01h - BAD_CMD, bad command passed to diskette I/O
		(CY)=0 - Successful operation (AH=0 on return)
		(CY)=1 - Failed operation (AH has error reason)
                -------------------------------------------------------------

Gaslight Software, Berea, Ohio - Programmers reference		Page 140

                For read/write/verify:
                	DS, BX, DX, CH, CL are preserved
                	AL = number of sectors actually read (NOTE: AL may
                	     not be correct if time out error occurs).
                -------------------------------------------------------------
                NOTE: If an error is reported by the diskette code, the
                	appropriate action is to reset the diskette, then retry
                	the operation.  On read accesses, no motor start delay
                	is taken, so that three retries are required on reads
                	to ensure that the problem is not due to motor startup.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 141

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 13h
Interrupt name: Fixed disk I/O interface (XT bios with fixed disk)
Description:    This interface provides access to the 5 1/4 diskette drives
		through the fixed disk controller.
                -------------------------------------------------------------
Input:		(AH)=0 - Reset disk.  (DL = 80h,81h) / diskette.
                -------------------------------------------------------------
                (AH)=1 - Read the status of the system into (AL).  DISK_
                	STATUS (byte at 0000:0474h) from last operation is
                	returned. NOTE: DL < 80h - diskette, DL > 80h - disk.
                -------------------------------------------------------------
                (AH)=2 - Read the desired sectors into memory. (see below).
                -------------------------------------------------------------
                (AH)=3 - Write the desired sectors from memory. (see below).
                -------------------------------------------------------------
                (AH)=4 - Verify the desired sectors. (see below).
                -------------------------------------------------------------
                (AH)=5 - Format the desired track.
                -------------------------------------------------------------
                (AH)=6 - Format the desired track and set bad sector flags.
                -------------------------------------------------------------
                (AH)=7 - Format the drive starting at the desired track.
                -------------------------------------------------------------
                (AH)=8 - Return the current drive parameters.
                -------------------------------------------------------------
                (AH)=9 - Initialize drive pair characteristics.  Interrupt
                	41h points to data block.
                -------------------------------------------------------------
                (AH)=0Ah - Read long.
                -------------------------------------------------------------
                (AH)=0Bh - Write long.
                -------------------------------------------------------------
                (AH)=0Ch - Seek
                -------------------------------------------------------------
                (AH)=0Dh - Alternate disk reset (see DL)
                -------------------------------------------------------------
                (AH)=0Eh - Read sector buffer.
                -------------------------------------------------------------
                (AH)=0Fh - Write sector buffer, (recommended practice before
                	formatting.
                -------------------------------------------------------------
                (AH)=10h - Test drive ready.
                -------------------------------------------------------------
                (AH)=11h - Recalibrate.
                -------------------------------------------------------------
                (AH)=12h - Controller RAM diagnostic.
                -------------------------------------------------------------
                (AH)=13h - Drive diagnostic.
                -------------------------------------------------------------
                (AH)=14h - Controller internal diagnostic.
                -------------------------------------------------------------

Gaslight Software, Berea, Ohio - Programmers reference		Page 142

                Register parameters for fixed disk operations:
                	(DL) - Drive number (80h-87h for disk, value checked).
                	(DH) - Head number (0-7 allowed, not value checked)
                	(CH) - Cylinder number (0-1023, not value checked)
                	(CL) - Sector number (1-17, not value checked)
                	       NOTE: High 2 bits of cylinder number are placed
                	       in the high 2 bits of the CL register (10
                	       bits total).
                	(AL) - Number of sectors (max range 1-80h, for read/
                	       write long 1-79h) (interleave value for format,
                	       1 - 16d).
                	(ES:BX) - pointer to buffer (not required for verify)
                -------------------------------------------------------------
                Data variable - Double word pointer (DISK_POINTER at 0000:
                	0078h) points to the current disk parameter table.
                -------------------------------------------------------------
Output:		(AH) - Status of operation.  Status codes are defined as
			follows:
			FFh - SENSE_FAIL, sense operation failed
			BBh - UNDEF_ERR, undefined error occurred
			80h - TIME_OUT, attached device failed to respond
			40h - BAD_SEEK, seek operation failed
			20h - BAD_NEC, NEC controller has failed
			11h - DATA_CORRECTED, ECC corrected data error
			10h - BAD_ECC, bad ECC on diskette read
			0Bh - BAD_TRACK, bad track flag detected
			09h - DMA_BOUNDARY, attempt to DMA across 64k boundary
			07h - INIT_FAIL, drive parameter activity failed
			05h - BAD_RESET, reset failed
			04h - RECORD_NOT_FOUND, requested sector not found
			02h - BAD_ADDR_MARK, address mark not found
			01h - BAD_CMD, bad command passed to diskette I/O
		(CY)=0 - Successful operation (AH=0 on return)
		(CY)=1 - Failed operation (AH has error reason)
                -------------------------------------------------------------
                NOTE: Error 11h indicates that the data read had a recoverable
                      error which was corrected by the ECC algorithm.  The data
                      is probably good, however the bios routine indicates an
                      error to allow the controlling program a chance to decide
                      for itself.  The error may not recur if the data is re-
                      written.  (AL) contains the burst length.
                      If an error is reported by the disk code, the appropriate
                      action is to reset the disk, then retry the operation.
                -------------------------------------------------------------
                If drive parameters were requested, the following is returned:
                      (DL) = number of consecutive acknowledging drives at-
                             tached (0-2).
                      (DH) = maximum useable value for head number.
                      (CH) = maximum useable value for cylinder number.
                      (CL) = maximum useable value for sector number and
                             cylinder number high bits.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 143

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 14h
Interrupt name: RS232_IO
Description:    This routine provides byte stream i/o to the communications
                port according to the parameters:
                -------------------------------------------------------------
Input:          (AH)=0 - Initialize the communications port
                	(AL) has parameters for initialization

                --- baud rate ---       - parity -    stopbits    length
         bit    7       6       5       4        3       2       1       0

                000 - 110		x0 - none      0 - 1	10 - 7 bits
                001 - 150		01 - odd       1 - 2    11 - 8 bits
                010 - 300
                011 - 600
                100 - 1200
                101 - 2400
                110 - 4800
                111 - 9600

                On return, conditions set as in call to comm status (AH=3)
                -------------------------------------------------------------
                (AH)=1 - Send the character in (AL) over the comm line
                	(AL) register is preserved.
                	On exit, bit 7 of AH is set if the routine was unable
                	to transmit the byte of data over the line.  If bit 7
                	of AH is not set, the remainder of AH is set as in a
                	status request, reflecting the current status of the
                	line.
                -------------------------------------------------------------
                (AH)=2 - Receive a character in (AL) from comm line before
                	returning to caller.
                	On exit, AH has the current line status, as set by the
                	status routine, except that the only bits left on are
                	the error bits (7,4,3,2,1).  If AH has bit 7 on (time
                	out) the remaining bits are not predictable.  Thus
                	AH is non zero only when an error occurred.
                -------------------------------------------------------------
                (AH)=3 - Return the comm port status in (AX)
                	AH contains the line status:
                	Bit 7 - time out
                	Bit 6 - trans shift register empty
                	Bit 5 - tran holding register empty
                	Bit 4 - break detected
                	Bit 3 - framing error
                	Bit 2 - parity error
                	Bit 1 - overrun error
                	Bit 0 - data ready
                	AL contains the modem status:
                	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
                -------------------------------------------------------------

Gaslight Software, Berea, Ohio - Programmers reference		Page 144

                (DX) = Parameter indicating which RS232 card (0,1 allowed)
                -------------------------------------------------------------
                Data area RS232_BASE (400h) contains the base address of the
                8250 on the card, this location contains up to 4 RS232 addresses
                (word) possible.  Data area label RS232_TIM_OUT (47Ch) contains
                outer loop count value (byte) for timeouts of up to 4 comm's
                (default = 1).

                Output:
                	AX modified according to parms of call
                	all others unchanged

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 145

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 15h
Interrupt name: Cassette I/O
Description:    Dummy cassette I/O routine, returns 'invalid cmd' if the
		routine is ever called by accident.
                -------------------------------------------------------------
Output:		(AX) = 86h
		(CY) = 1

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 146

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 16h
Interrupt name: Keyboard I/O
Description:    These routines provide keyboard support
                -------------------------------------------------------------
Input:          (AH)=0 - Read the next ascii character struck from the keyboard.
                	Return the result in (AL), scan code in (AH).
                -------------------------------------------------------------
                (AH)=1 - Set the Z flag to indicate if an ascii character is
                	available to be read.
                	(ZF)=1 -- no code available
                	(ZF)=0 -- code is available
                	If ZF = 0, the next character in the buffer to be read
                	is in AX, and the entry remains in the buffer.
                -------------------------------------------------------------
                (AH)=2 - Return the current shift status in AL register. The
                	bit settings for this code are:
                	Bit 7 - insert state is active
                	Bit 6 - caps lock state has been toggled
                	Bit 5 - num lock state has been toggled
                	Bit 4 - scroll lock state has been toggled
                	Bit 3 - alternate shift key depressed
                	Bit 2 - control shift key depressed
                	Bit 1 - left shift key depressed
                	Bit 0 - right shift key depressed
                -------------------------------------------------------------
                Output:
                	As noted above, only AX and flags changed.
                	All other registers preserved.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 147

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 17h
Interrupt name: Printer I/O
Description:    This routine provides communication with the printer.
                -------------------------------------------------------------
Input:		(AH)=0 - Print the character in (AL).  On return, AH = 1 if
			character could not be printed (time out).  Other
			bits set as on a normal status call below.
                -------------------------------------------------------------
                (AH)=1 - Initialize the printer port.  Returns with AH set
                	with printer status.
                -------------------------------------------------------------
                (AH)=2 - Read the printer status into (AH).  The following
                	defines the individual bits:
                	Bit 7 - 1 = not busy
                	Bit 6 - 1 = acknowledge
                	Bit 5 - 1 = out of paper
                	Bit 4 - 1 = selected
                	Bit 3 - 1 = I/O error
                	Bit 2 - not used
                	Bit 1 - not used
                	Bit 0 - 1 = timeout
                -------------------------------------------------------------
		(DX) = Printer to be used (0,1,2,3) corresponding to actual
			values in PRINTER_BASE (0000:0408h) data table
			which holds the port addresses (words) of up to four
			printer adapter cards.  Data area PRINT_TIM_OUT (4
			bytes at (0000:0478h)) may be changed to cause dif-
			ferent time out waits (default = 20).
                -------------------------------------------------------------
Output:		(AH) is modified, all others unchanged.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 148

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 19h
Interrupt name: Bootstrap loader (PC version without fixed disk)
Description:    Track 0, sector 1 is read into the boot location (segment 0
                offset 7C00h) and control is transferred there.  If there
                is a hardware error control is transferred to the rom basic
                entry point.
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 19h
Interrupt name: Bootstrap loader (XT version with fixed disk)
Description:    The fixed disk bios replaces the interrupt 19h vector with a
		pointer to this routine.  Reset the disk and diskette parameter
		vectors.  
		The boot strap sequence is as follows:
		- Attempt to load from diskette drive into the boot location
		  (0000:7C00h) and transfer control there.
		- If the diskette fails, the fixed disk is tried for a valid
		  bootstrap block.  A valid boot block on the fixed disk
		  consists of the bytes 055h 0AAh as the last two bytes of the
		  block.  If valid, cylinder 0, sector 1 of the fixed disk is
		  read into the boot location (0000:7C00h) and control is
		  transferred to that location.
		- If the above fails, control is passed to the rom basic entry
		  point.
		  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Gaslight Software, Berea, Ohio - Programmers reference		Page 149

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Interrupt type: 1Ah
Interrupt name: Time of day
Description:    This routine allows the clock to be set/read
                -------------------------------------------------------------
Input:		(AH)=0 - Read the current clock count. 
		         On exit:
		         (CX) = Upper half of double word count.
		         (DX) = Lower half of double word count.
		         (AL) = 0 if timer has not passed 24 hours since last
		                read.  Non zero if on another day.
                -------------------------------------------------------------
		(AH)=1 - Set the current clock using the following:
		         (CX) = Upper half of double word count.
		         (DX) = Lower half of double word count.
                -------------------------------------------------------------
		NOTE: Counts occur at the rate of 1193180/65536 counts/sec,
		      or approximately 18.2 per second.

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
