This commit is contained in:
Miloslav Ciz 2023-10-29 00:06:54 +02:00
parent d9a9d8158f
commit 364e16e0e6
3 changed files with 32 additions and 11 deletions

View file

@ -25,20 +25,24 @@ Even a pretty simple computer without an [operating system](os.md) is able to:
## Details
The project wouldn't aim to create a specific single "model" of a computer but rather blueprints that may be easily adjusted and mapped to any specific existing technology -- the goal would be to create an abstract [hardware](hardware.md) specification as well as basic [software](software.md) for the computer.
The project wouldn't aim to create a specific single "model" of a computer but rather blueprints that would be easily adjusted and mapped to any specific existing technology -- the goal would be to create an abstract [hardware](hardware.md) specification as well as basic [software](software.md) for the computer.
Abstract hardware specification means e.g. description on the [logic gate](logic_gate.md) level so that the computer isn't dependent on any contemporary and potentially proprietary lower level technology such as [CMOS](cmos.md). The project would simply create a big [logic circuit](logic_circuit.md) of the computer and this description could be compiled/synthesized to a lower level circuit board description. The hardware description could also be parametrized so that certain features could be adjusted -- for example it might be possible to choose the amount of [RAM](ram.md) or disable specific CPU instructions to make a simpler, cheaper circuit board.
**The computer would have to be created from the ground up**, with every design aspect following the ultimate goal. The project roadmap could look similarly to this one:
1. Design a simple [instruction set architecture](isa.md) (ISA). This isn't that hard.
2. With current [free](free_software.md) technology, e.g. [C](c.md) and [GNU](gnu.md), create custom tools for designing, simulating and testing logic gate circuits. Also not extremely difficult if we keep it simple.
3. With these tools design a simple [MCU](mcu.md) computer based on the above mentioned ISA. This is doable, there are hobbyists that have designed their own 8bit CPUs, a few collaborating people could definitely create a nice MCU if they keep it simple (no caching, no floating point, no GPUs, ...).
4. Design a simple (e.g. [FORTH](forth.md)-like) self-hosted [programming language](programming_language.md), create its compiler with support for the above mentioned ISA so that it is possible to write software for the computer. This may preceded or succeeded by adding the ISA support to an existing languages such as [C](c.md), e.g. by adding a new backed to [gcc](gcc.md). Again, pretty doable.
5. Write basic [software](software.md) for the computer. [EZ](ez.md).
6. Compile the MCU logic-level description to an actual circuitboard, possibly even with [proprietary](proprietary.md) tools if other aren't available -- this may be fixed later.
7. Manufacture the first physical computer, test it, debug it, improve it, give it to people, ...
8. Now the main goal has been touched for the first time, however the real [fun](fun.md) only begins -- now it is needed to spread the project, keep improving it, write advanced software such as an [operating system](os.md) etc.
1. Create a programming language that will be usable both as a scripting and compiled language for the computer. We already have one -- [comun](comun.md) -- though it is not fully finished yet. Now we can already start writing software for the computer. Optionally make other languages such as [C](c.md) compile to our ISA.
2. Design a simple [instruction set architecture](isa.md) (ISA). This will provide some challenge but will be doable.
3. Write basic [software](software.md) in our language, mainly:
- Custom tools for designing, simulating and testing [logic circuits](logic_citcuit.md). Not extremely difficult if we [keep it simple](kiss.md).
- [Emulator](emulator.md) of our custom ISA so that we can run and test it on our current computers. It will also be useful to make our computer possible to be run as a virtual hardware on other platforms.
- [Shell](shell.md) that will serve to performing basic tasks with the computer, e.g. using it as a calculator or interactively programming it in simple ways. The shell will also serve as a kind of [operating system](operating_system.md), or rather a simple program loader. For now the shell can run on our current computers where we can test it and fine tune it.
- Compiler -- this basically just means self hosting our compiler.
- Basic tools like a text editor, compression utility etc.
4. With the logic circuit tools design a simple [MCU](mcu.md) computer based on the above mentioned ISA. This is doable, there are hobbyists that have designed their own 8bit CPUs, a few collaborating people could definitely create a nice MCU if they keep it simple (no caching, no floating point, no GPUs, ...).
5. Compile the MCU logic-level description to an actual circuitboard, possibly even with [proprietary](proprietary.md) tools if other aren't available -- this may be fixed later.
6. Manufacture the first physical computer, test it, debug it, improve it, give it to people, ...
7. Now the main goal has been touched for the first time, however the real [fun](fun.md) only begins -- now it is needed to spread the project, keep improving it, write more software such as [games](game.md) etc. :)
## See Also