Fejtörő (2016-2017)

Mókás, de direkt dögnehéz programozási feladványok Spectrumra...
Avatar
Pgyuri
Speccyalista
Hozzászólások: 485
Csatlakozott: 2012.01.06. 13:34

Fejtörő (2016-2017)

Hozzászólás Szerző: Pgyuri » 2016.12.30. 10:27

Mindenkit elfogott már a "Deja vu" érzés. Mintha már megtörtént volna. Szépen lassan odaballangunk a vitrinhez és elővesszük öreg barátunkat, kedvenc gumibillentyűs ZX Spectrum számítógépünket. Meghatottan csatlakoztatjuk hozzá az antennakábelt és a tápegységet, míg végül a bekapcsolás után behangolva a tévét, megjelenik a szívünkbe örökre beégett felirat:

(c) 1982 Sinclair Research Ltd

Töprengünk, mit is csináljunk, miközben kibontunk egy dobozos kólát és odanyúlunk a következő pizzaszeletért. Halk zizegés közben figyeljük a tévé képernyőjét ... egy röpke pillanatra valami átfut körülöttünk, mintha csak a szemünk remegett volna meg, de látszólag semmi nem változott meg ... begépelünk pár sort rutinosan.

10 PRINT "BUEK 2017"
20 GO TO 10

RUN

Hát ilyet már láttunk. Kis szerkesztgetés után alakul a programunk.

5 BORDER 1
10 PRINT PAPER 6; INK 2;" BUEK 2017 "
15 BEEP .05,25
20 GO TO 10

Nem rossz, de volna rajta mit szépíteni. Jó lenne, ha a kis BUEK címkék változatos színnel, össze-vissza jelennének meg a képernyőn, miközben a hang is vidáman ugrál hangról-hangra.

Belekezdünk a szerkesztésbe, de a fránya T betűnk nem csinál semmit. Töprengünk. Valamit lehetne PEEK-el játszani, de nincs kedvünk keresgélni a rendszerváltozók között. Lenyomjuk az "A" betűt, megjelenik a NEW utasítás, kezünk az ENTER felé közelít, de nem! Mégis megírjuk röpke 2-3 perc alatt és hátradőlve székünkben mosolyogva nézzük, ahogy a szépen telik a képernyő. Hiába, egy jó spectrumos nem felejt.

csaba
Speccyalista
Hozzászólások: 190
Csatlakozott: 2012.01.09. 19:18
Rádióamatőr hívójel: HG5BMU
Tartózkodási hely: Surány
Kapcsolat:

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csaba » 2017.01.01. 13:08

Igaz van benne PEEK, de nem keresgéltem a rendszerváltozók között
2017.png

csaba
Speccyalista
Hozzászólások: 190
Csatlakozott: 2012.01.09. 19:18
Rádióamatőr hívójel: HG5BMU
Tartózkodási hely: Surány
Kapcsolat:

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csaba » 2017.01.03. 09:44

próbáltam véletlenszámgenerátort is írni, de ami "normálisabb" az nem néhány perc
2017c.JPG
2017b.JPG

Avatar
csege
Speccyalista
Hozzászólások: 217
Csatlakozott: 2012.01.06. 15:15
Tartózkodási hely: Föld.Naprendszer.Tejút

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csege » 2017.01.03. 12:22

íIgen, ez tényleg látványos.
de mindig ugyanazt a mintát adja
tegyél az elejére egy "Press Enikö to Start'" üzenetet,
és egy ciklust, amiben a 'z' (a peek indulási címe) pörög.
gombnyomásra kilép, és indul a program többi része az aktuális z-től.
nagyon-nagyon valószínűtlen, hogy ugyanannál a z-nél kezdődjék mindig a mese :)

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

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Pgyuri » 2017.01.03. 12:59

Üdv,

Helyes-helyes, alakuljon csak a megoldás. A PEEK nélküliség jó út, a 2. megoldás már tetszik, csak tényleg nem pár perces ... örülök, hogy van, akinek felkeltette a kíváncsiságát! Az igazi megoldás furmányos, de minden út járható!

Pgyuri

csaba
Speccyalista
Hozzászólások: 190
Csatlakozott: 2012.01.09. 19:18
Rádióamatőr hívójel: HG5BMU
Tartózkodási hely: Surány
Kapcsolat:

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csaba » 2017.01.04. 12:09

2017d.JPG

Avatar
csege
Speccyalista
Hozzászólások: 217
Csatlakozott: 2012.01.06. 15:15
Tartózkodási hely: Föld.Naprendszer.Tejút

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csege » 2017.01.05. 14:20

Az ötlet jó, hogy a bevitt PI karaktert cseréljük ki RND karakterre
Basic "tokenek"
RND = A5H = 165
PI = A7H = 167

De nekem elvi kérdéseim volnának:
ez rendszerváltozó
23552 to 23559 KSTATE reading the keyboard

szerintem nem a KSTATE értékét kellene lecserélni,
hiszen a gépeléskor nem fut a program

hanem a basic program memoriában tárolt példányában az első futáskor

a ramban a basic program kezdetét a PROG (23635/6) mutatja
(szerintem ez konfigurációnként állandó, így kikerültk Pgyuri rendszerVÁLTOZÓra vonatkozó tiltását :) )
tehát a program először végigsöpör a basic programon,
kicseréli a PI-t RND-re
majd csinálja a dolgát.

Amire oda kell figyelni szerintem:
- a második futástól már nincsenek Pi tokenek a ramban
- nem ismerjük a program hosszát a ramban

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

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: Pgyuri » 2017.01.05. 15:10

"a ramban a basic program kezdetét a PROG (23635/6) mutatja
(szerintem ez konfigurációnként állandó, így kikerültk Pgyuri rendszerVÁLTOZÓra vonatkozó tiltását :)"

"Valamit lehetne PEEK-el játszani, de nincs kedvünk keresgélni a rendszerváltozók között."

a PROG (23635/6) rendszerváltozó :)

Avatar
makranc
Speccyalista
Hozzászólások: 252
Csatlakozott: 2012.01.11. 11:00
Tartózkodási hely: Budapest, III.

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: makranc » 2017.01.05. 22:18

Legyen az első sor
9000 LET x=PI

Köztudott ;) , hogy a BASIC terület 23755 memóriacímnél kezdődik (ha nincs Interface 1 csatlakoztatva).
Parancssorból
FOR n=23755 to 24000: PRINT n, PEEK n:NEXT n
után látható, hogy 23762 címen van PI kódja, 167.
Ezt átírva 165-re lesz egy
9000 LET x=RND sorunk
9010 RETURN-t mögé írva lesz egy szubrutinunk, amelyet annyiszor hívunk a programból, ahányszor akarunk, csak elé kell írni a programot.

csaba
Speccyalista
Hozzászólások: 190
Csatlakozott: 2012.01.09. 19:18
Rádióamatőr hívójel: HG5BMU
Tartózkodási hely: Surány
Kapcsolat:

Re: Fejtörő (2016-2017)

Hozzászólás Szerző: csaba » 2017.01.06. 10:43

A fentebb mellékelt programom "inteligens".
A 100-as sortól kezdve kicseréli az 5db PI-t RND-re.
Ha másodszor futtatjuk akkor csak megtalálja és megszámolja a már lecserélt RND-ket.
Rendszerváltozót nem kell hozzá ismerni, a KSTATE említése csak félrevezető egybeesés.
Valójában a 23552 a következőképp jött ki pár dolog ismeretéből ami nem rendszerváltozó:
képernyő indul:16384-től
képernyő hossz:6912 byte
plussz 256byte printer puffer
=23552 innen indul a keresés, a biztonság kedvéért a PI és az utána levő csillag feltételével.
Így nincsenek abszolút címek, program írás közben lehet bátran szerkeszteni, változtatni, a cseréket minidig a helyén kezeli a rutin.

Válasz küldése

Ki van itt

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