IN: L = reason code Other register parameters depend on reason code OUT: Depends on reason code, see below. IX will always be unchanged. |
IN: - OUT: Fc = 0 Registers changed after return: ..BCDEHL/IXIY same AF....../.... different |
This resets the UART in the gate array. This call should not need to be used.
IN: - OUT: - Registers changed after return: ......../IXIY same AFBCDEHL/.... different |
This call should be useful to install new panel settings or when starting low level (ie. using SI_GBT, SI_PBT etc.) serial operations. It carries out the following:
1. Empty receive and transmit buffers.
2. Reset the XON/XOFF flags.
3. Reset baud rates, parity and flow control settings to the PANEL values.
4. Assert RTS.
5. Resets the serial port timeout to its default of 10 minutes.
SI_INT (L = $06), interrupt entry point.
Internal operating system usage only.
IN: BC = timeout in centiseconds Out if call succeeded: Fc = 0 A = byte received BC = remaining time Out if call failed: Fc = 1 A = RC_TIME ($02) (if no data available before timeout) Registers changed after return: ....DE../IXIY same AFBC..HL/.... different |
IN: BC = timeout in centiseconds. If BC = $FFFF then default timeout. A = byte to send Out if call succeeded: Fc = 0 BC = remaining time Out if call failed: Fc = 1 A = RC_TIME ($02) Registers changed after return: ....DE../IXIY same AFBC..HL/.... different |
This call will return immediatly if there is space in the transmit buffer, otherwise it will wait until there is space for as long as the timeout. If the timeout is exceeded it will return with an error.
IN: - OUT: B = number of full slots in the Tx (transmit) buffer C = number of empty slots in the Tx (transmit) buffer D = number of full slots in the Rx (receive) buffer E = number of empty slots in the Rx (receive) buffer A0 = 1, CTS level (inverse of the value on the D-connector) A1 = 1, DCD level (inverse of the value on the D-connector) A2 = 1, Rx register full A3 = undefined A4 = 1, Tx Register empty A5 = 1, CTS interrupt A6 = 1, DCD interrupt A7 = 1, Rx shift register full Registers changed after return: ......../IXIY same AFBCDEHL/.... different |
A slot, in this context, is the set of bits required to transmit on character. This will include 8 data bits plus start and stop bits.
IN: - OUT: Fc = 0 Registers changed after return: A.BCDEHL/IXIY same .F....../.... different |
IN: - OUT: Fc = 0 Registers changed after return: A.BCDEHL/IXIY same .F....../.... different |
IN: BC = new value for default timeout OUT: Fc = 0 Registers changed after return: A.BCDEHL/IXIY same .F....../.... different |
IN: BC = number of byte to write to serial port, maximum 16384, one bank DE = input DE = 0, input is a file/device opened with its handle in IX DE > 0, input is memory at (DE) IX = file handle (if DE = 0) Out if call succeeded: Fc = 0 BC = remaining time (SI_TMO) Out if call failed: Fc = 1 A = RC_TIME, timeout elapsed A = RC_EOF, end of file reached A = RC_RP, input device is read protected BC = number of bytes not written Registers changed after return: ......../IXIY same AFBCDEHL/.... different |
If you set the default to $FFFF then when the default is used (by setting a timeout value of $FFFF in get and put byte routines) then the system will wait forever. A soft reset sets the default timeout to 10 minutes. This timeout is completely independent of the system timeout, which is set by the Panel.