* machine :PROPERTIES: :CUSTOM_ID: machine :END: 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 :PROPERTIES: :CUSTOM_ID: memory :END: 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 :PROPERTIES: :CUSTOM_ID: types :END: 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 rrrg ggb0 0000 {xxxx xxxx yyyy yyyy zzzz zzzz} {xxxx xxxx yyyy yyyy zzzz zzzz} vz{xxxx xxxx yyyy yyyy zzzz zzzz} rrrx gggy bbbz xxxx yyyy zzzz **** 3-3-2 bit rgb :PROPERTIES: :CUSTOM_ID: bit-rgb :END: rrrg ggbb xxxx yyyy triangles textures ** devices :PROPERTIES: :CUSTOM_ID: devices :END: *** screen :PROPERTIES: :CUSTOM_ID: screen :END: default screen is a single 2 triangle square face with a single dynamic texture that can be drawn on it *** keyboard :PROPERTIES: :CUSTOM_ID: keyboard :END: ASCII/UTF8 encoded values *** mouse/joystick :PROPERTIES: :CUSTOM_ID: mousejoystick :END: 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 :PROPERTIES: :CUSTOM_ID: soundmusic :END: 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 :PROPERTIES: :CUSTOM_ID: networkfilesystem :END: 9p filesystem/network by default. Have an easy way to network.