Illegale Opcode - Daher kommen sie ...


Illegale Opcode - Daher kommen sie ...

von 1NG » Mi 12. Jan 2011, 12:57
Auf http://www.pagetable.com/?p=517 ist ein etwas längerer Vortrag über den 6502 zu entdecken. Michael Steil erzählt etwas zur Untersuchung des 6502.
Vorgangsweise:
Plastik wegätzen, fotografieren / röntgen, alle Transistoren abzeichnen, simulieren der so gefundenen Hardware, ...
und damit ergeben sich auch die einzelnen Gruppen auf dem Chip und warum die illegalen Opcodes exitieren (z.B. LAX und SAX, welchen A und X gleichzeitig setzen)
Der Vortrag ist englisch, aber das ist der Atari ja auch :D

Re: Illegale Opcode - Daher kommen sie ...

von HiassofT » Do 13. Jan 2011, 15:33
1NG hat geschrieben:Auf http://www.pagetable.com/?p=517 ist ein etwas längerer Vortrag über den 6502 zu entdecken. Michael Steil erzählt etwas zur Untersuchung des 6502.

Der Vortrag ist absolut sehenswert, kann ihn nur jedem ans Herz legen der sich für die Internas der 6502 CPU interessiert!

und damit ergeben sich auch die einzelnen Gruppen auf dem Chip und warum die illegalen Opcodes exitieren (z.B. LAX und SAX, welchen A und X gleichzeitig setzen)

Aktuell sind wir gerade dabei den XAA ($8B) Opcode zu analysieren. Die Chips im Atari verhalten sich dabei etwas anders als die anderen 6502-Varianten.

Hab' gestern ein Testprogramm geschrieben und auf 4 meiner Ataris getestet. Meist ist das Ergebnis A&X&imm (imm ist der Operand von $8B), gelegentlich ist aber im Ergebnis bit 3 ($08) oder - bei einem Atari mit Rockwell CPU - manchmal bit 5 ($20) gesetzt.

Wer selber testen möchte, hier der Link: http://www.horus.com/~hias/tmp/xaa-110113.zip

xaa.atr testet alle 256^3 Kombinationen von A, X und imm (Operand) und gibt am Ende die Anzahl der Fehler aus (also wie oft das Ergebnis nicht A & X & imm war). Ein kompletter Durchlauf dauert etwa 10 Minuten.

xaa-details.atr gibt zusätzlich bei jedem Fehler A, X, imm, Ergebnis, errechnetes Ergebnis und den Unterschied (XOR) aus.

Mit xaa-manual.atr kann man manuell Werte testen (gelegentlich liefert der XAA Befehl bei gleichem Input unterschiedliche Ergebnisse, bei einem meiner Ataris zB mit A=03, X=FF, imm=FF manchmal $03 und manchmal $08).

so long,

Hias