diff --git a/Documents/10.1201_9781003178583_previewpdf.pdf b/Documents/10.1201_9781003178583_previewpdf.pdf new file mode 100644 index 0000000..112910a Binary files /dev/null and b/Documents/10.1201_9781003178583_previewpdf.pdf differ diff --git a/Documents/D27C010-200V10.pdf b/Documents/D27C010-200V10.pdf new file mode 100644 index 0000000..328bdd6 Binary files /dev/null and b/Documents/D27C010-200V10.pdf differ diff --git a/Documents/UM61256.pdf b/Documents/UM61256.pdf new file mode 100644 index 0000000..5793259 Binary files /dev/null and b/Documents/UM61256.pdf differ diff --git a/README.md b/README.md index 8d47266..c5c7a27 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,49 @@ # Computer +---------- + +## Summary + +1. [Aims and challenges](#aims-and-challenges) +2. [Architecture choices](#architecture-choices) +3. [Design](#design) + 1. [The instruction set.](#the-instruction-set) + ## Aims and challenges -Make a fully functionnal computer from scratch. +Make a turing complete computer from scratch. The computer will be composed of : - A CPU - Some RAM - Some ROM - - A controller to the system, a "bios". At first every part will be the "industrial" version : - - The CPU made with an (2) ALU IC (74181 ?) - - The RAM a chip (UM61256BK-20 from 1993) - - The ROM another chip (D27C010 from 1986 !) + - The CPU from logic gates. + - The RAM a [SRAM](https://en.wikipedia.org/wiki/Static_random-access_memory) chip (*[UM61256BK-20](/Documents/UM61256.pdf) from 1993*) + - The ROM another chip (*[D27C010](/Documents/D27C010-200V10.pdf) from 1986 !*) -Then the aim is to replace them with made from scratch versions. +Then the aim is to replace them with made from scratch versions. For the moment only the RAM is meant to be replaced with homemade magnetic core RAM. ## Architecture choices -The computer is in 8 bits since the ALU, RAM and ROM are meant to be in 8 bits. -The CPU have ports for inputs / outputs. +The computer will be in 8 bits since the RAM and ROM are meant to be in 8 bits. +The CPU will have ports for inputs / outputs. + +## Design + +The design is inspired of great people hard work : + - [Ben Eater's 8 bits breadboard computer](https://eater.net/8bit) + - [Mattbatwings's minecraft computer tutorial](https://youtu.be/hAZEXqWLTmY?si=qgic0b28PMeOPs_l) + +### The instruction set. + +Every instruction is 8 bits long. And there is 3 bytes of data after the instruction. +Because the ROM is 8 bits, every instruction will take 4 bytes. +This property might help for [instruction pipelining](https://en.wikipedia.org/wiki/Instruction_pipelining) in the future. + +These are only real instructions. Pseudoinstruction will be defined later. + +| Mnemonic | Description | Pseudocode | +| :-------: | :------------ | :------------ |