ZX85
- Bali
- Alapító tag
- Hozzászólások: 2503
- Csatlakozott: 2012.01.06. 12:34
- Tartózkodási hely: Budapest III.
- Kapcsolat:
Re: ZX85
Mellékelem Nagy Dani javított Spectrum 128-as ROM-ját, amin nagy erőkkel dolgozik, tehát nyilván még nem végleges dologról beszélünk. Kicsit faggattam ma a projekt állásáról. 
Idézem Danit a beszélgetésünkből:
A 128-k ROM is szépen alakulgat egyébként. Most még egy picit nehézkes használni, mert csak tokenizálva fogadja el a kulcsszavakat és még én is elfelejtem rendszeresen, hogy melyiket melyik billentyű kombinációra tettem.
Úgyhogy most megelégeltem a dolgot és végre megírom a tokenizálót.
De egyébként már elég szépen működik:
- @cimkék: bárhová a programban el lehet őket helyezni és GO TO és GO SUB-ba sorszám helyett beírni
- Bitenkénti operátorok számok és stringek között is: &, |, >< (ez a XOR), ' (ez meg a bitenkénti NOT, a negálandó érték után kell tenni az aposztrófot)
- Egyéb operátorok: % (modulo)
- Számrendszerek: HEX, OCT (a BIN mellé), illetve STR$(a,b) ami b alapú (2 és 36 között bármi lehet) számrendszerbe konvertálja a-t. Sőt, van STR$(a,b,c), ahol c a törtpont utáni jegyek száma. Lehet formázásra használni.
- Elvis operátor: c?(x,y...) ahol c kiválasztja, hogy x,y ... kifejezések közül melyik értékelődjön ki (c=0 esetében x).
- Valamint lehet váltózóval közvetlenül operációt végezni, megspórolva egy megkeresést pl.
hozzáad 1-et a-hoz.
- Ezenfelül vannak lokális változók (szubrutinokhoz illetve ciklusokhoz), valamint argumentum nélküli NEXT, ami visszaállítja a ciklusváltozó FOR előtti értékét, ha véget ér a ciklus. Tehát lehet ilyet írni:
És ez bizony szépen kirajzol egy 10x10-es pontrácsot, és semminek az értékét nem változtatja meg.
- Debugoláshoz van STACK parancs, ami kiírja ember által olvasható formában a stack trace-t.
Meg még egy pár apróság.
A "pár apróság" egyike:
Hogy ne kelljen már ciklust meg DATA-t írni egy nyamvadt UDG átrajzolásához.
A POKE elfogad tetszőlegesen hosszú listát számokból és stringekből.
És még van szabadon majdnem 10 kilobyte-om a 16-ból, szóval elég baba lesz.
48-as ROM:
Kicsit mozog, de a 48k üzemmódot nem befolyásoló dolgokban. A végén van egy ugrótáblázat a másik ROM-ba bizonyos hibák esetén történő átlapozáshoz, ami 48k módban nem csinál semmit. Ez bővülget.
(A 128.1.rom egy 48-as rom)

Idézem Danit a beszélgetésünkből:
A 128-k ROM is szépen alakulgat egyébként. Most még egy picit nehézkes használni, mert csak tokenizálva fogadja el a kulcsszavakat és még én is elfelejtem rendszeresen, hogy melyiket melyik billentyű kombinációra tettem.
Úgyhogy most megelégeltem a dolgot és végre megírom a tokenizálót.
De egyébként már elég szépen működik:
- @cimkék: bárhová a programban el lehet őket helyezni és GO TO és GO SUB-ba sorszám helyett beírni
- Bitenkénti operátorok számok és stringek között is: &, |, >< (ez a XOR), ' (ez meg a bitenkénti NOT, a negálandó érték után kell tenni az aposztrófot)
- Egyéb operátorok: % (modulo)
- Számrendszerek: HEX, OCT (a BIN mellé), illetve STR$(a,b) ami b alapú (2 és 36 között bármi lehet) számrendszerbe konvertálja a-t. Sőt, van STR$(a,b,c), ahol c a törtpont utáni jegyek száma. Lehet formázásra használni.
- Elvis operátor: c?(x,y...) ahol c kiválasztja, hogy x,y ... kifejezések közül melyik értékelődjön ki (c=0 esetében x).
- Valamint lehet váltózóval közvetlenül operációt végezni, megspórolva egy megkeresést pl.
Kód: Egész kijelölése
LET a+=1
- Ezenfelül vannak lokális változók (szubrutinokhoz illetve ciklusokhoz), valamint argumentum nélküli NEXT, ami visszaállítja a ciklusváltozó FOR előtti értékét, ha véget ér a ciklus. Tehát lehet ilyet írni:
Kód: Egész kijelölése
FOR i=1 TO 10
FOR i=1 TO 10
PRINT ".";
NEXT
PRINT
NEXT
- Debugoláshoz van STACK parancs, ami kiírja ember által olvasható formában a stack trace-t.
Meg még egy pár apróság.
A "pár apróság" egyike:
Kód: Egész kijelölése
POKE USR "a",255,129,129,129,129,129,129,255
A POKE elfogad tetszőlegesen hosszú listát számokból és stringekből.
És még van szabadon majdnem 10 kilobyte-om a 16-ból, szóval elég baba lesz.
48-as ROM:
Kicsit mozog, de a 48k üzemmódot nem befolyásoló dolgokban. A végén van egy ugrótáblázat a másik ROM-ba bizonyos hibák esetén történő átlapozáshoz, ami 48k módban nem csinál semmit. Ez bővülget.
(A 128.1.rom egy 48-as rom)
-= Bali =-
(c) 1983-2017 Evil-Soft
(c) 1983-2017 Evil-Soft
- Bali
- Alapító tag
- Hozzászólások: 2503
- Csatlakozott: 2012.01.06. 12:34
- Tartózkodási hely: Budapest III.
- Kapcsolat:
Re: ZX85
Egy kis segítség:
Karaktertábla itt található, ebből ki lehet találni, hogy hogyan lehet bevinni kulcsszavakat addig, amíg betűnként nem működik.
Karaktertábla itt található, ebből ki lehet találni, hogy hogyan lehet bevinni kulcsszavakat addig, amíg betűnként nem működik.
-= Bali =-
(c) 1983-2017 Evil-Soft
(c) 1983-2017 Evil-Soft
-
- Alapító tag
- Hozzászólások: 353
- Csatlakozott: 2012.01.09. 18:18
- Rádióamatőr hívójel: HG5BMU
- Tartózkodási hely: Surány
- Kapcsolat:
Re: ZX85
Az újonnan felfedezett romoknak nemsokára nyithatunk egy új if2 epromot.
Jó lenne Danival konzultálni arról, hogy az új romjában legyen lehetőség 48k-gépen használva az if2rom segítségével át tudna lapozni egy másik rom lapra az új parancsok értelmezéséhez.
Mivel az eredeti 128k-kompatibilis lapozást ott nem tudjuk megvalósítani, a lapozáshoz más utasítást kell végrehajtani.
Jó lenne Danival konzultálni arról, hogy az új romjában legyen lehetőség 48k-gépen használva az if2rom segítségével át tudna lapozni egy másik rom lapra az új parancsok értelmezéséhez.
Mivel az eredeti 128k-kompatibilis lapozást ott nem tudjuk megvalósítani, a lapozáshoz más utasítást kell végrehajtani.
-
- Alapító tag
- Hozzászólások: 353
- Csatlakozott: 2012.01.09. 18:18
- Rádióamatőr hívójel: HG5BMU
- Tartózkodási hely: Surány
- Kapcsolat:
Re: ZX85
pár ötlet Daninak:
-PRINT méretezhető "nagyítható" karakterekkel
-gpio portok kezelése mint a RPI-ben vagy Arduino -ban, parancsokkal (I2C, SPI, RS232, ...)
-megszakításban futó basic programrészek lehetősége
-a sebesség növeléséhez compiler szerű program fordítás megadható basic részekre, egy fenntartott ram területre (pl. a megszakításban programokhoz)
-ha már úgyis van SPI, legyen mindjárt kettő és az egyikre egy TFT LCD kijelző(320x240) amin megjelenik a képernyő
pl. ILI9341 vezérlővel elég elterjedt és olcsó modul. (a vezérlést a sebesség és régi programok kompatibilitása miatt a hw-nek kellene tudnia), de ha csak tanuló gépet szeretnénk elég lenne ROM-ból vezérelni a kijelzőt
-PRINT méretezhető "nagyítható" karakterekkel
-gpio portok kezelése mint a RPI-ben vagy Arduino -ban, parancsokkal (I2C, SPI, RS232, ...)
-megszakításban futó basic programrészek lehetősége
-a sebesség növeléséhez compiler szerű program fordítás megadható basic részekre, egy fenntartott ram területre (pl. a megszakításban programokhoz)
-ha már úgyis van SPI, legyen mindjárt kettő és az egyikre egy TFT LCD kijelző(320x240) amin megjelenik a képernyő
pl. ILI9341 vezérlővel elég elterjedt és olcsó modul. (a vezérlést a sebesség és régi programok kompatibilitása miatt a hw-nek kellene tudnia), de ha csak tanuló gépet szeretnénk elég lenne ROM-ból vezérelni a kijelzőt
- Bali
- Alapító tag
- Hozzászólások: 2503
- Csatlakozott: 2012.01.06. 12:34
- Tartózkodási hely: Budapest III.
- Kapcsolat:
Re: ZX85
Dani írta: Ezeknek egy része már nekem is eszembe jutott, sőt, tervbe van véve. Egyelőre hadd legyen meglepetés, hogy melyek.
Addigis, a legfrissebb változat. Azt hiszem, kijavítottam minden konzol bugot, és a betűnkénti bevitel lett a default (ez már így is marad). Felmatricáztam egy billentyűzetet, úgyhogy kezdődhetnek az emberkísérletek!
Visszakapcsolni hagyományos tokenes módba Extend+space-szel lehet, ha K módban ütsz egy space-t, onnantól lehet betűnként gépelni.
-= Bali =-
(c) 1983-2017 Evil-Soft
(c) 1983-2017 Evil-Soft