1K Chess

Beszélgessünk érdekesebb ZX81 programokról...
Avatar
Bali
Site Admin
Hozzászólások: 1929
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

1K Chess

Hozzászólás Szerző: Bali » 2012.01.22. 21:15

Sziasztok!

Erről mindenképpen kell kicsit eszmecserélnünk:

http://sinclair.hu/index.html?szoftver/ ... ekid=27455

Jöhetnek a hozzászólások...

üdv,
Bali
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Zozosoft
Speccyalista
Hozzászólások: 726
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Zozosoft » 2012.01.23. 16:43

Mókás, hogy látszik, ahogy gondolkodik :)
A kód mindösszesen 672 bájt
Mi tölti ki a maradék helyet? Gondolom van a képernyő, ami ha jól tudom takarékosan van megoldva ZX81-en, annyit foglal amennyin információ van. Pár tucat bájt verem...
en passant (Egy különleges lépés a sakkban, olyan ütés, amelyre akkor kerülhet sor, ha az egyik fél gyalogja kettőt előrelépve kikerülné az ellenfél gyalogjának átlós ütését. Az egyetlen eset a sakkban, amikor egy gyalog nem az átlósan előtte álló, hanem a mellé lépő figurát ütheti ki.)
Bevallom én olyan koca sakkozó vagyok, hogy erről eddig nem is hallottam :oops:

Avatar
Bali
Site Admin
Hozzászólások: 1929
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Bali » 2012.01.23. 16:56

Ennek az en passant-nak én is csak most néztem utána... :)
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Asimo
Speccyalista
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Asimo » 2012.01.23. 17:21

672 bájt a kód, 125 bájt a rendszerváltozóknak, 110 bájt a képernyőnek. Marad 117 bájt.
A kód BASIC-be van ágyazva, az 1 REM sortól. Ez a REM sor elvisz 5 bájtot.
A kód után jön még pár BASIC sor: 2 SLOW, 3 RAND USR. Ez további 21 bájt. A 4-ik sor csak a program létrehozásakor kell, SAVE előtt törli.
Már csak 91 bájt hiányzik az 1024-hez. Ebből jön le a verem, ami a RAMtop-tól indul visszafelé (17407-től).
A mesterséges intelligencia lehet, hogy rekurzív algoritmuson alapul (nem néztem a kódot), így lehet, hogy a maradék bájtok kellene a veremnek.
Ha valakinek van ereje/ideje, kiderítheti ezt a forrásból. :D

Avatar
Asimo
Speccyalista
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Asimo » 2012.01.23. 23:45

Megvizsgáltam közelebbről a programot:

16384 ($4000) rendszerváltozók
16509 ($407D) BASIC program start (itt van az első REM sor)
16514 ($4082) Sakk gépi kód start
17187 ($4323) SLOW utasítás (a program második sora)
17193 ($4329) RAND USR utasítás (a program harmadik sora)
17202 ($4332) D-FILE (képernyő)
17327 ($43AF) VARS (BASIC változók címe)
17334 ($43B6) E_LINE (ideáig tart a BASIC program, ezután munkaterület)
17338 ($43BA) CPU verem idáig lejön ha lépünk
17404 ($43FC) ERR_SP (a BASIC szerint az SP/GOSUB verem)
17407 ($43FF) RAM vége ($3E - GOSUB end-marker)

Tehát:

125 bájt rendszerváltozók
693 bájt BASIC program, amibe 672 bájt gépi kód van ágyazva
125 bájt képernyő (amiből 110 bájt maga a sakktábla, a többi newline karakter)
66 bájt verem
15 bájt egyéb, BASIC által használt terület

Összesen 1024 bájt. Úgy néz ki, tényleg minden szabad bájtot felhasznált David Horne.

A ZX-81 nem tud bináris adatot beolvasni szalagról, ezért szokás BASIC program REM soraiba ágyazni a gépi kódot.
A SAVE utasítás pedig nem csak magát a BASIC sorokat menti el, hanem szinte mindent, majdnem az összes rendszerváltozót ($4009-től), a képernyőt, a változókat (ameddig az E_LINE mutat). A sakkprogram kazettán gyakorlatilag $4009-$43B6 memóriaterület, ami így 941 bájt hosszú. És valóban, a netről letöltött 1KZXChess.1.ChessQueen.p fájl is ilyen hosszú. :)

Kicsit játszottam a programmal. Érdekes effekt, ahogy végignézi a táblát a lehetséges lépések miatt. A következő feladat ennek az algoritmusnak a megértése. :D

Avatar
Bali
Site Admin
Hozzászólások: 1929
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Bali » 2012.01.24. 13:45

Na akkor a kód része szépen kivesézésre került, azt tényleg jópofa, ahogy próbálkozik kitalálni, hogy mit is lépjen.
Akinek sikerül megvernie, küldjön mér egy képet a sakk-matt-ról. :)
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Pgyuri
Speccyalista
Hozzászólások: 485
Csatlakozott: 2012.01.06. 13:34

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Pgyuri » 2012.01.24. 15:49

Üdv,

Jaj, ne, ez borzalom :) Ezzel sakkozni siralom, mondhatni nem is sakkozik, csak képes lépni. A sakk-matt-nál ledermed, gondolom reset-re vár, hogy töltsd be újra.

Maga az a kihívás, hogy beférjen 1K-ba, szép teljesítmény, de ezért pénzt kérni ???? Egy újságban leadva, hogy gépeld be, teljesen érthető, de kazettán ???? Átverés magas szintje.

Annak idején sokat sakkoztunk Spectrummal. Különböző erősségűek voltak a sakkprogramok (kedvencem a beszélő volt), de általánosan elmondható volt, hogy képesek voltak 2-3 lépés után "elfelejteni", hogy mattveszélyben állnak. Amúgy a WoS-on csináltak egy Spectrum sakk vs. Spectrum sakk versenyt, hogy melyik milyen eredményt ért el, melyik lesz a világbajnok.

Pgyuri

Avatar
Zozosoft
Speccyalista
Hozzászólások: 726
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Zozosoft » 2012.01.24. 17:23

Pgyuri írta:Amúgy a WoS-on csináltak egy Spectrum sakk vs. Spectrum sakk versenyt, hogy melyik milyen eredményt ért el, melyik lesz a világbajnok.
Egy linket tudnál ehhez?

Avatar
Pgyuri
Speccyalista
Hozzászólások: 485
Csatlakozott: 2012.01.06. 13:34

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Pgyuri » 2012.01.24. 17:48


Avatar
Bali
Site Admin
Hozzászólások: 1929
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: 1K Chess (ZX81)

Hozzászólás Szerző: Bali » 2012.01.24. 18:00

Ilyen alapom össze lehetne ereszteni a ZX81-es sakkprogramokat is, esteleg a győztest meg a Cyrus II-vel. :)
-= Bali =-
(c) 1983-2017 Evil-Soft

Válasz küldése

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég