89 lines
1.8 KiB
Markdown
89 lines
1.8 KiB
Markdown
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 A` geladen
|
|
- in `ADDR 3` wird `02` eingeladen
|
|
- Verhalten entspricht den Vorstellungen (Code `4410`)
|
|
|
|
# Test `5C10`
|
|
- Programm: `04 02 0f 06`
|
|
- 02 wird in `REG A` geladen
|
|
- in `ADDR 3` wird `02` eingeladen
|
|
- 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
|
|
1. MOV B,PTR
|
|
2. JMP \<addr\>
|
|
3. MEMW
|
|
4. 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)
|
|
- |