From d777a74be30cefc1f097ef2f3b6bba7bde63e44a Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Thu, 21 May 2020 22:16:01 -0400 Subject: [PATCH] Forth takeover! --- README.md | 25 +- fonts/3x5.txt | 470 ------------------------------- fonts/5x7.txt | 658 -------------------------------------------- fonts/7x7.txt | 658 -------------------------------------------- fonts/README.md | 15 - tools/Makefile | 6 +- tools/blkdump.c | 38 --- tools/fontcompile.c | 71 ----- 8 files changed, 13 insertions(+), 1928 deletions(-) delete mode 100644 fonts/3x5.txt delete mode 100644 fonts/5x7.txt delete mode 100644 fonts/7x7.txt delete mode 100644 fonts/README.md delete mode 100644 tools/blkdump.c delete mode 100644 tools/fontcompile.c diff --git a/README.md b/README.md index 48a4baf..18e73c7 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,18 @@ *Bootstrap post-collapse technology* -Collapse OS is a z80 kernel and a collection of programs, tools and -documentation that allows you to assemble an OS that, when completed, will be -able to: +Collapse OS is a Forth operating system and a collection of tools and +documentation with a single purpose: preserve the ability to program micro- +controllers through civilizational collapse. + +It it designed to: 1. Run on minimal and improvised machines. 2. Interface through improvised means (serial, keyboard, display). 3. Edit text files. 4. Compile assembler source files for a wide range of MCUs and CPUs. 5. Read and write from a wide range of storage devices. -6. Replicate itself. +6. Assemble itself and deploy to another machine. Additionally, the goal of this project is to be as self-contained as possible. With a copy of this project, a capable and creative person should be able to @@ -19,14 +21,6 @@ manage to build and install Collapse OS without external resources (i.e. internet) on a machine of her design, built from scavenged parts with low-tech tools. -## Forth reboot in process - -You are currently looking at the `forth` branch of the project, which is a -Forth reboot of Collapse OS. You can see why I'm doing this in the [related -github issue][forth-issue]. - -Documentation is lacking, it's not ready yet, this is a WIP branch. - ## Getting started Usage documentation is in-system, so access to documentation requires you to @@ -53,6 +47,12 @@ Then, run `0 LIST` for an introduction, follow instructions from there. The project unfinished but is progressing well! See [Collapse OS' website][web] for more information. +## Looking for the assembler version? + +The Forth-based Collapse OS is the second incarnation of the concept. The first +one was entirely written in z80 assembly. If you're interested in that +incarnation, checkout the `z80asm` branch. + ## Discussion For a general discussion of Collapse OS and the ecosystem of technologies and @@ -64,4 +64,3 @@ channels are also maintained. [web]: https://collapseos.org [discussion]: https://www.reddit.com/r/collapseos [listserv]: http://lists.sonic.net/mailman/listinfo/collapseos -[forth-issue]: https://github.com/hsoft/collapseos/issues/4 diff --git a/fonts/3x5.txt b/fonts/3x5.txt deleted file mode 100644 index a9feb67..0000000 --- a/fonts/3x5.txt +++ /dev/null @@ -1,470 +0,0 @@ - . - . - . - - . -. . -. . - - - -. . -... - -... -. . - .. -.. - .. -.. - . -. - . - . -. - . - . -. . - . -. . - .. - . - . - - - - . - . - . - . - . -. - . - . - . -. - . -... - . -. . - - - . -... - . - - - - - . -. - - -... - - - - - - - . - . - . - . -. -. - . -. . -. . -. . - . - . -.. - . - . -... -.. - . - . -. -... -.. - . -.. - . -.. -. . -. . -... - . - . -... -. -.. - . -.. - .. -. -... -. . -... -... - . - . -. -. -... -. . -... -. . -... -... -. . -... - . -.. - - . - - . - - - . - - . -. - . - . -. - . - . - -... - -... - -. - . - . - . -. -.. - . - . - - . - . -... -... -. - .. - . -. . -... -. . -. . -.. -. . -.. -. . -.. - .. -. -. -. - .. -.. -. . -. . -. . -.. -... -. -.. -. -... -... -. -.. -. -. - .. -. -. . -. . - .. -. . -. . -... -. . -. . -... - . - . - . -... -... - . - . - . -.. -. . -.. -. -.. -. . -. -. -. -. -... -. . -... -... -. . -. . -.. -. . -. . -. . -. . -... -. . -. . -. . -... -.. -. . -.. -. -. -... -. . -. . -... - .. -.. -. . -.. -. . -. . - .. -. - . - . -.. -... - . - . - . - . -. . -. . -. . -. . -... -. . -. . -. . -. . - . -. . -. . -... -... -. . -. . -. . - . -. . -. . -. . -. . - . - . - . -... - . - . -. -... -... -. -. -. -... -. -. - . - . - . -... - . - . - . -... - . -. . - - - - - - - -... -. - . - - - - -.. - . -... -... -. -. -.. -. . -.. - - .. -. -. - .. - . - . - .. -. . - .. - - . -. . -.. - .. - .. -. -.. -. -. - - . -. . - .. -.. -. -. -.. -. . -. . - . - - . - . - . - . - - . - . -.. -. -. . -.. -. . -. . -.. - . - . - . - .. - -. . -... -. . -. . - -.. -. . -. . -. . - - . -. . -. . - . - -.. -. . -.. -. - - .. -. . - .. - . - - .. -. -. -. - - .. -.. - . -.. - . -... - . - . - .. - -. . -. . -. . -... - -. . -. . -. . - . - -. . -. . -... -. . - -. . - . - . -. . - -. . - . - . - . - -... - .. -.. -... - .. - . -. - . - .. - . - . - . - . - . -.. - . - . - . -.. - .. -.. - - - diff --git a/fonts/5x7.txt b/fonts/5x7.txt deleted file mode 100644 index dad9605..0000000 --- a/fonts/5x7.txt +++ /dev/null @@ -1,658 +0,0 @@ - . - . - . - . - - . - . - . . - . . - - - - - - - . . -..... - . . -..... - . . - - . - .... -. - ... - . -.... - . - -. . - . - . - . -. . - - .. -. . - .. - .. . -. . -... . - - . - . - - - - - - . - . -. -. -. - . - . - . - . - . - . - . - . - . - -. . . - ... -..... - ... -. . . - - - . - . -..... - . - . - - . - . - - - - - - - - -..... - - - - - - - - - .. - .. - - - . - . - . -. - - ... -. . -. .. -. . . -.. . -. . - ... - .. - . . - . - . - . - . - .... - ... -. . - . - . - . - . -..... - ... -. . - . - .. - . -. . - ... - .. - . . -. . -..... - . - . - . -..... -. -.... - . - . -. . - ... - ... -. -. -.... -. . -. . - ... -..... - . - . - . - . - . -. - ... -. . -. . - ... -. . -. . - ... - ... -. . -. . - ... - . - . - ... - - . - . - - . - . - - - . - . - - . - . - - . - .. - .. -. - .. - .. - . - - -..... - -..... - - -. - .. - .. - . - .. - .. -. - ... -. . - . - . - . - - . - ... -. . -. .. -. .. -. -. . - ... - ... -. . -. . -..... -. . -. . -. . -.... -. . -. . -.... -. . -. . -.... - ... -. . -. -. -. -. . - ... -.... -. . -. . -. . -. . -. . -.... -..... -. -. -.... -. -. -..... -..... -. -. -.... -. -. -. - ... -. . -. -. .. -. . -. . - ... -. . -. . -. . -..... -. . -. . -. . - ... - . - . - . - . - . - ... - .. - . - . - . - . -. . - ... -. . -. . -.. -. -.. -. . -. . -. -. -. -. -. -. -..... -. . -.. .. -. . . -. . -. . -. . -. . -. . -.. . -.. . -. . . -. .. -. .. -. . - ... -. . -. . -. . -. . -. . - ... -.... -. . -. . -.... -. -. -. - ... -. . -. . -. . -. . . -. .. - .... -.... -. . -. . -.... -. . -. . -. . - ... -. . -. - ... - . -. . - ... -..... - . - . - . - . - . - . -. . -. . -. . -. . -. . -. . - ... -. . -. . -. . -. . -. . - . . - . -. . -. . -. . -. . -. . . -. . . - . . -. . -. . - . . - . - . . -. . -. . -. . -. . - . . - . - . - . - . -..... -. . - . - . - . -. . -..... -... -. -. -. -. -. -... - -. - . - . - . - . - - ... - . - . - . - . - . - ... - . - . . -. . - - - - - - - - - - -..... - . - . - - - - - - - - ... - . - .... -. . - .... - - -. -. -... -. . -... - - - ... -. . -. -. . - ... - - - . - . - ... - . . - ... - - - ... -. . -..... -. - .... - - - .. -. . -. -... -. - - - ... - . . - ... - . . - .. - - -. -. -... -. . -. . - - - . - - . - . - . - - - . - - . - . . - .. - - -. . -. . -.. -. . -. . - - - .. - . - . - . - .. - - - . . -. . . -. . -. . -. . - - -... -. . -. . -. . -. . - - - ... -. . -. . -. . - ... - - -... -. . -... -. -. - - - ... - . . - ... - . - . - - -. .. -.. -. -. -. - - - ... -. - ... - . - ... - - - . -... - . - . - .. - - -. . -. . -. . -. . - ... - - -. . -. . -. . - . . - . - - -. . -. . -. . -. . . - . . - - -. . - . . - . - . . -. . - - -. . - . . - . - . -. - - -..... - . - . - . -..... - .. - . - . -. - . - . - .. - . - . - . - . - . - . - . - .. - . - . - . - . - . - .. - - - . . -. . - - - diff --git a/fonts/7x7.txt b/fonts/7x7.txt deleted file mode 100644 index edcabdf..0000000 --- a/fonts/7x7.txt +++ /dev/null @@ -1,658 +0,0 @@ - .. - .. - .. - .. - .. - - .. -.. .. -.. .. -.. .. - - - - - .. .. - .. .. -....... - .. .. -....... - .. .. - .. .. - .. - ...... -.. . - ..... - . .. -...... - .. -.. -.. .. - .. - .. - .. -.. .. - .. - ... -.. .. -.. .. - ... -.. .. . -.. .. - ... .. - .. - .. - .. - - - - - .. - .. - .. - .. - .. - .. - .. - .. - .. - .. - .. - .. - .. - .. - - .. -...... - .... -...... - .. - - - .. - .. -...... - .. - .. - - - - - - - .. - .. - - - -...... - - - - - - - - - .. - .. - - .. - .. - .. - .. -.. - - .... -.. .. -.. ... -...... -... .. -.. .. - .... - .. - ... - .. - .. - .. - .. -...... - .... -.. .. - .. - .. - .. - .. -...... - .... -.. .. - .. - ... - .. -.. .. - .... - .. - ... - .... -.. .. -...... - .. - .. -...... -.. -..... - .. - .. -.. .. - .... - ... - .. -.. -..... -.. .. -.. .. - .... -...... - .. - .. - .. - .. - .. - .. - .... -.. .. -.. .. - .... -.. .. -.. .. - .... - .... -.. .. -.. .. - ..... - .. - .. - ... - - - .. - .. - - .. - .. - - - .. - .. - - .. - .. - .. - .. - .. -.. - .. - .. - .. - - -...... - -...... - - - .. - .. - .. - .. - .. - .. - .. - .... -.. .. - .. - .. - .. - - .. - .... -.. .. -.. ... -.. . . -.. ... -.. - .... - .... -.. .. -.. .. -...... -.. .. -.. .. -.. .. -..... -.. .. -.. .. -..... -.. .. -.. .. -..... - .... -.. .. -.. -.. -.. -.. .. - .... -.... -.. .. -.. .. -.. .. -.. .. -.. .. -.... -...... -.. -.. -..... -.. -.. -...... -...... -.. -.. -..... -.. -.. -.. - .... -.. .. -.. -.. ... -.. .. -.. .. - .... -.. .. -.. .. -.. .. -...... -.. .. -.. .. -.. .. -...... - .. - .. - .. - .. - .. -...... - ..... - .. - .. - .. - .. -.. .. - ... -.. .. -.. .. -.... -... -.... -.. .. -.. .. -.. -.. -.. -.. -.. -.. -...... -.. .. -... ... -....... -.. . .. -.. . .. -.. .. -.. .. -.. .. -.. .. -... .. -...... -.. ... -.. .. -.. .. - .... -.. .. -.. .. -.. .. -.. .. -.. .. - .... -..... -.. .. -.. .. -..... -.. -.. -.. - .... -.. .. -.. .. -.. .. -.. . . -.. .. - .. .. -..... -.. .. -.. .. -..... -.. .. -.. .. -.. .. - .... -.. .. -.. - .... - .. -.. .. - .... -...... - .. - .. - .. - .. - .. - .. -.. .. -.. .. -.. .. -.. .. -.. .. -.. .. - .... -.. .. -.. .. -.. .. -.. .. -.. .. - .... - .. -.. .. -.. .. -.. . .. -.. . .. -....... -... ... -.. .. -.. .. -.. .. - .... - .. - .... -.. .. -.. .. -.. .. -.. .. -.. .. - .... - .. - .. - .. -...... - .. - .. - .. - .. -.. -...... -..... -.. -.. -.. -.. -.. -..... - -.. - .. - .. - .. - .. - - ..... - .. - .. - .. - .. - .. - ..... - .. - .... -.. .. -. . - - - - - - - - - - - ... - .. .. - .. -..... - .. - .. -...... - - - .... - .. - ..... -.. .. - ..... -.. -.. -..... -.. .. -.. .. -.. .. -..... - - - .... -.. .. -.. -.. .. - .... - .. - .. - ..... -.. .. -.. .. -.. .. - ..... - - - .... -.. .. -...... -.. - .... - ... - .. - .. -..... - .. - .. - .. - - - ..... -.. .. -.. .. - ..... - .. -.. -.. -..... -.. .. -.. .. -.. .. -.. .. - .. - - ... - .. - .. - .. - .... - .. - - ... - .. - .. - .. - .. -.. -.. -.. .. -.. .. -.... -.. .. -.. .. - ... - .. - .. - .. - .. - .. - .... - - - .. .. -....... -.. . .. -.. . .. -.. .. - - -..... -.. .. -.. .. -.. .. -.. .. - - - .... -.. .. -.. .. -.. .. - .... - - -..... -.. .. -.. .. -..... -.. - - - ..... -.. .. -.. .. - ..... - .. - - -.. .. -... .. -.. -.. -.. - - - ..... -.. - .... - .. -..... - .. - .. -..... - .. - .. - .. - ... - - -.. .. -.. .. -.. .. -.. .. - ..... - - -.. .. -.. .. -.. .. - .... - .. - - -.. .. -.. . .. -.. . .. -....... - .. .. - - -.. .. - .... - .. - .... -.. .. - - -.. .. -.. .. -.. .. - ..... - .. - - -...... - .. - .. - .. -...... - .. - .. - .. -... - .. - .. - .. - .. - .. - .. - - .. - .. - .. - .. - .. - .. - ... - .. - .. - .. - .. . -.. . .. -. .. - - - - diff --git a/fonts/README.md b/fonts/README.md deleted file mode 100644 index a1db672..0000000 --- a/fonts/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# fonts - -This folder contains bitmap fonts that are then converted to ASM data tables. - -The format for them is straightforward: dots and spaces. Each line is a line in -the letter (for example, in a 6x8 font, each character is 8 lines of 6 -characters each, excluding newline). - -They cover the 0x21 to 0x7e range and are placed sequentially in the file. - -Dots and spaces allow easy visualisation of the result and is thus rather handy. - -Padding is excluded from fonts. For example, 5x7.txt is actually a 6x8 font, but -because characters are always padded, it's useless to keep systematic blank -lines or rows around. diff --git a/tools/Makefile b/tools/Makefile index 94f9eab..322f4ca 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -1,7 +1,5 @@ MEMDUMP_TGT = memdump -BLKDUMP_TGT = blkdump UPLOAD_TGT = upload -FONTCOMPILE_TGT = fontcompile TTYSAFE_TGT = ttysafe PINGPONG_TGT = pingpong BIN2C_TGT = bin2c @@ -9,7 +7,7 @@ EXEC_TGT = exec BLKPACK_TGT = blkpack BLKUNPACK_TGT = blkunpack BLKUP_TGT = blkup -TARGETS = $(MEMDUMP_TGT) $(BLKDUMP_TGT) $(UPLOAD_TGT) $(FONTCOMPILE_TGT) \ +TARGETS = $(MEMDUMP_TGT) $(UPLOAD_TGT) \ $(TTYSAFE_TGT) $(PINGPONG_TGT) $(BIN2C_TGT) $(EXEC_TGT) $(BLKPACK_TGT) \ $(BLKUNPACK_TGT) $(BLKUP_TGT) OBJS = common.o @@ -21,9 +19,7 @@ all: $(TARGETS) $(CC) $(CFLAGS) -c $< -o $@ $(MEMDUMP_TGT): $(MEMDUMP_TGT).c -$(BLKDUMP_TGT): $(BLKDUMP_TGT).c $(UPLOAD_TGT): $(UPLOAD_TGT).c -$(FONTCOMPILE_TGT): $(FONTCOMPILE_TGT).c $(TTYSAFE_TGT): $(TTYSAFE_TGT).c $(PINGPONG_TGT): $(PINGPONG_TGT).c $(BIN2C_TGT): $(BIN2C_TGT).c diff --git a/tools/blkdump.c b/tools/blkdump.c deleted file mode 100644 index dfdbac2..0000000 --- a/tools/blkdump.c +++ /dev/null @@ -1,38 +0,0 @@ -#include -#include -#include -#include - -#include "common.h" - -/* Read specified number of bytes in active blkdev at active offset. - */ - -int main(int argc, char **argv) -{ - if (argc != 3) { - fprintf(stderr, "Usage: ./memdump device bytecount\n"); - return 1; - } - unsigned int bytecount = strtol(argv[2], NULL, 16); - if (!bytecount) { - // nothing to spit - return 0; - } - - int fd = open(argv[1], O_RDWR|O_NOCTTY); - char s[0x30]; - sendcmdp(fd, "i=0"); - sprintf(s, "while i<0x%04x getb:puth a:i=i+1", bytecount); - sendcmd(fd, s); - - for (int i=0; i -#include -#include -#include - -/* This script converts "space-dot" fonts to binary "glyph rows". One byte for - * each row. In a 5x7 font, each glyph thus use 7 bytes. - * Resulting bytes are aligned to the **left** of the byte. Therefore, for - * a 5-bit wide char, ". . ." translates to 0b10101000 - * Left-aligned bytes are easier to work with when compositing glyphs. - */ - -int main(int argc, char **argv) -{ - if (argc != 2) { - fprintf(stderr, "Usage: ./fontcompile fpath\n"); - return 1; - } - char *fn = basename(argv[1]); - if (!fn) { - return 1; - } - int w = 0; - if ((fn[0] >= '3') && (fn[0] <= '8')) { - w = fn[0] - '0'; - } - int h = 0; - if ((fn[2] >= '3') && (fn[2] <= '8')) { - h = fn[2] - '0'; - } - if (!w || !h || fn[1] != 'x') { - fprintf(stderr, "Not a font filename: (3-8)x(3-8).txt.\n"); - return 1; - } - fprintf(stderr, "Reading a %d x %d font\n", w, h); - FILE *fp = fopen(argv[1], "r"); - if (!fp) { - fprintf(stderr, "Can't open %s.\n", argv[1]); - return 1; - } - // We start the binary data with our first char, space, which is not in our - // input but needs to be in our output. - for (int i=0; i w+1) { // +1 because of the newline char. - fprintf(stderr, "Line %d too long.\n", lineno); - fclose(fp); - return 1; - } - // line can be narrower than width. It's padded with spaces. - while (l < w+1) { - buf[l] = ' '; - l++; - } - unsigned char c = 0; - for (int i=0; i