
Zitat von
Hans21
Hallo Hannes,
1. Bei mir steht unter $F45D auch die Sequenz "$c0 $0e $c0 $01 $98 $c0 $0b". Deine Interpretation scheint mir plausibel zu sein.
2. Zu "$co": Das wären ja gemäss Tutorial von Kathe Spracklen zwei Klammern "(" und ")" und die hat sie ja für Zusatzinformationen vorgeschlagen.
Ich vermute, dass im Sensory 9-Code dieses Zeichen wie ein "no-operation behandelt wird:
z.B. finde ich;
c2ba a5 9c LDA DAT_009c
c2bc 29 c0 AND #0xc0
c2be d0 14 BNE LAB_c2d4
Vielleicht wurde das "$c0" von den Spracklens verwendet, um Fehler korrigieren.
3. Die Reihenfolge der generierten Züge erschliesst sich für mich noch gar nicht. Du hast den Einsatz eines Simulators erwähnt. Weisst du, ob "CB-Emu" es erlauben würde, z.B. die Kommunikation mit dem 6502-Emulator zu protokollieren. Das wäre ideal, um solche Fragen zu klären. Mit rein statischer Code-Analyse könnte es schwierig werden.
Hans
Hallo Hans,
diese Zahlenfolge habe ich aus dem Rom-Dump des Sensory 9. Ist mit dem Anfang des Sargon 4.0 gleich, bis auf die Tatsache, dass dort einige Bit7 noch gesetzt sind. Vermutlich weil das Buch des Sargon 4.0 größer ist und deswegen mehrere Eröffnungsvarianten enthält. Deshalb braucht die Codefolge auch mehr öffnende Klammern.
Zu den "Steuerzeichen" "C0/C1" kann ich noch nichts genaues sagen. Sie kommen aber nur ganz am Anfang vor, also von der Grundstellung ausgehend und dann nur mehr sehr vereinzelt.
Um das Eröffnungsbuch zu dekodieren versuche ich folgende Wege zu gehen:
1. direkte visuelle Begutachtung und Vergleich mit dem bereits dekodierten Buch des Sargon 2.5. Da konnte ich sofort feststellen, dass das Format doch ganz anders ist.
2. Durch verschieben des Buches in einen anderen Speicherbereich. Dabei konnte ich feststellen, dass im Buch keine absoluten Links enthalten sind, da das Buch auch in einem anderen Bereich einwandfrei läuft. Nicht so beim Buch des Sargon 2.5/3.0 und 3.5. Aber da bin ich mir noch nicht ganz sicher, da ich Code im Listing gefunden habe der dem widerspricht.
3. Durch patchen von einzelnen Werten des Buches. Dabei habe ich entdeckt, dass die Züge als Index auf die Zugliste gespeichert werden.
4. Durch Verwendung eines 6502 Simulators. Ich lade den Code in das Programm "6502 Simulator" von Michael Kowalski und lasse das Programm im Einzelschritt laufen. Das ist zwar sehr mühsam, bringt aber die eine oder andere Erkenntnis. Das ist allerdings nicht ganz leicht, da man Speicherbereiche manipulieren muss um dem Programm die richtige Figurenstellung mitzuteilen. Ich habe mir da die IRQ-Routine des Sargon 4.0 leicht abändern müssen, da er sonst beim Aufruf des IRQ keine Figuren gefunden hätte, da der Simulator nicht direkt mit der I/O zusammenarbeiten kann.
Im CB-Emu dürfte das nicht so einfach gehen. Da müsstest Du Franz Huber mal direkt darauf ansprechen.
Im Sargon 4.0 Listing finde ich die Tabelle, die Mychess erwähnte, auch nicht. Aber vielleicht wird diese erst zur Laufzeit erzeugt oder sieht etwas anders aus. z.B.: könnten die Brettkoordinaten der Felder hintereinander gespeichert worden sein.
Als am zielführendsten halte ich nach wie vor, die Analyse im 6502 Simulator.
Lg
Hannes