commit a48fcce

Devine Lu Linvega  ·  2024-11-13 17:00:08 +0000 UTC
parent 21296bd
Added bios building
4 files changed,  +238, -7
+9, -7
 1@@ -9,9 +9,9 @@ PREFIX=${HOME}/.local
 2 
 3 .PHONY: all debug run test install uninstall format clean grab archive
 4 
 5-all: bin/uxnasm bin/uxncli bin/uxn11
 6+all: src/utils/bios.c bin/uxnasm bin/uxncli bin/uxn11 
 7 
 8-run: all bin/mouse.rom bios.rom
 9+run: all bin/mouse.rom
10 	@ bin/uxn11 bin/mouse.rom
11 debug: bin/uxnasm-debug bin/uxncli-debug bin/uxn11-debug
12 	@ bin/uxncli-debug bin/opctest.rom
13@@ -45,8 +45,10 @@ clean:
14 bin/mouse.rom: etc/mouse.tal
15 	@ bin/uxnasm etc/mouse.tal bin/mouse.rom
16 
17-bios.rom: src/bios.tal
18-	@ bin/uxnasm src/bios.tal bios.rom
19+bios.c: src/utils/bios.tal src/utils/format-c.tal
20+	@ bin/uxnasm src/utils/bios.tal bin/bios.rom
21+	@ bin/uxnasm src/utils/format-c.tal bin/format-c.rom
22+	@ bin/uxncli bin/format-c.rom bin/bios.rom > src/utils/bios.c
23 
24 bin/uxnasm: src/uxnasm.c
25 	@ mkdir -p bin
26@@ -54,9 +56,9 @@ bin/uxnasm: src/uxnasm.c
27 bin/uxncli: ${CLI_src} src/uxncli.c
28 	@ mkdir -p bin
29 	@ cc ${RELEASE_flags} ${CFLAGS} ${CLI_src} src/uxncli.c -lutil -o bin/uxncli
30-bin/uxn11: ${EMU_src} src/uxn11.c
31+bin/uxn11: ${EMU_src} src/uxn11.c src/utils/bios.c
32 	@ mkdir -p bin
33-	@ cc ${RELEASE_flags} ${CFLAGS} ${EMU_src} src/uxn11.c -lX11 -lutil -o bin/uxn11
34+	@ cc ${RELEASE_flags} ${CFLAGS} ${EMU_src} src/utils/bios.c src/uxn11.c -lX11 -lutil -o bin/uxn11
35 
36 bin/uxnasm-debug: src/uxnasm.c
37 	@ mkdir -p bin
38@@ -66,4 +68,4 @@ bin/uxncli-debug: ${CLI_src} src/uxncli.c
39 	@ cc ${DEBUG_flags} ${CFLAGS} ${CLI_src} src/uxncli.c -lutil -o bin/uxncli-debug
40 bin/uxn11-debug: ${EMU_src} src/uxn11.c
41 	@ mkdir -p bin
42-	@ cc ${DEBUG_flags} ${CFLAGS} ${EMU_src} src/uxn11.c -lX11 -lutil -o bin/uxn11-debug
43+	@ cc ${DEBUG_flags} ${CFLAGS} ${EMU_src} src/utils/bios.c src/uxn11.c -lX11 -lutil -o bin/uxn11-debug
+127, -0
  1@@ -0,0 +1,127 @@
  2+unsigned charbios_rom[] = {
  3+	0xa0, 0x01, 0x11, 0x80, 0x20, 0x37, 0x80, 0x24, 0x36, 0xa0, 0x00, 0x30, 0x39, 0x80, 0x14, 0x33, 
  4+	0x00, 0x80, 0x00, 0x81, 0x80, 0xfb, 0x13, 0x80, 0x07, 0x1c, 0x20, 0x00, 0x33, 0xa0, 0x00, 0x08, 
  5+	0x80, 0x28, 0x37, 0xa0, 0x00, 0x00, 0x80, 0x2a, 0x37, 0xa0, 0x80, 0x00, 0x80, 0x04, 0x16, 0xa0, 
  6+	0x02, 0x33, 0x60, 0x00, 0x1c, 0xa0, 0x00, 0x08, 0x80, 0x28, 0x37, 0x80, 0x2a, 0xb6, 0xa0, 0x00, 
  7+	0x19, 0x38, 0x05, 0x37, 0xa0, 0x81, 0x00, 0x80, 0x05, 0x16, 0xa0, 0x02, 0x37, 0x60, 0x00, 0x01, 
  8+	0x00, 0x60, 0x00, 0x88, 0x80, 0x28, 0xb6, 0xa0, 0x00, 0x08, 0x38, 0x05, 0x37, 0x80, 0x43, 0xa0, 
  9+	0x02, 0x12, 0x15, 0x06, 0x60, 0x00, 0x84, 0x80, 0x28, 0xb6, 0xa0, 0x00, 0x08, 0x38, 0x05, 0x37, 
 10+	0x80, 0x41, 0xa0, 0x02, 0x12, 0x15, 0x80, 0x04, 0x19, 0x80, 0x00, 0x04, 0x38, 0x26, 0xa0, 0x00, 
 11+	0x09, 0x38, 0x24, 0x8f, 0xcf, 0x80, 0x80, 0x0b, 0x80, 0x42, 0x04, 0x19, 0xa0, 0x02, 0x12, 0x15, 
 12+	0x94, 0x60, 0x00, 0x57, 0x80, 0x28, 0xb6, 0xa0, 0x00, 0x08, 0x38, 0x05, 0x37, 0x41, 0x21, 0xaa, 
 13+	0x20, 0xff, 0xe1, 0x22, 0x22, 0x42, 0x80, 0x28, 0xb6, 0xa0, 0x00, 0x80, 0x39, 0x05, 0x37, 0x80, 
 14+	0x2a, 0xb6, 0xa0, 0x00, 0x08, 0x39, 0x05, 0x37, 0xa0, 0x35, 0x26, 0x17, 0xa0, 0x02, 0x63, 0x80, 
 15+	0x2c, 0x37, 0xa0, 0x4a, 0x2f, 0x97, 0x97, 0x97, 0x17, 0x80, 0x2a, 0xb6, 0xa0, 0x00, 0x08, 0x38, 
 16+	0x05, 0x37, 0x80, 0x28, 0xb6, 0xa0, 0x00, 0x18, 0x39, 0x05, 0x37, 0x6c, 0xa0, 0x15, 0x26, 0x17, 
 17+	0x94, 0x60, 0x00, 0x1d, 0x21, 0x94, 0x20, 0xff, 0xf7, 0x22, 0x6c, 0xa0, 0x15, 0x26, 0x17, 0x06, 
 18+	0x80, 0x04, 0x1f, 0x60, 0x00, 0x00, 0x80, 0x0f, 0x1c, 0x80, 0x00, 0x04, 0xa0, 0x02, 0x3b, 0x38, 
 19+	0x14, 0x80, 0x20, 0x19, 0x80, 0x00, 0x04, 0x80, 0x40, 0x3f, 0xa0, 0x02, 0xe3, 0x38, 0x80, 0x2c, 
 20+	0x37, 0xa0, 0x41, 0x2f, 0x17, 0x6c, 0x04, 0x60, 0x00, 0x00, 0x06, 0x80, 0x04, 0x1f, 0x60, 0x00, 
 21+	0x00, 0x80, 0x0f, 0x1c, 0x06, 0x80, 0x09, 0x0a, 0x80, 0x27, 0x1a, 0x18, 0x80, 0x30, 0x18, 0x80, 
 22+	0x19, 0x17, 0x6c, 0x57, 0x53, 0x54, 0x00, 0x52, 0x53, 0x54, 0x00, 0x30, 0x31, 0x32, 0x33, 0x34, 
 23+	0x35, 0x36, 0x37, 0x38, 0x39, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0xff, 0xff, 0xff, 0xff, 0xff, 
 24+	0xff, 0xff, 0xff, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 0x55, 0xaa, 
 25+	0x55, 0xaa, 0x55, 0x00, 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 
 26+	0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x03, 0x00, 
 27+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 28+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 
 29+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 30+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 
 31+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x20, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
 32+	0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 0xc0, 0x00, 
 33+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 34+	0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 
 35+	0x10, 0x38, 0x10, 0x6c, 0x6c, 0x24, 0x24, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 36+	0x00, 0x00, 0x00, 0x00, 0x12, 0x12, 0x12, 0x7f, 0x24, 0x24, 0x24, 0x24, 0x24, 0xfe, 0x48, 0x48, 
 37+	0x48, 0x48, 0x00, 0x10, 0x38, 0x54, 0x92, 0x96, 0x90, 0x50, 0x38, 0x14, 0x12, 0xd2, 0x92, 0x94, 
 38+	0x78, 0x10, 0x10, 0x02, 0x62, 0x94, 0x94, 0x94, 0x98, 0x68, 0x10, 0x10, 0x2c, 0x32, 0x52, 0x52, 
 39+	0x52, 0x8c, 0x80, 0x00, 0x30, 0x48, 0x48, 0x48, 0x50, 0x20, 0x2e, 0x54, 0x54, 0x94, 0x88, 0x8c, 
 40+	0x72, 0x00, 0x00, 0xe0, 0xe0, 0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 41+	0x00, 0x00, 0x00, 0x02, 0x04, 0x08, 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x08, 
 42+	0x08, 0x04, 0x02, 0x80, 0x40, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x20, 
 43+	0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x10, 0x38, 0x92, 0xd6, 0x38, 0xd6, 0x92, 0x38, 0x10, 0x00, 
 44+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x00, 
 45+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xe0, 
 46+	0x20, 0x20, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 
 47+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0xe0, 
 48+	0xe0, 0x40, 0x00, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x40, 
 49+	0x40, 0x80, 0x80, 0x00, 0x18, 0x24, 0x24, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x24, 
 50+	0x24, 0x18, 0x00, 0x00, 0x10, 0x70, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
 51+	0x7c, 0x00, 0x00, 0x00, 0x18, 0x24, 0x42, 0x62, 0x02, 0x04, 0x08, 0x08, 0x10, 0x20, 0x22, 0x42, 
 52+	0x7e, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x02, 0x04, 0x38, 0x04, 0x02, 0x82, 0x82, 0x44, 
 53+	0x38, 0x00, 0x00, 0x00, 0x08, 0x18, 0x28, 0x28, 0x48, 0x48, 0x88, 0x88, 0xfe, 0x08, 0x08, 0x08, 
 54+	0x3c, 0x00, 0x00, 0x00, 0xfc, 0x80, 0x80, 0x80, 0xb8, 0xc4, 0x82, 0x02, 0x02, 0xc2, 0x82, 0x44, 
 55+	0x38, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x46, 0x80, 0x80, 0xb8, 0xc4, 0x82, 0x82, 0x82, 0x82, 0x44, 
 56+	0x38, 0x00, 0x00, 0x00, 0xfe, 0x82, 0x82, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 
 57+	0x10, 0x10, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x44, 0x38, 0x44, 0x82, 0x82, 0x82, 0x44, 
 58+	0x38, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x46, 0x3a, 0x02, 0x02, 0x82, 0x44, 
 59+	0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 
 60+	0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x38, 0x38, 
 61+	0x18, 0x10, 0x30, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 
 62+	0x04, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 0xfe, 0x00, 0x00, 0x00, 
 63+	0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 
 64+	0x40, 0x40, 0x80, 0x00, 0x38, 0x44, 0x82, 0xc2, 0x02, 0x04, 0x04, 0x08, 0x10, 0x10, 0x00, 0x00, 
 65+	0x10, 0x38, 0x10, 0x00, 0x3c, 0x42, 0x82, 0x9a, 0xa6, 0xa2, 0xa2, 0xa2, 0xa6, 0x9a, 0x80, 0x42, 
 66+	0x3c, 0x00, 0x00, 0x00, 0x10, 0x28, 0x28, 0x28, 0x44, 0x44, 0x44, 0x44, 0x7c, 0x82, 0x82, 0x82, 
 67+	0xc6, 0x00, 0x00, 0x00, 0xf8, 0x44, 0x42, 0x42, 0x42, 0x44, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42, 
 68+	0xfc, 0x00, 0x00, 0x00, 0x3a, 0x46, 0x42, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x42, 0x42, 
 69+	0x3c, 0x00, 0x00, 0x00, 0xf8, 0x44, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x44, 0x44, 
 70+	0xf8, 0x00, 0x00, 0x00, 0xfe, 0x42, 0x42, 0x40, 0x48, 0x48, 0x78, 0x48, 0x48, 0x42, 0x42, 0x42, 
 71+	0xfe, 0x00, 0x00, 0x00, 0xfe, 0x42, 0x42, 0x40, 0x48, 0x48, 0x78, 0x48, 0x48, 0x40, 0x40, 0x40, 
 72+	0xf0, 0x00, 0x00, 0x00, 0x1a, 0x26, 0x42, 0x40, 0x80, 0x80, 0x8f, 0x82, 0x82, 0x82, 0x42, 0x66, 
 73+	0x1a, 0x00, 0x00, 0x00, 0xe7, 0x42, 0x42, 0x42, 0x42, 0x7e, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 
 74+	0xe7, 0x00, 0x00, 0x00, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
 75+	0xfe, 0x00, 0x00, 0x00, 0x1f, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 0x82, 0x82, 0x44, 
 76+	0x38, 0x00, 0x00, 0x00, 0xe6, 0x44, 0x44, 0x48, 0x48, 0x70, 0x50, 0x48, 0x48, 0x44, 0x44, 0x42, 
 77+	0xe3, 0x00, 0x00, 0x00, 0xf0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x42, 0x42, 0x42, 
 78+	0xfe, 0x00, 0x00, 0x00, 0x82, 0xc6, 0xaa, 0xaa, 0xaa, 0x92, 0x92, 0x92, 0x82, 0x82, 0x82, 0x82, 
 79+	0xc6, 0x00, 0x00, 0x00, 0x87, 0xc2, 0xa2, 0xa2, 0xa2, 0x92, 0x92, 0x92, 0x8a, 0x8a, 0x8a, 0x86, 
 80+	0xc2, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 
 81+	0x38, 0x00, 0x00, 0x00, 0xf8, 0x44, 0x42, 0x42, 0x42, 0x42, 0x44, 0x78, 0x40, 0x40, 0x40, 0x40, 
 82+	0xf0, 0x00, 0x00, 0x00, 0x38, 0x44, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x82, 0xba, 0x44, 0x44, 
 83+	0x38, 0x08, 0x06, 0x00, 0xf8, 0x44, 0x42, 0x42, 0x42, 0x44, 0x78, 0x48, 0x44, 0x44, 0x44, 0x42, 
 84+	0xe3, 0x00, 0x00, 0x00, 0x34, 0x4c, 0x84, 0x80, 0x80, 0x60, 0x18, 0x04, 0x82, 0x82, 0x82, 0xc4, 
 85+	0xb8, 0x00, 0x00, 0x00, 0xfe, 0x92, 0x92, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
 86+	0x7c, 0x00, 0x00, 0x00, 0xe7, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 
 87+	0x3c, 0x00, 0x00, 0x00, 0xc6, 0x82, 0x82, 0x82, 0x82, 0x44, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 
 88+	0x10, 0x00, 0x00, 0x00, 0xc6, 0x82, 0x82, 0x82, 0x92, 0x92, 0x92, 0xaa, 0xaa, 0xaa, 0x44, 0x44, 
 89+	0x44, 0x00, 0x00, 0x00, 0xee, 0x44, 0x44, 0x28, 0x28, 0x10, 0x28, 0x28, 0x28, 0x44, 0x44, 0x82, 
 90+	0xc6, 0x00, 0x00, 0x00, 0xc6, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 0x10, 0x10, 0x10, 0x10, 0x10, 
 91+	0x7c, 0x00, 0x00, 0x00, 0xfe, 0x84, 0x88, 0x08, 0x10, 0x10, 0x10, 0x20, 0x20, 0x42, 0x42, 0x82, 
 92+	0xfe, 0x00, 0x00, 0x1e, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
 93+	0x10, 0x10, 0x1e, 0x00, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x10, 0x08, 0x08, 0x04, 0x04, 
 94+	0x02, 0x02, 0x00, 0xf0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
 95+	0x10, 0x10, 0xf0, 0x10, 0x28, 0x44, 0x82, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 96+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 97+	0x00, 0x00, 0xff, 0x30, 0x30, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 
 98+	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x42, 0x02, 0x3e, 0x42, 0x82, 0x82, 0x86, 
 99+	0x7b, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x78, 0x44, 0x42, 0x42, 0x42, 0x42, 0x42, 0x44, 
100+	0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x46, 0x82, 0x80, 0x80, 0x80, 0x82, 0x42, 
101+	0x3c, 0x00, 0x00, 0x00, 0x06, 0x04, 0x04, 0x04, 0x3c, 0x44, 0x84, 0x84, 0x84, 0x84, 0x84, 0x44, 
102+	0x3e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0xfe, 0x80, 0x80, 0x82, 0x42, 
103+	0x3c, 0x00, 0x00, 0x00, 0x0e, 0x11, 0x10, 0x10, 0xfe, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
104+	0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x44, 0x44, 0x44, 0x38, 0x40, 0x78, 0x84, 
105+	0x82, 0x82, 0x7c, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x5c, 0x62, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 
106+	0xe7, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x78, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 
107+	0xff, 0x00, 0x00, 0x06, 0x06, 0x00, 0x00, 0x00, 0x3e, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x82, 
108+	0x82, 0x44, 0x38, 0x00, 0xc0, 0x40, 0x40, 0x40, 0x42, 0x44, 0x48, 0x58, 0x64, 0x44, 0x42, 0x42, 
109+	0xe3, 0x00, 0x00, 0x00, 0x78, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 
110+	0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 0x92, 
111+	0xdb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x62, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 
112+	0xe7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x44, 0x82, 0x82, 0x82, 0x82, 0x82, 0x44, 
113+	0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x44, 0x42, 0x42, 0x42, 0x42, 0x44, 0x78, 
114+	0x40, 0x40, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x44, 0x84, 0x84, 0x84, 0x84, 0x44, 0x3c, 
115+	0x04, 0x04, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x32, 0x22, 0x20, 0x20, 0x20, 0x20, 0x20, 
116+	0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3a, 0x46, 0x42, 0x40, 0x3c, 0x02, 0x82, 0xc2, 
117+	0xbc, 0x00, 0x00, 0x00, 0x00, 0x20, 0x20, 0x20, 0xfc, 0x20, 0x20, 0x20, 0x20, 0x20, 0x22, 0x22, 
118+	0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x46, 
119+	0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x82, 0x82, 0x44, 0x44, 0x44, 0x28, 0x28, 
120+	0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x92, 0x92, 0x92, 0xaa, 0xaa, 0x44, 0x44, 
121+	0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, 0x44, 0x28, 0x28, 0x10, 0x28, 0x28, 0x44, 
122+	0xee, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe7, 0x42, 0x22, 0x24, 0x14, 0x08, 0x08, 0x10, 
123+	0x90, 0xa0, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x44, 0x08, 0x08, 0x10, 0x10, 0x22, 0x42, 
124+	0xfe, 0x00, 0x00, 0x06, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x20, 0x10, 0x08, 0x08, 0x08, 0x08, 
125+	0x08, 0x08, 0x06, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
126+	0x10, 0x10, 0x10, 0xc0, 0x20, 0x20, 0x20, 0x20, 0x20, 0x10, 0x08, 0x10, 0x20, 0x20, 0x20, 0x20, 
127+	0x20, 0x20, 0xc0, 0x60, 0x92, 0x0c, 
128+};
R src/bios.tal => src/utils/bios.tal
+0, -0
+102, -0
  1@@ -0,0 +1,102 @@
  2+( uxncli format-c.rom file.bin )
  3+
  4+|10 @Console &vector $2 &read $1 &pad $5 &write $1 &error $1
  5+|a0 @File &vector $2 &success $2 &stat $2 &delete $1 &append $1 &name $2 &length $2 &read $2 &write $2
  6+
  7+|0000
  8+
  9+	@src $40
 10+
 11+|0100
 12+
 13+@on-reset ( -> )
 14+	;meta #06 DEO2
 15+	;on-console .Console/vector DEO2
 16+	BRK
 17+
 18+@on-console ( -> )
 19+	.Console/read DEI .src skey ?{ BRK }
 20+	<print-program>
 21+	#800f DEO
 22+	BRK
 23+
 24+@meta $1
 25+	( name ) "Format(C) 0a
 26+	( details ) "A 20 "C-like 20 "Formatter 0a
 27+	( author ) "By 20 "Devine 20 "Lu 20 "Linvega 0a
 28+	( date ) "30 20 "Nov 20 "2023 $1
 29+	( fields ) 00
 30+
 31+@<print-program> ( src* -- )
 32+	;src .File/name DEO2
 33+	#0001 .File/length DEO2
 34+	;dict/a <pstr>
 35+	;src <print-name>
 36+	;dict/b <pstr>
 37+	[ LIT2r 0000 ]
 38+	&stream ( -- )
 39+		;&buf feof ?&end
 40+		[ LIT2 "0 18 ] DEO
 41+		[ LIT2 "x 18 ] DEO
 42+		[ LIT &buf $1 ] <phex>/b
 43+		[ LIT2 ", 18 ] DEO
 44+		#2018 DEO
 45+		INC2r
 46+		( lb ) STHkr #0f AND ?{
 47+			#0a18 DEO
 48+			#0918 DEO }
 49+		!&stream
 50+	&end POP2r #0a18 DEO
 51+	;dict/c !<pstr>
 52+
 53+@<print-name> ( src* -- )
 54+	scap/ [ LIT "/ ] srew
 55+	&w ( -- )
 56+		LDAk [ LIT ". ] EQU ?&end
 57+		LDAk #18 DEO
 58+		INC2 LDAk ?&w
 59+	&end POP2 JMP2r
 60+
 61+(
 62+@|stdlib )
 63+
 64+@skey ( key buf -- proc )
 65+	OVR #21 LTH ?{
 66+		#00 SWP scap/ STA
 67+		#00 JMP2r }
 68+	POP2 #01 JMP2r
 69+
 70+@srew ( str* char -- )
 71+	,&t STR
 72+	&w ( -- )
 73+		LDAk [ LIT &t $1 ] EQU ?&end
 74+		#0001 SUB2 LDAk ?&w
 75+	&end INC2 JMP2r
 76+
 77+@scap ( str* -- end* )
 78+	&w ( -- )
 79+		INC2 & LDAk ?&w
 80+	JMP2r
 81+
 82+@feof ( buf* -- f )
 83+	.File/read DEO2
 84+	.File/success DEI2 #0000 EQU2 JMP2r
 85+
 86+@<phex> ( short* -- )
 87+	SWP <phex>/b
 88+	&b ( -- )
 89+		DUP #04 SFT <phex>/c
 90+	&c ( -- )
 91+		#0f AND DUP #09 GTH #27 MUL ADD #30 ADD #18 DEO
 92+		JMP2r
 93+
 94+@<pstr> ( str* -- )
 95+	&w ( -- )
 96+		LDAk #18 DEO
 97+		INC2 & LDAk ?&w
 98+	POP2 JMP2r
 99+
100+@dict &a "unsigned 20 "char $1
101+	&b "_rom[] 20 "= 20 "{ 0a 09 $1
102+	&c "}; 0a 00
103+