1.5 KiB
machine
I like uxn's idea of it being 16 bit because its 0 to 65535 or -32768 to 32767 which fits in your head nicely.
memory
ideas for memory (ram) is going to be a giant hashmap of some kind, or maybe like picolisp?
picolisp has 64 bit machine words, a cell is 2 words
types
number (fixed point numbers), symbols (string), cons-pairs (lists)
0000 0000 0000 0000 0000 0000 0000 0000
tfff xxxx yyyy zzzz
0rgb xxxx yyyy zzzz
mmrr rggg bbbx xxx xxxy yyyy yyzz zzzzz
rrrx gggy bbbz xxxx yyyy zzzz
3 bit rgb
rgba xxxx xxyy yyyy
3-3-2 bit rgb
rrrg ggbb xxxx yyyy
triangles
textures
devices
screen
default screen is a single 2 triangle square face with a single dynamic texture that can be drawn on it
keyboard
ASCII/UTF8 encoded values
mouse/joystick
Theoretically a modern controller could be mapped into 3 mouse/joystick devices
A nes controller could be mapped onto 1 mouse/joystick device
x axis -> J1 -> J2 -> Dpad left/right y axis -> J1 -> J2 -> Dpad up/down button 1 -> A -> t1 -> select button 2 -> B -> t2 -> start button 3 -> X -> b2 -> "meta button like controller start" button 4 -> Y -> b2 -> unused
xxxx yyyy 1234
x (4 bits) y (4 bits) 1 is button 1 pressed? 2 is button 2 pressed? 3 is button 3 pressed? 4 is button 4 pressed?
sound/music
This one is going to be the hardest most likely, but its prolly going to be something like the backend dac for ORCA.
network/filesystem
9p filesystem/network by default.
Have an easy way to network.