Enterprise Forever

:HUN => Programozás => BASIC => Topic started by: szipucsu on 2019.February.15. 22:29:03

Title: Zzzip
Post 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.
Title: Re: Zzzip
Post by: endi on 2019.February.15. 22:50:51
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
Title: Re: Zzzip
Post by: szipucsu on 2019.February.15. 23:33:57
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
Title: Re: Zzzip
Post by: szipucsu on 2019.March.18. 12:05:04
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.
Title: Re: Zzzip
Post by: szipucsu on 2019.March.20. 15:12:31
Egy ilyen sor is kifektette a Zzzipet:

Code: [Select]
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.
Title: Re: Zzzip
Post by: szipucsu on 2019.September.12. 15:33:16
É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.
Title: Re: Zzzip
Post by: endi on 2019.September.12. 15:42:43
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 :)
Title: Re: Zzzip
Post by: Ferro73 on 2019.September.12. 16:59:37
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.
Title: Re: Zzzip
Post by: szipucsu on 2019.September.12. 17:46:20
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. :(

Quote
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.
Title: Re: Zzzip
Post by: Ferro73 on 2019.September.12. 17:57:56
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.
Title: Re: Zzzip
Post by: Ferro73 on 2019.September.12. 18:02:15

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.
Title: Re: Zzzip
Post by: endi on 2019.September.12. 19:39:33
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.
Title: Re: Zzzip
Post by: Ferro73 on 2019.September.13. 16:53:43
BASIC ben lehet tölteni a következő programot mint a demó kazin.
Ezt a Zzzip nem fordítja le?
Title: Re: Zzzip
Post by: szipucsu on 2019.September.13. 20:21:00
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:
Quote
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.
Title: Re: Zzzip
Post by: Ferro73 on 2019.September.13. 23:38:53
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.
Quote
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.
Title: Re: Zzzip
Post by: szipucsu on 2019.September.14. 11:50:18
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.
Title: Re: Zzzip
Post by: Ferro73 on 2019.September.14. 12:32:37
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.
Title: Re: Zzzip
Post by: szipucsu on 2021.February.27. 15:29:56
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?
Title: Re: Zzzip
Post by: szipucsu on 2024.April.05. 08:08:17
Érthetetlen módon nem működik a színváltós vezérlőkódos függvény a Zzzippel megfelelően.

Code: [Select]
  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:
Code: [Select]
    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.
Title: Re: Zzzip
Post by: Ferro73 on 2024.April.05. 19:59:42
Több mint valószínű a ZZZip a ludas.
A ZZZip V1.1 még rosszabb.