339 lines
37 KiB
Plaintext
339 lines
37 KiB
Plaintext
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||
³ ³ ³ ³ ³ ³
|
||
³ 00h ³ Set BaudRate ³ AL = Baud/Parity/SB ³ AX = Status bits ³ BaudRate code in AL: ³
|
||
³ ³ ³ DX = Port number ³ (See function 03h) ³ Bits [7:5] 000 = 19200, 001 = 38400, ³
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ 010 = 300, 011 = 600, 100 = 1200, ³
|
||
³ ³ ³ ³ ³ 101 = 2400, 110 = 4800, 111 = 9600. ³
|
||
³ ³ ³ ³ ³ Parity: [4:3] 00 or 10 = none, ³
|
||
³ ³ ³ ³ ³ 01 = odd, 11 = even. ³
|
||
³ ³ ³ ³ ³ StopBits: [2:2] 0 = 1, 1 = 2 ³
|
||
³ ³ ³ ³ ³ CharLength: 5 bits plus value [1:0] ³
|
||
³ ³ ³ ³ ³ Support for [4:0] = 00011 required of ³
|
||
³ ³ ³ ³ ³ driver, others optional ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 01h ³ Transmit ³ AL = Character ³ AX = Status bits ³ Character is queued for transmission. ³
|
||
³ ³ character ³ DX = Port number ³ (See function 03h) ³ If there is room in the transmitter ³
|
||
³ ³ (wait for ³ (NOP if DX=00FFh) ³ ³ buffer when this call is made, the ³
|
||
³ ³ room in the ³ ³ ³ character will be stored and control ³
|
||
³ ³ buffer) ³ ³ ³ returned to caller. If the buffer is ³
|
||
³ ³ ³ ³ ³ full, the driver will wait for room. ³
|
||
³ ³ ³ ³ ³ This can be dangerous when used in ³
|
||
³ ³ ³ ³ ³ combination with flow control (see ³
|
||
³ ³ ³ ³ ³ Function 0Fh) ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 02h ³ Receive ³ DX = Port number ³ AH = 00h ³ The next character in the input ring ³
|
||
³ ³ character ³ (NOP if DX=00FFh) ³ AL = Input character ³ buffer is returned to the caller. If ³
|
||
³ ³ (wait for ³ ³ ³ none available, the driver will wait ³
|
||
³ ³ available) ³ ³ ³ for input. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 03h ³ StatusRequest ³ DX = Port number ³ AX = Status bits ³ Bits are: ³
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ AH[6:6] 1 = Output buffer empty ³
|
||
³ ³ ³ ³ ³ AH[5:5] 1 = Output buffer not full ³
|
||
³ ³ ³ ³ ³ AH[1:1] 1 = Input buffer overrun ³
|
||
³ ³ ³ ³ ³ AH[0:0] 1 = Characters in input buffer³
|
||
³ ³ ³ ³ ³ AL[7:7] 1 = Carrier Detect signal ³
|
||
³ ³ ³ ³ ³ AL[3:3] 1 = Always (never 0) ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 04h ³ Initialize ³ DX = Port number ³ AX = 1954h (success) ³ Required before I/O can take place on ³
|
||
³ ³ driver (port) ³ (DX=00FFh special) ³ BL = Max function ³ comm port. When DX = 00FFh, then ³
|
||
³ ³ ³ ³ supported, not ³ any initialization needed to make the ³
|
||
³ ³ ³ ³ incl. 7Eh - BFh ³ keyboard/display available for FOSSIL ³
|
||
³ ³ ³ {BX = 4F50H ³ BH = FOSSIL revision ³ use should be performed. BX = 4F50h ³
|
||
³ ³ ³ ES:CX = ^C flag byte}³ level of driver ³ signals that ES:CX points to a flag ³
|
||
³ ³ ³ (Optional) ³ ³ byte in the application that the ³
|
||
³ ³ ³ ³ DTR raised on port ³ driver should increment when its ³
|
||
³ ³ ³ ³ BaudRate preserved ³ keyboard routines detect a Ctl-C. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|
||
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||
³ ³ ³ ³ ³ ³
|
||
³ 05h ³ Deinitialize ³ DX = Port number ³ None ³ Disengages driver from comm port. ³
|
||
³ ³ driver (port) ³ (DX=00FFh special) ³ ³ Should be done when operations on the ³
|
||
³ ³ ³ ³ DTR not changed ³ port are complete. IF DX = 00FFh, ³
|
||
³ ³ ³ ³ ³ then the initialization that was ³
|
||
³ ³ ³ ³ ³ performed when FOSSIL function 04h ³
|
||
³ ³ ³ ³ ³ with DX = 00FFh should be undone. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 06h ³ Raise/lower ³ AL = 01h - Raise DTR ³ None ³ Used to control Data Terminal Ready ³
|
||
³ ³ DTR ³ = 00h - Lower DTR ³ ³ signal line on com port. This line ³
|
||
³ ³ ³ DX = Port number ³ DTR TRUE if AL = 01h ³ usually has some effect on modem ³
|
||
³ ³ ³ (NOP if DX=00FFh) ³ FALSE if AL = 00h ³ operation (most modems will drop ³
|
||
³ ³ ³ ³ ³ carrier if DTR is lowered, for ³
|
||
³ ³ ³ ³ ³ example). ³
|
||
³ ³ ³ ³ ³ ³
|
||
³ ³ ³ ³ ³ ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 07h ³ Return system ³ None ³ AL = timer tick ³ Returns statistics needed to do some ³
|
||
³ ³ timer params ³ ³ interrupt number ³ critical timing in any MS-DOS system. ³
|
||
³ ³ ³ ³ (NOT vector) ³ The interrupt number in AL can be ³
|
||
³ ³ ³ ³ AH = number of ticks ³ used to intercept a timer interrupt ³
|
||
³ ³ ³ ³ per second ³ that happens (AH) times per second. ³
|
||
³ ³ ³ ³ DX = (apx.) number ³ DX is essentially 1000/AH. Function ³
|
||
³ ³ ³ ³ of mS / tick ³ 16h is the preferred way to install ³
|
||
³ ³ ³ ³ ³ timer tick code. AH and DX should ³
|
||
³ ³ ³ ³ ³ be accurate for the 16h timer tick. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 08h ³ Flush output ³ DX = Port number ³ None ³ This is used to wait for all output ³
|
||
³ ³ buffer ³ (NOP if DX=00FFh) ³ ³ to complete. If flow control is active³
|
||
³ ³ ³ ³ ³ it is possible for this code never to ³
|
||
³ ³ (wait for all ³ ³ ³ return control to the caller. (See ³
|
||
³ ³ output to end)³ ³ ³ function 0Fh) ³
|
||
³ ³ ³ ³ ³ ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 09h ³ Purge output ³ DX = Port number ³ None ³ Zero the output buffer. Returns to ³
|
||
³ ³ buffer ³ (NOP if DX=00FFh) ³ ³ the caller immediately. Characters ³
|
||
³ ³ ³ ³ ³ that have not been transmitted yet ³
|
||
³ ³ (immediately ³ ³ ³ are lost. ³
|
||
³ ³ zero buffer) ³ ³ ³ ³
|
||
³ ³ ³ ³ ³ ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|
||
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ´
|
||
³ ³ ³ ³ ³ ³
|
||
³ 0Ah ³ Purge input ³ DX = Port number ³ None ³ Zeroes the input buffer. If any flow ³
|
||
³ ³ buffer ³ (NOP of DX=00FFh) ³ ³ control restraint has been employed ³
|
||
³ ³ ³ ³ ³ (dropping RTS or transmitting XOFF) ³
|
||
³ ³ ³ ³ ³ the port will be "released" (by doing ³
|
||
³ ³ ³ ³ ³ the reverse, raising RTS or sending ³
|
||
³ ³ ³ ³ ³ XON). Returns to caller immediately. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 0Bh ³ Transmit ³ AL = Character ³ AX = 0001h if sent ³ Character is queued for transmission. ³
|
||
³ ³ character ³ DX = Port number ³ = 0000h if not ³ If there is room in the transmitter ³
|
||
³ ³ ("no wait") ³ (NOP if DX=00FFh) ³ sent ³ buffer when this call is made, the ³
|
||
³ ³ ³ ³ ³ character will be stored and control ³
|
||
³ ³ ³ ³ ³ returned to caller with AX=1. If the ³
|
||
³ ³ ³ ³ ³ buffer is full, control is returned ³
|
||
³ ³ ³ ³ ³ to caller with AX=0. This allows the ³
|
||
³ ³ ³ ³ ³ application to make its own decisions ³
|
||
³ ³ ³ ³ ³ on how to deal with "buffer full". ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 0Ch ³ "Peek ahead" ³ DX = Port number ³ AH = 00h ³ The next character in the input ring ³
|
||
³ ³ input buffer ³ (NOP if DX=00FFh) ³ AL = input character ³ buffer is returned to the caller. If ³
|
||
³ ³ (non-dest ³ ³ (if available) ³ none available, the driver returns a ³
|
||
³ ³ read-ahead) ³ ³ AX = FFFFh (if none ³ value of FFFFH. This "read" does not ³
|
||
³ ³ ³ ³ (available) ³ actually remove a character from the ³
|
||
³ ³ ³ ³ ³ input buffer! ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 0Dh ³ "Peek ahead" ³ None ³ AX = keyboard char ³ The next character in the keyboard ³
|
||
³ ³ KB buffer ³ ³ (if available) ³ buffer is returned to the caller. If ³
|
||
³ ³ (non-dest ³ ³ AX = FFFFh (if none ³ none available, the driver returns a ³
|
||
³ ³ read-ahead) ³ ³ available) ³ value of FFFFH. This "read" does not ³
|
||
³ ³ ³ ³ ³ actually remove a character from the ³
|
||
³ ³ ³ ³ ³ input buffer! For function keys, IBM ³
|
||
³ ³ ³ ³ ³ PC scan codes must be returned. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ ³
|
||
³ 0Eh ³ Read Keyboard ³ None ³ AX = keyboard char ³ Return the next character from the ³
|
||
³ ³ (wait if no ³ ³ ³ keyboard buffer. Wait for a keystroke ³
|
||
³ ³ char avail) ³ ³ ³ if the buffer is empty. For function ³
|
||
³ ³ ³ ³ ³ keys, IBM PC scan codes are required. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|
||
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
³ ³ ³ ³ ³ |
|
||
³ 0Fh ³ Enable/Disable³ AL = Flow control ³ None ³ AL[0:0] 1= enables remote to restrain |
|
||
³ ³ com port flow ³ bit mask ³ ³ FOSSIL transmitter using XON/XOFF; |
|
||
³ ³ control ³ DX = Port number ³ ³ AL[1:1] 1= enables modem restraint of |
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ FOSSIL transmitter using CTS and |
|
||
³ ³ ³ ³ ³ FOSSIL restraint of modem using RTS |
|
||
³ ³ ³ ³ ³ AL[3:3] 1= enables FOSSIL to restrain |
|
||
³ ³ ³ ³ ³ remote using XON/XOFF. |
|
||
³ ³ ³ ³ ³ |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 10h ³ Enable/disable³ AL = Flags byte ³ AX = 0001h - CtlC/K ³ AL[0:0] 1 = enable/disable CtlC/CtlK |
|
||
³ ³ Ctl-C/Ctl-K ³ DX = Port number ³ detected since ³ check (driver will set internal flag|
|
||
³ ³ check, ³ (NOP if DX=00FFh) ³ last call ³ which is returned by this function |
|
||
³ ³ Enable/disable³ ³ = 0000h - CtlC/K ³ when it detects a CtlC/CtlK). |
|
||
³ ³ transmitter ³ ³ not detected ³ AL[1:1] 1 = stop transmitter |
|
||
³ ³ ³ ³ since last ³ 0 = release previous stop |
|
||
³ ³ ³ ³ call ³ This is used primarily for programs |
|
||
³ ³ ³ ³ ³ that can't trust XON/XOFF at FOSSIL |
|
||
³ ³ ³ ³ ³ level (such as BBS software). |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 11h ³ Set cursor ³ DH = Row (0-based) ³ None ³ Identical to IBM PC BIOS INT 10h, |
|
||
³ ³ location ³ DL = Col (0-based) ³ ³ subfunction 02h. FOSSIL should do |
|
||
³ ³ ³ ³ ³ sanity checks but software should not |
|
||
³ ³ ³ ³ ³ assume that that is the case. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 12h ³ Read Cursor ³ None ³ DH = Row (0-based) ³ Identical to IBM PC BIOS INT 10h, |
|
||
³ ³ Location ³ ³ DL = Col (0-based) ³ subfunction 03h. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 13h ³ Write char ³ AL = Character ³ None ³ ANSI processing is a requirement of |
|
||
³ ³ (ANSI support)³ ³ ³ this call. It therefore should not be |
|
||
³ ³ ³ ³ ³ considered re-entrant, since DOS |
|
||
³ ³ ³ ³ ³ might be used (via ANSI.SYS) |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 14h ³ Enable/disable³ AL = 01h - Enable ³ None ³ FOSSIL will force the system to reboot³
|
||
³ ³ "watchdog" ³ watchdog ³ ³ if Carrier Detect on the specified ³
|
||
³ ³ ³ = 00h - Disable ³ ³ port drops while "watchdog" is ON. ³
|
||
³ ³ ³ watchdog ³ ³ ³
|
||
³ ³ ³ DX = Port number ³ ³ It is not necessary for the port to ³
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ be "active" (Function 04h) for this ³
|
||
³ ³ ³ ³ ³ function to be used. ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|
||
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
³ ³ ³ ³ ³ |
|
||
³ 15h ³ Write char ³ AL = Character ³ None ³ Write character to screen using |
|
||
³ ³ (re-entrant) ³ ³ ³ re-entrant code. ANSI processing may |
|
||
³ ³ ³ ³ ³ not be assumed. This call may be used |
|
||
³ ³ ³ ³ ³ by DOS device drivers. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 16h ³ Insert/delete ³ AL = 01h - Insert ³ AX = 0000h - operation³ Allows FOSSIL to manage timer tick |
|
||
³ ³ function from ³ = 00h - Delete ³ was successful ³ chain, which provides some measure of |
|
||
³ ³ timer tick ³ ES = Function segment ³ = FFFFh - operation³ security over just snagging the |
|
||
³ ³ ³ DX = Function offset ³ was unsuccessful ³ interrupt. Use "insert" instead of |
|
||
³ ³ ³ ³ ³ grabbing the vector and "remove" in |
|
||
³ ³ ³ ³ ³ place of restoring it. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 17h ³ Reboot system ³ AL = 00h - Cold boot ³ None (hopefully!) ³ Provides a machine-independent way |
|
||
³ ³ ³ = 01h - Warm boot ³ ³ for a "troubled" application to reset |
|
||
³ ³ ³ ³ ³ the system. Some machines may not |
|
||
³ ³ ³ ³ ³ support both "flavors" of bootstrap, |
|
||
³ ³ ³ ³ ³ in which case the setting of AL will |
|
||
³ ³ ³ ³ ³ not have any effect. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 18h ³ Read block ³ CX = Count ³ AX = Number of chars ³ Transfer as many characters as are |
|
||
³ ³ ³ ES = Segment of ³ actually moved ³ available into the specified user |
|
||
³ ³ ³ user buffer ³ ³ buffer, up to the maximum specified |
|
||
³ ³ ³ DI = Offset of ³ ³ in CX. ES and DI will not be modified |
|
||
³ ³ ³ user buffer ³ ³ by this call. The actual number of |
|
||
³ ³ ³ DX = Port number ³ ³ characters transferred will be in AX. |
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ This function does not wait for more |
|
||
³ ³ ³ ³ ³ characters to become available if the |
|
||
³ ³ ³ ³ ³ number in CX exceeds the number of |
|
||
³ ³ ³ ³ ³ characters currently stored. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 19h ³ Write block ³ CX = Count ³ AX = number of chars ³ Transfer as many characters as will |
|
||
³ ³ ³ ES = Segment of ³ actually moved ³ fit, from the specified user buffer ³
|
||
³ ³ ³ user buffer ³ ³ into the output buffer, up to the ³
|
||
³ ³ ³ DI = Offset of ³ ³ maximum specified in CX. ES and DI ³
|
||
³ ³ ³ user buffer ³ ³ will not be modified by this call. ³
|
||
³ ³ ³ DX = Port number ³ ³ The actual number of characters ³
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ transferred will be in AX. ³
|
||
³ ³ ³ ³ ³ ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|
||
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
³ ³ ³ ³ ³ |
|
||
³ 1Ah ³ Start/stop ³ AL = 01h - Start break³ None ³ Used for special applications such as |
|
||
³ ³ sending break ³ 001 - Stop break ³ ³ certain high speed modems. Resets |
|
||
³ ³ ³ DX = Port number ³ ³ all transmit flow control restraints |
|
||
³ ³ ³ (NOP if DX=00FFh) ³ ³ (such as an XOFF received from remote)|
|
||
³ ³ ³ ³ ³ Init (Function 4) or UnInit (Function |
|
||
³ ³ ³ ³ ³ 5) will stop an in-progress Break. |
|
||
³ ³ ³ ³ ³ Note: the application must determine |
|
||
³ ³ ³ ³ ³ the "length" of the BREAK. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 1Bh ³ GetDriverInfo ³ CX = Size of buffer ³ AX = Number of bytes ³ Offset 0 (word) = Structure size |
|
||
³ ³ ³ ES = Segment of ³ transferred ³ 2 (byte) = FOSSIL spec version |
|
||
³ ³ ³ user buffer ³ ³ 3 (byte) = Driver rev level |
|
||
³ ³ ³ DI = Offset of ³ User buffer contains ³ 4 (dwrd) = Pointer to ASCII ID |
|
||
³ ³ ³ user buffer ³ info structure (used ³ 8 (word) = Input buffer size |
|
||
³ ³ ³ DX = Port number ³ to get special data ³ 0A (word) = Bytes avail (input) |
|
||
³ ³ ³ (If DX=00FF, ³ from the driver) ³ 0C (word) = Output buffer size |
|
||
³ ³ ³ port data will ³ ³ 0E (word) = Bytes avail (output)³
|
||
³ ³ ³ not be valid). ³ ³ 10 (byte) = Screen width, chars ³
|
||
³ ³ ³ For port data to be ³ ³ 11 (byte) = Screen height, chars³
|
||
³ ³ ³ accurate, port must ³ ³ 12 (byte) = Baud rate mask ³
|
||
³ ³ ³ be active. ³ ³ (See call 00h) ³
|
||
³ ³ ³ ³ ³ ³
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|
||
ÚÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
|
||
³ Code ³ Function ³ Function Parameters ³ Returned by Function ³ Explanation ³
|
||
ÃÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÅÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
³ ³ ³ ³ ³ |
|
||
³ 7Eh ³ Install user ³ AL = Appendage code ³ AX = 1954h - FOSSIL ³ Used to install user appendages into |
|
||
³ ³ appendage ³ ES = Segment of user ³ driver present ³ the INT 14h dispatcher. Appendage |
|
||
³ ³ ³ appendage entry ³ = Anything but ³ codes 80h - BF are supported. Codes |
|
||
³ ³ ³ point ³ 1954h - FOSSIL ³ 80h - 83h are reserved. The error |
|
||
³ ³ ³ DX = Offset of user ³ driver not ³ return, BH = 00h and AX = 1954h, |
|
||
³ ³ ³ appendage entry ³ present ³ should mean that another appendage |
|
||
³ ³ ³ point ³ BL = Code assigned to ³ has already been installed with the |
|
||
³ ³ ³ ³ appendage (same ³ code specified in AL. The appendage |
|
||
³ ³ ³ ³ as AL at entry) ³ will be entered via a far call when- |
|
||
³ ³ ³ ³ BH = 01h - Operation ³ ever INT 14h call is made with AL |
|
||
³ ³ ³ ³ successful ³ equal to the appendage code. The |
|
||
³ ³ ³ ³ = 00h - Operation ³ appendage should return to the INT |
|
||
³ ³ ³ ³ unsuccessful ³ 14h dispatcher via a far return. The |
|
||
³ ³ ³ ³ ³ INT 14h dispatcher should not modify |
|
||
³ ³ ³ ³ ³ any registers prior to making the far |
|
||
³ ³ ³ ³ ³ call to the appendage and after the |
|
||
³ ³ ³ ³ ³ appendage returns control to the |
|
||
³ ³ ³ ³ ³ dispatcher. |
|
||
³ ³ ³ ³ ³ |
|
||
ÆÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͵
|
||
³ ³ ³ ³ ³ |
|
||
³ 7Fh ³ Remove user ³ AL = Appendage code ³ AX = 1954h ³ Used to remove a user appendage that |
|
||
³ ³ appendage ³ ES = Segment of user ³ BL = Code assigned to ³ was installed using function 7Fh. An |
|
||
³ ³ ³ appendage entry ³ appendage (same ³ error return means that either the |
|
||
³ ³ ³ point ³ as AL at entry) ³ entry point specified in ES:DX did |
|
||
³ ³ ³ DX = Offset of user ³ BH = 01h - Operation ³ not match the entry point currently |
|
||
³ ³ ³ appendage entry ³ successful ³ in the dispatcher table for the code |
|
||
³ ³ ³ point ³ = 00h - Operation ³ given in AL, or that no entry for |
|
||
³ ³ ³ ³ unsuccessful ³ the code given in AL currently exits. |
|
||
³ ³ ³ ³ ³ |
|
||
ÀÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÁÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ
|
||
|