Schachcomputer.info Community

Zurück   Schachcomputer.info Community > Schachcomputer / Chess Computer: > Die ganze Welt der Schachcomputer / World of chess computers


Antwort
 
Themen-Optionen Ansicht

  #1  
Alt 20.11.2023, 09:43
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Hannes,

Mal ein erster Gedanke zur Codierung des Eröffnungsbuchs:

Gemäss "https://www.schachcomputer.info/forum/showthread.php?t=4261" kann z.B. das CB16-Eröffnungsmodul für folgende Fidelity-Geräte eingesetzt werden: Prestige, Elite A/S, Elite 5.0, Elite AVG 6081/6088, Elegance, Sensory 12, Sensory 9, Playmatic und Elite Private.

Wenn das im CB16 enthaltene Eröffnungsbuch entsprechend "https://content.iospress.com/downloa...al%2Ficg6-1-04" codiert wäre ("move generator displacements"), würde das heissen, dass die oben aufgeführten Geräte alle den gleichen Zuggenerator verwenden müssten.

Stimmt meine Überlegung?

Falls das so ist, wäre es interessant, genau zu wissen, wie der Zuggenerators des Sensory 9 funktioniert.

Beim Ur-Sargon (1978) ist das Verhalten des Zuggenerators durch das interne Schachbrett und die Tabellen "direction table", "direction table pointer", "direction table counter" festgelegt.

Ich habe aber im Moment keine Ahnung, ob die Spracklens den Zuggenerator auch so im Sensory 9 programmiert haben.
Bis jetzt habe ich diese Ur-Sargon-Tabellen im Sensory 9-ROM nicht lokalisieren können.

Und ich habe den Einsprungspunkt für den Zuggenerator im Sensory 9-ROM auch noch nicht gefunden.

Hat jemand einen Hinweis darauf, wie der Zuggenerator im Sensory 9 aufgebaut ist?

Hans
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #2  
Alt 20.11.2023, 10:43
Benutzerbild von Mychess
Mychess Mychess ist offline
MACH III
 
Registriert seit: 07.03.2009
Beiträge: 128
Bilder: 3
Abgegebene Danke: 201
Erhielt 266 Danke für 110 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
4/20 16/20
Heute Beiträge
1/3 ssssss128
Re: AW: Codeanalyse

Hello,

A quick search of the dissasembly :

Code:
C20C : 00 03 06 06 19 19 19 19 14 14 0F 0F     ; offset in C218 table
C218 : 11 0F 00                         ; black pawn 
C21B : F1 EF 00                         ; white pawn 
C21E : F2 EE E1 DF 21 1F 12 0E 00       ; knight
C227 : F1 EF 11 0F 00                   ; bishop
C22C : FF F0 10 01 00                   ; rook
C231 : FF F1 F0 EF 11 10 0F 01 00       ; king, queen

C6E7            LC6E7:
C6E7 : 84 02            sty     X0002
C6E9 : BD EC C1         lda     XC1EC,x
C6EC : 85 B8            sta     X00B8
C6EE : BD CC C1         lda     XC1CC,x
C6F1 : 85 AD            sta     X00AD
C6F3 : BC 20 03         ldy     X0320,x
C6F6 : BE 0C C2         ldx     XC20C,y
C6F9 : C0 06            cpy     #$06
C6FB : 90 1F            bcc     LC71C
C6FD            LC6FD:
C6FD : BD 18 C2         lda     XC218,x
C700 : F0 30            beq     LC732
C702 : A4 02            ldy     X0002
C704            LC704:
C704 : 18               clc
C705 : 98               tya
C706 : 7D 18 C2         adc     XC218,x
C709 : A8               tay
C70A : 29 88            and     #$88
C70C : D0 0B            bne     LC719
C70E : A5 AD            lda     X00AD
C710 : 51 B8            eor     (X00B8),y
C712 : 91 B8            sta     (X00B8),y
C714 : B9 80 00         lda     X0080,y
C717 : 30 EB            bmi     LC704
C719            LC719:
C719 : E8               inx
C71A : D0 E1            bne     LC6FD
C71C            LC71C:
C71C : BD 18 C2         lda     XC218,x
C71F : F0 11            beq     LC732
C721 : 18               clc
C722 : 65 02            adc     X0002
C724 : A8               tay
C725 : 29 88            and     #$88
C727 : D0 06            bne     LC72F
C729 : A5 AD            lda     X00AD
C72B : 51 B8            eor     (X00B8),y
C72D : 91 B8            sta     (X00B8),y
C72F            LC72F:
C72F : E8               inx
C730 : D0 EA            bne     LC71C
C732            LC732:
C732 : 60               rts


Cordially.

Geändert von Mychess (20.11.2023 um 11:41 Uhr)
Mit Zitat antworten
Folgende 3 Benutzer sagen Danke zu Mychess für den nützlichen Beitrag:
kamoj (21.11.2023), Moonshine (20.11.2023)
  #3  
Alt 20.11.2023, 11:16
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Great! Thanks a lot.

I found it, slightly shifted.
(e.g. from 0xc218 to 0xc21c, i use ROM version 101-1034a01),

Best regards
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #4  
Alt 20.11.2023, 12:14
Moonshine Moonshine ist offline
Super System III
 
Registriert seit: 25.07.2010
Land:
Beiträge: 14
Abgegebene Danke: 28
Erhielt 21 Danke für 11 Beiträge
Aktivitäten Langlebigkeit
4/20 15/20
Heute Beiträge
1/3 sssssss14
AW: Codeanalyse

 Zitat von Hans21 Beitrag anzeigen
Hallo Hannes,


Wenn das im CB16 enthaltene Eröffnungsbuch entsprechend "https://content.iospress.com/downloa...al%2Ficg6-1-04" codiert wäre ("move generator displacements"), würde das heissen, dass die oben aufgeführten Geräte alle den gleichen Zuggenerator verwenden müssten.

Stimmt meine Überlegung?

Hans
Ja, das sehe ich genauso. Ich habe auch schon probiert das Eröffnungsbuch CB9 im Sargon 4.0 zu verwenden. Funktioniert zum Teil.
Wo sich der Zuggenerator befindet hat Cordially schon gezeigt. Die Offsets für die Zugberechnungen habe ich auch schon gefunden. Da das eine 0x88 Brettdarstellung ist muß man mit 16 Bytes rechnen, statt mit 10 wie bei den ersten Büchern des Sargon 2.5/3.0. Das Eröffnungsbuch liegt beim Sensory 9 ab Adresse $F45D. Ich habe die ersten Bytes mit dem Buch des Sargon 4.0 verglichen. Stimmt überein, wenn man Bit 7 ignoriert. Ein gesetztes Bit zeigt hier wohl eine "(" an. Wofür die Steuerbytes "C0" und "C1" am Anfang des Buches sind, habe ich noch nicht herausgefunden.
Ich werde jetzt mal probieren das CB16 in das Sargon 4.0 ROM einzubauen. Ich nehme an, dass die Programme alle das selbe Buchformat verwenden.
Ich bin noch immer dabei tiefer in diese Materie einzusteigen :-)

Lg

Hannes
Mit Zitat antworten
Folgende 2 Benutzer sagen Danke zu Moonshine für den nützlichen Beitrag:
kamoj (21.11.2023)
  #5  
Alt 20.11.2023, 13:59
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Codeanalyse

Hallo Hannes,

Ja genau, das interne Buch liegt bei 0xf45d. Diese Adresse schreibt das Programm nach dem Reset ins RAM nach 0x00b8 (LSB) und 0x00ba (MSB). Nachher wird aber noch geprüft ob z.B. das CB16-Modul installiert ist. Wenn das der Fall ist, wird 0x200b ins RAM nach 0x00b8 (LSB) und 0x00ba (MSB) überschrieben, also so eine Art "pointer" auf das zu verwendende Eröffnungsbuch. Mittlerweile vermute ich auch, dass eine 0x88-Brettdarstellung verwendet wird. Und zwischen 0xc000 und 0xc21b sehe ich Daten/Tabellen, die ich aber noch nicht näher zuordnen kann. Die Ur-Sargon-Brett- und Zug-Logik scheint also im Sensory 9 nicht mehr verwendet zu werden.

Hans
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
  #6  
Alt 20.11.2023, 15:05
Benutzerbild von Mychess
Mychess Mychess ist offline
MACH III
 
Registriert seit: 07.03.2009
Beiträge: 128
Bilder: 3
Abgegebene Danke: 201
Erhielt 266 Danke für 110 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
4/20 16/20
Heute Beiträge
1/3 ssssss128
Re: AW: Codeanalyse

 Zitat von Hans21 Beitrag anzeigen
Hallo Hannes,
Und zwischen 0xc000 und 0xc21b sehe ich Daten/Tabellen, die ich aber noch nicht näher zuordnen kann. Die Ur-Sargon-Brett- und Zug-Logik scheint also im Sensory 9 nicht mehr verwendet zu werden.
Hans
Hello,

Sometimes, very small ".." is better than "00" .
This table is used for scan attack (IMHO).

Code:
C000 : .. 01 01 01 01 01 01 01 .. .. .. .. .. .. .. 0F  
C010 : 10 11 .. .. .. .. .. .. .. .. .. .. .. .. 0F ..  
C020 : 10 .. 11 .. .. .. .. .. .. .. .. .. .. 0F .. ..  
C030 : 10 .. .. 11 .. .. .. .. .. .. .. .. 0F .. .. ..  
C040 : 10 .. .. .. 11 .. .. .. .. .. .. 0F .. .. .. ..  
C050 : 10 .. .. .. .. 11 .. .. .. .. 0F .. .. .. .. ..  
C060 : 10 .. .. .. .. .. 11 .. .. 0F .. .. .. .. .. ..  
C070 : 10 .. .. .. .. .. .. 11 .. .. .. .. .. .. .. ..  
C080 : .. .. .. .. .. .. .. .. .. EF .. .. .. .. .. ..  
C090 : F0 .. .. .. .. .. .. F1 .. .. EF .. .. .. .. ..  
C0A0 : F0 .. .. .. .. .. F1 .. .. .. .. EF .. .. .. ..  
C0B0 : F0 .. .. .. .. F1 .. .. .. .. .. .. EF .. .. ..  
C0C0 : F0 .. .. .. F1 .. .. .. .. .. .. .. .. EF .. ..  
C0D0 : F0 .. .. F1 .. .. .. .. .. .. .. .. .. .. EF ..  
C0E0 : F0 .. F1 .. .. .. .. .. .. .. .. .. .. .. .. EF  
C0F0 : F0 F1 .. .. .. .. .. .. .. FF FF FF FF FF FF FF 

Levels tables

C138 : 3C 3C 3C 3C 1E 28 28 1E   60 30 40 ... moves
...
C148 : 2C 84 08 10 E4 C8 28 30   low byte time in s 
...
C158 : 01 03 07 0E 0C 19 23 2A   high byte time in s

Cordially.
Mit Zitat antworten
Folgende 3 Benutzer sagen Danke zu Mychess für den nützlichen Beitrag:
kamoj (21.11.2023), Moonshine (20.11.2023)
  #7  
Alt 20.11.2023, 17:43
Moonshine Moonshine ist offline
Super System III
 
Registriert seit: 25.07.2010
Land:
Beiträge: 14
Abgegebene Danke: 28
Erhielt 21 Danke für 11 Beiträge
Aktivitäten Langlebigkeit
4/20 15/20
Heute Beiträge
1/3 sssssss14
Beitrag AW: Codeanalyse

 Zitat von Hans21 Beitrag anzeigen
Hallo Hannes,

Nachher wird aber noch geprüft ob z.B. das CB16-Modul installiert ist. Wenn das der Fall ist, wird 0x200b ins RAM nach 0x00b8 (LSB) und 0x00ba (MSB) überschrieben, also so eine Art "pointer" auf das zu verwendende Eröffnungsbuch. Mittlerweile vermute ich auch, dass eine 0x88-Brettdarstellung verwendet wird.

Hans
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
Mit Zitat antworten
Folgende 3 Benutzer sagen Danke zu Moonshine für den nützlichen Beitrag:
kamoj (21.11.2023), Mychess (20.11.2023)
  #8  
Alt 20.11.2023, 18:51
Benutzerbild von Mychess
Mychess Mychess ist offline
MACH III
 
Registriert seit: 07.03.2009
Beiträge: 128
Bilder: 3
Abgegebene Danke: 201
Erhielt 266 Danke für 110 Beiträge
Member Photo Albums
Aktivitäten Langlebigkeit
4/20 16/20
Heute Beiträge
1/3 ssssss128
Re: Codeanalyse

Hello, Hello ;-)


We're talking about this table that prioritizes the generation of moves:

Code:
 
          HEXA                  
 31 32 33 34 35 36 37 38                 
 2f 2b 27 23 21 25 29 2d                 
 1f 1b 13 0b 07 09 0f 17                 
 1d 19 11 01 03 05 0d 15                 
 1e 1a 12 02 04 06 0e 16                 
 20 1c 14 0c 08 0a 10 18                 
 30 2c 28 24 22 26 2a 2e                 
 40 3f 3e 3d 3c 3b 3a 39                 

         DECIMAL         
 49 50 51 52 53 54 55 56 
 47 43 39 35 33 37 41 45 
 31 27 19 11 07 09 15 23 
 29 25 17 01 03 05 13 21 
 30 26 18 02 04 06 14 22 
 32 28 20 12 08 10 16 24 
 48 44 40 36 34 38 42 46 
 64 63 62 61 60 59 58 57
Is it possible that statistics relating to thousands of games (in the opening or just after exit the opening ) give different utilization values depending on the geographical position of the destination square?
It is therefore interesting to generate these moves as a priority (pruning).
I think I understand that in chess, the pieces are to be centralized as soon as possible.
It's worth noting that, although we start from the center, there's a disymmetry between the king and queen sides that's identical for white and black : Same time for black and white generation ?
Obviously, this is only for the generation, after that, moves are probably sorted by evaluation function and special cases (captures, promotion, check...)


Cordially.

Geändert von Mychess (20.11.2023 um 19:05 Uhr)
Mit Zitat antworten
Folgende 3 Benutzer sagen Danke zu Mychess für den nützlichen Beitrag:
kamoj (21.11.2023), Moonshine (20.11.2023)
  #9  
Alt 20.11.2023, 22:00
Moonshine Moonshine ist offline
Super System III
 
Registriert seit: 25.07.2010
Land:
Beiträge: 14
Abgegebene Danke: 28
Erhielt 21 Danke für 11 Beiträge
Aktivitäten Langlebigkeit
4/20 15/20
Heute Beiträge
1/3 sssssss14
AW: Re: Codeanalyse

Hi Mychess

yes, it looks good. This table could be the solution of the generating problem. Now, I want to find where this table is in the Sargon 4.0 Rom-Listing.
Thanks a lot.

Hannes

Geändert von Moonshine (22.11.2023 um 00:03 Uhr) Grund: Falscher Nickname
Mit Zitat antworten
Folgender Benutzer sagt Danke zu Moonshine für den nützlichen Beitrag:
kamoj (21.11.2023)
  #10  
Alt 21.11.2023, 09:53
user_2141
Gast
 
Beiträge: n/a
Aktivitäten Langlebigkeit
0/20 0/20
Heute Beiträge
sssssssss
AW: Re: Codeanalyse

 Zitat von Mychess Beitrag anzeigen
Hello, Hello ;-)


We're talking about this table that prioritizes the generation of moves:

Code:
 
          HEXA                  
 31 32 33 34 35 36 37 38                 
 2f 2b 27 23 21 25 29 2d                 
 1f 1b 13 0b 07 09 0f 17                 
 1d 19 11 01 03 05 0d 15                 
 1e 1a 12 02 04 06 0e 16                 
 20 1c 14 0c 08 0a 10 18                 
 30 2c 28 24 22 26 2a 2e                 
 40 3f 3e 3d 3c 3b 3a 39                 

         DECIMAL         
 49 50 51 52 53 54 55 56 
 47 43 39 35 33 37 41 45 
 31 27 19 11 07 09 15 23 
 29 25 17 01 03 05 13 21 
 30 26 18 02 04 06 14 22 
 32 28 20 12 08 10 16 24 
 48 44 40 36 34 38 42 46 
 64 63 62 61 60 59 58 57
Is it possible that statistics relating to thousands of games (in the opening or just after exit the opening ) give different utilization values depending on the geographical position of the destination square?
It is therefore interesting to generate these moves as a priority (pruning).
I think I understand that in chess, the pieces are to be centralized as soon as possible.
It's worth noting that, although we start from the center, there's a disymmetry between the king and queen sides that's identical for white and black : Same time for black and white generation ?
Obviously, this is only for the generation, after that, moves are probably sorted by evaluation function and special cases (captures, promotion, check...)


Cordially.
Hello Mychess,

The idea with this table sounds convincing to me. However, so far I have failed to locate this table in the Sensory 9-code that I use.

Hans
Mit Zitat antworten
Folgender Benutzer sagt Danke zu für den nützlichen Beitrag:
kamoj (21.11.2023)
Antwort


Forumregeln
Du bist nicht berechtigt, neue Themen zu erstellen.
Du bist nicht berechtigt, auf Beiträge zu antworten.
Du bist nicht berechtigt, Anhänge hochzuladen.
Du bist nicht berechtigt, deine Beiträge zu bearbeiten.

BB code ist An
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 20:49 Uhr.



Powered by vBulletin (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
©Schachcomputer.info