Die "Schleifenvariante" ist es. Hab ich auch eingebaut: https://github.com/jedie/DragonPy/commi ... b1cdb75960
Wobei mir die aktuelle Implementierung nicht so richtig gefällt. Aber tut's erstmal...
Ich bin jetzt eh an den Punk wo ich an der Peripherie arbeiten muß und das wird schwieriger, weil es weniger Dokumentation darüber gibt, als über die 6809 CPU.
Zum Glück ist das aber nicht viel. Die Hauptkomponenten sind hier aufgeführt: http://www.6809.org.uk/dragon/hardware.shtml
Emulator in Python...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hab mir überlegt, das ist erst mal kleiner Anfangen will, was die Peripherie anbelangt.
Ich werde mal versuchen das ROM von http://searle.hostei.com/grant/6809/Simple6809.html zu starten. Dann brauche ich nur eine virtuelle RS232 Schnittstelle.
Ich werde mal versuchen das ROM von http://searle.hostei.com/grant/6809/Simple6809.html zu starten. Dann brauche ich nur eine virtuelle RS232 Schnittstelle.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
So, ich hab ein wenig aufgeräumt und angefangen Simple6809 zu unterstützten, mit: https://github.com/jedie/DragonPy/commi ... a03c5d7a9c
Vielleicht bin ich aber schon viel weiter als ich dachte. Denn es passiert was, im Text-Screen-RAM!
Das läuft dann in einer Schleife:
Wobei $60 '`' ein Leerzeichen ist 
Vielleicht bin ich aber schon viel weiter als ich dachte. Denn es passiert was, im Text-Screen-RAM!
Das läuft dann in einer Schleife:
Code: Alles auswählen
$ba7e read pc byte: $e7 from $ba7e
$ba7e STB INDEXED instruction_ST8 | $ba7e: $ba79-$ba85 - Clears text screen with value in B (CoCo $a92a)
$ba7f read pc byte: $80 from $ba7f
$ba80 addressing 'indexed' with postbyte: $80 == 10000000
$ba80 indexed addressing mode ea=$401 | $401: $400-$5ff - Default Text screen
$ba80 get 'indexed' byte: ea = $401 m = $60
$401 instruction_ST8 kwargs: ea=$401 m=$60 opcode=$e7 operand=<B (8-Bit):96>
$ba80 ST8 store value $60 from B at $401 | $401: $400-$5ff - Default Text screen
**** TODO: write $60 '`' to text screen address $401
**** write $60 to $401 - mem info:
$60: $5c-$61 - Floating Point Accumulator Num 2
$401: $400-$5ff - Default Text screen
-------------------------------------------------------------------------------
$ba80 read pc byte: $8c from $ba80
$ba80 CMPX IMMEDIATE instruction_CMP16 | $ba80: $ba79-$ba85 - Clears text screen with value in B (CoCo $a92a)
$ba81 read pc word: $05ff from $ba81
$ba81 addressing 'immediate word' value: $5ff
$ba81 instruction_CMP16 kwargs: ea=$ba81 m=$5ff opcode=$8c operand=<X (8-Bit):1024>
$ba83 CMP16 X $400 - $5ff = $-1ff
-------------------------------------------------------------------------------
$ba83 read pc byte: $23 from $ba83
$ba83 BLS RELATIVE instruction_BLS | $ba83: $ba79-$ba85 - Clears text screen with value in B (CoCo $a92a)
$ba84 read pc byte: $f9 from $ba84
$ba85 addressing 'relative' ea = $ba85 + -7 = $ba7e | $ba7e: $ba79-$ba85 - Clears text screen with value in B (CoCo $a92a)
$ba85 get 'relative' byte: ea = $ba7e m = $e7
$ba7e instruction_BLS kwargs: ea=$ba7e m=$e7 opcode=$23
$ba85 BLS branch to $ba7e, because C|Z==0 | $ba7e: $ba79-$ba85 - Clears text screen with value in B (CoCo $a92a)
-------------------------------------------------------------------------------
$ba7e read pc byte: $e7 from $ba7e
$ba7e STB INDEXED instruction_ST8 | $ba7e: $ba79-$ba85 - Clears text screen with value in B (CoCo $a92a)
$ba7f read pc byte: $80 from $ba7f
$ba80 addressing 'indexed' with postbyte: $80 == 10000000
$ba80 indexed addressing mode ea=$401 | $401: $400-$5ff - Default Text screen
$ba80 get 'indexed' byte: ea = $401 m = $60
$401 instruction_ST8 kwargs: ea=$401 m=$60 opcode=$e7 operand=<B (8-Bit):96>
$ba80 ST8 store value $60 from B at $401 | $401: $400-$5ff - Default Text screen
**** TODO: write $60 '`' to text screen address $401
**** write $60 to $401 - mem info:
$60: $5c-$61 - Floating Point Accumulator Num 2
$401: $400-$5ff - Default Text screen

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
So, alles aufgeteilt: https://github.com/jedie/DragonPy/compa ... ...4fd0e4b
Startbar dann so:
Startbar dann so:
btw.:DragonPy$ ./DragonPy_CLI.py --cfg Simple6809Cfg --verbosity=5
Für das Simple6809 ROM fehlen aber noch ein paar OpcodesDragonPy$ ./DragonPy_CLI.py --cfg Dragon32Cfg --verbosity=5

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hm. Brache nochmal eine Idee:
Bei der Instruktion "COM".
Beim Simple6809 ROM kommt das zustande:
COM $ff
Implementiert hab ich es als ergebnis = ~m
Also:
Was natürlich nicht richtig ist.
Allerdings finde ich auch bei XRoar code keine hinweise darauf, das eine maskierung stattfindet.
Bei der Instruktion "COM".
Beim Simple6809 ROM kommt das zustande:
COM $ff
Implementiert hab ich es als ergebnis = ~m
Also:
Code: Alles auswählen
~$ff = $-100
Allerdings finde ich auch bei XRoar code keine hinweise darauf, das eine maskierung stattfindet.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Hat sich erledigt. unsigned fehlt: https://github.com/jedie/DragonPy/commi ... df8bf6d2e9 
Rausgefunden durch ein kleines BASIC Test Programm:

Rausgefunden durch ein kleines BASIC Test Programm:
Code: Alles auswählen
10 SA=&H5000 ' VALUE STORAGE ADDRESS
20 LA=&H4000 ' LOAD / EXECUTE ADDRESS
25 PRINT "POKE MACHINE CODE TO: $";HEX$(LA)
30 PA = LA ' START ADDRESS FOR POKE
50 READ HB$ ' HEX CONSTANTS
60 IF HB$="END" THEN 100
70 POKE PA,VAL("&H"+HB$) ' POKE VALUE INTO MEMORY
80 PA = PA + 1 ' INCREMENT POKE ADDRESS
90 GOTO 50
100 PRINT "LOADED, END ADDRESS IS: $"; HEX$(PA-1)
110 PRINT
120 INPUT "INPUT A START VALUE: $";A$
130 A = VAL("&H"+A$)
140 POKE SA,A ' SET START VALUE
150 PRINT "START VALUE FROM $";HEX$(SA);": $";HEX$(PEEK(SA))
160 EXEC LA
170 PRINT "VALUE FROM $";HEX$(SA);": $";HEX$(PEEK(SA))
180 GOTO 110
1000 ' MACHINE CODE IN HEX
1030 DATA B6,50,00 ' LDA $5000
1040 DATA 43 ' COMA
1050 DATA B7,50,00 ' STA $5000
1060 DATA 39 ' RTS
10000 DATA END
Zuletzt geändert von Anonymous am Montag 7. Oktober 2013, 19:57, insgesamt 1-mal geändert.
Grund: BASIC-Dialekt zu 'locobasic' geändert,
Grund: BASIC-Dialekt zu 'locobasic' geändert,
@jens: Ich war mal so unverschämt in Deinem Beitrag herum zu pfuschen. Locobasic ist im Gegensatz zu VisualBasic auch aus der 8-Bit-Ära und die Syntaxhervorhebung dafür kennt Zeilennummern und den DATA-Befehl, und auch die üblichen Funktionen die BASICs zu der Zeit hatten. 

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Danke, muß ich mir merken...
Noch mal zurück zu den CC Registern. Kann ich es mir nicht einfacher machen und alle Rechenoperationen unsigned machen. Dann in den CC Registern das machen (wobei r das unsigned Ergebnis ist):
self.N = 1 if 127 < r < 256 else 0 # Negative
self.Z = 1 if r == 0 else 0 # Zerro
self.C = 1 if r == 256 or r == -1 else 0 # Carry
self.V = 1 if r > 255 or r <0 else 0
Beispiel "Negative" das mache ich z.Z. so:
Aber die extra Umwandlung kann ich mir nach der obigen Idee sparen.
Wobei mir nicht klar ist, wie man das beim Half-Carry machen kann.
Noch mal zurück zu den CC Registern. Kann ich es mir nicht einfacher machen und alle Rechenoperationen unsigned machen. Dann in den CC Registern das machen (wobei r das unsigned Ergebnis ist):
self.N = 1 if 127 < r < 256 else 0 # Negative
self.Z = 1 if r == 0 else 0 # Zerro
self.C = 1 if r == 256 or r == -1 else 0 # Carry
self.V = 1 if r > 255 or r <0 else 0
Beispiel "Negative" das mache ich z.Z. so:
Code: Alles auswählen
self.N = 1 if signed8(r) < 0 else 0
Wobei mir nicht klar ist, wie man das beim Half-Carry machen kann.
Ja danke. Wunderbar.
Ich habe hier etwas gefunden um ihn glaube ich mit Python zu starten, ist das richtig ?
http://archive.worldofdragon.org/phpBB3 ... 8&start=40
Wenn ja, wo packe diese ganzen Programme hin die dort im Archiv sind, damit sie beim Starten gefunden werden?
Gibt es irgendwo ein Auflistung welche zusätzlichen Py ich noch brauche, die eingebunden werden ?
Danke.
Gruss
Ich habe hier etwas gefunden um ihn glaube ich mit Python zu starten, ist das richtig ?
http://archive.worldofdragon.org/phpBB3 ... 8&start=40
Wenn ja, wo packe diese ganzen Programme hin die dort im Archiv sind, damit sie beim Starten gefunden werden?
Gibt es irgendwo ein Auflistung welche zusätzlichen Py ich noch brauche, die eingebunden werden ?
Danke.
Gruss
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Das ist der passende Nachbarthread in Englisch...funkheld hat geschrieben:http://archive.worldofdragon.org/phpBB3 ... 8&start=40
Hm?funkheld hat geschrieben:Wenn ja, wo packe diese ganzen Programme hin die dort im Archiv sind, damit sie beim Starten gefunden werden?
Gibt es irgendwo ein Auflistung welche zusätzlichen Py ich noch brauche, die eingebunden werden ?
Also mein Emulator kann eh noch nicht wirklich BASIC/MaschinenCode Programme ausführen. Das ist es noch viel zu früh.
Wenn du einen funktionierenden Dragon/CoCo Emulator willst, nimm XRoar: http://www.6809.org.uk/dragon/xroar.shtml
Ansonsten bist du wie alle anderen auch gern eingeladen, an DragonPy mit zu helfen

Btw. ich arbeite gerade an einem Grundlegenden Bugfix: z.Z. unterscheide ich nicht, ob eine Instruktion ein Byte oder ein Word vom Speicher braucht. An dieser Unterscheidung arbeite ich gerade...
Hallo, danke für die Info.
Warum hast du den Dragon ausgewählt ? Ist doch ein relativ einsamer Computer in der 8Bitwelt.
Ist es ein besonderer Computer der sich für ein Softwareexperiement eignet oder ....
Danke.
Gruss
Warum hast du den Dragon ausgewählt ? Ist doch ein relativ einsamer Computer in der 8Bitwelt.
Ist es ein besonderer Computer der sich für ein Softwareexperiement eignet oder ....
Danke.
Gruss
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Reine Nostalgie, weil es mein erster Computer war.
Stimmt schon, der hatte außerhalb von UK keine große Verbreitung. Deswegen kann man ihn heute noch *neu* und unbenutzt für $45 aus den USA kaufen (Senden auch nach Deutschland, kostet allerdings $90), ich glaube das dürfte der einzige Homecomputer aus den 80zigern sein, den man noch heute neu kaufen kann.
Nähere Info's dazu: http://archive.worldofdragon.org/phpBB3 ... 531&p=8810
Bei DragonPy kann man verschiedene Konfigurationen erstellen. Also könnte man Prinzipiell alle 6809 basierenden Systeme emulieren. Wäre auch denkbar, das man die Modularität weiter treibt und auch die CPU "austauschbar" zu machen. Ich hatte damit bei https://github.com/jedie/PyEmulator angefangen. Aber dann doch noch mal neu mit DragonPy angefangen.
Stimmt schon, der hatte außerhalb von UK keine große Verbreitung. Deswegen kann man ihn heute noch *neu* und unbenutzt für $45 aus den USA kaufen (Senden auch nach Deutschland, kostet allerdings $90), ich glaube das dürfte der einzige Homecomputer aus den 80zigern sein, den man noch heute neu kaufen kann.
Nähere Info's dazu: http://archive.worldofdragon.org/phpBB3 ... 531&p=8810
Bei DragonPy kann man verschiedene Konfigurationen erstellen. Also könnte man Prinzipiell alle 6809 basierenden Systeme emulieren. Wäre auch denkbar, das man die Modularität weiter treibt und auch die CPU "austauschbar" zu machen. Ich hatte damit bei https://github.com/jedie/PyEmulator angefangen. Aber dann doch noch mal neu mit DragonPy angefangen.
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
So, nun sollte es so sein das ea/m in byte/word richtig übergeben werden:jens hat geschrieben:Btw. ich arbeite gerade an einem Grundlegenden Bugfix: z.Z. unterscheide ich nicht, ob eine Instruktion ein Byte oder ein Word vom Speicher braucht. An dieser Unterscheidung arbeite ich gerade...
Neues "Daten Python Skript" erzeugt -> https://github.com/jedie/DragonPy/commi ... a7b0cea194
Und das dann umgesetzt -> https://github.com/jedie/DragonPy/commi ... 8f6baac6f1
Nun muß ich mal mehr unittests schreiben um das zu überprüfen

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Simple6809 ROM scheint langsam zu starten... Der RAM Test scheint zu funktionieren, kurz danach scheint es aber fehlerhaft zu sein:
Code: Alles auswählen
$ ./DragonPy_CLI.py --cfg Simple6809Cfg --verbosity=30 --area_debug=5:db80-ffff
logger name: DragonPy
DragonPy - Dragon 32 emulator in Python None
-------------------------------------------------------------------------------
set log level to: 20
Activate area debug: Set debug level to 5 from $db80 to $ffff
Startup CPU with: /usr/bin/python cpu6809.py --bus_socket_host=127.0.0.1 --bus_socket_port=51355 --cfg Simple6809Cfg --verbosity=30 --area_debug=5:db80-ffff
logger name: DragonPy
DragonPy - Dragon 32 emulator in Python None
-------------------------------------------------------------------------------
set log level to: 20
Activate area debug: Set debug level to 5 from $db80 to $ffff
Connect to internal socket bus I/O ('127.0.0.1', 51355)
CPU started
reading outside memory area (PC:$db6c): $7fff
reading outside memory area (PC:$db6f): $7fff
writing outside memory area (PC:$db6f): $7fff
reading outside memory area (PC:$db71): $7fff
Activate area debug at $db80
$db7f 30 LEAX register:<X (16-Bit):$7ffd> ea:$7f35 | None
$0021 9F STX register:<X (16-Bit):$7f35> ea:$21 m:$0 | None
$db86 1F TFR ea:$db86 m:$14 | None
$db88 8E LDX register:<X (16-Bit):$7f35> ea:$db88 m:$dbce | None
$db8b CE LDU register:<U (16-Bit):$0000> ea:$db8b m:$76 | None
$db8e C6 LDB register:<B (8-Bit):$00> ea:$db8e m:$12 | None
$db8f BD JSR ea:$dcae | None
$dbcf A6 LDA register:<A (8-Bit):$ff> ea:$dbcf m:$40 | None
...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich hätte schon vor länger Zeit wissen sollen, das man XRoar mit -trace starten kann und dann schöne Debug Ausgaben erzeugt werden.
Ich hab in DragonPy nun bei --verbosity=20 eine recht ähnliche Ausgabe gemacht. So kann man gut vergleichen:
xraor:
DragonPy:
Und wir sehen, das die CC Register noch einige Bugs haben...
Ich hab in DragonPy nun bei --verbosity=20 eine recht ähnliche Ausgabe gemacht. So kann man gut vergleichen:
xraor:
Code: Alles auswählen
fffe| b3b4 [RESET]
b3b4| 318ce4 LEAY -$1c,PCR cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000
b3b7| 7e8000 JMP $8000 cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000
8000| 7ebb40 JMP $bb40 cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000
bb40| cc0034 LDD #$0034 cc=50 a=00 b=34 dp=00 x=0000 y=b39b u=0000 s=0000
bb43| 8eff00 LDX #$ff00 cc=58 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb46| a701 STA 1,X cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb48| a703 STA 3,X cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb4a| a784 STA ,X cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb4c| 43 COMA cc=59 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb4d| a702 STA 2,X cc=59 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb4f| e701 STB 1,X cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb51| e703 STB 3,X cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
bb53| 8eff20 LDX #$ff20 cc=59 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
bb56| 6f01 CLR 1,X cc=54 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
bb58| 6f03 CLR 3,X cc=54 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
bb5a| 4a DECA cc=58 a=fe b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
...
Code: Alles auswählen
$b3b4 31 LEAY register:Y=0000 ea:$b39b | cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000
$b3b7 7E JMP ea:$8000 | cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000
$8000 7E JMP ea:$bb40 | cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000
$bb41 CC LDD register:D=0000 ea:$bb41 m:$34 | cc=50 a=00 b=34 dp=00 x=0000 y=b39b u=0000 s=0000
$bb44 8E LDX register:X=0000 ea:$bb44 m:$ff00 | cc=58 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$ff01 A7 STA register:A=00 ea:$ff01 m:$b3 | cc=50 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$ff03 A7 STA register:A=00 ea:$ff03 m:$35 | cc=50 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$ff00 A7 STA register:A=00 ea:$ff00 m:$0 | cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$bb4c 43 COMA register:A=00 | cc=59 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$ff02 A7 STA register:A=ff ea:$ff02 m:$0 | cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$ff01 E7 STB register:B=34 ea:$ff01 m:$b3 | cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$ff03 E7 STB register:B=34 ea:$ff03 m:$35 | cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000
$bb54 8E LDX register:X=ff00 ea:$bb54 m:$ff20 | cc=59 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
$ff21 6F CLR ea:$ff21 m:$34 | cc=54 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
$ff23 6F CLR ea:$ff23 m:$37 | cc=54 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
$bb5a 4A DECA register:A=ff | cc=58 a=fe b=34 dp=00 x=ff20 y=b39b u=0000 s=0000
...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Die Trace function ist wirklich hilfreich. Hab mit https://github.com/jedie/DragonPy/commi ... 4e6a057a78 eine vergleichsfunktion gehackt.
Es wird Zeile für Zeile, Opcode für Opcode verglichen. So findet man sehr schnell Fehlerhafte verarbeitung. Eine Bugs konnte ich so schon fixen.
Ausgabe sieht dann so aus:
Es wird Zeile für Zeile, Opcode für Opcode verglichen. So findet man sehr schnell Fehlerhafte verarbeitung. Eine Bugs konnte ich so schon fixen.
Ausgabe sieht dann so aus:
Code: Alles auswählen
fffe| b3b4 [RESET]
b3b4| 31 LEAY Y=0000 ea:b39b cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
b3b7| 7e JMP ea:8000 cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
8000| 7e JMP ea:bb40 cc=50 a=00 b=00 dp=00 x=0000 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb40| cc LDD D=0000 ea:bb41 m:34 cc=50 a=00 b=34 dp=00 x=0000 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb43| 8e LDX X=0000 ea:bb44 m:ff00 cc=58 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=0
bb46| a7 STA A=00 ea:ff01 m:b3 cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb48| a7 STA A=00 ea:ff03 m:35 cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb4a| a7 STA A=00 ea:ff00 m:0 cc=54 a=00 b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb4c| 43 COMA A=00 cc=59 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=1
bb4d| a7 STA A=ff ea:ff02 m:0 cc=59 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=1
bb4f| e7 STB B=34 ea:ff01 m:b3 cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=1
bb51| e7 STB B=34 ea:ff03 m:35 cc=51 a=ff b=34 dp=00 x=ff00 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=1
bb53| 8e LDX X=ff00 ea:bb54 m:ff20 cc=59 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=1
bb56| 6f CLR ea:ff21 m:34 cc=54 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb58| 6f CLR ea:ff23 m:37 cc=54 a=ff b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb5a| 4a DECA A=ff cc=58 a=fe b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=0
bb5b| a7 STA A=fe ea:ff20 m:1 cc=58 a=fe b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=0
bb5d| 86 LDA A=fe ea:bb5e m:f8 cc=58 a=f8 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=0
bb5f| a7 STA A=f8 ea:ff22 m:0 cc=58 a=f8 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=0
bb61| e7 STB B=34 ea:ff21 m:34 cc=50 a=f8 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb63| e7 STB B=34 ea:ff23 m:37 cc=50 a=f8 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb65| 6f CLR ea:ff20 m:1 cc=54 a=f8 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb67| 6f CLR ea:ff22 m:0 cc=54 a=f8 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb69| a6 LDA A=f8 ea:ff22 m:0 cc=54 a=00 b=34 dp=00 x=ff20 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb6b| 8e LDX X=ff20 ea:bb6c m:ffc0 cc=58 a=00 b=34 dp=00 x=ffc0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=1 Z=0 V=0 C=0
bb6e| c6 LDB B=34 ea:bb6f m:10 cc=50 a=00 b=10 dp=00 x=ffc0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffc0 m:7e cc=54 a=00 b=10 dp=00 x=ffc2 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=10 cc=50 a=00 b=0f dp=00 x=ffc2 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=0f dp=00 x=ffc2 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffc2 m:7e cc=54 a=00 b=0f dp=00 x=ffc4 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=0f cc=50 a=00 b=0e dp=00 x=ffc4 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=0e dp=00 x=ffc4 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffc4 m:7e cc=54 a=00 b=0e dp=00 x=ffc6 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=0e cc=50 a=00 b=0d dp=00 x=ffc6 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=0d dp=00 x=ffc6 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffc6 m:7e cc=54 a=00 b=0d dp=00 x=ffc8 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=0d cc=50 a=00 b=0c dp=00 x=ffc8 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=0c dp=00 x=ffc8 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffc8 m:7e cc=54 a=00 b=0c dp=00 x=ffca y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=0c cc=50 a=00 b=0b dp=00 x=ffca y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=0b dp=00 x=ffca y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffca m:7e cc=54 a=00 b=0b dp=00 x=ffcc y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=0b cc=50 a=00 b=0a dp=00 x=ffcc y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=0a dp=00 x=ffcc y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffcc m:7e cc=54 a=00 b=0a dp=00 x=ffce y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=0a cc=50 a=00 b=09 dp=00 x=ffce y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=09 dp=00 x=ffce y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffce m:7e cc=54 a=00 b=09 dp=00 x=ffd0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=09 cc=50 a=00 b=08 dp=00 x=ffd0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=08 dp=00 x=ffd0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffd0 m:7e cc=54 a=00 b=08 dp=00 x=ffd2 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=08 cc=50 a=00 b=07 dp=00 x=ffd2 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=07 dp=00 x=ffd2 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffd2 m:7e cc=54 a=00 b=07 dp=00 x=ffd4 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=07 cc=50 a=00 b=06 dp=00 x=ffd4 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=06 dp=00 x=ffd4 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffd4 m:7e cc=54 a=00 b=06 dp=00 x=ffd6 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=06 cc=50 a=00 b=05 dp=00 x=ffd6 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=05 dp=00 x=ffd6 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffd6 m:7e cc=54 a=00 b=05 dp=00 x=ffd8 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=05 cc=50 a=00 b=04 dp=00 x=ffd8 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=04 dp=00 x=ffd8 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffd8 m:7e cc=54 a=00 b=04 dp=00 x=ffda y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=04 cc=50 a=00 b=03 dp=00 x=ffda y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=03 dp=00 x=ffda y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffda m:7e cc=54 a=00 b=03 dp=00 x=ffdc y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=03 cc=50 a=00 b=02 dp=00 x=ffdc y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=02 dp=00 x=ffdc y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffdc m:7e cc=54 a=00 b=02 dp=00 x=ffde y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=02 cc=50 a=00 b=01 dp=00 x=ffde y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=50 a=00 b=01 dp=00 x=ffde y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
bb70| a7 STA A=00 ea:ffde m:7e cc=54 a=00 b=01 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb72| 5a DECB B=01 cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb73| 26 BNE ea:bb70 m:a7 cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb75| f7 STB B=00 ea:ffc9 m:7e cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb78| 85 BITA A=00 ea:bb79 m:4 cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb7a| 27 BEQ ea:bb81 m:f7 cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb81| f7 STB B=00 ea:ffdd m:7e cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb84| 1f TFR ea:bb85 m:9b cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
bb86| 1f TFR ea:bb87 m:25 cc=54 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=0000 | CC: E=0 F=1 H=0 I=1 N=0 Z=1 V=0 C=0
b39c| 10ce LDS S=0000 ea:b39d m:3d7 cc=50 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
trace: b39b| 10ce03d7 LDS #$03d7 cc=50 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7
own..: b39c| 10ce LDS S=0000 ea:b39d m:3d7 cc=50 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
address ('b39c' != 'b39b') not the same as trace reference!
b39b| 10 PAGE1+ cc=50 a=00 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
b39f| 86 LDA A=00 ea:b3a0 m:37 cc=50 a=37 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
b3a1| b7 STA A=37 ea:ff23 m:37 cc=50 a=37 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
b3a4| 96 LDA A=37 ea:71 m:71 cc=50 a=71 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
trace: b3a4| 9671 LDA <$71 cc=58 a=ff b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7
own..: b3a4| 96 LDA A=37 ea:71 m:71 cc=50 a=71 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
registers ('cc=50 a=71 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7' != 'cc=58 a=ff b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7') not the same as trace reference!
b3a6| 81 CMPA A=71 ea:b3a7 m:55 cc=50 a=71 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
trace: b3a6| 8155 CMPA #$55 cc=58 a=ff b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7
own..: b3a6| 81 CMPA A=71 ea:b3a7 m:55 cc=50 a=71 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7 | CC: E=0 F=1 H=0 I=1 N=0 Z=0 V=0 C=0
registers ('cc=50 a=71 b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7' != 'cc=58 a=ff b=00 dp=00 x=ffe0 y=b39b u=0000 s=03d7') not the same as trace reference!
...