# Ordinateur Neoarcheon

<sub>*Neoarcheon signifie "La nouvelle aube des temps anciens".
Cela vient de "[Neo](https://fr.wiktionary.org/wiki/neo-)", un prefix pour "Nouveau", et "[Éoarchéen](https://fr.wikipedia.org/wiki/%C3%89oarch%C3%A9en)", l'ère durant laquelle la vie est apparus.*</sub>

----------

## Sommaire

1. [Buts et challenges](#buts-et-challenges)
2. [Design](#design)
    1. [Architecture centrale](#architecture-centrale)
    2. [Registres et cartographie mémoire](#registres-et-cartographie-mémoire)
    3. [Le set d'instructions](#le-set-dinstructions)

## Buts et challenges

Créer un ordinateur Turing-complet de zéro.

Au départ tout les morceau de l'ordinateur seront dans leur version indusrielle :
 - Le CPU à partir de portes logiques.
 - La RAM un CI de [SRAM](https://fr.wikipedia.org/wiki/M%C3%A9moire_vive_statique) (*[UM61256BK-20](/Documents/Datasheets/UM61256.pdf) from 1993*)
 - La ROM un autre CI (*[D27C010](/Documents/Datasheets/D27C010-200V10.pdf) from 1986 !*)

Ensuite le but est de les remplacer par des versions faites a la main.
Pour le moment seule la RAM est prévue d'être remplacée par de la [RAM a tores magnétiques](https://fr.wikipedia.org/wiki/M%C3%A9moire_%C3%A0_tores_magn%C3%A9tiques).

**AUCUNE SORTE D'IA NE SERA UTILISÉE DANS CE PROJET.**

*Pourquoi ?*

Des gens dans les années 70 on envoyés des gens sur la Lune, et les on ramené.
L'IA est utile dans la médecine, dans la recherche des protéines ou d'autre sujets de recherche.
Je n'ai pas besoins d'un LLM pour comprendre et créer un ordinateur.

## Design

Le design est inspiré du travail de personnes incroyables :
 - [L'ordinateur 8 bit de Ben Eater](https://eater.net/8bit)
 - [Le tutoriel de Mattbatwings pour créer un ordinateur dans Minecraft](https://youtu.be/hAZEXqWLTmY?si=qgic0b28PMeOPs_l)

L'achitecture centrale est inspirée de la légendaire [série de microcontrolleurs](https://fr.wikipedia.org/wiki/Intel_8051) [Intel MCS-51](/Documents/Datasheets/8051.pdf)

L'ordinateur est en 8 bit et sa fréquence de fonctionnement visera les 10mHz.

### Architecture centrale

![Diagrame de l'ordinateur.](/Documents/Computer%20diagram.svg)
<sub>Dessiné avec [Drawio](https://www.drawio.com/).</sub>

### Registres et cartographie mémoire

|  Nom  | Nom complet                 | Description                          |
| :---: | :-------------------------- | :----------------------------------- |
|   IR  | Registre d'instruction      | Registre d'instruction.              |
|   A   | Registre A                  | Premier registre d'entrée de l'UAL.  |
|   B   | Registre B                  | Second registre d'entrée de l'UAL.   |
|  PSW  | Mot de Status du Programme  | Drapeaux de status.                  |
|  MAR  | Registre d'Addresse Memoire | Addresse d'accès à la RAM.           |
|   SP  | Pointeur de Tas             | Pointeur d'accès au tas dans la RAM. |

###### Structure du registre PSW

| Bit | Name | Long Name | Description                                 |
| :-: | :--: | :-------- | :------------------------------------------ |
|  0  |  Z   | Zero      | Est vrai si le résultat de l'UAL est égale a zéro. |
|  1  |  C   | Carry     | Est vrai si un des calculs de l'UAL déborde.    |
|  2  |      |           |                                             |
|  3  |      |           |                                             |
|  4  |      |           |                                             |
|  5  |      |           |                                             |
|  6  |      |           |                                             |
|  7  |      |           |                                             |

### Le set d'instructions

Chaque instructions peut être de 1 à 3 octet de long.
En premier est le code opératoire, and les 2 octets optionnels sont les opérandes.
Les opérandes peuvent être des données (1o), une addresse (1o) ou une address complète (2o).

Les instructions suivantes ne sont que les instructions réelles. Les pseudo-instructions seront définie plus tard.

| Mnémonique | Description   | Pseudo-code    |
| :--------: | :------------ | :------------- |
| 
