First functioning programmable computer!
Posted: Wed Oct 21, 2020 7:15 am
I made a computer that can run simple machine language instructions from an attached App ROM!
This is from my first test program, which generates some random noise and uses a d-pad of gates to navigate around it. (Takes about ~1 IRL minute to load, and only runs at about 10 seconds/frame)
I'm calling this "Generation 1." Basically every piece of this thing was a compromise and I really need to re-do all of them now that I have a better idea what i'm doing, but i wanted to get a full working system first before optimizing.
Stats:
1.2 Hz CPU with 9 supported instructions
40 units boot ROM memory (can extendably chain, though the wiring is a bit fussy)
10 units RAM (can extendably chain, though the wiring is a bit fussy)
GPU with 2 instructions and 100 units memory, 16x16 monochrome pixel memory in 4 screen pages (supports double buffering and single-instruction page copy)
All memory has 4 read channels, though the CPU only uses 1 (was debugging with the others). The CPU generates a system hash based on connected hardware and will only run App ROMs with that hash encoded in them, sending error code 99 otherwise.
I'm not sure if G1 is really malleable and parse-able enough for anyone to actually do anything interesting with - and the blueprint book is 4x larger than the max post character count. I'm going to upload it somewhere and link to it in a few minutes.
If you do want to mess with it, the components are modular and take a bit of work to get running currently:
You'll need to place one of each of the first set of components, and link the big power poles together. (link wall-surrounded poles to wall-surrounded poles, pipe to pipe, conveyor to conveyor). Then place one or more of the app roms and link them to the memory rail (wall surrounded), switch on the repair pack for just 1 app rom (the constant combinator inset in the wall ring) and hit the reset button.
NOTE1: 1u memory is technically 32bits, but since I can't address between bits and since bitshifting to the 2<<31 bit is nontrivially difficult I'm just referring to memory by units rather than bits/bytes
NOTE2: In all display areas I've swapped the color order from (Red, Green, Blue, Yellow, Magenta, Cyan, White) to (Blue, Green, Cyan, Red, Magenta, Yellow, White) to be consistent with the 3-bit BGR color
This is from my first test program, which generates some random noise and uses a d-pad of gates to navigate around it. (Takes about ~1 IRL minute to load, and only runs at about 10 seconds/frame)
I'm calling this "Generation 1." Basically every piece of this thing was a compromise and I really need to re-do all of them now that I have a better idea what i'm doing, but i wanted to get a full working system first before optimizing.
Stats:
1.2 Hz CPU with 9 supported instructions
40 units boot ROM memory (can extendably chain, though the wiring is a bit fussy)
10 units RAM (can extendably chain, though the wiring is a bit fussy)
GPU with 2 instructions and 100 units memory, 16x16 monochrome pixel memory in 4 screen pages (supports double buffering and single-instruction page copy)
All memory has 4 read channels, though the CPU only uses 1 (was debugging with the others). The CPU generates a system hash based on connected hardware and will only run App ROMs with that hash encoded in them, sending error code 99 otherwise.
I'm not sure if G1 is really malleable and parse-able enough for anyone to actually do anything interesting with - and the blueprint book is 4x larger than the max post character count. I'm going to upload it somewhere and link to it in a few minutes.
If you do want to mess with it, the components are modular and take a bit of work to get running currently:
You'll need to place one of each of the first set of components, and link the big power poles together. (link wall-surrounded poles to wall-surrounded poles, pipe to pipe, conveyor to conveyor). Then place one or more of the app roms and link them to the memory rail (wall surrounded), switch on the repair pack for just 1 app rom (the constant combinator inset in the wall ring) and hit the reset button.
NOTE1: 1u memory is technically 32bits, but since I can't address between bits and since bitshifting to the 2<<31 bit is nontrivially difficult I'm just referring to memory by units rather than bits/bytes
NOTE2: In all display areas I've swapped the color order from (Red, Green, Blue, Yellow, Magenta, Cyan, White) to (Blue, Green, Cyan, Red, Magenta, Yellow, White) to be consistent with the 3-bit BGR color