Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Next »

Register parameters

RST 20H, DEFW $8D
N:
     L = reason code
     Other register parameters depend on reason code
OUT:
     Depends on reason code, see below.
     IX will always be unchanged. 

Notes

Full details of this call's reason codes are found below. This interface is used by OZ internally, and don't work on application level. For Application level serial port I/O, use GN_Opf to get serial port handle and use OS_Gb / OS_Pb to transmit data. Applications might use OS_Si to reset serial port buffers, and interact with the Panel.

Other information of this call can be found in the The Serial Interface section.

SI_HRD

SI_HRD (L = $00), Serial hard reset
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.


SI_SFT

SI_SFT (L = $03), serial soft rest
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

SI_INT (L = $06), interrupt entry point. Internal operating system usage only.


SI_GBT

SI_GBT (L = $09), get byte from serial port
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


SI_PBT

SI_PBT (L = $0C), put byte to serial port
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.


SI_ENQ

SI_ENQ (L = $0F), Status enquiry
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.



 


  • No labels