aboutsummaryrefslogtreecommitdiffstats
path: root/c/cat.c
diff options
context:
space:
mode:
authoruser <user@clank>2026-07-16 07:21:40 +0200
committeruser <user@clank>2026-07-16 07:21:40 +0200
commit4335d248d18987a050d8ac26965c90718eef7562 (patch)
treee05038b2a21209281fd1c849c30145da9b7d77bc /c/cat.c
parentC toolchain: run SDCC-compiled C programs as gbos processes (diff)
downloadgbos-4335d248d18987a050d8ac26965c90718eef7562.tar.gz
gbos-4335d248d18987a050d8ac26965c90718eef7562.tar.xz
gbos-4335d248d18987a050d8ac26965c90718eef7562.zip
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.
Diffstat (limited to '')
-rw-r--r--c/cat.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/c/cat.c b/c/cat.c
new file mode 100644
index 0000000..4092778
--- /dev/null
+++ b/c/cat.c
@@ -0,0 +1,10 @@
+#include "gbos.h"
+/* cat: copy stdin to stdout until EOF (Ctrl-D / pipe end). */
+void main(void) {
+ char c;
+ for (;;) {
+ c = readc();
+ if (c == EOF) break;
+ putc(c);
+ }
+}