Thema: Info: Codeanalyse
Einzelnen Beitrag anzeigen
  #25  
Alt 21.11.2023, 09:50
Hans21 Hans21 ist offline
Fidelity Kishon Chesster
 
Registriert seit: 18.01.2022
Land:
Beiträge: 61
Abgegebene Danke: 42
Erhielt 79 Danke für 45 Beiträge
Aktivitäten Langlebigkeit
5/20 3/20
Heute Beiträge
0/3 sssssss61
AW: Codeanalyse

 Zitat von Moonshine Beitrag anzeigen
Hallo Hans,

gut zu wissen, mit dem CB16 Modul. Das hat der ARB Sargon 4.0 nicht. Aber laut Rominhalt dürfte es genauso aufgebaut sein wie das Buch des Sensory 9 bzw. Sargon 4.0.
Sieh' Dir mal die ersten Bytes im Buch des Sensory 9 an:
$F45D: $c0 $0e $c0 $01 $98 $c0 $0b
Da sieht man die erste Variante 1. d4 Sf3, 2. c4 g6
Also, wofür die Bytes mit dem Inhalt "C0" sind, weiß ich noch nicht. Die anderen Bytes stehen nun für 1.d4 = $0e, Sf3 = $01, 2. c4 = $98 (Bit 7 ausblenden = $18) und g6 = $0b. Nehmen wir nun den Zug 2. c4 her. In der Zugliste ist das nun der 24. Zug. Am Anfang stehen immer die Schlagzüge, dann eine evtl. Rochade, gefolgt von den Figurenzügen. Begonnen wird bei 1 zu zählen. Schlagzüge gibt es keine, Rochade auch nicht. Es gibt 5 Springerzüge, 5 Läuferzüge, 2 Damenzüge und ein Königszug. Das sind nun 13 Züge. Es kommen nun die Bauernzüge. In dieser Stellung wäre $0e nun h3, $0f wäre h4 usw. bis $18 = c4!
Jetzt macht der Zuggenerator aber nicht die Züge in einer "vernünftigen" Reihenfolge, sondern er beginnt vom Zentrum her die Felder zu durchlaufen und schaut ob da eine Figur hinziehen kann. Diese abstruse Reihenfolge ist wahrscheinlich das, was Darkstar in seinem Eingangspost gemeint hat. Mir erschließt sich da auch noch keine sinnvolle Reihenfolge bei der Zuggenerierung. Es kann aber auch sein, dass die Züge doch in einer logischen Reihenfolge erzeugt werden und die Liste später dann "sortiert" wird. Nach welchen Kriterien auch immer. Das weiß ich noch nicht.
Ich habe die Programme Sargon 2.5/3.0/3.5 früher mal in einem Simulator laufen lassen und mir zwischendurch den Speicherinhalt angesehen. Da findet man dann eine Zugliste die logisch erzeugt wurde. Beim Sargon 4.0 finde ich keine Zugliste, oder sehe sie nur nicht :-).

Lg
Hannes
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.

4. Zur Tabelle aus dem Beitrag von "mychess" werde ich direkt antworten.

Hans
Mit Zitat antworten
Folgende 2 Benutzer sagen Danke zu Hans21 für den nützlichen Beitrag:
kamoj (21.11.2023), Moonshine (21.11.2023)