Enterprise Forever
:HUN => Programozás => BASIC => Topic started by: szipucsu on 2019.February.15. 22:29:03
-
Lehet arra valami egyszerű trükk, hogy a basic program megállapítsa magáról, hogy eredeti változatban vagy zzzippel lefordítva fut éppen? Persze valami ciklussal és a közben eltelt időből megállapítható, a zzzippelt vagy a basic program fut-e. Nincs valami memóriacím vagy valami, amiből egy IF-fel el lehet dönteni?
Arra lenne pl. jó, hogy a program basicben átugorja a várakozásokat, zzzippelve meg nem.
-
mivel a zzzip csak egész számokat kezel, csinálj egy osztást ami nem egész számot hoz létre, majd ellenőrízd le. ha egész szám, akkor a zzzippelt fut
-
mivel a zzzip csak egész számokat kezel
Tényleg, hogy erre nem gondoltam!
A legegyszerűbb:
IF PI>3 THEN LET ZZZIP=0
-
Meglepő dolgot tapasztaltam. Néhány sor végére odatettem ! után megjegyzést, és így már nem fordította le a Zzzip, nem létező sorszámokban hibát jelzett. Például ilyesmi sor volt:
2340 CASE "x" !extra life
A ! jeles részeket kitöröltem, utána már lefordította.
-
Egy ilyen sor is kifektette a Zzzipet:
1460 FOR WADE=1 TO(100*SPEED-DIF*((120+PLUSIDO)-IDO))*ZIP
Nem is az adott sorban jelezte a hibát, hanem teljesen másik sor fordításakor jött elő, és nem valós sorszámot írt hibás sornak. Talán a címkék fogyhattak el addigra.
Ha a műveleteket szétszedtem több sorba, már ment.
-
Érdekes dologra jöttem rá. A Zzzippel lefordított program basic betöltőjét nem lehet sokáig tovább bővíteni. Kipróbáltam, hogy az elejére betettem jó sok sort, amiben TEXT és PRINT utasítások voltak, már nem indult el a Zzzippel lefordított program, de betöltődött, és a rendszer eléggé instabil lett.
Ez kár, mert a basic betöltőhöz hozzáírogatva lehetne pl. feliratokat, rajzokat tenni a képernyőre. Így is lehet biztos, csak nem túl sokat.
Fura, hogy a betöltő hossza is számít, hiszen úgyis felülíródik később, gondolom.
-
erre annak idején én is rájöttem, és zavart is.
olyat nem lehet hogy először van egy betöltő, ami rajzol, aztán betölti a zip betöltőjét?
de lehet hogy ezt is próbáltam annak idején :)
-
Több lépcsős /fájlos/ BASIC program ?
Esetleg az EDIT x használva?
Anno próbálgattam programozni úgy.
De mivel nem jöttem rá hogyan lehet változókat átvinni ezért el is hagytam.
-
olyat nem lehet hogy először van egy betöltő, ami rajzol, aztán betölti a zip betöltőjét?
Már amennyire rájöttem, nem marad meg a kép a következő fájl betöltése közben. Nem tudom pontosan, egy fájl betöltése milyen csatornákat zár be, pl. a videócsatornákból mit zár be, mit nem, de ezzel volt a gond szerintem.
Pedig jó kis betöltőképet szerkesztettem az Entersnake-hez, szép színes feliratokkal.
Megpróbálom majd amennyire lehet, egyszerűsíteni a programot, hátha ha kisebb lesz, akkor jó lesz. Jó lenne tudni, mi az a mérethatár, amibe bele kell férnie a Zzzip betöltőnek. Igaz, szerkesztés közben úgyse tudná semmi kijelezni, mennyit kellene még lefaragni a programból.
Esetleg az EDIT x használva?
Sajnos a Zzzip nem támogat semmi ilyesmit, nem lehet semmi más a memóriában. :(
Anno próbálgattam programozni úgy.
De mivel nem jöttem rá hogyan lehet változókat átvinni ezért el is hagytam.
Biztos van rá szobatisztább megoldás is, de pl. így is:
800 SET CHARACTER 126,A,B,C,D,E,F !azok a változók, amiket át akarsz vinni a másik programba
810 SET KEY DELAY G
820 SET KEY RATE H
830 SET BORDER I
840 CHAIN 2
A másik program pedig SPEEK segítségével kiolvassa ezeknek a változóknak az értékét.
De mintha a CHAIN/EDIT után is lehetett volna változóneveket megadni, már nem emlékszem.
-
Már amennyire rájöttem, nem marad meg a kép a következő fájl betöltése közben. Nem tudom pontosan, egy fájl betöltése milyen csatornákat zár be, pl. a videócsatornákból mit zár be, mit nem, de ezzel volt a gond szerintem.
Pedig jó kis betöltőképet szerkesztettem az Entersnake-hez, szép színes feliratokkal.
Ajánlanám a BASIC "Happy Numbers","Happy Letters " betöltőjét.
Ezekben találsz megoldást.
-
800 SET CHARACTER 126,A,B,C,D,E,F !azok a változók, amiket át akarsz vinni a másik programba
810 SET KEY DELAY G
820 SET KEY RATE H
830 SET BORDER I
840 CHAIN 2
A másik program pedig SPEEK segítségével kiolvassa ezeknek a változóknak az értékét.
De mintha a CHAIN/EDIT után is lehetett volna változóneveket megadni, már nem emlékszem.
Én is ilyesmivel próbálkoztam simán POKE, PEEK csak még nem értettem annyira a dolgokhoz.
És ha túl sok EDIT volt már ellapozta az aktuális szegmenst.
-
Sajnos a Zzzip nem támogat semmi ilyesmit, nem lehet semmi más a memóriában. :(
szegmenst lehet foglalni. kb minden zippelt játékomban foglalt szegmensre töltöttem be az adatokat. sprite adatokat, a szövegeseimben a pályák rajzát stb.
persze ezeket gépi kódból lehet elérni, vagy peek-el.
pl. a szövegeseimben a pálya rajza egy saját editorból jött (ami sajnos elveszett), ezt betöltöttem egy szegmensre, és peek-el kiolvasva kirajzoltam.
-
BASIC ben lehet tölteni a következő programot mint a demó kazin.
Ezt a Zzzip nem fordítja le?
-
BASIC ben lehet tölteni a következő programot mint a demó kazin.
Ezt a Zzzip nem fordítja le?
Mármint hogy pl. a
2000 RUN "filename"
sorral rendelkező programot lefordítja-e? Még nem próbáltam. De lehet, hogy elfogadja, de egy másik Zzzippel fordított programot biztos nem tud betölteni. Bár itt (http://ep128.hu/Ep_Util/Zzzip.htm) ez van:
RUN
Ezzel a paranccsal a lefordított program újraindítható (az elejétől, vagy a kijelölt sorszámtól). Egy másik (BASIC vagy lefordított) program betöltésére és futtatására is használható, de egyik programból a másikba történő paraméterátadás már nem lehetséges.
-
Mármint hogy pl. a
2000 RUN "filename"
sorral rendelkező programot lefordítja-e? Még nem próbáltam. De lehet, hogy elfogadja, de egy másik Zzzippel fordított programot biztos nem tud betölteni. Bár itt (http://ep128.hu/Ep_Util/Zzzip.htm) ez van:
Igen.
RUN
Ezzel a paranccsal a lefordított program újraindítható (az elejétől, vagy a kijelölt sorszámtól). Egy másik (BASIC vagy lefordított) program betöltésére és futtatására is használható, de egyik programból a másikba történő paraméterátadás már nem lehetséges.
Floppy-s verzióban?
Ugyan úgy mint a Rekord tábla, TOP 10, Hi-score.
Változók fájba ki, program 2. /következő/ rész betöltése, változók betöltése.
-
Változók fájba ki, program 2. /következő/ rész betöltése, változók betöltése.
Igen, úgy tuti meg lehet csinálni.
Viszont nem tudom, egyik Zzzippel fordított programból betölthető-e másik Zzzippel fordított program. Már az első program is lefoglal magának valami helyeket a memóriában, és ha erre rátöltünk egy másik Zzzippelt programot, azt lehet, nem szereti a gép. (Benne van a leírásban is, hogy nem lehet semmi rezidens program a tárban Zzzippel fordított program betöltésekor.) De itt a RUN parancsnál azt írja, betölthető Zzzippelt program is, szóval ki kell próbálni, hátha mégis működik.
Gondolom, ilyesmit akarsz, hogy pl. 500 pályás Entersnake játék 500 pályája nem fér bele egyetlen programba, és a 30. pálya után betölti a következő 30 pályát tartalmazó játékot, de ehhez elmenti egy fájlba az addig elért pontszámot, az életek számát és hogy melyik botkormány van beállítva. De ilyenhez azt is elég megcsinálni, hogy csak a pályákat töltse be fájlból.
-
Gondolom, ilyesmit akarsz, hogy pl. 500 pályás Entersnake játék 500 pályája nem fér bele egyetlen programba, és a 30. pálya után betölti a következő 30 pályát tartalmazó játékot, de ehhez elmenti egy fájlba az addig elért pontszámot, az életek számát és hogy melyik botkormány van beállítva. De ilyenhez azt is elég megcsinálni, hogy csak a pályákat töltse be fájlból.
Nem erre gondoltam.
És igen a pályákat tölti be.De erről beszéltünk már.
Hanem mint az "észak és dél" vagy mint azok a szerepjátékos könyvek.
A fejezet végén akár választhatód vagy választ a játék egy következő pályát.
Ami más más megoldást igényel.
-
Néha furán működik a Zzzip. Egy programot korábban még lefordított, de amikor beletettem MIN(58,TB+20) függvényt, a fordításnál egy teljesen másik sorszámnál jelzett hibát. Ha a MIN-t kivettem, újra jó lett. Ez miért lehet? Van valami korlátozás a függvények használatára?
-
Érthetetlen módon nem működik a színváltós vezérlőkódos függvény a Zzzippel megfelelően.
10 GRAPHICS ATTRIBUTE
20 PRINT #101,AT 2,2:I$(1)&"TEXT "&I$(2)&"ENTER"&I$(3)&"PRISE"
30 PRINT #101,AT 4,2:I$(4)&"128"&I$(5)&" kilobytes"
100 DEF I$(X)=CHR$(27)&"I"&CHR$(X)
A basic program kimenete:
[attach=1]
Zzzippel fordítva:
[attach=2]
Az 1-s és a 4-es színkódot nem is nullának értelmezi, hanem az utánuk lévő szöveget sem írja ki, mert a helyükre kerül a következő szöveg.
Ezek szerint csak Zzzip nélküli programokban érdemes ebben az I$() - DEF I$(x) formában használni. DEF-mentes módszerrel használható. Biztos valami függvényes korlátozás lehet ez a Zzzipben.
Egyébként probléma megoldva, mert ezzel a módszerrel a Zzzippel is jól működik:
5 STRING *3 I$(0 TO 8)
6 FOR I=0 TO 8
7 LET I$(I)=CHR$(27)&"I"&CHR$(I)
8 NEXT
10 GRAPHICS ATTRIBUTE
20 PRINT #101,AT 2,2:I$(1)&"TEXT "&I$(2)&"ENTER"&I$(3)&"PRISE"
30 PRINT #101,AT 4,2:I$(4)&"128"&I$(5)&" kilobytes"
Persze ettől még érdekes lenne megfejteni, miért nem jó a DEF-es módszer a Zzzipnek.
-
Több mint valószínű a ZZZip a ludas.
A ZZZip V1.1 még rosszabb.