1.8 KiB
Wert wird an eine Stelle im RAM eingetragen.
A laden wir den Wert ein B laden wir die Ursprungsadresse +1 Jump to Write Address (PC) Wert aus A eintragen (OUTPUT) Jump back Ursprungsadresse + 1 (PC) unload a + b
Um zu schreiben brauchen wir:
- WE (Flag?)
- Adresse
- Lesen oder Schreiben (Flag?)
Adresse scheint man über den PC zu steuern
Fehlersuche
Programm: 04 02 0f 12
Verhalten:
- 02 wird in
REG Ageladen - in
ADDR 3wird02eingeladen - Verhalten entspricht den Vorstellungen (Code
4410)
Test 5C10
- Programm:
04 02 0f 06 - 02 wird in
REG Ageladen - in
ADDR 3wird02eingeladen - Springt anschließend zu
ADDR 06
Es sollte zu erst der Sprung stattfinden und anschließend geschrieben werden. Sowie zurückgesprungen werden zur ursprünglichen Adresse
Idee: vorher den Jump erzwingen und anschließend schreiben Idee: Jump back flag, welches den Wert aus REG B in den PC nach der Operation lädt
5c50 WE_PC = 1 geändert
Mit WE_PC = 1 wird zu erst gesprungen und anschließend geschrieben, leider an die falsche Adresse.
load B jump addr write MEM, A jump back
ROM ADDR 12
- MOV B,PTR
- JMP <addr>
- MEMW
- JMPB
REG A: Wert, den wir am Ziel eintragen wollen REG B: Ursprüngliche Adresse 12 ff 0c
Die letzte Adresse wird ebenfalls als CMD interpretiert, eine spätere Modifikation könnte daher von Interesse sein.
20 Ergebnis A 22 Speicher A
z: Init: Set B = 1 and A = EXIB if equal --> a:, else b:
b: Write Counter to VAR D (REG A, current Counter) REG B, SUM A = SUM Overload local Set REG B with new SUM Overload result in a: to new SUM Set REG A to VAR D SET B to 1 SUB Jump to z:
a: set A to result print halt
zwischenregister mit Instructions alle 2 Takte hinzugefügt, WMEM
- springt
- aber schreibt nicht mehr
Instructions
- NOP (> PC + 1 > MBR)
- MBR
- (MBR (> PC))
- PC + 1
- PC + 1 (> MBR)