# Memory

## Register

Arbeitsregister um 8bit Werte kurzzeitig festzuhalten.

* I: Eingabewert welcher im Register gespeichert werden soll (8bit)
* O: Ausgabewert welcher aus Register ausgelesen wurde (8bit)
* R/I: Schreiben-Flag, um Eingabewert in Register zu speichern (1bit)
* R/O: Lesen-Flag, um aktuellen Registerwert auszugeben (1bit)
* CLK: Takt
* RST: Zurücksetzen-Flag

## RAM

8bit addressierbarer 2048bit (256x8bit) Arbeitsspeicher.

- 256 words by 8 bits (word-length)
- 2048bit total
- Adressen: $00 - $ff (000 - 255)

* AR/I: Speicher-Adresse-Schreiben Flag (1bit)
* DR/I: Datenregister-Schreiben-Flag (1bit)
* DR/O: Datenregister-Lesen-Flag (1bit)
* R: Lese bit aus Arbeitsspeicher aus gegebener Adresse (1bit)
* W: Schreibe bit an die Adresse in Arbeitsspeicher (1bit)
* D/I: Datenbus Eingang (8bit)
* D/O: Datenbus Ausgang (8bit)
* CLK: Takt
* RST: Zurücksetzen-Flag

## Organisation

- $00 - $DF (000 - 223) free usable memory (224 Byte)
- $E0 - $E4 (224 - 228) stack (5 Byte)
- $E5 - $FD (229 - 253) 5x5 Pixel Display (25 Byte)
- $FE (254) currently pressed key (1 Byte) [read-only]
- $FF (255) random number (1 Byte) [read-only]

### Free memory

```
00 01 02 03 04 05 06 07
08 09 0A 0B 0C 0D 0E 0F
10 11 12 13 14 15 16 17
18 19 1A 1B 1C 1D 1E 1F
20 21 22 23 24 25 26 27
28 29 2A 2B 2C 2D 2E 2F
30 31 32 33 34 35 36 37
38 39 3A 3B 3C 3D 3E 3F
40 41 42 43 44 45 46 47
48 49 4A 4B 4C 4D 4E 4F
50 51 52 53 54 55 56 57
58 59 5A 5B 5C 5D 5E 5F
60 61 62 63 64 65 66 67
68 69 6A 6B 6C 6D 6E 6F
70 71 72 73 74 75 76 77
78 79 7A 7B 7C 7D 7E 7F
80 81 82 83 84 85 86 87
88 89 8A 8B 8C 8D 8E 8F
90 91 92 93 94 95 96 97
98 99 9A 9B 9C 9D 9E 9F
A0 A1 A2 A3 A4 A5 A6 A7
A8 A9 AA AB AC AD AE AF
B0 B1 B2 B3 B4 B5 B6 B7
B8 B9 BA BB BC BD BE BF
C0 C1 C2 C3 C4 C5 C6 C7
C8 C9 CA CB CC CD CE CF
D0 D1 D2 D3 D4 D5 D6 D7
D8 D9 DA DB DC DD DE DF
```

### Special purpose

```
E0   E1   E2   E3   E4 | E5   E6   E7
E8   E9   EA   EB   EC   ED   EE   EF
F0   F1   F2   F3   F4   F5   F6   F7
F8   F9   FA   FB   FC   FD | FE   FF
```

### Screen cheatsheet

```
E5 E6 E7 E8 E9
EA EB EC ED EE
EF F0 F1 F2 F3
F4 F5 F6 F7 F8
F9 FA FB FC FD
```

## Tasten

- $01 (001) : Pfeil Oben
- $02 (010) : Pfeil Links
- $03 (011) : Pfeil Unten
- $04 (100) : Pfeil Rechts
- $05 (101) : Taste B
- $06 (110) : Taste A
