home *** CD-ROM | disk | FTP | other *** search
- --------------------------------------------------------------------
-
- function 0 - initialize a port
-
- fct entry : ah = 0,
- al = port parameters
- 76543210
- ||||||||
- ||||||``-- Data bits : 00 = 5 bits
- |||||| 01 = 6 bits
- |||||| 10 = 7 bits
- |||||| 11 = 8 bits
- |||||`---- Stop bits : 0 = 1 bit
- ||||| 1 = 2 bits
- |||``----- Parity : 00 = none
- ||| 01 = odd
- ||| 10 = none
- ||| 11 = even
- ```------- Baud rate : 000 = 110 baud
- = 19200 if EBIOS supported
- 001 = 150 baud
- 010 = 300 baud
- 011 = 600 baud
- 100 = 1200 baud
- 101 = 2400 baud
- 110 = 4800 baud
- 111 = 9600 baud
-
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh if error, otherwise :
- = port status.
- al = modem status.
-
- --------------------------------------------------------------------
-
- function 1h - output a character
-
- fct entry : ah = 01h
- al = character
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = port status.
- al = character sent.
-
- --------------------------------------------------------------------
-
- function 2h - input a character
-
- fct entry : ah = 02h
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = port status
- al = received character
-
- --------------------------------------------------------------------
-
- function 3h - return port status
-
- fct entry : ah = 03h
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = port status
- al = modem status register
- --------------------------------------------------------------------
-
- function 4h - extended port initialization
-
- ( Differs from COM/XI, PC/X* and MC/Xi DOS driver )
-
-
- fct entry : ah = 04h
- al = break setting
- 0 = No break.
- 1 = Break (Break will be set until reset)
- bh = Parity
- 0 = no parity
- 1 = odd parity
- 2 = even parity
- 3 = stick parity odd (not supported)
- 4 = stick parity even (not supported)
- bl = Stop bits
- 0 = 1 stop bit
- 1 = 2 stop bits
- ch = Character length
- 0 = 5 bits
- 1 = 6 bits
- 2 = 7 bits
- 3 = 8 bits
- cl = Baud rate
- 00h - 110 baud
- 01h - 150 baud
- 02h - 300 baud
- 03h - 600 baud
- 04h - 1200 baud
- 05h - 2400 baud
- 06h - 4800 baud
- 07h - 9600 baud
- 08h - 19200 baud
- 09h - 38400 baud
- 0Ah - 57600 baud
- 0Bh - 76800 baud
- 0Ch -115200 baud
- 0Dh - 50 baud
- 0Eh - 75 baud
- 0Fh - 134 baud
- 10h - 200 baud
- 11h - 1800 baud
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh on error, otherwise :
- ah = port status
- al = modem status
-
- --------------------------------------------------------------------
-
- function 5h - extended communications port control
-
- ( Differs from COM/XI, PC/X* and MC/Xi DOS driver )
-
-
- fct entry : ah = 05h,
- al = 00h - read modem control register
- al = 01h - write modem control register
- bl - modem control bits
- bit 0 = DTR
- bit 1 = RTS
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = port status
- al = modem status
- bl = modem control register
- bit 0 = DTR
- bit 1 = RTS
-
- NOTE : Access to OUT1, OUT2, and Loop bits are not supported. Also,
- RTS and DTR will not be affected while hardware handshaking is active.
-
- --------------------------------------------------------------------
-
- Function 6h - Get Driver/Board Information
-
-
- ( New to PC/X* and MC/Xi DOS drivers, extends COM/Xi DOS driver function )
-
-
- fct entry : ah = 6h
-
- Sub-function 0
-
- dx = any valid channel # (DX min - DX max)
- al = 0h - get port name
- return :
- ah = 0FFh if error, else
- al = Highest INT 14h function supported.
- es:bx = Pointer to 8 byte ASCII string
- String = "NoDriver" if No DOS support
- is provided (INT 14h only)
- String = Channel's DOS name
- (eg "COM5 ")
-
- Sub-function 1
-
- al = 1h - get driver information
- dx = any valid channel # (DX min - DX max)
- return :
- ah = 0FFh if error, else
- ax = Total number of channels supported.
- bx = Driver Version # (e.g. V 2.0.1 : BX = 0201h)
- cx = Total number of board's supported.
- dx = DX min - Lowest DX value for INT 14h calls.
- Maximum DX value = Minimum value + AX - 1
-
- Sub-function 2h
-
- al = 2h - get board information
- bx = Board Number (0-3).
- dx = any valid channel # (DX min - DX max).
- return :
- ah = 0FFh if error, else
- ah = IRQ number.
- al = Board Type .
- 1 = COM/Xi
- 2 = MC/Xi
- 3 = PC/Xe
- 4 = PC/Xi
- 5 = PC/Xm
- bx = Board's Dual-Ported Memory Segment.
- cx = Number of channels on the board.
- dx = Board's I/O port Address.
- si = INT 14h DX value for board's first channel
-
- Sub-function 0ffh
-
- al = 0ffh - get driver name
- dx = any valid channel # (DX min - DX max).
- return :
- ax = driver version #
- cx = number of channels supported.
- es:bx = pointer to drivers name (8 bytes 'DIGIFEP5').
-
- --------------------------------------------------------------------
-
- function 7h - Send Break
-
- ( New to PC/X* and MC/Xi DOS drivers. Old Com/Xi driver used
- a 55 msec interval instead of this drivers 10 msec interval. )
-
-
- fct entry : ah = 07h
- al = 00h - Use default break time
- = 01h then bx = break length in # of 10 msec
- intervals.
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh on error
- = 0 on success
-
- --------------------------------------------------------------------
-
- function 8h - alternate status check
-
- fct entry : ah = 08h
- dx = any valid channel # (DX min - DX max)
-
- returns : zf = 0 and
- ah = a non 0ffh number.
- then ah = line status
- al = Character queued
- zf = 1 and
- ah = 0ffh
- then no char queued
-
- Note : If zf = 1 then and only then will ah = 0ffh. Thus, you only need to
- check zf OR ah to determine the success or failure of the call.
-
- --------------------------------------------------------------------
-
- function 9h - clear buffers
-
- fct entry : ah = 09h,
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0 fct good
- ah = 0ffh fct bad (ccb timeout error)
- --------------------------------------------------------------------
-
- function 0ah - input queue check
-
- fct entry : ah = 0ah
- dx = any valid channel # (DX min - DX max)
-
- returns : zf = 1 and dh = offh if error, otherwise
- ax = number of queued characters
-
-
- Note : This function differs from FCT 15h. Fct 0Ah returns the number
- of data characters in the receive buffer, while function 15h
- returns the number of bytes used in the buffer. Typically, each
- recieved character uses only one byte of buffer space unless the
- data byte is 0ffh or unless an error is associated with it. In
- these cases, 2 and 3 bytes of buffer space are used, respectively.
- Fct 0Ah disregards these extra bytes in it's returned count, while
- function 15h does not.
-
- Use fct 0Ah when you wish to know how many data bytes to read when
- using functions 2h (input a character) or 0Fh (read string).
-
- Use fct 15h when you want to know how many physical bytes of buffer
- space are used.
-
- If you were previously using the COM/Xi DOS driver "XIM232.SYS"
- Functions 0Ah and 15h are swapped in this driver.
-
- Also note that status bytes are not stored with every character in
- the receive buffer as they where with the XIM232, XAPCM232 and
- XIM232MC DOS drivers.
-
-
- : If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
- check zf OR dh to determine the success or failure of the call.
-
- --------------------------------------------------------------------
-
- function 0bh - Drop Handshake Lines
-
- ( New to PC/X* and MC/Xi DOS drivers )
-
-
-
- fct entry : ah = 0bh
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh if errors
- ah = 0 on success
-
- This Function drops DTR and RTS. If Hardware handshaking is
- active, it is disabled, the lines are dropped, and then it is
- re-enabled.
-
- --------------------------------------------------------------------
-
- function 0ch - Get Channel Parameters
-
- ( New to PC/X* and MC/Xi DOS drivers changes and extends
- COM/Xi DOS driver function. )
-
-
-
- fct entry : ah = 0ch
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh on error
- otherwise
- ah = S/W flow control
- bit 0 = tx s/w flow control (XON/XOFF)
- bit 1 = rx " " " "
- al = H/W flow control
- bit 0 = DTR rx flow control
- bit 1 = RTS rx flow control
- bit 4 = CTS tx flow control
- bit 5 = DSR tx flow control
- bit 7 = DCD tx flow control
- bh = Parity
- 0 = no parity
- 1 = odd parity
- 2 = even parity
- bl = Stop bits
- 0 = 1 stop bit
- 1 = 2 stop bits
- ch = Character length
- 0 = 5 bits
- 1 = 6 bits
- 2 = 7 bits
- 3 = 8 bits
- cl = Baud rate
- 00h - 110 baud
- 01h - 150 baud
- 02h - 300 baud
- 03h - 600 baud
- 04h - 1200 baud
- 05h - 2400 baud
- 06h - 4800 baud
- 07h - 9600 baud
- 08h - 19200 baud
- 09h - 38400 baud
- 0Ah - 57400 baud
- 0Bh - 75600 baud
- 0Ch -115200 baud
- 0Dh - 50 baud
- 0Eh - 75 baud
- 0Fh - 134 baud
- 10h - 200 baud
- 11h - 1800 baud
-
- --------------------------------------------------------------------
-
- function 0dh - get pointer to character ready flag
-
- fct entry : ah = 0ah
- dx = any valid channel # (DX min - DX max)
-
- returns : es:bx = pointer to the flag
- flag = 0 : rx buffer empty
- flag = 0ffh : char available in rx buffer
-
- note : The driver uses interrupts from the board, therfore an
- IRQ line must be selected for this function to work.
-
- --------------------------------------------------------------------
-
- function 0eh - write string
-
- fct entry : ah = 0eh
- dx = any valid channel # (DX min - DX max)
- cx = # of chars in string
- es:bx = pointer to string
-
- returns : ax = # chars transmitted
- zf = 1 and dh = 0ffh if errors
-
- NOTE : If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
- check zf OR dh to determine the success or failure of the call.
-
- --------------------------------------------------------------------
-
- function 0fh - read string
-
- fct entry : ah = 0fh
- dx = any valid channel # (DX min - DX max)
- cx = # of chars to read
- es:bx = pointer to callers buffer
-
- returns : ax = # chars read
- zf = 1 and dh = 0ffh if errors
- (line sts or wrong # chars rtnd)
-
- NOTE : If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
- check zf OR dh to determine the success or failure of the call.
-
- --------------------------------------------------------------------
-
- function 10h - clear rx buffer
-
- fct entry : ah = 10h
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh error
- ah = 0 success
-
- --------------------------------------------------------------------
-
- function 11h - clear tx buffer
-
- fct entry : ah = 11h
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh fct error
- ah = 0 fct good
-
- --------------------------------------------------------------------
-
- function 12h - get tx buffer free space
-
- fct entry : ah = 12h
- dx = any valid channel # (DX min - DX max)
-
- returns : ax = # of free bytes
-
- --------------------------------------------------------------------
-
- function 13h - Set Handshake Lines
-
- ( New to PC/X* and MC/Xi DOS drivers )
-
-
- fct entry : ah = 13
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0ffh if errors
- ah = 0 on success
-
- This Function raises DTR and RTS. If Hardware handshaking is
- active, it is disabled, the lines are raised, and then it is
- re-enabled.
-
- --------------------------------------------------------------------
-
- function 14h - Non destructive character read
-
- ( New to PC/X* and MC/Xi DOS drivers )
-
- fct entry : ah = 014h
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = Line status
- al = Character queued
-
- --------------------------------------------------------------------
-
- function 15h - input byte count
-
- fct entry : ah = 015h
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = # of used bytes in the receive buffer
-
- ( See note on FCT 0Ah )
-
-
- ------------------------------------------------------------------
-
- function 16h - Reserved
-
- ( Old PC/X* Send CCB Command )
-
-
- ------------------------------------------------------------------
-
- function 17h - Pause / Resume transmit
-
- ( New to PC/X* and MC/Xi, Old COM/Xi Get / Clear transmit pause )
-
- fct entry: ah = 17h
- al = 0, pause transmit
- = 1, resume transmit
- dx = any valid channel # (DX min - DX max)
-
- returns: ah = 0ffh fct error
- ah = 0 fct good
-
- ------------------------------------------------------------------
-
- function 18h - Pause / Resume receive
-
- ( Old PC/X* and MC/Xi Send Bios Command, New to COM/Xi)
-
- fct entry: ah = 18h
- al = 0, pause receive
- = 1, resume receive
- dx = any valid channel # (DX min - DX max)
-
- returns: ah = 0ffh fct error
- ah = 0 fct good
-
-
- ------------------------------------------------------------------
-
- function 19h - Reserved
-
- ( Old PC/X* set/reset special character Interrupt )
-
- ------------------------------------------------------------------
-
- function 1ah - Reserved
-
- ( Old PC/X* get pointer to special character flag / counter )
-
- --------------------------------------------------------------------
-
- function 1bh - Get water marks / buffer size
-
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
- fct entry : ah = 1bh
- al = 0 - Get Transmit Low water mark.
- = 1 - Get Receive Low water mark.
- = 2 - Get Receive High water mark.
- dx = any valid channel # (DX min - DX max)
-
- returns : ax = requested water mark.
- bx = tx buffer size if al was 0
- = rx buffer size if al was 1 or 2
- zf = 1 and dh = 0ffh if error
-
- Note : Transmit low water mark - The host may request an event (IRQ) when the
- number of characters in the transmit buffer falls below this number.
-
- : Receive low water mark - When receive is paused and the number
- of characters in the receive buffer falls below this number,
- receive is resumed.
-
- : Receive high water mark - When receive is not paused and the
- the number of characters in the receive buffer meets or exceeds
- this value, transmit is paused.
-
- : If zf = 1 then and only then will dh = 0ffh. Thus, you only need to
- check zf OR dh to determine the success or failure of the call.
-
- --------------------------------------------------------------------
-
- function 1ch - Set water marks
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 1ch
- al = 0 - Set Transmit Low water mark.
- = 1 - Set Receive Low water mark.
- = 2 - Set Receive High water mark.
- bx = water mark value.
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0 on sucess.
- = 0ffh on error.
- --------------------------------------------------------------------
-
- function 1dh - Reserved
-
- --------------------------------------------------------------------
-
- function 1eh - Set flow control
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 1eh
- bh = S/W flow control
- bit 0 = tx s/w flow control (XON/XOFF)
- bit 1 = rx " " " "
- bit 2 = set new XON/XOFF characters in CX
- bl = H/W flow control
- bit 0 = DTR rx flow control
- bit 1 = RTS rx flow control
- bit 4 = CTS tx flow control
- bit 5 = DSR tx flow control
- bit 7 = DCD tx flow control
- ch = new XOFF character if BX bit 2 = 1
- cl = new XON character if BX bit 2 = 1
- dx = any valid channel # (DX min - DX max)
-
- returns : ah = 0 on sucess.
- = 0ffh on error.
-
- --------------------------------------------------------------------
-
- function 1fh - Enable / Disable Events
-
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 1fh
- al = Event mask
- 76543210
- |||||||`--- Event on BREAK received.
- ||||||`---- Event on TX low water mark.
- |||||`----- Event on TX buffer empty.
- ||||`------ Event on RX data present.
- |||`------- (Not Used)
- ||`-------- Event on Modem Change Signal.
- ``--------- (Not Used)
- bl = Modem Signal if al bit 5 = 1
- 76543210
- ||||````-- (Not Used)
- |||`------ CTS
- ||`------- DSR
- |`-------- RI
- `--------- DCD
- dx = any valid channel # (DX min - DX max)
-
-
- returns : ah = 0 on success
- ah = ff if error
-
- --------------------------------------------------------------------
-
- EBIOS function 0f4h - Presence Test
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 0f4h
- dx = any valid channel # (DX min - DX max)
-
- return : ax = 0
-
- --------------------------------------------------------------------
-
- EBIOS function 0fbh - Specify modem leads
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 0fbh
- al = modem leads
- bit 0 = set/reset DTR output
- bit 1 = set/reset RTS output
- bit 4 = use CTS for input flow control.
- bit 5 = use DSR for input flow control.
- bit 6 = RI not supported
- bit 7 = use DCD for input flow control.
- dx = any valid channel # (DX min - DX max)
-
- Note : If RTS or DTR flow control is active, these lines will not be
- affected until that flow control is deselected.
-
- --------------------------------------------------------------------
-
- EBIOS function 0fch - receive with no wait
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 0fch
- dx = any valid channel # (DX min - DX max)
-
- return : ah = line status
- al = character
-
- --------------------------------------------------------------------
-
- EBIOS function 0fdh - retrieve buffer count
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 0fdh
- al = 1 - Get transmit buffer count.
- = 2 - Get receive buffer count
- dx = any valid channel # (DX min - DX max)
-
- return : cx = character count
-
- This function returns the number of characters in the specified
- buffer.
-
- --------------------------------------------------------------------
-
- EBIOS function 0feh - Set pacing mode
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 0feh
- al = 0 - no pacing.
- = 40h - XON/XOFF for Receive.
- = 80h - XON/XOFF for Transmit, no RX pacing
- = C0h - XON/XOFF for Receive and Transmit.
- dx = any valid channel # (DX min - DX max)
-
- Note : CTS and DSR transmit pacing is always activated by a call to this
- function to emulate BIOS pacing. All other flow control (if any)
- is disabled.
-
- --------------------------------------------------------------------
-
- EBIOS function 0ffh - Set buffered mode of operation
-
- ( New to PC/X*, MC/Xi and COM/Xi DOS drivers )
-
-
- fct entry : ah = 0ffh
- al = 1 - Transmit buffer.
- = 2 - Receive buffer.
- cx = buffer size, 0 = terminate buffer mode.
- dx = any valid channel # (DX min - DX max)
- es:bx = pointer to buffer.
-
- This function really has no effect, since the intellegent boards
- use on-board buffering and thus have no need for host buffering.
-
- --------------------------------------------------------------------