1
0
mirror of https://github.com/hsoft/collapseos.git synced 2024-09-07 09:58:45 +10:00
collapseos/doc/protocol.txt
Virgil Dupras e0bcf3473e Adjust Grid subsystem
Rename ROWS to LINES (it's what VE uses). Also, don't use COLS and
LINES as immediates in the Grid subsystem: we expect those words to
be available at runtime.
2020-11-10 19:06:39 -05:00

56 lines
1.7 KiB
Plaintext

# Protocols
Some subsystems (and in the case of KEY and EMIT, the core) re-
quire drivers to implement certain words in a certain way. For
example, the core requires drivers to implement (key) and (emit)
or else it won't know how to provide a console.
These protocols are described here.
# TTY protocol
(key) -- c Returns the next typed key on the console.
If none, block until there is one.
(emit) c -- Spit a character on the console.
# PS/2 protocol
This protocol enables communication with a device that spits
PS/2 keycodes.
(ps2kc) -- kc Returns the next typed PS/2 keycode from the
console. Blocking.
# SPI Relay protocol
This protocol enables communication with a SPI relay. This
protocol is designed to support devices with multiple endpoints.
To that end, (spie) takes a device ID argument, with a meaning
that is up to the device itself. To disable all devices, supply
0 to (spie).
We expect relay devices to support only one enabled device at
once. Enabling a specific device is expected to disable the
previously enabled one.
(spie) n -- Enable SPI device
(spix) n -- n Perform SPI exchange (push a number, get a
number back)
# Grid protocol
A grid is a device that shows as a grid of ASCII characters and
allows random access to it.
COLS -- n Number of columns in the device
LINES -- n Number of lines in the device
CELL! g pos -- Set glyph at pos
"pos" is a simple number (y * cols) + x. For example, if we
have 40 columns per line, the position (x, y) (12, 10) is 412.
A glyph is ASCII-0x20. If the resulting glyph number exceeds the
number of glyphs in the font, it's up to CELL! to ignore it.
Glyph 0 is always blank.