Description of the slip0 interface driver
=========================================

AUTHOR:
   Michael Zapf, 29 Aug 1997

DESCRIPTION:
   The slip0 driver is a SLIP compliant interface driver that runs on a 
   TI-99/4A or a Geneve 9640 in GPL mode.

DETAILS:
   The RS232/1 interface is opened with the parameters 9600 bps, 8 data bits, no parity,
   one stop bit, and set to asynchronous reception mode using the >80 open code.

   The Circular Input Buffer (CIB) is used to store incoming bytes from the interface.
   Every main program is required to repeatedly call the SL0CHK procedure which 
   - checks for new data in the CIB
   - copies the new data to a temporary RAM buffer (FBUF)
   - clears the CIB

   To avoid too much copying, copying is scheduled for every 50 calls of SL0CHK or 
   until more than 64 bytes have arrived. 

   Inside SL0CHK, another procedure is called that processes the contents of FBUF
   (PROCFB). It tries to find the beginning of an encapsulated data package, 
   starting with a FRDLT byte (>C0 with SLIP). This (fragment of the) current frame
   is put into the input buffer queue (INPQ, >2800 to >33FF). If the frame is 
   complete, the TOP pointer of the INPQ is updated. If there is not enough space 
   in INPQ, the frame is discarded. 

   INPQ is a 3K ring buffer that contains frames that have been received. The frames
   are stored without the delimiter bytes with a leading length word. Two pointers
   (INPQB, INPQT) control the addition and removal of data. 

   Furthermore, SL0CHK checks if there are bytes in the output queue (OUTPQ,
   >3400 to >3FFF). If so, it writes the next byte to the interface. It is 
   impossible to use the built-in WRITE routine of the interface because it pauses
   until the byte is written. This is unsuitable for usage in this environment. 
   The output routine is contained in a separate module with can be exchanged 
   easily (STD232O_X).

   In order to retrieve received frames the routine SL0DQ is provided. It requires
   a RAM position in R1 where to copy the bytes and returns the length of the 
   frame in R2. If there are no (complete) frames available, a null value is 
   returned in R2. SL0DQ automatically expands SLIP escape sequences. 


KNOWN BUGS/PROBLEMS:

   Main programs have to use a loop and to repeatedly call SL0CHK. Inside 
   this loop, any LIMI 0 sections have to be avoided as far as possible,
   depending on the transfer speed. 
   Using multiple byte video access is deprecated. It will cause data 
   dropouts on longer transfers. Use a loop with single byte access instead.
---------------------------------------------------------------------------------