diff options
| author | user <user@clank> | 2026-07-18 00:38:38 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-07-18 00:38:38 +0200 |
| commit | ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c (patch) | |
| tree | e01e6c7c710a661defe2515ff9657f08cddcb283 /c/chat.c | |
| parent | tools: gbtype prints hub errors to stderr and exits 1 (diff) | |
| download | gbos-ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c.tar.gz gbos-ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c.tar.xz gbos-ba2d7ae1d7b319645b10aaa31a7f664f9f80c25c.zip | |
refactor: c/ -> usr/, compiled program blobs out of the source tree
Userland sources live in usr/ (fits the Unix theme better than 'c').
SDCC output .bin blobs land in build/usr/ with the other build artifacts
instead of littering the source dir; programs.asm INCBINs them from there.
Byte-identical ROM.
Diffstat (limited to 'c/chat.c')
| -rw-r--r-- | c/chat.c | 57 |
1 files changed, 0 insertions, 57 deletions
diff --git a/c/chat.c b/c/chat.c deleted file mode 100644 index 987b336..0000000 --- a/c/chat.c +++ /dev/null @@ -1,57 +0,0 @@ -#include "netlib.h" -/* chat: a link-port chat client. Incoming SLIP frames from the host gateway - print as messages; SELECT brings up the on-screen keyboard, type a line and - press START to send it. A poll loop interleaves receiving and typing so - messages arrive while you're not mid-line. */ - -static char rxbuf[96]; -static unsigned char rxlen, rxin, rxesc; - -/* feed one non-blocking byte to the SLIP receiver; returns a frame length when - a whole frame has arrived (copied into out), else 0. */ -static unsigned char slip_poll(char *out) { - int b = srecv_nb(); - unsigned char c, i, n; - if (b < 0) return 0; - c = (unsigned char)b; - if (c == SLIP_END) { - if (rxin && rxlen) { - n = rxlen; - for (i = 0; i < n; i++) out[i] = rxbuf[i]; - rxlen = 0; rxin = 0; rxesc = 0; - return n; - } - rxin = 1; rxlen = 0; rxesc = 0; - return 0; - } - if (!rxin) return 0; - if (rxesc) { - if (c == SLIP_ESC_END) c = SLIP_END; - else if (c == SLIP_ESC_ESC) c = SLIP_ESC; - rxesc = 0; - } else if (c == SLIP_ESC) { rxesc = 1; return 0; } - if (rxlen < 96) rxbuf[rxlen++] = (char)c; - return 0; -} - -void main(void) { - char line[64], frame[96]; - unsigned char linelen = 0, n, i, c; - puts("chat: SELECT=keyboard START=send"); nl(); - for (;;) { - n = slip_poll(frame); /* incoming message? */ - if (n) { - for (i = 0; i < n; i++) putc(frame[i]); - nl(); - } - c = pollin(); /* typed a key? */ - if (c == '\n') { - if (linelen) { slip_send(line, linelen); linelen = 0; } - } else if (c == 8) { - if (linelen) { linelen--; putc(8); } - } else if (c) { - if (linelen < 63) { line[linelen++] = (char)c; putc((char)c); } - } - yield(); - } -} |
