A TGI driver for the standard graphics mode (160×102 in 16 colors) is available, but must be statically linked, because no file I/O is available. See the documentation for the co65 utility for information on how to do that.
The TGI driver is implemented as an interrupt driven dual buffering device. To use it as a single-buffer device set draw page and view page to the same value 0 or 1;
The TGI driver has a few Lynx-specific extensions.
Calling tgi_sprite(spr) or tgi_ioctl(0, spr) will display a standard Lynx sprite on screen.
Calling tgi_flip() or tgi_ioctl(1, 0) will do a flip screen.
Calling tgi_setbgcolor(bgcolor) or tgi_ioctl(2, bgindex) will set the text background color to the index defined by bgindex. If bgindex is 0 then the background color is transparent.
To set the framerate of the display hardware call tgi_setframerate(rate) or tgi_ioctl(3, rate). The supported framerates are 50, 60 and 75 frames per second. Actually there is no real reason to use anything else than 75 frames per second.
To check if the drawing engine is busy with the previous swap you can call tgi_busy or tgi_ioctl(4, 0). It returns 0 if idle and 1 if busy
To update displays you can call tgi_updatedisplay() or tgi_ioctl(4, 1) it will wait for the next VBL interrupt and set the draw buffer to the view buffer. The draw buffer is also changed to (drawbuffer xor 1).
No extended memory drivers are currently available for the Lynx.
A joystick driver for the standard buttons is available, but must be statically linked, because no file I/O is available. See the documentation for the co65 utility for information on how to do that.
The joystick will check to see if the screen is flipped or not in the install routine and adapt itself to the correct state.
No mouse drivers are currently available for the Lynx.
The ComLynx port has Tx and Rx wired together. Every byte is sent to all connected Lynxes. Only one Lynx can send at a time. There is no protocol created for communication. You are on your own.
If the Lynx returns framing error then it is likely that another Lynx is sending data at the same time.
The Lynx can also send a break and receive a break. The Lynx break is recognized if the bit is down for 24 bit cycles or more.
To send a break you just set the break bit. The length of the break depends on how long this bit is down.
The driver supports the baudrates:
The Lynx hardware will always check parity on incoming traffic. Currently the driver cannot receive data from standard PC's due to this parity bug. For working with Lynx to Lynx communication use EVEN parity.
To send data to standard PC's use MARK or SPACE as parity setting.
There is always only one stop bit. And the data length is always 8 bits.
We have no handshaking available. Even software handshake is impossible as ComLynx has only one wire for the data.
Both transmit and receive are interrupt driven. The driver reserves a fixed area $200-$2ff for the transmit ring buffer and $300-$3ff for the receive ring buffer. This area can not be used at startup for anything as the Lynx ROM needs this area for decryption purposes.