home *** CD-ROM | disk | FTP | other *** search
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 1
- Copyright (C) 1987, VEP Software, Naugatuck, CT 06770. All rights reserved.
- Copyright (C) 1988, Rick Moore, Homewood, IL, 60430. All rights reserved.
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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. |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 2
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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) | | | |
- | | | | | |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 3
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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. |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 4
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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. |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 5
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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. |
- | | | | | |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 6
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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) |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 7
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
- | 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. |
- | | | | | |
- +-------+---------------+-----------------------+-----------------------+---------------------------------------+
-
- FOSSIL Function Chart, Version 5 (FSC-0015), February 11, 1988 Page 8
-
-
- Please do not distribute modified versions of this chart. Also, please do not distribute this chart without
- the accompanying FOSSIL.DOC specification. Please report any errors or suggested changes to Rick Moore at the
- address given on the title page of FOSSIL.DOC.
-