From 4335d248d18987a050d8ac26965c90718eef7562 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 16 Jul 2026 07:21:40 +0200 Subject: libc + CLI tools: a small C userland - libc: add putc, puts, strlen, getargs (args string), EOF (=4) for readc. - args: shell splits the command line at the first space ("cmd\0args\0" at $A000, inherited by the child via fork); getargs() returns the arg string. - shell: exit on Ctrl-D/EOF; $ prompt over a clean read loop. - tools (c/): echo (argv), cat (stdin->stdout to EOF), uname, pid (decimal print), true, false. Each built to a ROM-bank blob and registered. - Makefile: CBLOBS list builds all C programs. - README: document libc + the tool set. --- c/pid.c | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 c/pid.c (limited to 'c/pid.c') diff --git a/c/pid.c b/c/pid.c new file mode 100644 index 0000000..a282a89 --- /dev/null +++ b/c/pid.c @@ -0,0 +1,9 @@ +#include "gbos.h" +/* print an unsigned byte as decimal (no runtime division: subtract-based) */ +static void putu(unsigned char n) { + char buf[3]; unsigned char i = 0; + if (n == 0) { putc('0'); return; } + while (n) { buf[i++] = '0' + (n % 10); n = n / 10; } + while (i) putc(buf[--i]); +} +void main(void) { putu(getpid()); nl(); } -- cgit v1.3.1-sl0p