Ugyan igy is lehet csak pár hexa szám más lesz :)
(magyarázza el valaki, hogy a 910-es sornál miért nem jelez INVALID END OF BLOCK hibát???)
(magyarázza el valaki, hogy a 910-es sornál miért nem jelez INVALID END OF BLOCK hibát???)
Na, de õ pont azt kérdi, hogy miért nem jelez hibát :-D
(magyarázza el valaki, hogy a 910-es sornál miért nem jelez INVALID END OF BLOCK hibát???)
(magyarázza el valaki, hogy a 910-es sornál miért nem jelez INVALID END OF BLOCK hibát???)
Én az elõbbit tartom valószínûnek, hiszen a gépkönyvben is alkalmazzák az END IF-et IF eljárás nélkül.
mivel a GOTO-k miatt soha nem jut el ide a programvégrehajtása, ezért nincs hibaüzenet.
Hmmm, fogtunk egy újabb IS-BASIC bugot? :-)
Az END SELECT is ezt csinálja.
Hmmm, fogtunk egy újabb IS-BASIC bugot? :-)
Az END SELECT is ezt csinálja.
Egyáltalán létezik más gépek basic-jében pl. az IF, a DEF, mint eljárás? Az END DEF, END IF, END WHEN mintha EP specifikusak lennének. Hiába, az EP ilyet is tud, amit más gép nem.
A hibakezelés megint csak az IS-BASIC kiváltsága!
Szerény feltételezésem szerint ez a program arra jó, hogy ha cartridge nélkül hasznájuk a gépet, és betöltjük azt a progit, akkor kb. úgy fog mûködni a gép, mintha benne lenne a cartridge. Jól gondolom?
A másik, hogy nem lesz teljesen olyan így a gép, mintha a cartridge lenne bent, mivel maga a basic így elfoglal némi helyet a gépben ott, ahol nem foglalna, ha a cartridge lenne bent. Ez milyen következményekkel jár? Nem minden program fog emiatt futni? Mely programok nem? (pl. a Zzzippel fordítottak ravaszak lehetnek a memóriafoglalás szempontjából.) Gondolom, vannak programok, melyek pont azt a területet használják, amit maga a cartridge, mint hardver nem foglal el, viszont a szoftver itt terpeszkedik.
Egyébként az ALLOCATE utasítás is érdekes. Értem, mire szolgál, de ha elhagyjuk, végsõ soron akkor is ugyanúgy fut a basic program, nem?
Tisztelt Szerkesztõség
Biztos önök is sokat bosszankodtak azon, hogy a Basic EXT utasítás után
mindig GOTO kell ! Itt a megoldás :
Ha az ASMON-ban megcsináltuk a leírtakat, akkor már csak be kell égetni
a módosított BASIC-et, vagy az EPDOS ROMLOAD paranccsal betölteni.
A módosításhoz sok sikert kiván:
ZOZOSOFT&APUCI
-[O] B1 [ENTER] xx [ENTER] xx:A BASIC szegmens
-[C] 4000 [ENTER] 7FFF [ENTER] 8000 [ENTER]
-[C] BA42 [ENTER] BA7F [ENTER] BA3F [ENTER]
-[C] BA5A [ENTER] BA7B [ENTER] BA57 [ENTER]
-[M] BA76 [ENTER] 0D 0A F7 1A DF D7 16 00 C9 [ESC]
-[M] 8095 [ENTER] 3C [ESC]
-[M] 9850 [ENTER] C3 78 FA [ESC]
-[S] 8000 [ENTER] BFFF [ENTER] BASIC.ROM [ENTER]
10 PROGRAM "extdemo.bas"
100 FOR I=1 TO 5
110 READ NEV$
120 CALL HIV(NEV$)
130 NEXT
140 DEF HIV(A$)
150 TEXT
160 PRINT "ext ""help "&A$&""""
170 EXT "help "&A$
180 WAIT 2
190 END DEF
200 DATA "",wp,basic,exdos,isl1985
Házifeladat ezek alapján az IS-BASIC 2.0-ban kijavítani az EXT hibát! :-)Úgy látom senki nem csinálta meg a házifeladatot :(
Egyébként soha nem értettem, mi a különbség a POKE és a SPOKE között. Ráadásul a SPOKE után az elsõ szám majdnem mindig 255 volt, látszólag felesleges. Mi van, ha 255 helyett valami mást írunk ilyen esetben?Úgy látom az RTFM már régebben is rádfért volna! :-D
Ahoj, valaki nem emlékszik rá, mit kell bepötyögni készenléti módban, hogy ne az alapértelmezett zöld betükkel irjon a gép, hanem mondjuk világoskék? Valamelyik könyvben régen olvastam, de már nem emlékszem rá. Köszi.Kézikönyv (http://www.ep128.hu/Ep_Konyv/Reference.htm)
Végülis a SET INK megteszi csak nem emlékszem hogy ha a 101 az alapértelmezett csatorna, miért is kell megadnom 102-t.Valóban a 101 az alapértelmezett, de az a grafikus lap. a Szöveges lap, amit a BASIC használ, az a 102-es, ezért kell megadni.
Lehet butaság (10 évet kihagytam) de valami olyasmire emlékszem hogy a 40 karakteres VIDEO MODE 0 esetén csak 2 szin használható...4 szín használható, a 0-127 kódú karakterek az elsõ 2 szín párosával jelennek meg, a 128-255 karakterek meg a második párossal.
4 szín használható, a 0-127 kódú karakterek az elsõ 2 szín párosával jelennek meg, a 128-255 karakterek meg a második párossal.
Ezt használja ki az EXOS, így ha SET #102:INK 2, akkor már a második párost fogja használni. Ez alapban fekete alapon piros betû.
80 karakteres módban pedig 4 színpáros használható.
Azt nem szeretem viszont, hogy képernyõtörlés (TEXT) után visszaáll az alapfelállás, de ha a CLEAR SCREEN-nel törlünk képernyõt, akkor asszem nem...Mivel a TEXT az nem képernyõtörlés. Az a szöveges alapállapot beállítása. Bezárja a megnyított videó lapokat, és megnyit egy új alapértelmezett szöveges lapot a 102-es csatornára.
Mivel a TEXT az nem képernyõtörlés. Az a szöveges alapállapot beállítása. Bezárja a megnyított videó lapokat, és megnyit egy új alapértelmezett szöveges lapot a 102-es csatornára.Talán annyi a hátránya a laikus felhasználó (mint pl. én :D ) számára, hogy egy gombnyomás (F6) és letörli a képernyõt, és ez rögzül, meg ki fog ilyen hosszú szöveg begépelésével (clear screen) bíbelõdni. Egyébként már mondták, hogy jó sokat kell gépelni az Enterprise basicben, míg más gépeknél sokkal rövidebbek a kulcsszavak (pl. cls). A SOUND parancs paraméterei is elég terjedelmes szavak után adhatók meg.
A CLEAR pedig egy létezõ videó lapra küldi ki a képernyõtörlés kódját.
Talán annyi a hátránya a laikus felhasználó (mint pl. én :D ) számára, hogy egy gombnyomás (F6) és letörli a képernyõt, és ez rögzül, meg ki fog ilyen hosszú szöveg begépelésével (clear screen) bíbelõdni. Egyébként már mondták, hogy jó sokat kell gépelni az Enterprise basicben, míg más gépeknél sokkal rövidebbek a kulcsszavak (pl. cls). A SOUND parancs paraméterei is elég terjedelmes szavak után adhatók meg.
Meg ha átdefiniálom az egyik funkcióbillentyût clear screen-e, akkor egy reset után elfelejti a gép. Tényleg, van valami utasítás, amivel le lehet kérdezni, hogy egy funkcióbillentyû éppen mire van definiálva? (Ha pl. nem akarom kipróbálni valamiért.)
hogy lehet két sztringet egybe fûzni?
Érdekes egyébként, hogy ha program üzemmódban írjuk be, hogy ok, akkor reklamál a gép, hogy ezt a "parancsot" csak parancs üzemmódban lehet kiadni.A Tippek és Trükkök-ben van tárgyalva a téma, hogyan van megadva melyik utasítás lehet programban melyik parancsban, stb
Az gondolom közismert, hogy eredetileg az IS-BASIC-ben hibás az EXT utasítás:
...
A példa esetén egy 25 GOTO 30 utasítással ki lehet kerülni a hibát.
mindig kell-e az EXT után GOTO.Mindig ha egy blokk belsejében van (FOR-NEXT, DEF-END DEF, IF-END IF, DO-LOOP, stb).
És csak akkor, ha közvetlen a blokklezáró utasítás (LOOP, NEXT, END IF...) elõtt van az EXT, vagy amúgy is?Amúgy is.
rossz címre mutat az sp? és ez hogy javul meg a goto-tól?Nem a Z80-as veremrõl van szó, hanem a BASIC veremrõl. Részletesen lásd az IS-BASIC ROM címû könyvben. (http://www.ep128.hu/Ep_Konyv/Isbasic.htm#6)
A Gombócfalót TVC basicról írtam át (újraírtam) IS basic-ra, basic ujjgyakorlatként, nem nagy dolog... :smt024Ez megvan valahol? Érdekelne. (Mármint az EP-s változat.)
Ez megvan valahol? Érdekelne. (Mármint az EP-s változat.)Nincs meg nektek? :shock:
Ez megvan valahol? Érdekelne. (Mármint az EP-s változat.)Na Winfos.. :ds_icon_frown: Sajnos ACE-ban volt meg ezért ide léptem át, mert a Linuxot nem tanítottam rá.
Ha jól emléxem, a TVC-s változatban van néhány poke utasítás, azokat hogyan írtad át EP-re?
Meg ott sokszínû volt a képernyõ. Azon hogyan lehet megcsinálni, hogy felismerje a gombócokat meg akadályokat?
Itt van, átalakítottam RAR-ba. Ha nincs fenn Lacikánál, akkor majd ráijesztek.Köszi!
Köszi!Azért kicsit fellengzős voltam. :oops: Tovább tartott.
A megjegyzés szerint egyetlen délután megcsináltad az egészet?
Az elején miért van OUT 191,12 helyett OUT (181+10),12? Hadd dolgozzon a Z80 egy összeadás erejéig? :DBocs, de ez nám átirat, hanem "remake"! ;-)
Érdekes, hogy CALL-DEF eljárásokat tettél bele. Ha jól tudom, TVC-n ilyen nem volt.
(Valahol mintha már találkoztam volna ezzel az átirattal, de Lacinál nem találtam. Persze lehet, hogy csak álmodtam...)Lacinál én sem látom. :(
Na Winfos.. :ds_icon_frown: Sajnos ACE-ban volt meg ezért ide léptem át, mert a Linuxot nem tanítottam rá.
Itt van, átalakítottam RAR-ba. Ha nincs fenn Lacikánál, akkor majd ráijesztek. Addig is tanulmányozd, hátha te megérted, mert én már tök kijöttem a Basicból.
Egy kicsit most én is csaltam. (Ne csak má mindig ők!) :razz: :lol:Akkoriban is bújkált már bennem a huncutság. :smt098
Akkoriban is bújkált már bennem a huncutság. :smt098
Hogy tetszik?
Kilistáztam, és mit látok? Nem színészek vagy zenészek neveit, hanem „kiválló” politikusainkét.Azokat nem nehéz! :smt044
No akkor most majd jól megelőzöm őket! :lol:
Hogy tudok az Emulátorból Basic programot TXT-be menteni? :?:open #1:"lista.txt" access output
llist #1Ha itt egy L-lel írom a LIST-et, az különbözik valamiben a két L-estõl?
open #1:"lista.txt" access output
llist #1
close #1
Az emuban hol van a kettõs kereszt? :?:shift+3 (német gépen kereszt, angol gépen fontjel. Az egyik fontos, a másik keresztes. :D )
Tessék:
shift+3 (német gépen kereszt, angol gépen fontjel. Az egyik fontos, a másik keresztes. :D )Lehet, nem voltam világos. Szóval ha fontot írsz a csatornaszám elé, az egyenértékû a kereszttel, tehát ha az van a shift+3-ason, akkor azzal fog mûködni.
Egyébként szerintetek van olyan PC-s basic, amibe aránylag könnyû az IS-BASIC-bõl "átírni" egy programot?
Ha viszont érted a progi mûködését, akkor akármilyen BASIC-ba berakod, akár Visual Basic-ba is.Akkor ha írtam egyszer EP-re basic-ben egy programot, akkor azt elméletileg könnyen meg tudnám írni valami PC-s basic-ben is?
Akkor ha írtam egyszer EP-re basic-ben egy programot, akkor azt elméletileg könnyen meg tudnám írni valami PC-s basic-ben is?
Egy példa:Nagyon szokatlan, hogy nincs a soroknak száma. Így a GOTO-t sem lehet használni. Persze valamirevaló programozónak ez nem is nagyon kell állítólag. :D
Nagyon szokatlan, hogy nincs a soroknak száma. Így a GOTO-t sem lehet használni. Persze valamirevaló programozónak ez nem is nagyon kell állítólag. :DA sorok számozása csak a nagyon basic (alap) basic-ekben szokásos. Egyébként sorszám nélkül is van goto, csak címkével, hasonlóan az assembly-ben lévő címkékhez.
Quote from: szipucsuNagyon szokatlan, hogy nincs a soroknak száma. Így a GOTO-t sem lehet használni. Persze valamirevaló programozónak ez nem is nagyon kell állítólag.A sorok számozása csak a nagyon basic (alap) basic-ekben szokásos. Egyébként sorszám nélkül is van goto, csak címkével, hasonlóan az assembly-ben lévõ címkékhez.
Egy példa:
EP128-as basic program (Tippek és Trükkök könyvbõl):
Beraktam a programodat EBBE de valami baja van a screennel.Hát ez elég tág fogalom, attól függ, mit raktál mibe :ds_icon_cheesygrin: Az elsõ lista EP IS-BASIC, emulátorban kipróbálva (EP32). A második QBasic, tele van spec. Microsoft féle cél-utasítással mint pl a Screen. Eddig még nem láttam PC-n két egyforma BASIC-ot amiben lett volna két egyforma grafikus pontkirakó utasítás :)
Hát ez elég tág fogalom, attól függ, mit raktál mibe :ds_icon_cheesygrin: Az elsõ lista EP IS-BASIC, emulátorban kipróbálva (EP32). A második QBasic, tele van spec. Microsoft féle cél-utasítással mint pl a Screen. Eddig még nem láttam PC-n két egyforma BASIC-ot amiben lett volna két egyforma grafikus pontkirakó utasítás :)
A sorok számozása csak a nagyon basic (alap) basic-ekben szokásos. Egyébként sorszám nélkül is van goto, csak címkével, hasonlóan az assembly-ben lévõ címkékhez.Maradjunk abban, hogy az igazi BASIC az sorszámos, és interpreteres. A többi az csak amolyan utánzat :-)
Ha hirtelen ilyen ábrát tudtam volna rajzolni az EP-en, akkor ilyen listát csapok össze :ds_icon_cheesygrin: Errõl a BASIC-ról nem hallottam még, bár nem vagyok BASIC párti, a Delphi-vel jól elvagyok.
Errõl jut eszembe. Ha összehasonlítjuk a különbözõ gépek különbözõ BASIC nyelveit akárhány bites, nekem feltûnik valami. A fejlesztõk igyekeztek a szótárból kikeresni a lehetõ legtöbb féle szinonímát egy parancsra, nehogymár ugyanaz legyen mint a többi.Éppen ezért a kezdeti burjánzás után szabványosították a nyelvet. Az EP-nél külön ki is volt emelve a tulajdonságoknál, hogy már ezt az "ANSI Standard" BASIC-et "beszéli"!
Zozó, ilyet láttál már? :DBár ez nem igazán tartozik ehhez a témához, de már van újabb ep128emu 2.0.6 beta verzió is (lásd itt (http://enterpriseforever.com/emulatorok/ep128emu_205-t325.0.html;msg12313#msg12313)). :)
Át tudnád ezt EP-re írni? :)epgraph.bas - a program IS-BASIC-re átírva, 16 színű módban (lehetne 4 színű is, akkor nagyobb lenne a felbontás, de a színek számát csökkenteni kellene). Mivel nagyon lassan fut, még emulátoron 200 MHz-es Z80-at beállítva és a memória időzítést kikapcsolva is, ezért ez egy kissé "lebutított" változat, amelyben 16-szor kevesebbszer fut le a ciklus.
epgraph.lua - ez csak érdekesség, ep128emu Lua script verzió (a debuggerben lehet futtatni). Még így is viszonylag lassú (nekem a Windowsos emulátorral kb. 9-10 másodperc), de az idő jelentős részét a vonalrajzolás teszi ki. Bár ez a program bonyolultnak tűnhet, ez csak az EP képernyőjére rajzoló rutinok miatt van; az eredeti BASIC programot egyébként minimális változtatásokkal át lehetett írni.Animált változat :) Indítása: "Load from file", "Run", és "Step".
Az igen! :cool:Ebből a számolás kb. 1 másodperc, a többi a vonalak rajzolása. :)
A lua 10 másodperc alatt kirajzolta.
EP32-n nem tudom betölteni az egraph.bas-okat.Próbáld ep128emu-val :)
Mostanában txt-ben szoktam IS-BASIC kódokat csinálni. Win alatt Notepad-al könnyebb a kódot szerkeszteni és az EP32 be tudja olvasni.A Zozosoft által leírt módon listázott programok:
Elfelejtettem, szólhattatok volna, hogy tape rendszerben az EXOS errorcode akár "bad command or filename"-t is jelenthet :ds_icon_cheesygrin:Ez EP32 magnó emuláció bug.
Bár ez nem igazán tartozik ehhez a témához, de már van újabb ep128emu 2.0.6 beta verzió is (lásd itt (http://enterpriseforever.com/emulatorok/ep128emu_205-t325.0.html;msg12313#msg12313)). :)Természetesen feltettem azóta. De ezzel sem csíkozódik. (Sose legyen nagyobb problémám. :D )
Amúgy 1 GHz-es Z80 sebességnél 5 perc alatt még nem alakult ki az ábra. Talán meg kellene néznem azt az új emut :)A sebesség azzal sem lesz feltétlenül jobb (viszont pontosabb és többet tud :)), de az EP32-ben sem lehet 200 MHz-nél nagyobb Z80 órajelet beállítani. Az ep128emu-ban a Z80 frekvenciát 200 MHz-re állítva, és a memória időzítés emulációját kikapcsolva nekem kb. 85% a sebesség, és így az epgraph2.bas futása több, mint 1 óra után még mindig nem fejeződött be, tehát igazi gépen ez 40-50 óránál is több lehet.
Ebéd elõtt kezdte rajzolni és vacsora utánra lett készen. :) De hogy örültünk neki, meg csodáltuk hosszú perceken át a sötétkék vonalakból álló ábrát! ;-)És utánna milyen jó érzés volt kiadni a :VSAVE parancsot kétnyelvû gépen és elmenteni, hogy a :VLOAD-al egy másodperc alatt megjelenjen :)
És utánna milyen jó érzés volt kiadni a :VSAVE parancsot kétnyelvû gépen és elmenteni, hogy a :VLOAD-al egy másodperc alatt megjelenjen :)Jaja! :)
Hungry men - Multiplayer "játékélménnyel" (külsõ botkormánnyal mûködne, de az emulátoron valamiért csak fel-le ment nekem)
Csak nekem nem mûködik ez rendesen emulátoron a külsõ botkormánnyal, vagy másnak se? A játékban lehet a hiba?
Nem tudom, másnak is feltûnt-e már, hogy a HOLD gombra nem mindig reagál a gép. Ezt eddig csak BASIC program listázásakor sikerült tetten érnem, valamikor eléggé zavaró. Az emulátorban jelentkezik a probléma, de szerintem igazi EP-n is.
Jó, hogy van az emuban az F10, ez mindig mûködik. Érdemes kipróbálni BASIC-ben, hogy ha hosszabb ideig nyomkodjuk a HOLD-at folyamatosan, elõbb-utóbb figyelmen kívül hagyja a gép.
Így ha pl. írok egy basic programot valamilyen konfigurációra, akkor az nem biztos, hogy minden konfigurációnál ugyanazt fogja produkálni?
EXT "HFONT"Viszont ha HFONT bõvítés nélküli gépen futtatjuk a programot, akkor nem fog megfelelõen mûködni (sõt hibaüzenettel le is áll az EXT "HFONT"-ra). Valami olyan beállítás kéne, amivel mindenféle gépen egyformán fut a program.
(EPDOS esetében)
Karakteres képernyõn lehet valami trükkel kettõnél több színt használni egyszerre?Négyet tudsz használni, pontosabban két párt: 0/1 vagy 2/3 papír/tinta szín. 80 karakteres módban pedig 4 párt.
Basic programot lehet lefordítani binárisra?
Ez utóbbit 30-40 "szobássá" fejleszthetnéd... :)Labirintus, amiben el lehet tévedni? Nem rossz ötlet. Könnyebb lenne, mint mozgó ellenségeket és összegyûjtendõ tárgyakat építeni be. De lehet, azzal együtt kéne 30-40 szoba...
Labirintus, amiben el lehet tévedni? Nem rossz ötlet. Könnyebb lenne, mint mozgó ellenségeket és összegyûjtendõ tárgyakat építeni be. De lehet, azzal együtt kéne 30-40 szoba...
BASIC-be be lehet egyáltalán annyi szobát programozni? Hol tárolná a gép? És ezt az egy szobát is veszett lassan rajzolja ki... Igaz, a Zzzip segítene, ha le lehet fordítani (+ megszakítások és minden tiltása a szobák kirajzolásának idejére).
Ha DATA sorokban tárolódnának a szobák, azt a Zzzip lehet, hogy nem tudná legyûrni mind.
Nem tudom, mit lehetne megvalósítani belõle...
Mondjuk winchesterrõl utántöltõs szobák gyorsan betöltõdnének.
Összegyûjtendõ tárgyaknál azt is tárolni kéne valami változókban, hogy a 40 szobák melyikében mely tárgyat gyûjtöttük már össze, hogy ne jelenjenek meg újra, hiába vannak ott a DATA sorokban a tárgyra vonatkozó adatok.
Nagyon komoly, 2011-ben IS-BASIC játék program írásának problémái!
Ötletek?
Hamikából anno csináltam olyan változatot, amivel a kevésbé ügyes játékosoknak lehetett sikerélményt szerezni.Nem keresed elõ?
Nem keresed elõ?Eddig még nem bukkantam rá :-(
Hogyan lehet az OUT 191,12 (vmi várakozás kikapcsolása) és a POKE 56,201 (megszakítások kikapcsolása) hatását visszaállítani eredeti értékre?out 191,4
out 191,4Köszi! Látom, te is jól megjegyeztél ilyen EP-s számokat. Bezzeg töribõl az évszámok nem mentek ilyen könnyen. :D
poke 56,245
Nem tudom, megoldható lenne-e valahogy, hogy csak "járható" labirintust tervezzen a gép, és aztán az irányítást átadja a játékosnak.
Itt egy (elég kezdetleges és lassú :oops:) labirintus program:Ez nagyon tetszik! :smt041
Csak érdekesség: olyan történt, hogy "beragadt" az emberke és egyetlen fal körül mászkál.
A falrajzoló eljárást nehéz lenne basicben megvalósítani?
Azt meg lehet csinálni valahogy a DISPLAY utasítással, hogy egy szöveges lap (vagy akár videólap) vízszintesen ne a képernyõ közepére kerüljön, hanem "arrébb" legyen? És így akár több videólap kerülhetne egymás mellé.Teljességgel lehetetlen :(
És így akár több videólap kerülhetne egymás mellé.Ezt csak a Windows nevû BASIC bõvítéssel lehet megcsinálni, és csak TEXT 80-ban.
És nem tudom, a kurzort lehet-e teljesen likvidálni egy szöveges lapról. Persze a cursor colour és cursor character utasításokkal igen, de akkor csak látszólag nincs ott.PRINT CHR$(27);"O";
100 DEF AKÁRMI
...
250 CALL BÁRMI
...
300 END DEF !(AKÁRMI)
310 DEF BÁRMI
...
350 END DEF !(BÁRMI)
100 DEF AKÁRMI
...
250 CALL BÁRMI
...
310 DEF BÁRMI
...
350 END DEF !(BÁRMI)
400 END DEF !(AKÁRMI)
Kicsit érdekesen mûködnek ezek a DEF blokkok.
Viszont, ha a program legelején definiálom tetszõleges értékkel a változót (pl. LET A$=""), akkor már nem jön elõ a hiba.
Mi egyébként a gyakorlati értelme, hogy END DEF után elfelejti a változót a gép?
Szóval az érdekelne, hogy a fenti SPEEK akármi helyett szerepelhetne-e egyszerûen csak 46208. Ha átírom a programban, a program ugyanúgy mûködik, ezért nem értem, mi értelme volt ilyen bonyolultan adni meg.
UI: Lehet, hogy nem OUT, hanem SET.
POKE lesz az az utasítás...Nem POKE, hanem SET! 6-os EXOS változó. (http://www.ep128.hu/Ep_Konyv/Exos.htm#176)
Nem POKE, hanem SET! 6-os EXOS változó. (http://www.ep128.hu/Ep_Konyv/Exos.htm#176)Köszi!
Ja, meg azt se találtam, hogy az egyes karakterkódok mit jelentenek, pl. az insert, delete billentyûknek mi a kódja, majd ezeket is össze lehetne gyûjteni.Az elõbbi linken lejebb mész egy lappal... :lol:
A program hangeffekteket is használ, amivel üdítõbbé (esetleg idegesítõvé?) teszi a munkát, felhasználói programok között ez üdítõ színfolt. De ha üdítõt viszünk a gép mellé és azzal véletlenül leöntjük gépünket, akkor a gépen is lesz egy üdítõ színfolt.
Továbbá, kicsit lassú az egész, ami különösen a karakterkészlet betöltésekor figyelhetõ meg.Gyorsítás:
1 ALLOCATE 9
2 CODE TOLT=HEX$("3E,01,01,80,04")
3 CODE =HEX$("EB,F7,06,C9")
a 2670-es sort cseréld ki erre:2670 CALL USR(TOLT,FONT)
a 2680-2700-as sorokat töröld ki :-)3E 01 = LD A,1 ;az 1-es csatornáról fogunk olvasni
01 80 04 = LD BC,1152 ;1152 byte-ot szeretnénk betölteni (BC=Byte Count)
EB = EX DE,HL ;a HL és a DE regiszterek értékeinek cseréje
;a DE (DEstination) címre szeretnénk tölteni az 1152 byte-ot
;a TOLT rutin hívásakor a FONT paramétert adtuk meg: CALL USR(TOLT,FONT)
;a FONT változó értéke a HL-be kerül
;ezért kell kicserélni a két regiszter értékét :-)
F7 06 = EXOS 6 ;olvasás a csatornáról
C9 = RET ;visszatérés a rutinból
a mentõ rutint ezek után te is meg tudod csinálni, annyi a különbség, hogy EXOS 6 helyett EXOS 8 kell, minden más változatlan a kódbanEz azt jelenti, hogy az utolsó elõtti szám a C9 elõtt nem 06, hanem 08 lesz? A gépi kódhoz abszolút nem értek.
Ez azt jelenti, hogy az utolsó elõtti szám a C9 elõtt nem 06, hanem 08 lesz? A gépi kódhoz abszolút nem értek.igen, mert minden más paraméter változatlan:
ennél gyorsabb nem lesz ZZZIP-pel sem, fõleg, hogy akkor a ciklusok megmaradnának, és az hiába gyorsulna fel, de attól még bájtonként olvasnád és írnád z állományt :-)A Zzzippel gyorsítást a program többi része (kurzor mozgatása, karakter kirajzolása) miatt vetettem fel. Jó az akkor így, ahogy van?
Jó az akkor így, ahogy van?igen
a mentõ rutint ezek után te is meg tudod csinálni, annyi a különbség, hogy EXOS 6 helyett EXOS 8 kell, minden más változatlan a kódbanAz Allocate utáni méretet is növelni kell!
Az Allocate utáni méretet is növelni kell!Úgy gondoltam, ez egyértelmű... :-)
a 100-as sor végén a TEXT helyett TEXT 40-et írnék...TEXT 40 napirenden.
De megeszi a Zzzip az ilyen ALLOCATE-HEX-es programokat?Simán...
100 CLOSE #0
110 SET VIDEO X 41
120 SET VIDEO Y 6
130 OPEN #0:"VIDEO:"
140 DISPLAY #0:AT 21 FROM 1 TO 6
Elõször a 0-ás helyett a 102-es csatornával próbálkoztam, egyáltalán nem mûködött a PRINT utasítás az alapértelmezett csatornára (*** Editor video channel error lett). 0-ás csatornával a PRINT már mûködik, de sima videólapot nyit csak meg, nem olyat, amibe én magam irkálhatok és adhatok ki parancsokat, így az INPUT utasítás sem mûködik rendesen a 0-ás lapra.Úgy látszik, késve, de itt egy egyszerû példa:
De igazából miért van szükség a 0-ás csatorna bezárására és újra megnyitására?Mert az EDITOR-nak az "alárendeltje" a 102-es.
Programot úgy kell írni Szipucsu, hogy vázlatot írsz közben. A papíron szerepelnie kell a változóknak és a hozzájuk tartozó rövid megjegyzésnek. Hosszú programok esetén már másképp nem lehet.Ezt hívják program specifikációnak. Amíg nem volt meg, addig nem is lehetett géphez nyúlni programozás órán :-)
Szubrutinok (DEF) esetén is jó volna felsorolásszerûen, hogy milyen rutink vannak a programban, és mi a feladatuk röviden.
Ha azt akarod, hogy egy utasításra kiírja, hogy mely változónak mi az értéke akkor a következõt ajánolm:Én arra gondoltam, hogy magukat a változókat írja ki. Pl. ki emlékszik már rá, használtam-e pl. N-t, mint numerikus változót.
Allocate-s rutinnal foglalni kell egy szegmenst, és akkor azt lehet SPOKE-ézni.
Ha jól gondolom, ezután SPOKE/SPEEK WS,X,Y paranccsal szabadon garázdálkodhatunk a kiutalt szegmensen?Igen.
És akár többször is egymás után meghívhatjuk pl.? WS1, WS2 változókra?Igen.
5. A LOOK parancs kizárólag grafikus képernyõnél mûködik, noha szöveges képernyõnél is mûködnie kellene, ahol az ASCII karaktert kelleneDe erre ott van a GET.
190 STRING *1 A$(1 TO 7719)
240 OPEN #1:"DOTCOLL.COM" ACCESS INPUT
260 FOR A=1 TO 7719
270 GET #1:A$(A)
280 NEXT
290 CLOSE #1
190 ALLOCATE 7719 ! A program legelsõ sorába lehetõleg
240 OPEN #1:"DOTCOLL.COM" ACCESS INPUT
260 FOR A=1 TO 7719
265 GET #1:A$
270 SPOKE 255,A,ORD(A$)
280 NEXT
290 CLOSE #1
Ezek után ha megszakad a program és kíváncsi vagy az értékre, akkor:Na, ez mondjuk véletlenül pont nem jó, mert a START (és a RUN is) törli a változókat. De az alapötlet jó.
START 2000
Ez tényleg ilyen egyszerû, vagy ennél azért bonyolultabb a gyakorlatban?
100 PROGRAM "Proba2.bas"
110 ALLOCATE 9
120 CODE GETSEGMENT=HEX$("F7,18,67,69,c9")
130 CODE FREESEGMENT=HEX$("4D,F7,19,C9")
140 TEXT 40
150 LET WS=USR(GETSEGMENT,0)
170 OPEN #1:"dotcoll.com"
180 FOR I=1 TO 7719
185 GET #1:A$
190 SPOKE WS,I,ORD(A$)
200 NEXT
205 CLOSE #1
210 FOR I=1 TO 7719
220 PRINT SPEEK(WS,I);
230 NEXT
999 CALL USR(FREESEGMENT,WS)
De pont a LOAD / SAVE-re mondta ZozotoolsÕ kicsoda? :oops:
De pont a LOAD / SAVE-re mondta ZozotoolsMég beszélni is tud a Zozotools? A beszédre milyen utasítással lehet rábírni?
A legvégén azt a CALL USR(FREESEGMENT,WS)-t mikor kell kiadni? Amikor a program futása befejezõdik?Igen.
Mert azt itt nem szokott, resetelni szoktam.Kilépés menüpont, mondjuk STOP-ra? :oops: (Lehet When Exception)
Érdemes lenne ezt is, meg a töltés-mentést is megcsinálni HEX$ módon?Szerintem ez a legegyszerûbb, leggyorsabb megoldás. Esetleg lehetne még az EPDOS SS,SL parancsokat is használni.
Esetleg lehetne még az EPDOS SS,SL parancsokat is használni.
Õ kicsoda? :oops:Nyomdahiba... :ds_icon_cheesygrin:
Igen.Kilépés menüpont, mondjuk STOP-ra?
Nekem az rémlik, hogy ZZZIP-pel fordítva nem mûködik a hibakezelés. Rosszul emlékszem?Nekem úgy rémlik, mûködik vele.
Kilépés menüpont, mondjuk STOP-ra?Végülis jó ötlet! Amúgy is, a basic program OUT 191,12-t használ, ami gyorsítja a gépet, és ha ezután betöltjük a Dot collectort, az is gyorsabb lesz. STOP-ra ezt is visszaállíthatná, kiléphetne és tölthetné automatikusan azt, amit éppen elmentettünk, azzal a file névvel.
Mennyi az alapértéke a 191-es IO portnak?4
De azt a HEX-es mentést-töltést bele lehetne tenni. Megírnátok, az hogyan van?Felraksz egy olyan verziót, amibe már csak ezt kell beleírni?
Felraksz egy olyan verziót, amibe már csak ezt kell beleírni?A töltõ-mentõ részek így néznének ki az eddigiek alapján, ahogy Laci leírta. Kicsit kiegészítettem. A 185-ös meg a 220-as sort kellene majd lecserélni, meg hozzáírni néhány krixkraxot CODE és CALL utasítások után, ha jól értem.
100 PROGRAM "Proba2.bas"
110 ALLOCATE x
120 CODE GETSEGMENT=HEX$("F7,18,67,69,c9")
130 CODE FREESEGMENT=HEX$("4D,F7,19,C9")
140 TEXT 40
145 INPUT PROMPT "Filename:":FN$
150 LET WS=USR(GETSEGMENT,0)
155 ! Töltés
170 OPEN #1:FN$ ACCESS INPUT
180 FOR I=1 TO 7719
185 GET #1:A$
190 SPOKE WS,I,ORD(A$)
200 NEXT
205 CLOSE #1
207 ! Mentés
208 INPUT PROMPT "Filename:":FN$
209 OPEN #1:FN$ ACCESS OUTPUT
210 FOR I=1 TO 7719
220 PRINT #1:CHR$(SPEEK(WS,I));
230 NEXT
240 CLOSE #1
999 CALL USR(FREESEGMENT,WS)
1000 RUN FN$
Valahol már volt róla szó, hogy ha sikerül OCR-ezni egy programlistát, rögtön lehet betölteni.De hivatalosan írták ezt valamelyik könyvben?
135 CODE LOAD=HEX$("DB,B3,F5,7D,D3,B3,3E,01,11,01,C0,01,27,1E,F7,06,6F,26,00,F1,D3,B3,C9")
136 CODE SAVE=HEX$("DB,B3,F5,7D,D3,B3,3E,01,11,01,C0,01,27,1E,F7,08,6F,26,00,F1,D3,B3,C9")
Híváskor paraméterben meg kell adni a szegmens számot (WS). Visszatéréskor ha az értéke nagyobb mint 0, akkor hiba volt.De hivatalosan írták ezt valamelyik könyvben?Valahol olvastam, de lehet, hogy itt a fórumon, hogy az IS-BASIC tokenizálatlan cuccot is megeszik, tehát olyan, mintha akkor gépelnéd be a sorokat.
Híváskor paraméterben meg kell adni a szegmens számot (WS). Visszatéréskor ha az értéke nagyobb mint 0, akkor hiba volt.Ebbõl kb. annyit értettem, mint a krixkraxokból. :D De remélem, mûködni fog.
A Getsegmentnél, ha nagyobb mint 255, akkor hiba volt (ez lehet megosztott szegmens lefoglalásakor is), ekkor a felsõbájt (azaz az érték/256) a hibakód.
LET WS=USR(GETSEGMENT,0)
Ezt a program eleje felé kell egyszer kiadni, utána SPOKE és SPEEK-kel lehet bûvészkedni vele?
Igen, amíg vissza nem adjuk, addig a miénk.Code: [Select]LET WS=USR(GETSEGMENT,0)
Ezt a program eleje felé kell egyszer kiadni, utána SPOKE és SPEEK-kel lehet bûvészkedni vele?
Jééé, az IS-BASIC betölt TXT fájlt is!De MERGE-dzsel nem lehet betölteni, érdekes, meg VERIFY-ra sem mûködik, Invalid file format. De LOAD-ra, START-ra, RUN ""-ra mûködik.
Egy IF kell, hogyha 255 nagyobb a kapott WS, akkor hiba.Elsõre a WS értéke 249 volt.
Valószínû, egyszer szabad csak egyszerre a programot lefuttatni, vagy minden futtatás végén FREESEGMENT-ezni is kéne.
Nem mintha a kérdés nagy szakértõje lennék, de a snapshot-ban elfogyott a memória (F8-al kérj INFO-t). Mindíg amikor elindítod a programot, újabb szegmenst foglalt le, és sokat próbálkoztál vele, anélkül, hogy felszabadítottad volna.így van, ezért van a Freesegment. A szám azért lett 255-nél nagyobb, mert felsõbájtban a hibakódot adja vissza, ami alap esetben (ha sikerült a foglalás) 0.
Ha minden igaz ez kell bele:Code: [Select]135 CODE LOAD=HEX$("DB,B3,F5,7D,D3,B3,3E,01,11,01,C0,01,27,1E,F7,06,6F,26,00,F1,D3,B3,C9")
Híváskor paraméterben meg kell adni a szegmens számot (WS). Visszatéréskor ha az értéke nagyobb mint 0, akkor hiba volt.
136 CODE SAVE=HEX$("DB,B3,F5,7D,D3,B3,3E,01,11,01,C0,01,27,1E,F7,08,6F,26,00,F1,D3,B3,C9")
180 FOR I=1 TO 7719
185 GET #1:A$
190 SPOKE WS,I,ORD(A$)
200 NEXT
Ezek közül mely sorok helyett kell azt írni be, hogy CALL USR(LOAD,0)?Az egész helyett. És LOAD,WS
170 POKE 56,201
570 IF SPEEK(WS,1317)=8 THEN SET BORDER 6
580 IF SPEEK(WS,1317)=0 THEN SET BORDER 8
A videó változók értékét a videó megszakítási rutin írja be a NickbeAkkor nem is a SPEEK miatt volt ez, hanem a BORDER és a POKE 56 "nem szeretik egymást". Mindig tanul az ember.
Az I értéke 1 és hány között lehet0-16383
Szipucsu DotCollector pályaszerkesztõje kapcsán kaphatnánk útmutatót a FILE bõvítés BASIC programból való használatához?Ezt nem értem, pontosan mire is gondolsz. :D
Ezt nem értem, pontosan mire is gondolsz. :D
Hogyan lehet BASIC programból használni a FILE bõvítést?TAPE: vagy DISK: helyett FILE:-t kell beírni. Vagy ennél bonyolultabb? :oops:
TAPE: vagy DISK: helyett FILE:-t kell beírni. Vagy ennél bonyolultabb? :oops:Szerintem Laci nem a "FILE:"-re gondol, hanem a ":FILE"-re :oops:
:FILEHú, de ismerõs, de ez hol is van?
Szerintem Laci nem a "FILE:"-re gondol, hanem a ":FILE"-re :oops:
(Attachment Link)
Arra van valami utasítás, hogy a PRINT ne a 0-ás, hanem a 102-es csatornára írjon alapértelmezésként?Nincs.
Van valami SET DEFAULT CHANNEL, de hogy az mit csinál pontosan, arra nem jöttem rá, pedig elolvastam a gépkönyvben is. :oops:Azt adja meg, hogyha a 255-ös csatornára írsz, az melyik csatornára menjen. Ezt a 255-ös csatornát kell használnia pl a rendszerbõvítõknek.
Ha átállítod pl 101-re, akkor utána a HELP, vagy DIR, stb a grafikus lapra fog írni (csak elõtte plotolj fel a bal felsõ sarokba, hogy látszódjon :-) ).Köszi! Tényleg mûködik! Amit leírtál, az mondjuk a gépkönyvbõl meg az Ismerkedés az Enterprise-szal könyvbõl sem derül ki. Példának beírják, hogy SET DEFAULT CHANNEL akármennyi, ebbõl nem derül ki semmi, legalább egy HELP-et kiadhatnának utána a példában.
A sorbarendezõs kérdések hova tüntek innen?Töröltem, mert nagyon triviális kérdések voltak. A toplista sorba rendezéshez kellett, valami nagyon alap dolgot elnéztem és nem akart mûködni. Az összes kérdésre igen volt a válasz egyébként.
Az összes kérdésre igen volt a válasz egyébként.NUMERIC-re is? :oops:
NUMERIC-re is? :oops:Na, azt a sort kivettem a programból, és ugyanúgy mûködött. Tényleg nem tudom, minek tették bele.
100 PROGRAM "Rendez.bas"
110 ! Ez a program 10 szamot
120 ! rendez nagysag szerint sorba
130 ! ----------------------------
140 NUMERIC TOMB(1 TO 10)
150 NUMERIC VALT,SZAM,MAX
160 CLEAR SCREEN
170 PRINT AT 10,10:"SZAMRENDEZES"
180 FOR N=1 TO 10
190 PRINT AT 14,10:"Az ";N;"-ik szam";
200 INPUT PROMPT ":":TOMB(N)
210 PRINT AT 14,25:" "
220 NEXT N
230 CLEAR SCREEN
240 PRINT AT 20,20:"Rendezek..."
250 LET VEG=10
260 FOR X=1 TO 10
270 LET MAX=0
280 FOR Y=1 TO VEG
290 IF TOMB(Y)>MAX THEN LET MAX=TOMB(Y)
300 IF TOMB(Y)=MAX THEN LET SZAM=Y
310 NEXT Y
320 LET VALT=TOMB(VEG)
330 LET TOMB(VEG)=MAX
340 LET TOMB(SZAM)=VALT
350 LET VEG=VEG-1
360 NEXT X
370 FOR X=1 TO 10
380 PRINT TOMB(X)
390 NEXT X
400 END
Na, azt a sort kivettem a programból, és ugyanúgy mûködött. Tényleg nem tudom, minek tették bele.Nem felesleges, hanem a strukturált programozás része! Komolyabb program nyelvekben kötelezõ is elõre definiálni a változókat.
Na jó, akkor még egyszer berakom, a program a Felhasználói kézikönyvbõl (http://www.ep128.hu/Ep_Konyv/Users_Manual.htm#11) van.
Szóval a 150-es sor felesleges, mégis beletették.
Akkor inkább ne törölgessem a hozzászólásaimat akkor se, ha olyat kérdeznék, amire egyértelmû a válasz, csak én nem jöttem rá?Szerintem ne, írd be inkább amire rájöttél, esetleg más is tanulhat belõle.
SPOKE 255,49144,0
SPOKE 255,49145,0
EXOS 2.1-nél van hatása, EXOS 2.32-vel nem mûködik.Direkt lett így megoldva, hogy a trükkös programoknál se legyen felesleges reset :twisted:
Direkt lett így megoldva, hogy a trükkös programoknál se legyen felesleges reset :twisted:Igazából arra lenne jó, hogy a továbbfejlesztett Hajtóvadászat programban ne lehessen azt csinálni, hogy egy resetet nyomunk és innen újraindítjuk a játékot. Mert minden egyes újraindításnál újra betölti a Wav Sample Playert, és ha ezt sokáig csináljuk, elfogy a memória. Ezért lenne jó, ha csak dupla reset mûködne.
Kell kérni egy EXT "help sample"-t, és ha ismeretlen parancs, akkor kell betölteni.És még a WHEN-HANDLER blokkokkal is hókuszpókuszolni emiatt? :D
Nincs egyébként valahol a neten egy "színkód táblázat"?
a 8-as számú újra a 0-ás lesz. De errõl valahol már volt szó.A 8-15 színeket a BIAS-sal állítod egy kupacban.
Itt (http://ep128.hu/Ep_Konyv/Sp-Ep_konvertalas.htm#m), kicsit lejjebb bent van ez (http://ep128.hu/Ep_Konyv/Pic/BIAS.PNG) a táblázat, amit még István csinált.Erre emlékeztem, ez az, köszi!
De talán célszerûbb az Util programcsokorban (http://ep128.hu/Ep_Util/Util.htm) lévõ COLOUR.BAS használata.
A 8-15 színeket a BIAS-sal állítod egy kupacban.Nekem magas, mi az a BIAS. A gépkönyvbõl rémlik valami. De talán nem is olyan fontos. :D
Nekem magas, mi az a BIAS. A gépkönyvbõl rémlik valami. De talán nem is olyan fontos. :DPedig nagyon fontos ha 16 színû módot akarsz használni!!!
Ha jól emlékszem van olyasmi, hogy "Edit 1" ilyenkor a program 0 -> program 1 lesz és akkor az a program indul elEz nekem is megfordult a fejemben. De én olyanra gondolok, hogy van egy basic program, aminek van külön egy basic betöltõje is és a betöltõ megcsinál néhány dolgot, amit a fõprogramnak már nem kell. Pl. a betöltõ átdefiniálja a karaktereket, van benne ENVELOPE NUMBER meg ilyesmik, így a fõprogram annyival kisebb helyet fog foglalni a memóriában. És a betöltõben lehetne még bizonyos dolgokat menüben kiválasztani, na ezekre lenne jó, ha emlékezne a fõprogram is. A fõprogram a betöltõbõl RUN "fõprogram" utasítással töltõdik és indul, és ezzel akkor a betöltõt felül is írja a memóriában.
Ezt már akkor felesleges ellenõrizni ennyi erõvel be is állítható.
Lehetne még trükközni, hogy a betöltõ a tárolandó adatnak megfelelõen a KEY CLICK-et, KEY DELAY-t, stb. átállítja, a fõprogram meg megnézi ezeknek az értékét ASK utasítással és aszerint ad értéket a változóknak, hogy van-e CLICK és mennyi a DELAY. Sõt, a betöltõ átválthat SHIFT, ALT, CAPS üzemmódba, a fõprogram meg megnézné, milyen üzemmód van. Vicces, de biztos mûködik.
Ezt már akkor felesleges ellenõrizni ennyi erõvel be is állítható.Szerintem rosszul értetted, amit írtam, de másképp nem tudom elmagyarázni. Pl. a KEY DELAY értéke itt az eredeti funkciója szempontjából lényegtelen, mert miközben tölti a fõprogramot, úgyse nyom le senki billentyût. Arra lenne jó, hogy, mivel ugye a betöltõ program változóértéket nem tud átadni a fõprogramnak, mert a RUN "" törli a változókat, ezért a betöltõ beírna pl. 1-et vagy 2-t KEY DELAY-nek. A fõprogram meg lekérdezné a KEY DELAY értékét, és ha 1, akkor az A változónak 1 értéket adna, ha meg 2, akkor az A változónak 2-t adna. Merthogy ha a betöltõ programba be is írnánk, hogy LET A=1, miután betöltõdött a másik program, az A-nak már nem lenne értéke és hibaüzenet lenne.
Igaz nem jöttem rá, hogy lehet egyszerre ki menteni a Program 0, Program 1 ... és betölteni egy menetben.SAVE ALL
Szerintem rosszul értetted, amit írtam, de másképp nem tudom elmagyarázni. Pl. a KEY DELAY értéke itt az eredeti funkciója szempontjából lényegtelen, mert miközben tölti a fõprogramot, úgyse nyom le senki billentyût. Arra lenne jó, hogy, mivel ugye a betöltõ program változóértéket nem tud átadni a fõprogramnak, mert a RUN "" törli a változókat, ezért a betöltõ beírna pl. 1-et vagy 2-t KEY DELAY-nek. A fõprogram meg lekérdezné a KEY DELAY értékét, és ha 1, akkor az A változónak 1 értéket adna, ha meg 2, akkor az A változónak 2-t adna. Merthogy ha a betöltõ programba be is írnánk, hogy LET A=1, miután betöltõdött a másik program, az A-nak már nem lenne értéke és hibaüzenet lenne.
Utána vissza is lehet állítani a KEY DELAY értékét normálisra akár.
Igy már értem, a rendszer változókat használod átmeneti tárnak.Igen. :) Tömören, szépen így lehet megfogalmazni.
Akkor használd a SPOKE, SPEEK x,32Ez nekem magas így, nem értek a gépi kódhoz. :oops:
MEM 20H "TAR:",A változó, B változó, C változó, D változó,
30 SPOKE 1,32,A
40 SPOKE 2,32,B
És itt a TAPE: szövegtõl mentes betöltõ, így bármirõl betölti a programot. Laci, szerintem cseréld ki a fájlt erre! .
30 SPOKE 1,32,A
40 SPOKE 2,32,B
na itt lesz az a szám, ahol a 127-es kódú karakter elsõ sorát tároljaAmi más EXOS 2.0-n, és 2.1-en :oops:
Ami más EXOS 2.0-n, és 2.1-en :oops:Ezzel a karaktertervezõ program nézegetésekor is szembesültem, nagy örömmel ki is töröltem belõle egy SPEEK utasítást és az értékével helyettesítettem a változót, aztán mondtátok, hogy az úgy nem lesz jó. Szóval akkor elvileg így nézne ki:
Bár én nem értem minek kell az átvitel egyik basic-böl a másikba.Logikus a kérdés. Majd késõbb elmagyarázom, ha minden jól megy. :D
Az EXOS ROM nem írható :) Próbálj helyette valamilyen "nem használt" RAM területre írni, pl. SPOKE 255, 11392, x (és a 11392 utáni byte-ok), ami az EXOS verem általában nem használt részén van.Az mit jelent, hogy általában nem használt részen van? Mikor lehet, hogy mégis használt ez a terület?
Az mit jelent, hogy általában nem használt részen van? Mikor lehet, hogy mégis használt ez a terület?pl.: programot váltasz :WP :EXDOS :ASMON de változhat ha használod a TEXT vagy GRAPHICS utasításokat nem biztos, hogy pont az a terület de elõferdül ezért nehéz így szabad területet találni.
nehéz így szabad területet találni.Akkor még a "fontos" megoldás a legjobb, amit írtam. A KEY DELAY hibája lehet, hogy töltési hiba esetén a kurzor rohanni fog, meg resetre elveszik a beállított értéke. A karakterdefiníciók reset után is megmaradnak. A SET 0-99 közötti területbõl szóba jöhet valami?
Sajnos 360 KB-os lemezre így nem fér rá, hogy igazi EP-vel lehessen használni.Igazi EP-n 720-as lemezt használunk :-) de inkább 800-ast (azt az XP is bírja). (Amúgy a 360-as is lehet 400-as)
Szöveges képernyõ helyett attribútum képernyõt lõttem be, így több szín lehet. Próbáltam minél több színt használni. Ezek a színátmenetek jók így? Tud valaki jobbat? Grafikában, színekben nem vagyok túl jó.
(Attachment Link)
Igazi EP-n 720-as lemezt használunk :-) de inkább 800-ast (azt az XP is bírja). (Amúgy a 360-as is lehet 400-as)Akkor a nagyobb méretû lemezre is lehet valami trükkel akár 400 KB-ot is írni?
A kép most egy Graphics..... képernyõ?Nem, ez három különbözõ videólap. A felsõ kettõt már a félkész programba is betették, a legalsót én csináltam. Csak a középsõ szöveges képernyõs, a felsõ és alsó attribute (VIDEO MODE 15) videólap.
Akkor a nagyobb méretû lemezre is lehet valami trükkel akár 400 KB-ot is írni?Igen pl:
Jól értem, hogy ilyen attribute videólapnál csak az elsõ 7 színt lehet szabadon meghatározni (pl. SET PALETTE vagy SET COLOR utasítással)? Amit Zozo írt nemrég a BIAS-ról, azt nem használtam ki, így is éppen ki van használva a 2 videólapnál a 7 szín, ennél több színt egy ilyen programba nem is lenne értelme tenni, nem?igen a 16 színbõl az alsó 8 szín válaszható, SET PALETTE 1,2,3,4,5,6,7,8
és a VALAMI fájl 400k leszÕ nem a fájlra gondolt, hanem a lemezre :oops:
Laci, ezt nem teszed ki a BASIC programcsokorba?
Láttam már ezt a programot, de olyan lassú a pöttyök kirajzolása, hogy heveny hajmerevedést kaptam... Az EP-s sokkal jobb.Szerintem teljesen jó, pár játszmát le is nyomtam vele most, anno meg sokat játszottunk vele.
Laci azt mondta, az új karaktertervezõben nem mûködik jól a töltés, mentés. Szerintem meg mûködik.Na, erre varrjatok gombot! Laci konfigurációjával nem mûködik a töltés, ha ott van a WHEN blokk, három karakternél hosszabb elõtagú fájlneveket nem eszik meg. Ha nincs ott a WHEN blokk, akkor meg betölt hosszabb nevû fájlt is (a 2710. és 2760. sor elejérõl ha kitöröljük a ! jelet, akkor már nem fog mûködni):
Itt van a legújabb verzió újra, az összes fájllal. Szerintetek jól mûködik? Ha nem, akkor mi lehet vele?
A hang nem változik, pont ezért állítgatja a 191-es portot.De, szerintem tuti, hogy változik. Ha megjelenik az OK, akkor kicsit amúgy is begyorsul a lejátszás, és ha még OUT 191,12-vel gyorsítva van, ez még inkább érezhetõ. Majd ha ráérek, töltök fel snapshotot vagy mp3-at ilyenrõl.
De, szerintem tuti, hogy változik. Ha megjelenik az OK, akkor kicsit amúgy is begyorsul a lejátszás, és ha még OUT 191,12-vel gyorsítva van, ez még inkább érezhetõ. Majd ha ráérek, töltök fel snapshotot vagy mp3-at ilyenrõl.
De, szerintem tuti, hogy változik. Ha megjelenik az OK, akkor kicsit amúgy is begyorsul a lejátszás, és ha még OUT 191,12-vel gyorsítva van, ez még inkább érezhetõ. Majd ha ráérek, töltök fel snapshotot vagy mp3-at ilyenrõl.Lehet, hogy elbeszéltünk egymás mellett, és én másra gondoltam. Nem értek ezekhez az EXOS-os dolgokhoz.
Mindkét lejátszás végén begyorsul a lejátszás az utolsó taktusokraEz jelzi, hogy alapvetõen a programban van a hiba, amire a ZZZIP nyilván csak rátesz egy lapáttal :oops:
Kéne látni az eredeti programotValami pofonegyszerû. RESTORE, DO, READ IF MISSING EXIT DO X,Y,Z, SOUND PITCH X,DURATION Z (meg ilyesmik), LOOP, DATA hangok.
1 INPUT PROMPT "Tempo:":T
100 CLEAR SOUND
110 ENVELOPE NUMBER 1;0,63,63,1;0,-5,-10,1;0,-53,-23,3;0,10,-40,60
111 ENVELOPE NUMBER 2;0,63,63,1;0,-63,-63,5
112 ENVELOPE NUMBER 3;0,63,63,1;-10,-63,-63,10
120 RESTORE
130 DO
140 READ IF MISSING EXIT DO:G,H,J
150 LET G=G+24:LET H=H/T
160 SOUND PITCH G,DURATION H,ENVELOPE 1,SYNC 3
170 SOUND PITCH G-36,DURATION H,ENVELOPE 1,SYNC 3,SOURCE 2,STYLE 0
180 SOUND SOURCE 3,SYNC 3,ENVELOPE 2,DURATION H,LEFT J,RIGHT J
185 SOUND SOURCE 1,ENVELOPE 3,SYNC 3,PITCH 30,DURATION H,LEFT J,RIGHT J
190 LET J=0
200 LOOP
210 DATA 127,200,0
220 DATA 32,20,0,37,10,255,37,20,0,36,20,0,37,10,127,37,20,0,41,20,0,37,10,255,37,20,0,36,20,0,37,30,127
Zzzip nélkül már 2-es tempóval is akadozik, úgy emlékszem, mert sokcsatornás, envelope is van benne, meg a hangerõt is változtatja, és basic-ben ez már akadozást okoz.Itt akkor az a baj, hogy a BASIC nem tudja elég gyorsan etetni a SOUND eszközt, és így a BASIC lassúság is beépül a "kottába", ami nem éppen ideális megoldás.
Felraksz egy teljes programot, amivel lehet próbálkozni?Itt (http://enterpriseforever.com/sound/zeneprogramozas-t3.0.html;msg24607#msg24607) a music.bas lenne az.
Abszolút hiánypótló program (http://www.ep128.hu/SZAMOK.BAS)...Ügyes!
:ds_icon_cheesygrin:
Ügyes!
Ezt magadtól csináltad, vagy átírtad valahonnan?
Nem lett volna egyszerûbb a "tíz" és "húsz" szót is a DATA sorokba tenni, mint ott külön CASE ágban megnézegetni, hogy az-e? Bár nem néztem át a program mûködését, lehet, hogy valami ezt indokolja.
Laci, azt tudtad, hogy az English is Fun, French is Fun, German is Fun programokban van olyan rész, hogy beírsz egy kétjegyû számot és kiírja betûkkel? Gondolom, azt nem használtad fel.
Itt (http://hu.wikipedia.org/wiki/T%C3%ADz_hatv%C3%A1nyai) nem szerepel a decilliárd, de biztos létezik attól még olyan is.
A SAY programmal lenne még jó egybeépíteni: beírsz egy tetszõleges számjegyet, a gép pedig kiolvassa. De ha a SAY-t vissza lehetne fejteni, akár bele is lehetne építeni, hogy így olvassa fel a számjegyeket.
a Wikin-n javítani kellene, hogy egy sorba egy utasítás írható. Érdemes megnézni a programlistát (sajnos a mérete miatt az NLIST3-at így sem lehetett ráereszteni, de azért nem ér puskázni :evil:)... A helyes megfogalmazás: jellemzően a blokkszervező utasításokat kell külön sorba írni.A Wikin hol van ez, hol kell javítani?
A Wikin hol van ez, hol kell javítani?
egy programsorba általában nem írhatunk egynél több utasítást.Szerintem így sem helytelen: "általában".
115 SET #101: INK 3 ! Vajon itt kell csatorna megadás a tinta színének változtatásához?Nem kell. Minden parancsnak van alapértelmezése, melyik csatornára dolgozik. A Referencia kézikönyv említi is az alapértelmezett csatornákat. A grafikus utasításoknak, függvényeknek a 101-es csatorna az alapértelmezése.
120 PLOT #101:100,100;1000,100
És ha nem 101-es csatorna, hanem mondjuk 2-es?Akkor már természetesen ki kell írni a csatornára hivatkozást.
Érdekelne, van-e valakinek valami ötlete, hogyan lehetne még érdekesebbé tenni ezt az "animációt".A 130. 140. sor fölöslegesnek tűnik.
Légy szíves mutass példát arra, hogy mire gondolsz. Néhány programsor és komment. Köszönöm!Az innen (http://www.ep128.hu/Ep_Konyv/Szamitastechnika_Kozepfokon.rar) letölthető példaprogramok közül a PERMUT.BAS-t érdemes kipróbálni. Maga az eljárás a fenti linken megtekinthető.
A 130. 140. sor fölöslegesnek tűnik.A GRAPHICS, majd a CLOSE #101? Azért van benne, mert ha nem először futtattam a programot, mindig Channel already open hiba volt, és ezzel ezt jól ki lehetett kerülni.
A GRAPHICS, majd a CLOSE #101? Azért van benne, mert ha nem először futtattam a programot, mindig Channel already open hiba volt, és ezzel ezt jól ki lehetett kerülni.Ez azért van, mert vagy programhibával állt le, vagy STOP-pal leállítottad és nyitva maradt a csatorna. Ha a program illedelmesen bezárja maga után a megnyitott videolapokat, nincs ilyen hiba.
Szipucsu, hogyan jöttél rá erre a megoldásra? Próbálgatással? Ne érts félre örülök, hogy foglalkozol vele, és érdekenek a részletek.Ja, hogy a GRAPHICS - CLOSE #101 megoldásra hogy jöttem rá? Hát, láttam, hogy Channel already open van néha, de nem mindig. Ha csak beírom, hogy CLOSE #101, akkor meg akkor lenne hiba, ha éppen nincs nyitva. És hogy még ezt is kiküszöböljem, betettem elé a GRAPHICS utasítást. Természetesen egy szál TEXT egyszerűbb lett volna, de hát programíráskor bonyolultabban gondolkozik az ember, én legalábbis. De a kész programból majd ki lehet törölni minden felesleges ideiglenes cuccot.
Rosetta Code (http://rosettacode.org/wiki/Animate_a_pendulum)-os feladat.Jó lett!
Nem lehetne, hogy a .bas mellett .txt formátumban is becsatolnátok? Kérlek!Természetesen megoldható, csak kérni kell! :)
Nem lehetne, hogy a .bas mellett .txt formátumban is becsatolnátok? Kérlek!Talán meg lehetne csinálni, hogy on-line átalakítsa az oldal a .bas fájlt txt fájllá és így egyből meg lehetne nézni. :D Egy lebutított, web felületen futó emulátorral, ami a basic programot "detokenizálja", és kódként olvasható lenne a lista a hozzászólás alatt.
Lehet, hogy működik, de szerintem nem szerencsés, hogy ugyanazt az X változót mint bejövő paramétert használja,Ez működik. Ezt a Felhasználói kézikönyvből vettem, és pont a lokális változókra példa. Annyit módosítottam rajta, hogy nem futtatom le mégegyszer a ciklust, csak, hogy 1-el is megszorozza a függvény addigi értékét. A függvény a saját lokális X változóját használja, sőt ha rekurziót alkalmazunk, minden hívásnak saját változói vannak (ez a rekurzív fraktál rajzolásnál elengedhetetlen).
Aki a Pendulomot írta, annak üzenem, hogy C-ben kellene programoznia, ott pont úgy van, hogy függvényeket hívogatunk meg. (ezt nevezzük struktúrált programozásnak)Minden programom így néz ki. Itt alább a főprogram a 350-es sorig tart. A gimiben egyébként Turbo PAscal-ban programoztunk, ott kezdődött ez a mánia. Az IS-BASIC szerintem egy rugalmasabb TURBO PASCAL, csak a típusdeklaráció hiányzik belőle.
Ezért ötöst adnék, ha osztályoznom kellene! Nagyon ügyes!Köszönöm... :oops:
Az IS-BASIC szerintem egy rugalmasabb TURBO PASCAL, csak a típusdeklaráció hiányzik belőle.Meg a hülye pontosvesszők :-)
A 470-es sorban definiáljuk először X-et. Ezután 480-ban kiértékelek egy relációt, és belépek a ciklusba. 490-ben módosítom X-et. 500-ban visszaugrok a 480-as kiértékelésre. A BASIC-nek ilyenkor el kellene végeznie újra "X-1"-es kiértékelést a módosított X-szel. Ezt nem teszi meg.Van ráció abban amit mondasz... :smt017
Talán meg lehetne csinálni, hogy on-line átalakítsa az oldal a .bas fájlt txt fájllá és így egyből meg lehetne nézni. :D Egy lebutított, web felületen futó emulátorral, ami a basic programot "detokenizálja", és kódként olvasható lenne a lista a hozzászólás alatt.
Pont ilyet irtam python-ban amivel kapcsolatos kerdeseimmel a tisztelt forumot is zaklattam :) Azonban nem volt sok erdeklodes, egy ido utan meg beleuntam es felbehagytam :(Én azóta is várom, mikor lesz kész verzió kiadva! :oops:
Akkor ezek szerint a BASIC a hibás, ami azt jelenti, hogy nem lehet cikluson belül változtatni, hogy a ciklus mikor érjen véget.Az EXIT FOR erre tökéletes.
Ha lesz fiam akkor az IS-BASIC lesz az első nyelv amit meg fog tanulni.Én azért a magyart javasolnám előbb. :D
Akkor ezek szerint a BASIC a hibás,Kipróbáltam! A Commodora BASIC-ben is működik ez a megoldás és Turbo PAscal-ban is!
Amúgy a szinusz függvényt használja a mozgáshoz?
Más 8 bites gépeken ezt gondolom, BASIC-ben nem igazán lehet megcsinálni, mert tudtommal csak az EP-n lehet sok videólapot megnyitni és váltogatni azokat.
Ennek az lett az eredménye, hogy sosem ért véget a ciklusom mert X értéke mindig együtt növekedett I-vel, amit minden kiértékeléskor figyelembe is vett.
Azt megállapíthatjuk: a C-nek más a filozófiája, mint a Turbo Pascal-nak, és a BASIC nyelvjárásoknak, úgy általában.
Én azóta is várom, mikor lesz kész verzió kiadva! :oops:
Ez bizta. Sot elegge "keplekeny" is, pl szamtalan modon irhato:
Az i++ - úgy tudom - hamarabb lefut, mint az i=i+1
Az ilyen gyorsműveleteket +/-1 hiányolom is a fullextrás IS BASIC-ből, pedig ezek gyakran használt műveletek.
(Talán az EXOS minden csatornazárás után rendbe rakja a memóriát?)Nem talán, hanem biztos!
A videolapok a 64K videomemóriában tárolódnak, így mindegy mennyi memória van a gépben, nem lesz több hely a videolapoknak. Azt hiszem... Jól tudom Zozo?Igen, pontosabban 128K-tól felfelé mindegy. EP64-en még a nullás lap, a BASIC program, minden, foglalja a helyet a videó memóriában.
Érdekes, hogy ha SOUND SOURCE paraméternek 3-nál nagyobb számot adunk meg, azt is elfogadja, de természetesen így is csak 3 hangcsatorna +1 zajcsatorna használható. 3-tól felfele újra elölről megy a számozás.Mindennél így csinál az EXOS, hogy a nem használt biteket nem veszi figyelembe.
Abszolút "hiánypótló" program... :ds_icon_cheesygrin:Jól működik!
Érdekes, nekem eszembe se jutott volna, hogy ilyen programot is lehetne írni.Én már igen, de így legalább nem nekem kell megírni :-D
Engem mindig zavartak a basic programokban azok a CASE ágak.Pedig nagyon fontosak!
Én már igen, de így legalább nem nekem kell megírni :-DHa van további tipp, ne tartsd magadban!
Üdv,Ez egyébként érdekes, mert a mai órákon is így szerepel a négy (IIII). Sőt régen használták a 8-ra a IIX alakot, a Wikin pedig említik az IC (99) alakot. Gondolom az órákon a hagyomány miatt maradt így a négyes.
Érdekesség a római számokhoz kapcsolódva, hogy mutatós karórákon a 4-et nem a megfelelő IV jelöléssel, hanem IIII-el jelölik. Most vagy az első órásmester volt tudatlan vagy talán a fejjel lefelé írt római négyes valamiért nem volt megfelelő, ki tudja
mutatós karórákon a 4-et nem a megfelelő IV jelöléssel, hanem IIII-el jelölik. Most vagy az első órásmester volt tudatlan vagy talán a fejjel lefelé írt római négyes valamiért nem volt megfelelő, ki tudja :)Valahol azt olvastam, hogy a IIII is megfelel a római 4-nek, csak ritkábban használják.
Valahol azt olvastam, hogy a IIII is megfelel a római 4-nek, csak ritkábban használják.Nekünk úgy tanították, hogy az a régebbi verzió.
Nekünk úgy tanították, hogy az a régebbi verzió.A program az "aktuális szabványoknak" megfelelően dolgozik, ahogy a böngészős átváltók.
EXOS változó lekérdezéssel is lehet, de azt is WHEN blokkba kell rakni.Ezt hogyan kell pontosabban? Én csak a VER$ és a VERNUM változóról hallottam.
ezt valami gépi kódú rutinnal lehetne megvalósítani.Megy az BASIC-ből is, pl ilyesmi:
40 get #102:a$Ezzel csak azokat a karaktereket tudja lekérdezni, mint amik file nevekben is előfordulhatnak, tehát az ékezetes, ALT-os billentyűkombinációra definiált karaktereket nem.
Ezzel csak azokat a karaktereket tudja lekérdezni, mint amik file nevekben is előfordulhatnak, tehát az ékezetes, ALT-os billentyűkombinációra definiált karaktereket nem.
80 karakteres módban talán van több szín is.
Csak két színpár van text 80-ban.Akkor számold meg, hogy pl az FDISK (http://ep128.hu/Ep_Util/FDISK.htm) mennyit használ :-)
A megoldás az, hogy LOOK-al olvasni numerikus változóba, és ha a kód 32-nél kisebb, akkor hozzá kell adni 128-at. Utána mehet a Print CHR$-el.Ezt hogyan kell? Erre kíváncsi lennék! És LOOK-ból hogyan tudjuk meg, milyen kódú karakter van az adott pozícióban? És ha pont olyan részt olvas ki a look egy karakterből, ahol éppen üres pixel van?
Ezt hogyan kell? Erre kíváncsi lennék! És LOOK-ból hogyan tudjuk meg, milyen kódú karakter van az adott pozícióban? És ha pont olyan részt olvas ki a look egy karakterből, ahol éppen üres pixel van?Elfelejtették beleírni a BASIC kézikönyvbe, hogy szöveges módban a karakterkódot adja vissza.
A nyomtatáshoz amúgy talán a legjobban használható valami ilyesmi:Zozo, ezt kipróbálod, műküdik-e. Nem hiszem, mert akkor file-ba is működnie kellene...
OPEN #1:"PRINTER:"
COPY FROM #102 TO #1
CLOSE #1
Gondolom, működik, bár még sose próbáltam élesben.
Akkor számold meg, hogy pl az FDISK (http://ep128.hu/Ep_Util/FDISK.htm) mennyit használ :-)És tényleg... Mik derülnek ki 25 év után....
Amúgy meg Application Notes 25. (http://enterprise.iko.hu/technical/Enterprise-AppNote-25.pdf), 2. oldal :-D
Szerintem a LOOK csak grafikus képernyőn működik, ahogy a Felhasználói kézikönyv írja...Igen valami el van benne rontva... :evil:
INVALID ESCAPE SEQUENCE üzenetet ad.
A kurzor pozicionálást elé egy PRINT #102, AT X,Y:; utasítással kell megoldani, aztán LOOK #102:V (azaz a példában a GET utasítást lecserélni).
Ez így működni fog? Ki van próbálva? Ez szimpatikus megoldásnak tűnne...Ki, különben nem javasoltam volna :oops:
Ki, különben nem javasoltam volna :oops:Működik, de ha ALT-tal lenyomott billentyűvel írunk abba a sorba, azt nem tudja elolvasni...
Működik, de ha ALT-tal lenyomott billentyűvel írunk abba a sorba, azt nem tudja elolvasni...Azt irtam korábban, hogy ha az érték 32-nél kisebb, akkor hozzá kell adni 128-at.
Működik, de ha ALT-tal lenyomott billentyűvel írunk abba a sorba, azt nem tudja elolvasni...Már működik, úgy, ahogy Zozo mondta! Tökéletes txt-t csinál, aztán azt mindenki abból nyomtatja ki, amiből akarja. Még a Pünkösdöt megnézem.
Azt irtam korábban, hogy ha az érték 32-nél kisebb, akkor hozzá kell adni 128-at.Ja, hogy amikor PRINT-tel kiíratjuk?
De GET-tel már nem működik ugyanez, csak lukkal?Azzal is működhet, csak azzal string változóba lehet beolvasni a karaktert, amit vissza kéne alakítani karakterkóddá az ellenőrzéshez és esetleges +128 művelethez.
Az IS-BASIC BCD formátumban tárolja a számokat, ezért tud pontosan számolni tizedekkel. Bináris lebegőpontos formátumban a 0.1 nem ábrázolható pontosan, 0.099999... lesz helyette, és így természetesen 3.9999... nem lesz egyenlő 4-el.Pont erről írt most Bruce, hogy ő is szerette volna a gyorsabb lebegőpontosabb verziót választani, de az Enterprise cég ragaszkodott a pontosabb verzióhoz.
Pont erről írt most Bruce, hogy ő is szerette volna a gyorsabb lebegőpontosabb verziót választani, de az Enterprise cég ragaszkodott a pontosabb verzióhoz.Pont ezen apropóból néztem meg. Szerintem jól döntött az Enterprise.
Pont ezen apropóból néztem meg. Szerintem jól döntött az Enterprise.Igen, én is azt írtam neki, hogy nem baj, ha számolásra is tudom a számítógépet használni :-)
szerencsére a zzzip egész számolást csinál, ezért gyorsabb :)Azért egy real fordítónak is lenne létjogosultsága. Spectrum-on van ilyen, és 3,5-4-szeres gyorsulást azokkal is el lehet érni. És azért az is jelentős gyorsulás. A Sinclair Spectrum Játék és Program 2. c. könyvben van összehasonlító teszt.
Azért egy real fordítónak is lenne létjogosultsága.Igen az jól jönne!
Az IS-BASIC BCD formátumban tárolja a számokat, ezért tud pontosan számolni tizedekkel. Bináris lebegőpontos formátumban a 0.1 nem ábrázolható pontosan, 0.099999... lesz helyette, és így természetesen 3.9999... nem lesz egyenlő 4-el.
az egyetlen probléma vele hogy 400%-os emulátor sebességen is lassú a pálya scroll :)1000%-os sebességű emulátoron egész tűrhető. :D
Viszont Zozo már feni a kardját, hogy beledőljön.Igaz :twisted:
100 for x=1 to 20A FOR cikluson belülre kerül még más is, a játéktól függően? Vagy utána jön a többi része (pl. szörnymozgatás, egyebek)?
110 j=joy(0)
120 if j<>0 then exit for
130 next x
Béna trükk, de műxik. (http://enterpriseforever.com/Smileys/phpbb/smiley.gif)endi!
Összehasonlító sebességteszt a BASIC és a FORTH között: Prímszámteszt.Van egy "kis" különbség :smt038
Az feltűnt már valakinek, hogy a CLEAR FONT utasításnak TEXT 80-as módban nincs rögtön érezhető hatása a 80 karakteres videólapon?Ez egyértelmű, mivel a TEXT 80 grafikus lapon van.
Az feltűnt már valakinek, hogy a CLEAR FONT utasításnak TEXT 80-as módban nincs rögtön érezhető hatása a 80 karakteres videólapon?Mókás amikor a kurzorral végigszaladsz egy soron.
hm én valahogy előhoztam már ezt az üzenetet, írtam is itt a fórumon róla, de már nem emlékszem hogy is voltÚgy néz ki, hogy nem a verem túlcsorulása miatt fagy le. "Manuális veremkezeléssel, paraméterátadás nélküli eiljáráshívással is lefagy a 38. szint után. Úgy tűnik, a blokkszervezésben a maximális mélység a 38. szint az IS-BASIC-ben. Ez szerencsére csak elméleti határ, ép ésszel ilyen mélységet még rekurzív hívással sem lehet nagyon elérni. Ez a rekurzív útvonalkeresés az extrém kivétel. A rekurzív quicksort (mivel minden lépésben felezi a rendezendő számok halmazát) tehát 2^38 db elemből álló halmazig működőképes marad, ami bőven túlmutat a várható igényeken és a memória kapacitásán...
amúgy olyan is van hogy kirajzolunk összevissza vonalakat és ha elég bonyolult akkor a fill csak részben fillezi be :)
Valakinek van tippje labirintus generátor algoritmusra, amivel szöveges képernyőre lehet labirintust rajzolni?István régebben csinált ilyesmit, itt. (http://enterpriseforever.com/programozas/basic/msg24217/#msg24217)
Valamelyik EP-s könyvben volt ilyen basic program, ami labirintust generál és kivezeti belőle az emberkét. Szerintem nem a Hetedhét EP volt az, hanem valami mást... nem emlékszem a címére.Az a Tippek Trükkök (http://www.ep128.hu/Ep_Konyv/Tippek.htm)-ben van (Ariadne.bas), de az elég gagyi, többnyire nem átjárható labirintust generál.
graphicsA jelszó ARTAX, de utána hibaüzenet, mert a közepén indítottuk a játékot. :D
run 3190
és kirajzol egy új pályát :)
Régebben próbáltam basic-ből elmenteni pontonként a grafikus képernyő tartalmát, de eszméletlen nagy file lett volna tömörítés nélkül.Itt gondolom két hibát csinálhattál:
Itt gondolom két hibát csinálhattál:Az lehetséges, mert nem annyira értek hozzá, csak valami ilyet próbáltam:
Ez STR&(C) ugye CHR$(C) akar lenni?Igen! :D Jó neked, már látásból felismered az ilyet. Én ilyenkor szoktam futtatni a programot, látom, nem azt csinálja, amit kéne, és utána írom át.
2 színben elég lenne 1 bit, 4 színben 2, 16 színben 4, 256 színnél jó.Tehát, végülis olyasmi kéne, ahogy a karakterek pixeleit tárolja a gép soronként egyetlen bájtban? És pl. 2 hatványaival lehetne bűvészkedni. Mármint most a 2 színmódra gondolok. Viszont, ha nem pont 2 hatványa a pontok száma egy sorban (vagy oszlop van itt előbb, már nem tudom), akkor a végénél is valamit trükközni kell, tehát a FOR-ok végén át kell írni a számokat 2 hatványára, és ami így lemarad, azzal csinálni valamit. Jól sejtem?
Szóval itt olyasmi kéne, hogy összegyűjtjük az értékeket, 2 színben 8-et, 4 színben 4-et, 16 színben 2-t. Az elöző értéket 2-el, 4-el, 16-al szorozva. Így akkor már a fájlban is annyi helyett foglal mint a videó memóriában.
na itt egy új, az új ORKSOFT DEMÓÓÓ!!!! :DEndi ezt "normál" módon is rakosgasd ki, mert van aki eredeti EP -t használ és nem Emu -t! ;-)
Kis "optikai tuning".a bias színekkel még a piros "lávára" is lehet rajzolni, még látványosabb lesz, nulla proci időt használva
De honnan tudod azt előre, hogy odaszórsz egy rakás pixel szmötyit, aminek ha villogtatod a színét, az tök jól fog kinézni?jaj hát tök egyszerű, szerintem ránézésre látható hogy vannak kirajzolva
a bias színekkel még a piros "lávára" is lehet rajzolni, még látványosabb lesz, nulla proci időt használvaÉs hogy töltöm ki a zárt alakzatokat? Nekem egyik line style-ban sem sikerült az alatta lévő "láva" miatt.
És hogy töltöm ki a zárt alakzatokat? Nekem egyik line style-ban sem sikerült az alatta lévő "láva" miatt.hát olyat rajzolj amihez nem kell fill
osszeg=0
for i=1 to szamjegyek
osszeg=osszeg+rnd(9)*10^i
next i
RND
Egy 0 és 1 közötti véletlenszámot állít elő, de az 1-et nem éri el soha. Az értéktartományt szorzással tudjuk növelni, pl. az INT(RND*100) egy 0 és 99 közti egész számot ad.
a priority viszont valami gépi feltétel lehet, mert működik vele a toggle és a set.38-as EXOS változót állítja, azaz a SPRITE prioritást. Ennek megfelelően csak EXOS 2.1-től van.
Az a baj, nem lehet akármekkora véletlen számot generálni:SZAM=INT(RND*999999+1)
Márpedig nekem ilyen nagy kéne.
Aha. Kösz. De ez csak olaj volt a tűzre... :-) Újabb kérdések merültek fel. Most akkor van sprite kezelés beépítve? Az Exos könyvben meg valami külső sprite szín van. Mi az, hogy külső? Valami másik eszközről?
az alt-os karakteres elválasztós dologhoz az EDITOR: eszközt kéne átírni...Ami már megtörtént a német bővítésben. Lacika szeretné nagyon az EXOS 2.4-be is :oops:
Csak tippre; a Nick EC (external colour) bemenetei, amihez elvileg terveztek volna valami "kulso sprite" cussot is kesobb. Amugy ilyet lehetne most is az EC bemenetekre kotni, ha valaki csinalna egyet 1x :-DÍgy van!
PROTECT logikusan a 34-es EXOS változót állítaná, nem tudom miért nem működik...Meg van! :ds_icon_cheesygrin:
A PROTECT nem tudom, mit csinálEgy flaget állít a magnós fejlécben, és ha ilyet talál a TAPE: akkor nem lehet egyszerre megnyitva két magnós csatorna írásra és olvasásra. Mondjuk a mi időnkben már rengeteg másolóprogram volt ami a memóriába töltött be, és így nem használt két csatornát egyszerre.
Ha jól emléxem:Jól emlékszel!
Jól emlékszel!Ez a megoldás nem lassabb?
Érdekes, most jöttem rá, hogy a GET A$ egyenértékű azzal, hogy LET A$=INKEY$.
Ez a megoldás nem lassabb?Az előbb kipróbáltam mindkettőt, egyforma sebességűeknek tűnnek.
mondjuk én másképp használtam az inkey$-t, valami ilyesmi rémlik:Szerintem ez csak akkor figyeli a leütött billentyűt, amikor pont abban a sorban van. Ha több sor kerül be, akkor van, hogy hiába nyomjuk, nem csinál semmit.
IF INKEY$="x" then, és ez tűnt alssúnak.
Nekem rémlik, hogy a zippel használhatóak között van hasonló.Most végignéztem a BASIC programcsokrot, de nem találtam ilyet.
definicio szerint le van irva minden szepen egymas utan, az osszes BASIC kulcsszo definicioja, a kifejezesekre a precedencia szabalyokNem tudom, ilyenre gondolsz-e, de a Felhasználói kézikönyv második felében van ilyesmi. Az Ismerkedés az EP számítógéppel című könyvben is van ilyesmi, de lehet, hogy te valami másra gondolsz.
Hogyan lehet a status sor tartalmát felülírni basic-ből? Milyen SPOKE területre kell írni?BFF6-7h (49142-3) címről olvasható ki a kezdete.
BFF6-7h (49142-3) címről olvasható ki a kezdete.Ez így nekem kínai. Ha pl. az IS-BASIC I-jét akarjuk átírni valami más betűre, akkor SPOKE x,y,z-ből mennyi lenne az x,y,z?
Hogyhogy nem fix? Géptípusonként (angol, német), konfigurációnként eltérhet?Igen, vagy akár még mástól is, nem csak géptípustól, simán attól is hogy milyen hardverek vannak épp rácsatlakoztatva a gépre, vagy romok, vagy akármik. Ha van cím változója, akkor bármit beállíthat az EXOS, és onnantól az lesz a status sor címe.
Tudom, ha pl. basic programból kiadjuk az utasítást és a program véget ér, akkor visszaáll a korábbi status. De amíg fut a program, addig a status is marad.Úgy legyen, de ha program futása közben is lefrissül, akkor ne legyél nagyon meglepve ... :)
Zozo (49142-3)-t írt. Elsőre kivonásnak néztem ezt. (http://enterpriseforever.com/Smileys/phpbb/ds_icon_biggrin.gif) Kb. ennyit értek ehhez. De próbálgattam programból a SPOKE 255,49412,akármennyi utasításokat, és 49412-nél nagyobb számokkal is próbáltam, de nem működött nekem, biztos nem jól értettem.Szerintem ő nem kivonást akart, hanem a címek ugye 2 bájtosak 16 bites címzésnél, és megadta mindkét bájtot.
Hááát ... nekem nem ment ... :)Parancssorból nem is fog, mert egyből felülírja a BASIC :-)
Z80System jól írja a lényeget.Te tényleg csak a lényeget ... :)
100 RESTORE
110 FOR A=1 TO kb. 30
120 READ A$
130 SPOKE valamennyi,valamennyi+A,ORD(A$)
140 NEXT A
150 DATA E,Z," ",A," ",S,Z,O,V,E,G," ",K,E,R,U,L," ",A," ",S,T,A,T,U,S," ",S,O,R,B,A
A BASIC-ban nem lehetne megkeresni azt a rutint, ami ellenőrzi a SET VIDEO X változóban megadott értéket és a maximális 42-őt átírni 44-re?Szerintem az a VIDEO: eszközben lesz.
0-ás szegmens D385h :-)Exos 2.4 mikor is jelenik meg? :oops:
Érdekes, nincs GRAPHICS: alfórum? :)Az Util programcsokorban (http://ep128.hu/Ep_Util/Prg/Util.rar) Szipucsu CHR2012 című programja ilyen.
Na mindegy, ide írom.
Milyen karakter generálók vannak EP-re? Már nem emlékszem. Illetve valszeg én sajátot használtam.
Olyan kéne ami kiírja a kódokat amit basicbe be lehetne írni, szóval nem akarok kimentéses-betöltéses karaktereket.
Az Util programcsokorban (http://ep128.hu/Ep_Util/Prg/Util.rar) Szipucsu CHR2012 című programja ilyen.aha tök jó! teljesen igényes progi!
edit: kivéve a hangokat :) úgy értem azok nem valók ilyen programba :)Ebben bizony igazad lehet. Csak hát mindig kell valami újítással próbálkozni.
na itt a módosított szipucsu féle font editáló első verziója.Nem gondoltam volna, hogy valaki még használni is fogja ezt a programot.
http://ep.lgb.hu/jsep/demo/?snapshot=http://deadcyborg.com/miner2013_final_zzzip.ep128s&autostart=yesNa, most az első szintet a webes emuval is megcsináltam.
Na, most az első szintet a webes emuval is megcsináltam.hajrá! csináld meg, alakítsd át, csinálj új pályákat.
Érdemesebb lenne olyat kihozni ebből a játék-alapból, hogy nincs annyiféle ellenség, nincs gravitáció, és pacman módjára össze kell szedni a pontokat a labirintusban. Lehetne néhány véletlenszerűen mozgó ellenfél. Talán így gyorsabb is lenne.
hajrá! csináld meg, alakítsd át, csinálj új pályákat.Ezt én nem hiszem, hogy átírnám, időm sincs rá nagyon, és te tudod, hogyan működik.
ha jó lesz, csinálok hozzá új grafikát!
Annyit tudok még közelíteni, hogy olyan, mintha mikor lefutna programból a run "pck.ext" sor, akkor újraindul valamiért a basic program elölről ... és így loop -ba kerül.Nem indul újra a program. Én is szembesültem vele régebben, ha jól emlékszem. Mivel a betöltő futtatása basic-ből látszólag nem csinál semmit, ezzel valószínű a basic program nem elégszik meg, és futtatni akarja. Úgy érzékeli talán, mintha nem töltötte volna be. Ez szerintem egy bug lesz a basic-ben.
Hát az én konfigomon BASIC RUN -nal újraindul a BASIC program, kipróbáltan.Ha azt írod valahova a programban, hogy RUN, arra tényleg újraindul.
Most nézem, az angol fórumon is feltetted ugyanezt a kérdést, ott Zozoval angolul ki is tárgyaltátok, én meg ezt láttam meg először és itt válaszoltam, ugyanazt, mint Zozo... Az ilyeneket nem lehetne kivédeni valahogy?Dehogynem, nem kell türelmetlennek lenni, és két helyen tárgyalni ugyanazt.
Ha mar BASIC, hallott vki a BBC basic-rol? Ugye az Acorn cucca, 6502-es gepeire, _de_ volt belole Z80-as verzio is, CP/M ala! Latszolag nekem IS-DOS alatt el is indul. Mondjuk eleg alien, pl EDIT parancs kell a sor szerkeszteshez stb, bar az is igaz, hogy a CP/M verzio nyilvan elegge "terminal feeling". Ami erdekes benne, hogy bele lehet irni asm reszletet (marminthogy nem hex kodkent stb, hanem ahogy egy assembler-nek is irna az ember ...) kozvetlenul, es el tudja erni a basic-es valtozokat stb. Ez szerintem nem rossz otlet, bar en is csak olvastam rola, gyakorlatban sose probaltam.Én csak olyan szinten hallottam róla, hogy nézegettem sok-sok DIY Z80 computer projektet, és kb. mindenkinek az volt a cél, hogy a BBC BASIC fusson rajta.
Megelőzöm Endit :-)
EP-n erre ott a Basic Plus.
Na arrol meg nem hallottam :)Enterprise Plus (http://ep128.hu/Ep_Konyv/Ep_Plus.htm)
Ha mar BASIC, hallott vki a BBC basic-rol? Ugye az Acorn cucca, 6502-es gepeire, _de_ volt belole Z80-as verzio is, CP/M ala! Latszolag nekem IS-DOS alatt el is indul. Mondjuk eleg alien, pl EDIT parancs kell a sor szerkeszteshez stb, bar az is igaz, hogy a CP/M verzio nyilvan elegge "terminal feeling". Ami erdekes benne, hogy bele lehet irni asm reszletet (marminthogy nem hex kodkent stb, hanem ahogy egy assembler-nek is irna az ember ...) kozvetlenul, es el tudja erni a basic-es valtozokat stb. Ez szerintem nem rossz otlet, bar en is csak olvastam rola, gyakorlatban sose probaltam.Hallani hallottam a BBC-ről, még emulátorát is indítottam, a basic-jét nem használtam sose, az EDIT-en nincs semmi meglepő, Speccyn is EDIT funkcióval lehet sort módosítani, CPC-n meg EDIT paranccsal :)
Hallani hallottam a BBC-ről, még emulátorát is indítottam, a basic-jét nem használtam sose, az EDIT-en nincs semmi meglepő, Speccyn is EDIT funkcióval lehet sort módosítani, CPC-n meg EDIT paranccsal :)
Tudom, hogy nincs meglepo semmi az EDIT-ben (http://enterpriseforever.com/Smileys/phpbb/smiley.gif) Az un "on screen editor" mar fejlett feature,Ha úgy nézzük az EP -n is van edit parancs, nem ?
Ha úgy nézzük az EP -n is van edit parancs, nem ?
Olyan edit parancs van EP -n, aminek van egy paramétere (a sor száma), és egyszerűségből el is hagyták az "edit" token -t ... :)
Hát úgy hívják hogy sor alapú editor meg teljes képernyős editor, nem ? :)
Azt meg nyilván megcsinálták a sor alapúakban is, hogy a sorokat porgetni lehessen az edit sorban, tehát lehet egy karaktert is editálni remélhetőleg.
innentől kezdve már csak az a kérdes, hogy mikor szkrollozol, akkor egy sort szkrollozol, vagy egy képernyőt ... :)
Hát úgy hívják hogy sor alapú editor meg teljes képernyős editor, nem ? :)Az EXOS-é meg sok képernyős!
Az EXOS-é meg sok képernyős!
Egen ... csak egy iciripicirit lenne gyorsabb a scroll -ja ....Ez tipikusan annak a példája, hogy 8 bites viszonylatban létrehoztak egy baromi jó és előremutató (1984-ben) dolgot (oprendszert), csak a 4MHz kicsit kevés hozzá... :-) Főleg a 80 karakteres képernyőn látszik, hogy milyen lassú akárcsak a karakterírás! Más 8 bites gépen meg csak beírsz egy bájtot a video RAM megfelelő helyére, és meg is jelent a betű. Itt meg a video RAM címe se állandó, legalábbis ha az EXOS-szal nyitsz VIDEO: csatornát.
100 CLOSE #102
110 OPEN #102:"VIDEO:"
120 DISPLAY #102:AT 4
105 CLOSE #0
120 DISPLAY #102:FROM 1 TO 24 AT 4
UI2: Akkor ha még egy videólapot nyitok, szövegeset, akkor azt nem lehet már teljesen kurzormentesre megcsinálni, mert az már nincs kapcsolatban a 0-ás editor csatornával? Kár... Vagy mégis megoldható valahogy?
de van set cursor off is
Tényleg, ezt elfogadja, de látszólag nem csinál semmit. Bug lenne? Gondolom a megfelelő escape szekvenciákat írná ki a csatornára.Szerintem ON és OFF paramétert szinte minden SET utasítás után meg lehet adni, csak nincs mindig értelme. Úgy működhet, mintha az ON értéke 0 lenne, az OFF pedig nem tudom, mennyi.
na jó de a set cursor x az mit jelentene amúgy?Jó kérdés! A gépkönyvben a SET CURSOR ON/OFF nincs is benne.
Ha fájlba listázunk ki egy programot, azt PC-n a jegyzettömbbel szerkesztjük, majd visszatöltjük EP-be, akkor az megfelelően fog mindig működni?
Hogyan lehet a 102-es videólapot 3 karakterrel lejjebb rakni? Mert pl. felette pár sorban egy másik videólapot szeretnék megnyitni.
Próbálkoztam:Code: [Select]100 CLOSE #102
110 OPEN #102:"VIDEO:"
120 DISPLAY #102:AT 4
120 DISPLAY #102:AT 4 FROM 1 TO 24
És kész.110 DISPLAY #102:AT 1 FROM 0 TO 24
120 DISPLAY #102:AT 4 FROM 1 TO 24
Az első DISPLAY leveszi.És ehhez minek zárod be a 102-est?Gondoltam, bezárom, ami van, és nyitok helyette egy másikat. De amit írsz, az is jó!
A POKE és PEEK helyettesíthető valami mással?
Ha nagy szám van utánuk, pl. PEEK(49140), azt a Zzzip nem tudja elfogadni, mert túl nagy neki... Erre csak az a megoldás, hogy zzzippelni kívánt programokba ne poke-oljunk?
SPOKE/SPEEK, abban csak 16383 a max ami kell.Akkora számot még meg tud enni a Zzzip?
És egy adott POKE-t hogyan lehet helyettesíteni egy SPOKE-kal? Hogyan kell "átváltani"?Ha jól sejtem a rendszerszegmenst akarod tönkretenni :ds_icon_cheesygrin:
nem próbáltam, de lehet, hogy negatív számot kéne megadni POKE-nál, ha 32767-nál nagyobb értéket akarnánk megadni. Vagyis: -1 = 65535, -2 = 65534 stb.
Ha jól sejtem a rendszerszegmenst akarod tönkretenni :ds_icon_cheesygrin:Ugyan, mosom kezeimet, nem akarok én tönkretenni semmit! :D
Akkor 32768-at kell kivonni, és SPOKE(255,cím,adat)
100 LET SHA=PEEK(49140)+PEEK(49141)*256
110 FOR SHAX=0 TO 200
120 POKE SHA,244+RND(6)
130 NEXT SHAX
140 POKE SHA,247
ha megnézel más programomat, ami zzzip kompatibilissé lett téve, ott az ilyet úgy oldottam meg amit írtam, hogy összeadok két 32k-nál kisebb számotIgen, olvastam, nem rossz ötlet, de kicsit jobban nézne ki, egyszerűbben, egyetlen SPOKE-kal. De aztán lehet, végül az összeadós módszert választom.
Közben egy kis program.Az elvet nem értem. Ha 8 színnel van kirajzolva a figura, hogyhogy csak egyszínű lehet?
Az elvet nem értem. Ha 8 színnel van kirajzolva a figura, hogyhogy csak egyszínű lehet?
Hogyan lehet elérni hogy a standard editor (pld. basic editor) buffere nagyobb legyen ... pld. 10 képernyő visszafele, vagy ilyesmi ?10 CLOSE #0
És azt, hogy a status sornak is átváltozzon a palettája ?POKE :-)
És egy (pld. 102) csatornának hogy lehet a palettáját lekérdezni ?PEEK :-D
Tényleg, a szín megváltoztatására van lehetőség escape szekvenciával pl. 102-es csatornán a PRINT utasításban? Tehát úgy, hogy ne SET INK-elni kelljen minden PRINT utasítás előtt, hanem még a PRINT-elt szöveg elé beírni a kódokat.
igen, mindent át lehet vinni esc szekvenciákra, ami tök hasznos amúgyÉs nincs/nem lesz valami gyűjtemény ezekből? Laci nemrég elárulta, hogyan lehet a kurzort kilőni, arról se olvastam még előtte soha sehol.
És nincs/nem lesz valami gyűjtemény ezekből? Laci nemrég elárulta, hogyan lehet a kurzort kilőni, arról se olvastam még előtte soha sehol.EXOS könyv hasznos olvasmány :-) (http://ep128.hu/Ep_Konyv/Exos.htm)
EXOS könyv hasznos olvasmány :-) (http://ep128.hu/Ep_Konyv/Exos.htm)
sokszor ESC helyett CTRL-t írnak, az mi?Egy gomb a billentyűzeten :-D
EXOS könyv hasznos olvasmány :-) (http://ep128.hu/Ep_Konyv/Exos.htm)Ez bonyolult, elméleti. Konkrét példák nincsenek benne, legalábbis ahogy "belelapoztam", nem találtam.
Egy gomb a billentyűzeten :-D
Ha azzal együtt nyomod az adott betűt, akkor kapod a mellette hexaban megadott kódot.
ez azt jelenti hogy 1 kód, esc nem kell elé?Igen. Gyakorlatilag CTRL A-tól Z-ig, az a CHR$(1)-CHR$(26)
Ezt érdemes lenne folytatni. (http://wiki.enterpriseforever.com/index.php/IS-BASIC_tr%C3%BCkk%C3%B6k) Egy helyen lehetne minden, ami pl. basic programozáshoz kell. Karakterek és kódjaik, színek és kódjaik, JOY függvény értékei, néhány fontosabb POKE, PEEK, SET, OUT, hogy mit csinálnak, escape szekvenciák, stb.
Tényleg, a szín megváltoztatására van lehetőség escape szekvenciával pl. 102-es csatornán a PRINT utasításban? Tehát úgy, hogy ne SET INK-elni kelljen minden PRINT utasítás előtt, hanem még a PRINT-elt szöveg elé beírni a kódokat.
olvashatatlanná válik a kód, ha SET 26,0-t ír az ember a SET STAUS ON helyett.Mármint milyen kód válik olvashatatlanná? Eddig nem vettem észre hibát.
Mármint milyen kód válik olvashatatlanná? Eddig nem vettem észre hibát.A program kód.
A program kód.Ez hogyan mutatkozik meg? Most kipróbáltam, betöltöttem egy basic programot, beírtam az elejére, hogy SET 26,0, elindítottam, később megállítottam, de ugyanúgy ki tudom listázni.
Ez hogyan mutatkozik meg? Most kipróbáltam, betöltöttem egy basic programot, beírtam az elejére, hogy SET 26,0, elindítottam, később megállítottam, de ugyanúgy ki tudom listázni.Ki listázni ki tudod, de nehezebb olvasni, mert elő kell venni a gép könyvet, hogy tudjad, hogy az STATUS ON.
Ki listázni ki tudod, de nehezebb olvasni, mert elő kell venni a gép könyvet, hogy tudjad, hogy az STATUS ON.Most már értem. Úgy értettem, hogy elrontja a listázást és olvashatatlan lesz a programlista, ha ezt használjuk.
GRAPHICS HIRES 16 után hogyan lehet tényleg 16 színt használni? Ha 7-nél nagyobbat adok meg SET INK-nél, akkor nem jó szín jelenik meg, vagy semmi. Próbáltam kiadni előtte a SET BIAS valamennyit, de akkor is ugyanaz a 7 szín jelenik meg 7 fölött is, mint 7 alatt. Biztos nagyon egyszerű a válasz, csak én nem jövök rá...
a biasnál adtál meg rossz számot
1-7: bias "1"
8-15: bias "2"
ha így érthető
a biasnál adtál meg rossz számotEz nem BASIC-ben van így, hanem NICK közvetlen port írásnál.
1-7: bias "1"
8-15: bias "2"
ha így érthető
BASIC-ben 0-255-ig lehet megadni, amit aztán majd leoszt az EXOS a NICK-nek.
Tehát BIAS 0-7 esetén 0,1,2,3,4,5,6,7 lesz 8-15 színek.
8-15 esetén 8,9,10,11,12,13,14,15, stb
aki akarja folytassa :)Kegyetlen értelmes lett...
Pl. brutális nagy élmény volt, amikor 1x évesen rájöttem hogy miért kell a randomize függvény, és hogy az a "külső világból" kell hogy vegyen egy információt (time, azaz a bekapcsolás óta eltellt idő a RUN pillanatában, amit ügye én hoztam létre), hogy "belül" - hajjaj - "randomnak" tűnhessen. :)Valójában mit csinál pontosabban a RANDOMIZE? Azt értem, hogy valódi véletlenszámok lesznek akkor, de pontosabban mi történik a gépben, ha kiadjuk? A program indításának pillanatában a bekapcsolás óta eltelt időből számítja ki a véletlenszámot? És ha csak parancs üzemmódban adjuk ki, hogy RANDOMIZE és utána PRINT RND(X), akkor is működik, nem?
Valójában mit csinál pontosabban a RANDOMIZE? Azt értem, hogy valódi véletlenszámok lesznek akkor, de pontosabban mi történik a gépben, ha kiadjuk? A program indításának pillanatában a bekapcsolás óta eltelt időből számítja ki a véletlenszámot? És ha csak parancs üzemmódban adjuk ki, hogy RANDOMIZE és utána PRINT RND(X), akkor is működik, nem?
Felesleges programon belül többször kiadni, hogy RANDOMIZE. Ha mégis kiadjuk, nem befolyásolja mégsem a következő RND függvényt, mert nem indítottuk újra a programot?
egyelőre a scroll van megEz nagyon poén, tovább kéne fejleszteni pacman játékká, például úgy, hogy egymás alatt lennének a Dot collector pályái, és át lehetne mászkálni egyikből a másikba, közben a szörnyek is ott lófrálnának véletlenszerűen. Vagy akár kígyós játék is lehetne.
Ez nagyon poén, tovább kéne fejleszteni pacman játékká, például úgy, hogy egymás alatt lennének a Dot collector pályái, és át lehetne mászkálni egyikből a másikba, közben a szörnyek is ott lófrálnának véletlenszerűen. Vagy akár kígyós játék is lehetne.
egy általános "engint" akarok csinálni belőle, amivel bárki tud majd egyszerűbb játékokat csinálniJó, és a sebessége is egész jó, zzzipelve meg sztem tökéletes is lenne a sebessége.
na már nem lehet belemenni a falbaDurva, hogy ilyet is meg lehet csinálni...
na már nem lehet belemenni a falbaEz a változat véglegesnek tekinthető, mint engine?
na már nem lehet belemenni a falbaLátom, minden sorban mások a színek. Szerintem érdemes lenne színátmenetesre megcsinálni. Akár úgy, hogy pl. a teteje lenne a legsötétebb, az alja a legvilágosabb, vagy akár úgy, hogy menet közben hol halványodna, hol sötétedne felváltva. Utóbbi lenne a látványosabb.
dehogy végleges, semmi se végleges benne, hiszen csak most kezdtem el :)Eléggé használhatónak tűnik, azért kérdeztem.
hm az a program érdekelne amiről írsz, mindenképp mentsd le valahogy pc-reA betöltőjét betöltötte a gép, de a többit nem. Itt van vesztességmentes tömörítéssel (flac) a csipogás a betöltéshez. Már fogalmam sincs, hogyan lehet ebből kinyerni PC-n az adatokat, volt valami Tapir meg valami más is, de nagyon régen nem használtam már.
Az ep128emu csomagban található tapeedit program két file-t lát rajta (labirintus-2 és labirint.prg), egyik sem CRC hibás.Köszi! Rémlett nekem is, hogy az EP128Emuban is van valami ilyen, de nem tudtam már, hogy hol.
és tök gyors, és ha az alsó sor magasságát is állítanád?
mondjuk ezt se ismertem :)Végülis meg lehetne akár ezt is csinálni. Ha van elég videómemória.
mondjuk nem is egy nagy szám.
úgy lett volna jó ha több videólapra kirajzolja a lehetséget nézeteket és úgy marha gyorsan lehetne mozogni
csináltam pixeles scrollt bele :)Ez azért már elég jó!
semmi lényegi fejlődés, elszórakoztam a grafikával :)Ez is jó, meg kell őrizni ezt is és az ezelőttit is, meg az azelőttit is. Talán szintenként változna a grafika.
hm ahogy nézem a pixel scroll eltűnt belőle a zzzippelés soránVagy csak a sebesség miatt nem tűnik már fel, de szerintem azért más így. Már a basic programban sem lehetett mindig érzékelni.
610 IF RND>.5 THEN
A szakikat kérdezem: Ezt mivel lehetne helyettesíteni, aminek pontosan ugyanez lenne a hatása? IF RND(10)>5 THEN egyenértékű lenne vele?620 LET Q=RND(39)
630 IF Q/2<>INT(Q/2) THEN GOTO 620
Ha jól értem, itt 0 és 38 közötti véletlenszerű páros számot kell generálni. Ha jól számolom, ugyanaz, mint ez:de miért ezt a béna programot foltozgatod?Szórakozásból. Miért ne? Úgyse használja senki, de milyen poén, hogy ilyen is van, eddig nem volt. Kísérletezés, sikerélmény. Megörültem, hogy előkerült a szekrény mélyéről és most kicsit elvagyok vele. Értelme nem sok van, az nem baj.
szerintem annyit nem ér :)
840 IF YY/2=INT(YY/2) THEN
Ehelyett mit lehetne beírni?831 LET YY$=STR$(YY)
832 LET LENYY=LEN(YY$)
833 LET LY$=YY$(LENYY:LENYY)
840 IF LY$="0" OR LY$="2" OR LY$="4" OR LY$="6" OR LY$="8" THEN
INT függvény nélkül hogyan lehetne megvizsgálni, hogy egy szám páros-e? A Zzzipnél az INT-nek nincs hatása,
IS-BASIC-rol fogsincs, meg Zzzip-rol sem, de ugy altalaban barmilyen programnyelven en ugy csinalnek pl ilyet, hogy binaris "es" az 1-el, ha az eredmeny 1, akkor ugye paratlan, kulonben meg paros (mert ugye ha kettes szamrendszerben nezzuk, akkor 0-ra vegzodik minden paros szam, es 1-re a parosak, mas lehetoseg meg incs). Sajnos, nem jottem ra most igy hirtelen, hogy IS-BASIC-ben ezt hogy kell csinalni :( Commodore BAISC-ben a "print 12 and 1" es a "print 13 and 1" rendre 0 es 1 erteket ad, IS-BASIC-ben viszont mindig 1-et. Gyanitom, hogy IS-BASIC-ben ez logikai "es", az itt a baj.
print 12 band 1
Aha! Koszi. Btw, valaki, van vmi kimerito jellegu IS-BASIC leiras? Operatorok, struktura stb, nem oktato jelleggel, hogy tanuljunk BASIC-ben, hanem programozoknak szolo referencia. Az IS-BASIC nekem eddig nagyon kimaradt ...
sőt, van BOR is :)A SÖR jobb.
840 IF YY/2=INT(YY/2) THEN
Már gondolkodtam sok mindenen, pl. megszorozzuk kettővel, aztán elosztjuk néggyel. biztos van valami olyan egyszerű műveletsorozat, amire mindig tipikusan eltérő eredmény jön ki páros és páratlan számoknál.Az a baj, ez az utolsó számjegy detektálása kettes számrendszerben is majdnem annyira "bonyolult", mint az említett favágó módszerem. Ott is az utolsó számjegyet nézi meg, csak ott 0, 2, 4, 6, 8 lehet csak, kettes számrendszerben meg csak 0. Ha a 2, 4, 6, 8 számokat kihagyjuk, nem egyszerűsíti le számottevően a dolgot...
Kettes szamrendszerben megkapjuk az utolso szamjegyet, ha egy binaris AND muveletet vegzunk a kerdeses szam es az 1 kozott.Jaaa, kezdem már érteni. Annyira új nekem is ez, hogy nem tudtam elvonatkoztatni.
De akkor ezt hogyan kéne átírni?
840 IF YY/2=INT(YY/2) THEN
840 IF REM(YY,2)=0 THENEz már a bőség zavara, már választani is lehet két módszer közül. :D
De a BAND is jó.
Ez már a bőség zavara, már választani is lehet két módszer közül. :D
Melyik műveletet végzi el gyorsabban a gép, lehet ezt tudni? Ha egy cikluson belül jó sokszor elvégzi, akkor lehet jelentősége.
mi az a REM? :DRemainder azaz maradék.
mi az a REM? :D
mi az a REM? :D
10 PROGRAM "paros1.bas"
100 INPUT A
110 IF REM(A,2)=0 THEN PRINT "paros":GOTO 100
120 IF REM(A,2)<>0 THEN PRINT "paratlan":GOTO 100
10 PROGRAM "paros2.bas"
100 INPUT A
110 IF NOT(A BAND 1) THEN PRINT "paros":GOTO 100
120 IF A BAND 1 THEN PRINT "paratlan":GOTO 100
A Referencia kézikönyv szerint:
"REM(x,y)
Az x és y osztásának maradéka.
REM(-1,3)=-1. L.: MOD(x.,y)."
Mondjuk elég bénán magyarázza a referencia kézikönyv. Igaz, nem is tankönyv, de ebből én nem érteném meg. Elsőre hozhatna valami pozitív egész számmal példákat (többet is), utána elvont matematikusok kedvéért jöhetne a negatív előjelű példa is.
Az akkori EP tulajdonosok átlagéletkora elég alacsony lehetett, főleg kb. 13 éves fejjel még úgy se tudtam mit kezdeni ilyen magyarázatokkal.
főleg kb. 13 éves fejjel még úgy se tudtam mit kezdeni ilyen magyarázatokkal.Szerintem az osztást, maradékot meg ilyeneket akkor már pár éve tanultad általánosban :-)
Szerintem az osztást, maradékot meg ilyeneket akkor már pár éve tanultad általánosban :-)Lehet, de ránézek ilyen -1 és 3 számokra, azok nem néznek ki jól, nekem legalábbis. :D
Az RND függvénynek 0 és 1 között kellene valami értéket adnia. Itt most 1-nél nagyobb értéket adott fura módon, de biztos szokás szerint csak én értem félre a dolgot.
(Attachment Link)
futtassátok többször
tényleg érdekes :D
Marmint miert erdekes? Itt sem latok 1-nel nagyobb szamot. Vagy mas miatt erdekes?
mondjuk az is kérdéses számomra hogy milyen gyakorlati haszna van ilyen pontos számábrázolásnak basic-ben...
a tanuláson kívül... persze az is komoly dolog
futtassátok többször
tényleg érdekes :D
jó de milyen haszna van ennek a tanuláson kívül? :)
Picit még toldozgattam a programot. Nem a 102-es, hanem a 0-ás csatornára írta az időt játék közben, ez is lassította.
Ez most zzzippelés nélkül is egész jó sebességűnek tűnik.
Laci, ha ki akarod rakni a BASIC programcsokorba, akkor még rakok bele valami zenét, amikor kijutunk a labirintusból. Ha nem akarod kirakni, akkor hagyom. Érdemes lenne kirakni, mert bár 1 percet kell várni az elején, mégis eléggé egyedi ez a program.
jó de milyen haszna van ennek a tanuláson kívül? :)Lehet használni a Enterprise-t SZÁMÍTÓgépnek.
Lehet használni a Enterprise-t SZÁMÍTÓgépnek.
na de ez az, hogy konkrétan mire?
ok, öröknaptár... meg ilyesmi kisebb dolgok, de konkrétan valami komolyabb munkára?
Nem egészen világos "konkrétan" mire akarsz használni egy 30 éves számítógépet, 2015-ben? :oops:
De mást is mondok: ma (2015-ben) a mai csoda teljesítményű számítógépeken, a felhasználók hány százaléka készít "komolyabb" programokat? Ilyen alapon a mai számítógépeket sem használjuk többre, mint pl. a C64-et (a software-park miatt hozom példának): játék- esetleg demó-, alkalmazói programok futtatása.
ok, végül is c64-et is használták pl nyilvántartó programokhoz meg ilyesmikhez is ha jól tudom, bár nem tudom ezek basic programok voltak-eHa Basic, akkor csak poke utasítás volt benne :D
ok, végül is c64-et is használták pl nyilvántartó programokhoz meg ilyesmikhez is ha jól tudom, bár nem tudom ezek basic programok voltak-eAz én C64-ben eredetileg az ELGI-ben (geofizikai intézet) szolgált, a hozzá kapott két zacskónyi lemezen pedig mélyfúrás nyilvántartó progik voltak BASIC-ben :-)
Ha Basic, akkor csak poke utasítás volt benne :D
itt egy új, kicsit fejlődöttNem rossz!
úgy döntöttem ilyen keskeny pálya lesz, lehet hogy kijön belőle valami újfajta gameplay, meg gyorsabban rajzolja ki
Nem rossz!
Amúgy még az előzőnél akartam kérdezni, nem lehetne-e szélesebb a pálya. :D
A kirajzoláson kívül van máshol is jelentősége, hogy keskeny pályának célszerű lennie?
Megnézem majd. Tegnap ahogy néztem az eredeti programot, nagyon csúnya (és lassú...) megoldások is voltak benne. Ja és a legfelső sorba nem lehet fellépni, gondolom, ha ott kellene valahol továbbmenni, nem bejárható a labirintus.Nem tudom, miért nem lehet a felső sorba menni. Lehet, csak rosszul adták meg a koordinátát? Vagy valami balhé lenne, ha odalépnénk?
persze mindegy, mert olyan magasat kirajzolni már úgyis túl sok időA kirajzolást nem lehet másképp megoldani? Pl. előre kirajzolni, a csatorna tartalmát meg amit kell elmenteni egy fájlba, és onnan csak visszatölteni. Vagy, hogy merészebb legyek, a memóriaállapotot elmenteni és betölteni.
szerintetek lehetne olyat, hogy fogom az első lpt sort (a status sor alatt) és kihúzom teljes képernyőre, és az alatta lévő sorba pedig beállítom azokat a dolgokat amik az lpt végét jelentik?
Persze, csak normalis videosignalt nem fog igy adni, mert hianyzik a blanking, vsync meg ilyen aprosagok :) Nyilvan at lehet irni, de azert csak ovatosan.
hát arra gondolok hogy jó is legyen persze :)
amúgy zseniális dolog ez a melegreset EP-n, egy ami nem oké, hogy a funkcióbillentyűk programozását is reseteliAz a billentyűzet csatorna bezárása törli.
sőt, asszem pont ezért nem szoktam rá az átprogramozásukra...Zozotoolsban ezért is lett funkció funkcióbillentyűk mentésére/visszatöltésére :-)
amúgy zseniális dolog ez a melegreset EP-n, egy ami nem oké, hogy a funkcióbillentyűk programozását is reseteliBiztos meg lehet csinálni, hogy reset után visszatöltse a billentyűfunkciókat. Vagy funkcióbillentyűket.
sőt, asszem pont ezért nem szoktam rá az átprogramozásukra...
Biztos meg lehet csinálni, hogy reset után visszatöltse a billentyűfunkciókat. Vagy funkcióbillentyűket.
hát ja, ha újra beállítjuk :)Mint említettem már Zozotoolsban van erre funkció...
Mint említettem már Zozotoolsban van erre funkció...
á sajnos én sose használtam ilyen extra dolgokat...
Zozotools mint "extra"...? :-) Jó vicc... Elsők között égettettem be magamnak anno.
beégetni? haha, nekem floppym is csak a vége felé lett :DAz EP-s időkben nem is jutott el hozzám a Zozotools, de Orksoft programokból is maximum egy, de már nem tudom, melyik volt az.
beégetni? haha, nekem floppym is csak a vége felé lett :D
Az égetés nem követelt floppy -t azt az újságban (Enterpress) is meg lehetett rendelni magnós géphez is. :-)
Ok, ha CSAK alap géped volt, akkor leginkább a cartridge -ban kellett helyet szorítani (ahol nem volt sok) a beégetendő (bármiféle) cuccnak.
hm nincs xor basicben? :(úgy néz ki nincs, esetleg az EP Plust megnézheted, hátha ott van.
egy effekt ami sajnos csak max emu sebességen (kb 3000%) élvezhető
a kirajzolás is
Van basicben valami lehetőség az RBG függvényen kívül, amivel a szín fényerősségét lehet állítani? Pl. fokozatos elhalványodásra. Pl. a SET COLOR 1,x utasítás segítségével, ahol az x értéke egy FOR cikluson belül változna.
Nem tudom, milyen összefüggés van a színkódok és a szín ill. annak erőssége, fényessége között. Pl. hogyan érhetők el egymás után pl. a zöld, kék, stb. árnyalatai, fokozatos halványodással/erősödéssel.
hát a basic RGB függvényben az értékek pont a fényességet határozzák meg 0-1-igIgen, de a 0 és 1 közötti számokat a Zzzip nem nagyon szereti. Bár RGB-nél még valamennyire elfogadó. Na, majd meglátjuk... De valami módszer biztos van, amivel sorba állíthatóak a 255 színből egy adott színnek az árnyalatai...
Igen, de a 0 és 1 közötti számokat a Zzzip nem nagyon szereti. Bár RGB-nél még valamennyire elfogadó. Na, majd meglátjuk... De valami módszer biztos van, amivel sorba állíthatóak a 255 színből egy adott színnek az árnyalatai...
huh, hát erről egy csomót beszélgettünk már itt, talán pont ebben a topikbanA színekről tényleg sok szó volt már, a palettáról, a 256 színről, de direkt ilyen elhalványulós effekt basicben tudtommal nem volt.
én és mások is csináltak ilyen szín sorbarendezőt
A színekről tényleg sok szó volt már, a palettáról, a 256 színről, de direkt ilyen elhalványulós effekt basicben tudtommal nem volt.
de, pont ez voltPont ez nem volt.
A legegyszerűbb megoldás szerintem, amit a ZZZIP is megeszik, data sorba tenni a színek értéketiVégülis ez is egy megoldás. Csak azt hittem, van valami egyszerűbb, valami matematikai függvénnyel leírható módszer, hogy ne kelljen külön data sorokat írni.
persze angol tanulásnak kiváló volt!Pl. pitch = árok. :D
csináltam egy összehasonlítást, poke és spokeHa nem nagy baj én egy kicsit javítottam a programokon, hogy működő képes legyen.
csak ránézésre lehet a sebességet látni, és nekem a poke kicsit gyorsabbnak tűnik :)
a videó cím hardcoded, szóval gányolás :)
a basic programokat is mellékeltem
sajnos a poke esetén az összeadás is kell mert csak így fordítja le a zzzip, tehát ez is lassítja a poke-s verziót
de ez csak teszt
Ja és javítanám a 200. sort 32767 helyett 32768 adnák hozzá, hogy jó legyen.
Akkor meg nem használható a POKE a Zzzip ben mert így egy tárcímmel eltérőt írsz át.
Ez súlyos hiba.
ezt most nem értem :)Csináld :
értem én, de amikor ilyen kísérleteket meg teszteket csinál az ember akkor nem kell tökéletesnek lennieIgaz de ez olyan nagy hiba minta beírnánk sorszám nélkül a POKE 56,201 és enter.
sőt amúgy később se :)
amúgy én annak idején elkezdtem egy karakteres módú poke-s basic játékot csinálni, amiben ha jól emlékszem 6x8 karakteres figurák voltak. csakhogy akkoriban már elkezdtem asm-ban kódolni, és végleg áttértem arra, úgyhogy ezt nem fejeztem be. sajnos el is veszett.Én is ezért léptem be egy kicsit a Dot Collector javításába.
na most majd azért valamit összedobok talán így basicben, mert ez tök szórakoztató :)
amúgy sajnos az spoke és a vidmem cím kiolvasása az lpt-ből se jó teljesen, hiszen ha a videólap átlóg egy másik szegmensre, mindjárt nem lesz jó simán csak így címezgetniAnnak már komoly grafikának kell lennie.
igazából egy "dave-poke" kéne (tehát direktben címezni amit a dave* lát), csak hát egy ilyen szubrutin megintcsak lelassítaná az egészet
marad a poke és a gányolás :P
*arra gondolok hogy amit videókép előállítására tud használni, azt a 64k-t direktben címezni
1 karakter készítésének nincs sok értelme, ezért eleve 2x2 karakter editálása leszEsetleg lehet úgy is, hogy a program szedje szét az editált mezőt két karakterre. De a felhasználó egyetlen "karaktert" szerkeszt.
fagyasztási trükkHa csak simán reset futás közben, vagy előtte stop és úgy reset, és utána continue, az is fagyaszt. De ezt már írta itt valaki szerintem.
A képernyő címet nem lehet egy szegmensre áttolni, hogy ne két darabban legyen?
NO=INT(.5+NO)
formába kellene írni, nemde? Az IF-ek csak lassítanak rajta.
béna kis program, hires 2-ben egy kis raszter színezés, plusz egy kis trükkLassan kiadhatsz egy újabb Ork demót. :D
(meg a poke néha beleír oda is ahova nem kéne...) :)
Volt már szó róla, hogy ha egy eljárás rekurzívan hívja magát, és van benne FOR-NEXT ciklus, akkor a ciklusváltozót deklarálni kell az eljárás elején. Más "kavarodást" én még nem tapasztaltam.
hex editorban nézve az EP a sortörést 0d 0a karakterekkel tárolja, míg ebben csak 0d vanLinux csinálja úgy. Programmer's Notepad-al lehet ida-oda konvertálni. (http://www.pnotepad.org/)
hogy is voltak ezek a dolgok?
Linux csinálja úgy. Programmer's Notepad-al lehet ida-oda konvertálni. (http://www.pnotepad.org/)
hát egyelőre ennyi, meglátom érdemes-e még vele foglalkozni :DSzerintem érdemes, 16 szín karakter módban tuti lenne, és zzzipelve még egy scroll is elférne alatta.
így is jó színbelővéssel, én a GRAPHCA karaktermódra gondoltam, karakterdefiníciókkal tök szép lehetne, nem ilyen nagy kockás :)
ááá látom nem ismered a nyan cat-et! pont a kockásság a lényege :)Lehetne negyedennyire kockás :D (4 pixel/karakter)
aha jó ötlet volt, csak a színeket kéne belőni :)
valaki csináljon nyan zenétValószínű nem ilyenre gondoltál, de itt van két rockos-technós remix. :D
szipucsu? :)
Valószínű nem ilyenre gondoltál, de itt van két rockos-technós remix. :D
(Attachment Link)
(Attachment Link)
ep-n lejátszható formátumra gondoltam :)Tudom, ironikusan írtam, hogy "valószínűleg".
na persze lehet egy digi hang is végül is, csak az rövid lesz
Ez így már majdnem Laser Squad. :ds_icon_cheesygrin:
"körökre osztott stratégia"Lehetne belőle dáma vagy sakk játék is. :D Esetleg úgy bővítve, hogy lőni is lehet. Lenne a futóknál lézerfegyver, a királynőnél meg mondjuk nukleáris bomba.
copy from #105 to #101Feltaláltunk egy szövegszerkesztőt, ami mindössze egysoros. Lehet vele indulni a programozási versenyen. :D
az is poén hogy from 102 to 0Ennek nálam nem volt hatása különösebb. Viszont ha a 103-as csatornára másoltam, annak sem. Pedig gondoltam, hátha kiad valamiféle hangokat a szövegnek megfelelően.
elvileg ha escape szekvenciákat gépelnél, hangot is tudna adni :)Egyébként ezek az escape szekvenciák hogy vannak pontosan? van valami "képlet", amivel leírható, hogy milyen hangnak milyen szekvencia felelne meg?
Egyébként ezek az escape szekvenciák hogy vannak pontosan? van valami "képlet", amivel leírható, hogy milyen hangnak milyen szekvencia felelne meg?
basic-ből akarok out-al hangot csinálni, de egyszerűen nem találom sehol a portok leírását!Próbáld itt (http://ep128.hu/Ep_Konyv/Exos.htm#240) :)
help! :)
azt hittem hogy portra írással finomabb hangerő változást lehet elérni, de sajnos csak ugyanazt amit a basicben a +0.1-el :(Mi lehet az, amire nem elég a 0 és 255 közötti számérték? Erre kíváncsi lennék.
ugyanis ha lenne kisebb, akkor azzal érdekes effektet lehetne létrehozni :(
hát a hangmagasság basic-ben se 0-255, ugyanis tizedes jegyek is vannak, ne felejetsd.Az előbb nem a hangerőre gondoltál?
Még valamelyik Enterpressben volt egy bepötyögni való játék, ami a megszakításokat tiltotta, és ott is valami OUT-tal generálta a hangot. Autóverseny lehetett, ahol a képernyőn az autóval körbe-körbe kellett menni. Ez nincs meg valahol a neten? Vagy lehet, nem is Enterpress-ben volt?Ha jól emlékszem, a második számban volt.
na asszem elkészült az első valamennyire értékelhető gratcha játék :DNem kéne Game Over, amikor elfogy az energia? :-)
Nem kéne Game Over, amikor elfogy az energia? :-)
amúgy 700 a rekordomÍgy a sérthetetlenség pokéval nem nehéz több tízezret csinálni, csak be kell nyomni az alt+w-t :-)
Így a sérthetetlenség pokéval nem nehéz több tízezret csinálni, csak be kell nyomni az alt+w-t :-)
még kicsit bugos néholIgen pl a pontszámláló :oops:
Igazából nem tudom hogyan kellene. Egy pici BASIC programban azt csináltam, hogy sorrendben POKE-kal beléjük írtam 1, 2, 3-at, kiírtam az RND értékét, újra beleírtam ugyan azt, mégegyszer PRINT RND, és a két érték azonos volt. Ha ki-REM-eltem a második adag POKE-ot, akkor meg változott. Ez segít?
INT(x/10)*10, vagy x-MOD(x,10)
a gond az hogy nem emlékszem hogyan szinkronizáltam a szólamokatMindig mindegyik szólamnak szólnia kell. Ha valamelyiken nincs hang, akkor a hangerő 0. És SYNC-kel szinkronizálni az összeset.
Mindig mindegyik szólamnak szólnia kell. Ha valamelyiken nincs hang, akkor a hangerő 0. És SYNC-kel szinkronizálni az összeset.
de ügye egy zenében nem ugyanolyan hosszúak általábanNa igen, ezt basicben sosem tudtam én normálisan megoldani. Legfeljebb úgy, hogy következő hangként is az előző hang szól tovább, míg egy másik csatornán a hang pedig más. De ez csak akkor jó, ha nincs envelope, mert különben nem lesz a hang folyamatos.
Na igen, ezt basicben sosem tudtam én normálisan megoldani. Legfeljebb úgy, hogy következő hangként is az előző hang szól tovább, míg egy másik csatornán a hang pedig más. De ez csak akkor jó, ha nincs envelope, mert különben nem lesz a hang folyamatos.
Én nem emlékszem, hogy láttam volna ilyen ledobálós játékot :)Én se.
Tényleg, emlékszem! Anno TVC-re és EP-re is átírtam, csak EP-n nagyon lassú volt. Attrib módban ment.
az a bizonyos falvédő játék. biztos ismertek ilyetEP-re is van, két része is van, de nem jut eszembe a címe... Talán a Ramparts?
EP-re is van, két része is van, de nem jut eszembe a címe... Talán a Ramparts?
Azt hiszem OSTROM néven mentettem. TEXT 40 és ATTRINUTUM módban is átírtam. Ha megtalálom valamelyik régi lemezen feltehetem.
Azt hiszem OSTROM néven mentettem. TEXT 40 és ATTRINUTUM módban is átírtam. Ha megtalálom valamelyik régi lemezen feltehetem.Ez volt az?
egy kis segítség, ha valaki folytatná :)
persze majd zippelve lesz megfelelő sebességű
most már ne folytassa senki mert én írom tovább :)
Szép a fal, de szerintem túl csicsás. Lehetne kicsit inkább barnás és nem ilyen fényes, de te tudod. :)
ez a divat! :)
szép élénk színek :)
és mi lesz az epilepsziásokkal ? :D
persze a fejlesztők nem szeretik az ilyet :)
"Jó az egy összeállítás a kis játékok"
talán túl könnyű, bár egy idő után meg túl nehéz...Igen egy kicsit hirtelen lesznek nagyon sokan.
Meg esetleg járhatna valami bonus azért, amikor éppen sikerült minden támadót leküzdeni.
Az ELLFRISS eljárást talán kétszer kellene meghívni a GAME-ban, hogy nehezebb legyen?
asszem inkább az lesz hogy lesz egy ellenség aki random lesz kiválasztva és gyorsabban mászik a többieknélSzerintem inkább úgy válaszd a gyorsan mászót, hogy a legtávolabbi legyen attól az ellenségtől, amelyik addig a legmagasabbra mászott.
SAVE ALL
geco írta a másik topikban, és több helyen is olvastam már, hogy az ep basic-je lassabb a többi hasonló kisgép basic-jénél.Ez igaz, viszont ahol esetleg sokat kell számolni, az jelentkezik.
ez amúgy lehet hogy igazi is, de kérdés, hogy hogyan mérték ezt le? mert ügye ep-n megy a háttérben a sound eszköz, amivel jó hangokat lehet csinálni, vagy akár zenét is. aztán c16 módban tök nagy "sprite"-okat lehet kirakni print utasítással. szóval nem igazán lehet 1:1-ben pl specyvel vagy c64-el összehasonlítani...
Ez igaz, viszont ahol esetleg sokat kell számolni, az jelentkezik.
Egyébként a legegyszerűbb teszt, ciklus 1-től 100-ig és az érték kiprintelése a képernyőre.
anno még PGyuri mutatott speccire egy soros BASIC programozói versenyt :-)Az EP-sből (https://enterpriseforever.com/jatekok/egysoros-jatek-felhivas/msg29054/#msg29054) kimaradtál?
jó ötlet :)
hát írd át :)Ahhoz el kéne mélyednem a játék felépítésében, még meglátom. De lényegét tekintve ugyanaz lenne, csak az ellenség kiindulási koordinátája lenne más, a haladási irányban nem -1 hanem +1 -gyel növekedne a függőleges pozíció, és a krapek a képernyő alján mozogna. A többi csak grafika.
Igazából az a kérdés, hogy van nem BASIC program ZX81-re? :-)Láttam Áttörés klónokat a linken. Az gondolom, nem basic. Eléggé nehéz lenne basicben a vízszintes scroll-t megcsinálni az egész képernyőre, pedig nagyon poén lenne, gondolkoztam már ezen. Lenne két videólap, és amíg az egyik látszik, addig a másikon átrajzolná a pályát, majd megjelenítené. Ha karakteres képernyőn dolgozunk, és az editor is arra van megnyitva, akkor "csak" egy del-t kéne nyomni mindegyik sor elejére, és balra menne az egész, a sorok végére meg kirajzolni az új karaktert. A képernyő tartalmát tömbben tárolni talán nem lenne jó, inkább a képernyőről kéne leolvasni, mi van ott. Bár a felszálló rakétáknak a koordinátáit is kéne tudni.
Szerintem ZZZIP-elve lehet jó sebességet elérni a Scramble klónokkal is karakteres megvalósításnál.
a scrollt hogyan oldanád meg? nekem ötletem sincs, szerintem nem is lehet :) hacsak nem egy asm rutinnalAmit írtam, DEL karakterkódokkal a sorok elején, az nem lenne jó? Nyilván van egy rakat hátránya.
Amit írtam, DEL karakterkódokkal a sorok elején, az nem lenne jó? Nyilván van egy rakat hátránya.
pár sor scrollozása is tök lassú lenne vele...Hát igen, de más megoldás nincs szerintem.
Azt nem lehet valahogy megcsinálni attribútum módban, hogy ha plot utasítással rajzolunk valamit a lapra, a print ne törölje le, csak eltakarja?
Egy BIAS van a Nick-ben.Áhá, szóval akkor akárhány attribútum vagy 16 színű képernyő van nyitva egyszerre, a bias közös mindegyiken, de az alsó 8 szín mindegyiken szabadon választható?
Áhá, szóval akkor akárhány attribútum vagy 16 színű képernyő van nyitva egyszerre, a bias közös mindegyiken, de az alsó 8 szín mindegyiken szabadon választható?
És a bias-ban van valami logika? Mondjuk minél nagyobb számot adunk meg, annál élénkebbek a színek, vagy ilyesmi? Tudom, ezek a színcsoportok 8-asával. De valami alapján ki lehet következtetni, hogy adott esetben melyik bias a legjobb?
http://ep.lgb.hu/colors.htmlEz eddig is ilyen volt, nem? Én most is "csak" a színekre tudok rámenni az egérrel és az egész szín betölti a képernyőt.
Ez eddig is ilyen volt, nem? Én most is "csak" a színekre tudok rámenni az egérrel és az egész szín betölti a képernyőt.Jobboldalon, a kérdőjeleknél tapogass az egérrel, majd utána a bal oldalon válassz színt a kijelölt blokkba!
Ez eddig is ilyen volt, nem? Én most is "csak" a színekre tudok rámenni az egérrel és az egész szín betölti a képernyőt.
Lehet a browser-ed becache-elte a regebbi verziot? :)Ááá, igen, ez újabban mindent becache-el. Ezért láttam Laci oldalán is sokáig, hogy januárban frissítve utoljára.
Ááá, igen, ez újabban mindent becache-el. Ezért láttam Laci oldalán is sokáig, hogy januárban frissítve utoljára.
Szóval itt össze lehet állítani a palettát, ez a lényege?
Hat, az akar lenni, de hogy van-e masok szerint ennek a formaban, igy ertelme, azt nem tudom :)Divatba jön újra az attribútum mód. Talán még jól jöhet.
Nem tudom van-e ertelme, de :
http://ep.lgb.hu/colors.html
olyan sorrendbe kéne rakni a színtáblázatot, mint amit a gracha editorba tettem (amit a demókazettáról loptam)
grafikus szempontból ez így nem túl használható hogy összevissza vannak
illetve amit szipucsu is mondott, hogy árnyalatokat csinálni különböző színekből, afféle előre elkészített tónusok, ezt is használják grafikusok (paletták)
Nem ossze-vissza vannak, hanem ugy, ahogy az EP szinei a maguk termeszetes modjan vannak :) Ha nem ilyen sorrendben lennenek, BIAS-t nem is lehetne igazan valasztani, akkor lenne csak ossze-vissza :) Ok, de ertem en a problemat persze, grafikus nem vagyok, az mar aztan biztos. Amugy meg ilyesmi aprosagokra nem igazan alkalmas ez igy, ahogy megirtam, marmint az JS-ronditas kapcsan *SE* :-) Az meg, hogy milyen szinnek az aranyalata, meg stb, haaat az mar ilyen colour-space transzformacios kerdes, ahhoz soha nem is ertettem :)
Amugy: ha valaki ad egy 256 elemu tombot, ami re-map-eli az EP szineket "termeszetes" sorrendbe, belerakhatom :)
SET #102:COLOR 1,1Miért kapnánk vissza az eredeti, vagy a 45-öst, amikor 1 van oda írva? :oops:
Így már nem az eredeti színt kapjuk vissza, de még csak nem is a 45-öst.
Ha megváltoztatunk egy színt, hogyan lehet visszaállítani eredeti színre?Előszeded az emlékedből, hogy mi volt az eredeti, és azt írod be a SET végére :oops:
Miért kapnánk vissza az eredeti, vagy a 45-öst, amikor 1 van oda írva?És ha az eredeti is 1 volt? Akkor sem azt adja vissza, valami teljesen más színt ad vissza, ami se nem 45, se nem az eredeti... De miért? Tegyük fel, akarok írni egy programot, ahol ki kell találni, milyen színek voltak a képernyőn, először megmutatja a színeket, majd elrejti úgy, hogy mindegyik helyére pl. 255-öt töltök a SET COLOR-ral, de utána nem tudom, az eredetit visszaállítani.
Vagy várj, az az 1 sem eredeti, mert a basic eleve mást tesz be már alapból a helyére?Így van.
Így van.
0,36,73,219,146,45,54,255 az alapbeállítás.
Elkezdtem ezt (http://ep128.hu/Ep_Util/IS-BASIC.htm).Elkezdtél írni egy könyvet? Vagy ez egy másik könyv?
jónak tűnik zippelveIlyesmit én is csináltam régen, de az csak egy karakter nagyságú volt, és a talaj is egyetlen karakter magas volt, azon belül egyetlen szóköz volt a luk, ami közeledett, azt kellett átugrálni. az a képernyőnek csak icipici részét foglalta el.
Javaslom, hogy a SPACE nyomvatartásával állítható legyen az ugrás mérete
az a baj ettől még könnyebb lenne. inkább nehezíteni kéne, csak nem tudom hogyanNagyobb luk kéne, és pontosabban kéne belőni, mikor kell ugrani.
itt egy zippelt, kb végleges gameplayBiztos meleg lehet, hogy legyezi magát közben a fülével. :D
Biztos meleg lehet, hogy legyezi magát közben a fülével. :D
esetleg fent lehetne valami powerup. de az is csak úgy hogy nem lóg a karakterbeNem rossz ötlet, ha jönne valami ami visszatölti az energiát.
Ez utóbbi már egészen jó, (előtte használhatatlanul lassú volt) most még a háttérre valami variációk kellenének, ha már van. :-) Zozo ötlete is megfontolandó lentebb, érdekesebbé válna tőle! :-)
szerintem eddig a sima basic-et nézted, nem a zippeltet
olyankor mindig 200-400%-on kell futtatni az emut. illetve nálam úgy van hogy max z80 speed-en van, és 100%-on. így jól lehet gépelni basic-ben és tök gyors minden, hang is rendben van
Gondolj arra, hogy nem mindenki emuval nyomul ám... ;-) Ha tehetem, én sosem azt használom, hanem a valódi gépet! Tehát bármi készül, annak az igazi EP -n (is) kell(ene) futnia megfelelően! :-)
amúgy örülök hogy valaki megnézi igazi gépen mert néha még az is lehet hogy csak emuban futÉn is meg szoktam nézni, azért is kértem múltkor valamelyikből a nem snapshot verziót. A három korábbi már be is került az SD kártya image-re :-)
jah, hát erről megfeledkeztem :)
a valódi gép az az amikor van az a lapos szürke gép és tévére van kötve? :)
Hogyan van ez a ciklusok közepéből tilos a GOTO-val kiugrás? A FOR-NEXT ciklus közepéből ez elég ronda. A többi ciklusnál lehet? Pl. IF... END IF között lehet GOTO, ami a cikluson kívülre ugrik? Vagy a DO-LOOP-nál?Miért akarnál ciklusból GOTO utasítással kiugrani? Vannak erre rendes EXIT utasítások. Az IF ... END IF meg ráadásul nem is ciklus. Elvileg - bár nem vagyok teljesen járatos a BASIC interpreterek lelkivilágában - azért, mert nem szabadít fel szabályosan lefoglalt erőforrásokat, ami később nem várt program működést eredményezhet.
310 IF A>50 THEN
320 LET X=X+2:LET W=W-2
330 IF Y<6 THEN GOTO 400
340 IF Y>=6 THEN GOTO 5400
350 END IF
mert nem szabadít fel szabályosan lefoglalt erőforrásokat, ami később nem várt program működést eredményezhet.Az EP-s GOTO az takarít, ezért lehetett felhasználni a hibás EXT hibájának javítására.
Lehetni lehet, csak randa :-) GOTO nem is kell, THEN után mehet a sorszám.Nem akad ki a program később sem, ha ezen a részen, amit beraktam, többször átmegy? Csak a ciklusokkal kell vigyázni, az eljárásokkal nem? (A FOR...NEXT az ciklus, az IF..THEN eljárás, ahogy tudom.)
na jó lesz ez, valami kis játék lehet belőlemondjuk a nyerő lottó számok ? :D
hányas szám van kiírva? :)
érdekes ez a BASIC
nézd a képet.
azt hinné az ember, hogy végtelen ciklusba kerül, de nem.
Az A változó értékét elmenti a legelején, és ahhoz hasonlítja az I-t, hiába változik közben az A értéke.
/*REXX*/
A=5
DO I=1 TO A
A=A+1
SAY I
END
egy változó értékhez akarod állítani a ciklus végétHa ilyet akarsz arra ott a DO/LOOP WHILE/UNTIL.
Leteszteltem REXX-benKutyák mióta tudnak számolni? :ds_icon_cheesygrin:
Kutyák mióta tudnak számolni? :ds_icon_cheesygrin:Ha cupákos csülökcsontot kapnak, megcsinálnak bármit :D
értem, hogy miért így csinálja, csak azon gondolkodok, hogy ez bug, vagy feature? :-)
Tudom, hogy majd kötözködésnek veszitek és verbálisan jól megcipőztök, de a Magas szintű programozási nyelvben a FOR így működik! kijelentés implicite azt jelenti, hogy a C és a hozzá hasonló nyelvek nem magas szintű programozási nyelvek. Ez szerintem egy kicsit túlzás.
Várjatok még egy pillanatot, amíg felveszem a magzati pózt és a karommal próbálom védeni a fejemet, utána kezdhetitek!
fura is lenne, ha egyes BASIC nyelvjarasok maskepp csinalnak (bar lehet, ilyen is van)Megnéztem, Spectrumon ugyanúgy működik mint EP-n.
Megnéztem, Spectrumon ugyanúgy működik mint EP-n.
Magas szintű programozási nyelvben a FOR így működik! kijelentés implicite azt jelenti, hogy a C és a hozzá hasonló nyelvek nem magas szintű programozási nyelvek. Ez szerintem egy kicsit túlzás.Én azon akadtam fenn, hogy milyen nem magas szintű programozási nyelv létezhet, amiben van FOR ciklus. Lehet, az assemblyben a next megfelelője a ret? :D Gépi kódban meg az ilyen 01101101001011100011011111000100011010001110010110111111 programrészben se for nincs, se más.
Én azon akadtam fenn, hogy milyen nem magas szintű programozási nyelv létezhet, amiben van FOR ciklus. Lehet, az assemblyben a next megfelelője a ret? :D
djnz ha jól emlékszem
Én azon akadtam fenn, hogy milyen nem magas szintű programozási nyelv létezhet, amiben van FOR ciklus.Valami halványan dereng, hogy olvastam valamikor, valahol egy HLA (High Level Assembly) nevezetű dologról. Talán abban lehet valamiféle FOR konstrukció. Utána kéne keresni, de most nincs hozzá hangulatom. :(
aha! ha nem írunk semmit a next után úgy is lefut!Ezt én is tudtam. De ha a next után valami zagyvaságot írunk, pl. turbomacskagenerator, azt is elfogadja?
Ezt én is tudtam. De ha a next után valami zagyvaságot írunk, pl. turbomacskagenerator, azt is elfogadja?
Igen: :)Hát ez tetszett. :D Mostanában mindenki vicces kedvében van itt a fórumon. Eredetileg amúgy az árvíztűrő tükörfúrógépet akartam írni, csak abban szóköz is van és sok ékezet.
amúgy logikus is hogy a nextnél nem számít. minek is oda az? nem kell oda.Az átláthatóság miatt lehet érdekesebb. Ha mondjuk 100 sorral feljebb van a FOR, és a NEXT-nél már nem tudjuk, mi a ciklusváltozó.
CLICK hangot hogy kell programból kiadni? (Ep64 kompatibilis módon.)Vagy csúnyán beleugorva a ROM-ba, vagy ezt lefordítani ASMON-nal BASIC programnak:
Attributum képernyőn hogyan lehet basic-ben egy színpompás játékhoz a pályát tárolni, megrajzolni? A Bomber továbbfejlesztése egyszerű volt, mert véletlenszerűen eldönti a házak színét. De ha mi magunk rajzolunk pl. egy pac man játékban falat, és a fal is legalább 4-5 féle színből áll, akkor hogyan adható meg, hogy melyik karakter milyen színű legyen?Én ezen a vidéken (http://www.ep128.hu/Ep_Konyv/Exos.htm#108) keresgélnék. Csak sajnos nem ismerem jól az EXOS lelki világát.
Pl. adott egy fal, ami egyszínű:
++++++++++++++++++
Ugyanennél a falnál hogyan lehet egyszerűen (?) megcsinálni, hogy pl. a 3., 4., 5. karaktere 2-es színkódú legyen, a 6. 3-as színkód színű? Mert pl. megrajzolható a pálya a PRINT után, vagy változók neveiben, pl. LET PALYA$(1)="++++++++++++++", de ehhez még a színkódokat is meg kell adni. Nyilván megadható bonyolult módon, hogy kirajzolásnál a sok PRINT között sok SET INK-et is megadunk. Nyilván kell valami alapszín, és ahol azt akarjuk, hogy ettől eltérjen a fal, ahhoz LET utasítással megadjuk az értékeket. Van valami egyszerűbb módszer? Vagy ezt mindenhol így csinálják?
Kicsit bonyolultan sikerült megfogalmazni...
nem lenne rossz egy ilyen editor EP-re, a gracha-ba tehetek ilyet, csak hát ott pont nincs sok értelmeLehet a Gracha-tól függetlenül is akár egy ilyen editor.
Sztem csak újra printeléssel, és előtte a szín megadásával.Még az jutott eszembe, hogy bizonyos karakterek bizonyos színeket jelentenének, és akár bizonyos (más) karaktereket is egyben. Tehát pl. lenne egy fal, ami AAAAABBBAAAABBBBCCCCAAAAA lenne, és mindegyik betű ugyanazt a karaktert jelentené, csak más színben. Ehhez a beolvasás/kirajzolás lenne lassú, mert a karaktereket egyenként kéne IF-fel megvizsgálni, milyenek, és egyenként kéne a szín megadása után PRINT-tel kiírni. Nekem hirtelen ez tűnik a leghasználhatóbbnak. Zzzippel talán a kirajzolás sebessége is elfogadható lenne.
Sok értelme ugyan nincsen, mert a PLOT sokkal egyszerűbb és gyorsabb. :)
Példa POKE utasítással rajzolásramég nem néztem ezt meg, de ez jó akkor is ha két szegmensre kerül a videólap?
még nem néztem ezt meg, de ez jó akkor is ha két szegmensre kerül a videólap?
Minden pixel byte címét külön számítja ki az LPT alapján, ami lassú, de nem ad hibás eredményt.
ez a játék úgy néz ki mint a c16 módban printtel rajzolt játékok ep-n :)Ezt pont ilyenre meg lehetne csinálni EP-n is :D
http://forums.toucharcade.com/showthread.php?t=301052
gracha editorral kísérleteztem ilyen saját nézetű labirintus dolgot.Jó, a bal oldali téglás a legjobb, és a kövek letétele is nagyon jó ötlet, ZZZIP-pel simán működhet, ha nem, akkor gépi kódban meg 100%
hát, elég sok karakter kell hozzá, de lehet hogy működne.
sőt itt még csak 4 színt használtam, szóval a másik 4 lehetne az ellenségek, ajtók stb...
meg persze azért ennél jobb grafikát is lehetne, csak több meló.
ilyen 3d cuccot is lehetne csinálni karakteres módbanDe utáltam a Savage-nak ezt a részét! Csak jöttek az oszlopok aztán bumm!
De utáltam a Savage-nak ezt a részét! Csak jöttek az oszlopok aztán bumm!
A Swap játék közben játszik digi (rockdigis) zenét.
Arra gondoltam, a basic játékok (pl. Bomber, Hamika) nem terhelnék le nagyon a gépet, ha gépi kódban lennének megírva, így akár játék közben szólhatna Rockdigi zene. Lacika Pascal-ba átírta a Bombert, az is pár másodperc alatt lefutott, hát még gépi kódban milyen gyors lenne!
Ez ugyan nem Basic, de hasonló effektus:
(Attachment Link)
Az emulátorral lehetne vajon olyan konfigot csinálni, ahol basic alatt is lehetne több memóriát is használni? Vagy létezik is ilyen bővítés?
szerintem nem lehet ezt megoldani.Az IS-BASIC a teljes RAM-ot tudja használni. A 0. program 42KB lehet, az 1.-127. 32KB. Viszont a programok hívhatják egymást, és paramétereket is lehet átadni a CHAIN utasításban. Ha több adatot kell a programoknak közösen kezelni, lehet igényelni egy szegmenst a Zozo által ismertetett módszerrel, és ott tárolni a "közös" adatokat.
Az IS-BASIC a teljes RAM-ot tudja használni. A 0. program 42KB lehet, az 1.-127. 32KB. Viszont a programok hívhatják egymást, és paramétereket is lehet átadni a CHAIN utasításban. Ha több adatot kell a programoknak közösen kezelni, lehet igényelni egy szegmenst a Zozo által ismertetett módszerrel, és ott tárolni a "közös" adatokat.
szerintem nem lehet ezt megoldani.Biztos lehetne az emulátorban olyan beállítás, hogy ne 42 kilobájt legyen a határ, hanem mondjuk 256. Mert a PC-nek mindegy, ott hely van bőven. De nem értek hozzá.
Biztos lehetne az emulátorban olyan beállítás, hogy ne 42 kilobájt legyen a határ, hanem mondjuk 256. Mert a PC-nek mindegy, ott hely van bőven. De nem értek hozzá.
hát azt talán te is tudod, hogy a z80 processzor csak 64K memóriát lát egyszerreÉn még ezt se tudtam. Viszont a Z80-at is emulálja nyilván az emulátor, és ezt is biztos meg lehetne piszkálni nagyobb teljesítményűre.
Én még ezt se tudtam. Viszont a Z80-at is emulálja nyilván az emulátor, és ezt is biztos meg lehetne piszkálni nagyobb teljesítményűre.
Nincs ilyenre szükségem, csak érdekességként vetettem fel, hogy ha már egy bizonyos programot emulátoron használunk csak, akkor ilyen módon ki lehetne-e a maximumot hozni belőle. Fejlesztésekhez miért ne lehetne valami hiperbrutál cuccot használni? :D
amúgy a pc is hasonlóan műxik, de persze jóval nagyobb címzéssel meg tudással...
Nincs ilyenre szükségem, csak érdekességként vetettem fel, hogy ha már egy bizonyos programot emulátoron használunk csak, akkor ilyen módon ki lehetne-e a maximumot hozni belőle. Fejlesztésekhez miért ne lehetne valami hiperbrutál cuccot használni? :D
ma már úgy lenne inkább értelme hogy webre vagy mobilra lehetne.100 OPEN #1:"https:enterpriseforever.com" ACCESS INPUT
specyre létezik valami specbas nevű dolog, amivel pc-n, zx basicben lehet programozni, és persze kihasználva a pc képességeit.
Azon gondolkodtam, lehetne olyan Bomber játékot csinálni, ahol egysoros videólap az, ahol a repülő végighalad. Ezen az egy videólapon meg lehetne rajzolni az összes fázist, de nem karakterenként, hanem jóval közelebb lennének egymáshoz az egyes fázisok, így majdnem folyamatos mozgást lehetne elérni. Először ki kéne rajzolni a videólapra az összes fázist, ez talán eltartana egy darabig, utána ezeket váltogatni.
Vannak ingyenes játékszerkesztők, amikkel sokkal jobb játékokat lehet készíteni és egyszerűbbek mint a basic.Itt inkább a megvalósítás a lényeges, és hogy az IS-BASIC-ből ilyet is ki lehet hozni.
Itt inkább a megvalósítás a lényeges, és hogy az IS-BASIC-ből ilyet is ki lehet hozni.
lehetne írni egy játék szerkesztőt, csak hát ezekkel nekem mindig az a bajom, hogy körülményesebbek mint programozni... nem véletlen raknak script nyelveket az ilyenekbe, vagy eleve hozzáférhetünk a forrásukhoz, vagy valahogy programozhatók...
Ott az AGD és utánna megkérni Gecot hogy írja át.
na ja, de annak meg úgy lenne értelme, hogy ep-síteni... az meg már túl sok munka lenne, hiszen az ep többet tud
Értem én hogy EP-re szeretnél fejleszteni és a basic-ot érted. Nosza! :)Már nem tudom, az ilyen videólapos animációt hogyan kell csinálni. Megnyitni sok videólapot, rajzolni rájuk, utána megjeleníteni sorban őket. Ehhez sok videocsatornát kell megnyitni? Már nem emlékszem... A display utasításokat kell utána sűrűn váltogatni, csak már nem tudom, a display után mi az, amiben eltérnek ezek az utasítások ahhoz, hogy animáció legyen.
Lehetne olyat is, hogy ugyanazt a videólapot megnyitni a képernyőre akár háromszor is egymás alá, ha megfelelő a mérete hozzá. Bár nem annyira érdekes ugyanazt háromszor is látni, de ezt is ki lehetne valahogy használni. Mondjuk feliratokhoz vagy demóhoz érdekes lehet.Ilyesmit láttam már pár demóban :), a másik, meg kell nyitni a videólapokat, majd mindegyiket feltölteni az adattal, és a végén csak a DISPLAY utasításokban váltogatni a csatornaszámot.
meg kell nyitni a videólapokat, majd mindegyiket feltölteni az adattal, és a végén csak a DISPLAY utasításokban váltogatni a csatornaszámot.Aha, na erre nem emlékeztem biztosan. Szóval egy rakat csatornát meg kell nyitni hozzá, értem.
régen biztos mindenki szórakozott ilyennel :)Nem, mert nem ismertem a memóriacímet hozzá. Talán valamelyik Enterpressben volt dőlt betűkhöz program, ami a tetejét jobbra, az alját balra tolta a karaktereknek.
aha rá is jöttem, az ep font-ot a specyről lopták, csak ráraktak egy bold effektet :DEzen már én is gondolkodtam, hogy pl. a PC-n annyi betűkészlet van, meg az internetes oldalak is sokfélét használnak, de miért volt a régi számítógépeknek teljesen egyéni... A PC billentyűzetének is teljesen más a betűkészlete, az EP, Spectrum billentyűzetén is teljesen egyedi betűtípus lehet.
, de miért volt a régi számítógépeknek teljesen egyéni...Ez csak tipp, de valószínűleg szerzői jogi magyarázata lehet. Ha olyan "fontot" akartak használni, ami másik cég gépéről származott, azután jogdíjat kellett volna fizetni, amit gondolom kevesen akartak. Meg azután nem is volt túl bonyolult egy 100-200 elemű karakterkészletet összehozni, és ezzel is meg tudták különböztetni magukat más gyártóktól.
lehetséges lehet változók, tömbök memóriacímét elérni valahogy? pl egy string tömböt gépi kóddal átmásolni képernyőre?
Megoldható lehet az interpreter működésének az ismeretében, bár az ilyesmi sokkal egyszerűbb C-ben, ott a mutatók (tömbökre) és egész típusok (memória címek) között lehetséges a konverzió, és az inline assembly is jól támogatott. Valószínűleg Pascal programban sem jelentene nagyobb problémát.
Tömb méret * (hosszúság + 2). Egyszerűen tesztelhető a FREE változóval a tömb létrehozása előtt és után.
wow ezt a free függvényt lehet hogy nem is ismertem :)Olykor véletlenszám generálására is használható akár. Pl. LET A=INT(FREE/5). Igaz, ha egy kész program már mindig ugyanannyi helyet foglal, ez az érték állandó lesz.
Ezeket az újonnan generált betűtípusokat érdemes lenne külön elmenteni. Későbbi programokban akár felhasználhatók. Vannak az ep128.hu-n is betűtípus készletek, pl. más gépek betűtípusai, de nem árt valami egyedi is.
hát az a baj hogy nem minden karakteren szép, mert kód generálja.Azt a néhány karaktert át lehet manuálisan szerkeszteni. Már ha használni fogja valaki ezeket pl. basic programokban.
na itt egy jobb, meg a zipped, ami ha nem is túl gyors, de élvezhetőEz jó, ezt majd fel lehet használni basic programokban!
megalkottam a legegyszerűbb rajzolóprogramot ep-re :)Adáskimaradás:
na de ez má túl hosszú :)Van itt bármi megkötés, hogy milyen programot lehet írni? Amihez éppen kedvünk van. Holnap reggel lehet, az a program jut eszembe, hogy 10 PING 20 GOTO 10. :D Bár azt nem tenném fel ide azért.
Van itt bármi megkötés, hogy milyen programot lehet írni? Amihez éppen kedvünk van. Holnap reggel lehet, az a program jut eszembe, hogy 10 PING 20 GOTO 10. :D Bár azt nem tenném fel ide azért.
semmi megkötés nincs.Egysorossal is lehet. Egy sorba kell írni: TEXT 80 :SET CHARACTER akármennyi. Ha meg nem fér ki egy sorba, akkor a végéről le kell hagyni a számok egy részét, rajznak az is rajz.
de az poén ha 2 soros kóddal rajzolni lehet :)
Adáskimaradás:
noise.basHát ez nagyon jó, tökéletes!
-listázásnál 4 karakterrel beljebb jelennek meg a sorok. pazarlás. elég lett volna 1 vagy 0 karakter. a basic sorok for, def stb estén 2 karakterrel beljébb jelennek meg a sorok. elég lett volna 1 is. 40 karakteres módban ezek elég nagy pazarlások, és átlátható lenne a kód kevesebb "beljébb tolással" is.
-nem teljesen értem néha miért nem lehet kettősponttal új parancsokat beírni egy adott sorba. most pl felfedeztem hogy egy hosszabb sound sor esetén nem engedi. meg van még pár másik furcsa eset is.
-listázásnál 4 karakterrel beljebb jelennek meg a sorok. pazarlás. elég lett volna 1 vagy 0 karakter.Leghosszabb sorszámnál 1 karakterrel van beljebb, többi ehhez igazodik, szépen.
a basic sorok for, def stb estén 2 karakterrel beljébb jelennek meg a sorok. elég lett volna 1 is.Kettővel szerintem áttekinthetőbb.
40 karakteres módban ezek elég nagy pazarlások, és átlátható lenne a kód kevesebb "beljébb tolással" is.Ha nem C64/Spectrum stílusban van írva a program, akkor bőven kifér.
-nem teljesen értem néha miért nem lehet kettősponttal új parancsokat beírni egy adott sorba.Na ez a kettőspontozás pont az emlegetett C64/Spectrum stílus :ds_icon_cheesygrin: Programozás órán egyes járt érte.
most pl felfedeztem hogy egy hosszabb sound sor esetén nem engedi. meg van még pár másik furcsa eset is.Block utasítások (IF, FOR-NEXT,stb) biztosan nem lehet. A hosszabb sor meg eleve nem lehet teljes képernyős :-) és itt pl az is csalóka lehet, hogy a számok több helyett is foglalhatnak mint kiírva a képernyőn. (Volt erre egyszer egy egysoros program versenyünk.)
-soft reset esetén törlődnek a saját funkció billentyű beállítások. lényegében én ezért nem használtam ezt semmire. mivel sűrűn használtam a soft resetet :)Normális programozással, főleg BASIC-ben soha egyetlen alkalommal se kéne a reset gombhoz nyúlni. Normális legrosszabb esetre ott a STOP gomb.
-színek: ez is alapbeállításra áll TEXT parancs vagy soft reset esetén. kár... már csak azért is mert az alap beállítás eléggé semmilyen és közepesen szép csak...Resetnél a VIDEO is bezáródik... meg a TEXT-nél is. Ott van helyette a CLEAR TEXT :-)
Talán korlátozott a sorok maximális hossza, legalábbis bizonyos esetekben.Így van, az emlegetett egysoros versenynél (https://enterpriseforever.com/jatekok/egysoros-jatek-felhivas/msg29054/#msg29054) derült ki:
sűrűn használtam a soft resetet :)Ezzel biztos volt bosszúságod is. Nálam néha előfordult, hogy soft resetre lefagyott a gép, és csak még egy reset segített, amitől már újraindult, mindent elfelejtve.
Ezzel biztos volt bosszúságod is. Nálam néha előfordult, hogy soft resetre lefagyott a gép, és csak még egy reset segített, amitől már újraindult, mindent elfelejtve.
Na ez a kettőspontozás pont az emlegetett C64/Spectrum stílus :ds_icon_cheesygrin: Programozás órán egyes járt érte.Na, az Altair Basic doksija (http://www.altair32.com/pdf/Altair_8800_BASIC_Reference_Manual_1975.PDF) (56. oldal) még bátorít is, hogy használd a kettőspontot, hogy több sort írj egy sorba (ugye a Commodore Basic is a Microsoft terméke):
na ez vicces :)Ezt a hibaüzenetet ezerszer láttam a gépkönyvben (A rendszer változói megsérültek), de nem emlékszem, hogy valaha megjelent a képernyőn. Vagy talán egyszer, akkor se tudom, miért.
Ezt a hibaüzenetet ezerszer láttam a gépkönyvben (A rendszer változói megsérültek), de nem emlékszem, hogy valaha megjelent a képernyőn. Vagy talán egyszer, akkor se tudom, miért.
Ha esetleg valakinek nagyon bejött a Williamsburg Adventure (http://www.ep128.hu/Ep_Games/Leiras/Williamsburg.htm), :???: itt (http://www.ep128.hu/Ep_Games/Prg/Mansion_Adventure_1.rar) a "folytatás".Gratula a konverzióhoz :) , Commodore-okon szoktak nagyon ronda, kinézetre képernyőre hányt Basic programokat írni :D
Commodore-okon szoktak nagyon ronda, kinézetre képernyőre hányt Basic programokat írni
BASIC-ben ami a program olvashatóságát javítja (szóközök, megjegyzések, utasítások külön sorokba írása, stb.), az általában lassítja is és a méretét növeli. :)Áhá, ezt nem tudtam, úgy emlékeztem a rövidítéseket sem oldják fel (mint pl a P + shift O), de leteszteltem, az megtörténik.
BASIC-ben ami a program olvashatóságát javítja (szóközök, megjegyzések, utasítások külön sorokba írása, stb.), az általában lassítja is és a méretét növeli. :)
Az a vicc, hogy Ep-n gyorsabban fut a program! A Plus4-es RENUMBER pedig valószínűleg a világ leglassabb átsorszámozása.Hm, ez érdekes, úgy emlékszem a C+4 basic elég gyors.
700 for k=1 to 9
702 if o$(k)<>o$ then next:print"drop what??":goto 180
710 if o(k)>0 then print"You dont have that item!":goto 180
720 ml=ml-1:o(k)=l:print"Okay,it's done!":goto 180
730 for k=1 to 9:if o$(k)<>o$ then next:print"Get what??":goto 180
740 if o(k)=-1 then print"You already have it!":goto 180
700 for k=1 to 9
702 if o$(k)<>o$ then 722
710 if o(k)>0 then print"You dont have that item!":goto 180
720 ml=ml-1:o(k)=l:print"Okay,it's done!":goto 180
722 next
724 print"Drop what??":goto 180
Máshol nem tartozik hozzá NEXTA 8K-s Altair BASIC-ben szerintem lefutna konvertálás nélkül.
Az "igazi érdekességek" a GET és a BUY ciklusban vannak. A két ciklus között GOTO-zik ezzerrel össze-vissza, mint atom... Hogy nekem mekkora szerencsém van, hogy anno Ep-t kaptunk öcsémmel... :smt029
Castle Dracula (Adventure 5)Úgy látszik, idén a Commodore játékok átírásának az éve van (vö. Skramble, Exorcist). Z80-as Spectrum, CPC program már nem kihívás. Hiába, egyre rutinosabb a csapat! :D
Csak nem nagyon lehet tesztelni "megoldókulcs" nélkül...
Úgy tűnik nem nagy az érdeklődés...Tegyél fel snapshotot! Nekem tele van midis cuccokkal a working directory az emulátorban. Ha még oda bepakolok mást is, teljes lesz a káosz, ottfelejtem, aztán nem találom. (Nem lehetne több working directory-t is megadni valahogy az emulátoron? Jó, persze, ki kell választani másik könyvtárat és annyi. :D Csak én vagyok nehézkes ilyenekben.)
vagy akkor legyen grafika hozzáSzerintem megoldható ez is akár. Akár Iview képekkel. És akkor kéne még egy kód, ami a képeket betölti. De lehetnek persze PLOT-tal rajzolt képek is. Csak megrajzolni idő.
Tegyél fel snapshotot!
miket fedeztem fel! trace utasítás :)Ezt már ismertem eddig is.
ez érdekes! ez a program nem szólal meg nekem emun, csak ha az z80 freki maxon van!Valamiért a sok "interrupt" zavar be.
Valamiért a sok "interrupt" zavar be.
hm abban lenne logika hogy a sync és az interrupt nem szeretik egymást :)Kéne működniük együtt is. Mert mi van, ha pont mind a 3 csatornán szólt valami, és mind a hármat meg kell szakítani? Ahhoz mind a háromra kéne interrupt...
Azt meg lehet csinálni basicben, hogy a kurzort az egérrel is lehessen mozgatni? Egyszer mintha láttam volna ilyet, de lehet, csak álmodtam. A programsorok szerkesztésénél gyorsabb lenne, mint a belső joy.Gflorez patchelte a ROM-ot, nem emlékszem, hogy végleges fázisba került-e a dolog.
Itt egy kis tesztelni való. Hátha valaki teljesítei tudja... :)Elsőre ügyesen elsüllyedtem a dirty bog-ban. :D
Elsőre ügyesen elsüllyedtem a dirty bog-ban. :D
sose szerettem azokat a szövegeseket amik csak egy fél mondattal írják le a pályát...
Az én angol tudásomnak tökéletesen megfelelnek :oops:
Amúgy meg nekem pl. pont a grafika nélküli Infocom-féle szöveghalmazok nem jönnek be.
Ízlés kérdése...
ebből majd kihozok valami kis játékot :)Erre kíváncsi leszek, érdekesnek tűnik.
Van valakinek tippje, hogy a Zzzip-nek mi baja aNem lehet, hogy a TO-t fenntartott szónak dekódolja, és nem tudja tömbváltozónak értelmezni?
9011 READ TO(I)
sorral: Syntax hibával leáll a fordítás.
Nem lehet, hogy a TO-t fenntartott szónak dekódolja, és nem tudja tömbváltozónak értelmezni?
Csak ezt tudom elképzelni, de ezt honnan veszi...?
Csak ezt tudom elképzelni, de ezt honnan veszi...?A TO fenntartott szót az alábbi BASIC utasítások/parancsok használják a referencia kézikönyv szerint:
CASE kif TO kif (SELECT)Jé, a CASE után is állhat TO? Ezt még sose használtam.
hát TO az egy utasítás for ciklusban: FOR X=1 TO 5 például
itt a basic, látom a snapshotból nem jöttetek rá hogy ez pont azt csinálja amiről beszéltek, poke-olja az exos karakterkészletet :)
biztos lehet optimalizálni. vagy akár átírni gépi kódra.
Az eredeti kb 76 másodperc
a v2 kb 69 másodperc
a v3 kb 21 másodperc csak BASIC
ld c,4
ld hl,0b480h
ld de,0128
ujsor add hl,de
ld b,128
kov ld a,(hl)
rrca
ld (hl),a
inc hl
djnz kov
dec c
jr nz,ujsor
ret
konténerszámNekem mindenre azt írja, hogy "Invalid lenght". De a hossz az nem lenght, hanem length, tehát a "h" a "t" után van.
Nekem mindenre azt írja, hogy "Invalid lenght". De a hossz az nem lenght, hanem length, tehát a "h" a "t" után van.
Pl EP-n helyesen tud lefutni ez a nagyon bonyolult program :-)Más gépen nem fut le helyesen, hibázik?
De általában ezek lassíthatják a többi géphez képest:Hozzá tehetjük még a bővíthetőséget, az utasítások nincsenek fixen bedrótozva, külön bővíthető táblázatokból keresi ki őket.
- az IS-BASIC "magasabb szintű" az átlagos 8 bites BASIC változatoknálItt említhető, hogy vannak lokális és globális változók, és a változó nevek nem csak két karakteresek lehetnek, mint sok más BASIC-ben.
Részben valószínűleg az EDITOR: eszköz miatt, azaz a PRINT utasítás nagyon lassan írja ki a teszt programok eredményét. :)Így van, itt sokat segíthet a 102-es csatorna közvetlen használata.
Más gépen nem fut le helyesen, hibázik?A kevésbé pontos számábrázolás miatt nem teljesül a feltétel. Most amit próbáltam: C64, Spectrum, CPC, ezeken nem fut helyesen.
A kevésbé pontos számábrázolás miatt nem teljesül a feltétel. Most amit próbáltam: C64, Spectrum, CPC, ezeken nem fut helyesen.Akkor ott könnyen csúszhat be hiba, amire nem számít az ember, és nem fog működni a program.
a jobb számábrázolás vajon akkor is számít a sebességben, ha nem használunk komoly számításokat?
Úgy látom, törteknél és 16 biten nem ábrázolható értékeknél számít, az egyszerű egész számos műveleteket (pl. A=1+2) az IS-BASIC külön támogatja.
A kevésbé pontos számábrázolás miatt nem teljesül a feltétel. Most amit próbáltam: C64, Spectrum, CPC, ezeken nem fut helyesen.
nocsak, tök jó
A 0 és 9999 közti egész számok a gyorsaság miatt nem lebegőpontos alakban tárolódnak, hanem a normál Z80 formátumban, 16 bites bináris számként.
wow... ez nem semmi. de ha átlépi a limitet (vagy nem egész szám lesz) akkor dinamikusan átvált ezek szerint. ami nem feltétlen okos megoldás... akkor már miért nem lehetett definiálni hogy milyen típusú számot akarok? hmm...
Van bármilyen előnye a program működése szempontjából, ha hosszú változónevek helyett rövideket adunk meg? Pl. LET BOMBA=3 helyett LET B=3. Akár a program sebessége szempontjából, vagy Zzzippel lefordítva gyorsabb lesz? Előnyös, ha minél kevesebb változónevet használunk? Pl. átmeneti változóknak ugyanazt a nevet adni, pl.Nem tudom, az IS-BASIC hogy működik, de pl. a C64-nél (és az összes korai Microsoft BASIC esetében) a változó neveit deklarálás sorrendjében rakta el a memóriába, és hivatkozáskor lineáris kereséssel kereste meg azokat. Ezért a gyakran használt változókat minél előbb kellett deklarálni, hogy hamarabb megtalálja.
100 FOR WAIT=1 to 200
110 NEXT
(És mindig a WAIT változót használni átmeneti kis feladatokra, a WAIT tartalmát máshol nem használja fel a program.)
érdekes amúgy hogy a gracha-ból exportált programot ha először kilistázzuk, furcsán néz ki.:shock:
ez érdekes. ezek szerint az x használata nem igazán jó, ahol abc sorrendben van indexelve :)nem, nem, asszem tök mindegy, mivel kezdődik, mert úgy működik, hogy először a kezdőbetű alapján ugrótábla, és aztán majd ott keresi lineárisan, csak az x betűsök között (tehát akkor a leggyorsabb, ha minden változó különböző betűvel kezdődik)
ki lehetne mérni ezeket, bár lehet, hogy felesleges, úgyis minden basic programot zzzippelni kell :)
persze nagyjából értem mi ez.Jó neked.
mint láthatjuk, nem számít semmit.Ekkora programnál, ahol egy változó van, tényleg nem számít, de ki kéne próbálni olyat, ahol 20-30 változó közül kell kibogarásznia a megfelelőt. Ott lehet, hogy lehetne mérni valamekkora különbséget.
100 PROGRAM EXTRACT L AND H FROM HL
110 !
120 SET STATUS OFF
130 TEXT 40
140 PRINT AT 1,1:"Please enter an 8 bit number(0-65535):"
150 PRINT AT 2,1:CHR$(25)
160 PRINT CHR$(25)
170 PRINT CHR$(25)
180 PRINT CHR$(25)
190 PRINT CHR$(25)
200 PRINT CHR$(25)
210 !
220 INPUT AT 2,1,IF MISSING 150:W$
230 IF W$="" THEN GOTO 150 ! false input
240 LET W=VAL(W$)
250 IF STR$(W)<>W$ THEN GOTO 150 ! no strings
260 IF W>65535 OR W<0 THEN GOTO 150 ! out of range
270 PRINT
280 !
290 ! WORD$ command mode
300 !
310 SET 39,0:LET A$=WORD$(W):LET L=ORD(A$(1:1)):LET H=ORD(A$(2:2)):ASK 39 T
320 !
330 PRINT W,"L=";L,"H=";H,LTRIM$(STR$(T));"/50 of sec."
340 !
350 ! Arithmetic mode
360 !
370 SET 39,0:LET L=REM(W,256):LET H=(W-L)/256:ASK 39 T
380 !
390 PRINT W,"L=";L,"H=";H,LTRIM$(STR$(T));"/50 of sec."
400 !
410 PRINT :PRINT "press a key for a new try"
420 IF INKEY$="" THEN GOTO 420
430 GOTO 150
What is the sense of using a text after "program" command, without quotes? I have seen this somewhere else too.Code: [Select]100 PROGRAM EXTRACT L AND H FROM HL
100 PROGRAM "HL.BAS"
110 ! EXTRACT L AND H FROM HL
120 SET STATUS OFF
130 TEXT 40
140 LET S$=CHR$(25)&CHR$(10)&CHR$(13) !erase line and CR
150 LET S$=S$&S$&S$&S$&S$&S$
160 PRINT AT 1,1:"Please enter an 8 bit number(0-65535):"
170 PRINT AT 2,1:S$
180 !
190 INPUT AT 2,1:W$
210 LET W=VAL(W$)
220 IF STR$(W)<>W$ OR W>65535 OR W<0 THEN PRINT AT 2,1:S$(1:3):GOTO 190 !strings not allowed
230 PRINT
240 !
250 ! WORD$ command mode
260 !
270 SET 39,0:LET A$=WORD$(W):LET L=ORD(A$(1:1)):LET H=ORD(A$(2:2)):ASK 39 T
280 !
290 PRINT "L=";L,"H=";H,LTRIM$(STR$(T));"/50 of sec."
300 !
310 ! Arithmetic mode
320 !
330 SET 39,0:LET L=REM(W,256):LET H=(W-L)/256:ASK 39 T
340 !
350 PRINT "L=";L,"H=";H,LTRIM$(STR$(T));"/50 of sec."
360 !
370 PRINT :PRINT "press any key for a new try"
380 IF INKEY$="" THEN GOTO 380
390 GOTO 170
Wouldn't that actually be either a 16 bit number or (0-255)?Code: [Select]160 ... "Please enter an 8 bit number(0-65535):"
330 ... L=W BAND 255 ...
instead of330 ... L=REM(W,256) ...
as a third or at least two-and-a-halfth method? 100 PROGRAM "HL.BAS"
110 ! EXTRACT L AND H FROM HL
120 SET STATUS OFF
130 TEXT 40
140 LET S$=CHR$(25)&CHR$(10)&CHR$(13) !erase line and CR
150 LET S$=S$&S$&S$&S$&S$&S$&S$&S$
160 PRINT AT 1,1:"Please enter a 16 bit number(0-65535):"
170 PRINT AT 2,1:S$
180 !
190 INPUT AT 2,1:W$
200 LET W=VAL(W$)
210 IF STR$(W)<>W$ OR W>65535 OR W<0 THEN PRINT AT 2,1:S$(1:3):GOTO 190 !strings not allowed
220 PRINT
230 !
240 ! Arithmetic+BAND
250 !
260 SET 39,0:LET L=(W BAND 255):LET H=(W-L)/256:ASK 39 T
270 !
280 LET M$="BAND ":GOSUB 450
290 !
300 ! WORD$
310 !
320 SET 39,0:LET A$=WORD$(W):LET L=ORD(A$(1:1)):LET H=ORD(A$(2:2)):ASK 39 T
330 !
340 LET M$="WORD$":GOSUB 450
350 !
360 ! Arithmetic+REM
370 !
380 SET 39,0:LET L=REM(W,256):LET H=(W-L)/256:ASK 39 T
390 !
400 LET M$="REM ":GOSUB 450
410 !
420 PRINT :PRINT "press any key for a new try"
430 IF INKEY$="" THEN GOTO 430
440 GOTO 170
450 PRINT M$,"L=";L,"H=";H,LTRIM$(STR$(T));"/50 of sec.":RETURN
I have added your suggested method. It works... faster.... but only up to 9999.... Why?Storing numeric values works roughly as follows, according to a Hungarian book (Tippek és trükkök ENTERPRISE (http://ep128.hu/Ep_Konyv/Tippek.htm) - Tips and Tricks ENTERPRISE). Numeric values are usually stored in the variable table in 5+1 bytes. Some integer values are stored in two bytes native binary form and the rest of the memory allocated to it is filled with 127. Integers larger than 9999 and floats are stored in BCD form. Maybe that has to do something with it.
Endi, az jutott eszembe, hogy a Mega Pacman játékodat meg lehetne csinálni grafikus karakteres képernyőre, több szín lenne. Bár a soronként megnyitott videólapok a scrollt talán nem tennék lehetővé, vagy legalábbis nehezebb lenne megcsinálni. De attól tartok, nincs meg az eredeti basic program, csak a zzzippelt, legalábbis az ep128.hu-n.
Meg a 2016-os (félig befejezett) Snakeprise (https://enterpriseforever.com/programozas/snakeprise/) is megcsinálható lenne gracha módra. Ez akár sokszínű is lehet, mert a karakterek alakjának nincs túl nagy jelentősége.
Nos, a két változat között az az eltérés, hogy mesterségesen 39-re (vagy 38-ra?) korlátozod a hívás "mélységét" a második esetben, így sosem éri el a 40-es határt.Ezt nem teljesen értem. Mivel korlátoztam én a hívás mélységét 39-re?
Ha A értéke legalább 81, akkor viszont az én értelmezésem szerint újra előáll a "végtelen ciklus".Igen, most már ki is próbáltam, tényleg végtelen "ciklus lett", pedig én sem erre számítottam először.
Ha nem lesz végtelen ciklus, akkor nem telhet be a verem az ilyen önmagát meghívó eljárástól, akkor sem, ha sokszor hívja meg önmagát?Pontosabb azt mondani, hogy ha a rekurzív hívások száma nem haladja meg a kritikus értéket, akkor a program futása nem fog emiatt hibával megszakadni.
Pontosabb azt mondani, hogy ha a rekurzív hívások száma nem haladja meg a kritikus értéket, akkor a program futása nem fog emiatt hibával megszakadni.Szerintem sok rekurzív hívás volt abban a kukacos játékban, ahogy teszteltem, direkt úgy játszottam, hogy sok legyen, de nem lett gond. Nem is hibával szakadna meg olyankor, nekem teljesen le is fagyott, amikor elérte a 39 körüli értéket a lentebbi program, és csak a reset segített, még a STOP-ra sem reagált.
A lényeg, hogy legyen valamilyen kilépési feltétel, ami megakadályozza a végtelen ciklust.Tehát ha például 30-szor meghívja önmagát az eljárás, utána a program másik részéhez kerül a végrehajtás, majd később újra meghívja 30-szor önmagát az eljárás, akkor a kétszer 30 nem adódik össze, hogy így túllépje a 39-et és lefagyjon?
Tehát ha például 30-szor meghívja önmagát az eljárás, utána a program másik részéhez kerül a végrehajtás, majd később újra meghívja 30-szor önmagát az eljárás, akkor a kétszer 30 nem adódik össze, hogy így túllépje a 39-et és lefagyjon?
4210 SET CHARACTER 0,102,255,255,159,15,159,255,255,102
4230 SET CHARACTER 0,0,102,255,255,159,15,159,255,255
4250 SET CHARACTER 0,0,0,102,255,255,159,15,159,255
4270 SET CHARACTER 0,0,0,0,102,255,255,159,15,159
4290 SET CHARACTER 0,0,0,0,0,102,255,255,159,15
4310 SET CHARACTER 0,0,0,0,0,0,102,255,255,159
4330 SET CHARACTER 0,0,0,0,0,0,0,102,255,255
4350 SET CHARACTER 0,0,0,0,0,0,0,0,102,255
4370 SET CHARACTER 0,0,0,0,0,0,0,0,0,102
4210 NUMERIC C(9)
4220 C(1)=102:C(2)=255:C(3)=255:C(4)=159:C(5)=15:C(6)=159:C(7)=255:C(8)=255:C(9)=102
4230 FOR I=1 TO 9
4240 SET CHARACTER 0,C(1),C(2),C(3),C(4),C(5),C(6),C(7),C(8),C(9)
4250 FOR J=9 TO 2 STEP -1
4260 C(J)=C(J-1)
4270 NEXT J
4280 C(1)=0
4290 NEXT I
C-t lehetne ciklusban SPEEK-kel tölteni.
Melyik ZZZIP jó Ep128emu2.0.11.2 hozMindegyik. Az 1.2-es (letöltési link) (http://ep128.hu/Ep_Util/Prg/Zzzip_12.rar) a legfrissebb, én ezt használom.
Sebesség: SET CHARACTER X,...... v. SPOKE
A példa program 10x írná újra a 128 karaktert.Ez biztosan jól működik? Az első (set characteres) módszer változtatja csak meg a 32-es karakter alakját, a következő két módszer szerintem nem jól működik. (Az A változót nem használod fel sehol, és az a 0+0 is fura nekem, mihez kell.)
Ez biztosan jól működik? Az első (set characteres) módszer változtatja csak meg a 32-es karakter alakját, a következő két módszer szerintem nem jól működik. (Az A változót nem használod fel sehol, és az a 0+0 is fura nekem, mihez kell.)
Szerkesztek egy DEF CHAR rutintHa tényleg gyorsabb SPOKE-kal definiálni át a karaktereket zzzippelt programban, mint SET CHARACTER-rel, akkor ez jó ötlet! Játék közbeni karakteres animhoz praktikus lehet! Tudsz majd írni olyat, ahol meg kell adni a SET CHARACTER utáni számokat, és azt átadja a SPOKE-os eljárásnak?
Ha tényleg gyorsabb SPOKE-kal definiálni át a karaktereket zzzippelt programban, mint SET CHARACTER-rel, akkor ez jó ötlet! Játék közbeni karakteres animhoz praktikus lehet! Tudsz majd írni olyat, ahol meg kell adni a SET CHARACTER utáni számokat, és azt átadja a SPOKE-os eljárásnak?
A 2. variációra gondolsz?Igen, erre gondoltam, hogy CALL után kell megadni a számokat, utána valahogy el-spoke-olja a program.
rem SET CHARACTER 33,1,2,3,4,5,6,7,8,9
CALL CHAR(33,1,2,3,4,5,6,7,8,9)
Karakter pókoláshoz nem árt tudni az EXOS verziót, 2.0-ban máshol van.Ki használ EXOS 2.0 ?
Ha valami probléma lesz majd javítunk.Ha jól sejtem, Zozo erre gondol:
Ki használ EXOS 2.0 ?Minden EP64.
Szerkesztek egy DEF CHAR rutint
...
130 CALL HFONT
...
2410 DEF HFONT
2420 WHEN EXCEPTION USE NINCSHFONT
2430 EXT "HFONT"
2440 END WHEN
2450 HANDLER NINCSHFONT
2460 CLEAR FONT
2470 SET CHARACTER 145,24,24,60,102,126,102,102
2480 SET CHARACTER 151,24,24,126,96,120,96,126
2490 SET CHARACTER 133,28,24,60,24,24,24,60
2500 SET CHARACTER 146,6,60,102,102,102,102,60
2510 SET CHARACTER 148,66,60,102,102,102,102,60
2520 SET CHARACTER 153,102,92,102,102,102,102,60
2530 SET CHARACTER 149,24,102,102,102,102,102,60
2540 SET CHARACTER 137,102,66,102,102,102,102,60
2550 SET CHARACTER 143,51,102,102,102,102,102,60
2560 SET CHARACTER 129,24,24,60,6,62,102,62
2570 SET CHARACTER 147,24,24,60,102,126,96,60
2580 SET CHARACTER 132,28,16,56,24,24,24,60
2590 SET CHARACTER 134,24,24,60,102,102,102,60
2600 SET CHARACTER 135,102,0,60,102,102,102,60
2610 SET CHARACTER 136,102,102,60,102,102,102,60
2620 SET CHARACTER 138,24,24,102,102,102,102,60
2630 SET CHARACTER 139,102,0,102,102,102,102,60
2640 SET CHARACTER 140,54,36,102,102,102,102,60
2650 END HANDLER
2660 END DEF
Szerintem felesleges ennyire "túlmisztifikálni" a dolgot egy sima set character egyszerűbb, mint DATA-sorokból beolvasni, majd karakter-soronként POKE-ézni...
Szerintem felesleges ennyire "túlmisztifikálni" a dolgot egy sima set character egyszerűbbKarakteres animációnál jó lehet a SPOKE.
Már megint nem tudom hol, milyen néven keressem a ~ CHARACTER generátor basic progit.A demokazettán van ilyen. Ennek továbbfejlesztett változata szerény művem az Util programcsokorban (http://ep128.hu/Ep_Util/Util.htm), Itt a letöltési link, ezen belül a CHR2012-t kell keresni. (http://ep128.hu/Ep_Util/Prg/Util.rar) Grafikus karakterek tervezéséhez Endi nagyszabású programja áll rendelkezésre valahol, és István is készített ilyet, ami PC-n is futtatható, de az szerintem nem tölthető le sehonnan már.
Szerintem felesleges ennyire "túlmisztifikálni" a dolgot egy sima set character egyszerűbb, mint DATA-sorokból beolvasni, majd karakter-soronként POKE-ézni...
Sebesség: SET CHARACTER X,...... v. SPOKE
A példa program 10x írná újra a 128 karaktert.
1. normál SET CHARACTER .....
2. SPOKE .....
3. CALL > DEF CHAR ... SPOKE ....
TIME:
BASIC módban
1. 00:03:48
2. 00:05:05
3. 00:09:07
ZZZIP
1. 00:00:27
2. 00:00:06
3. 00:00:06
Ezért nem mindegy mire optimalizáljuk.
FOR ZENE=1 TO 100
READ A,B,C,D
SOUND ...A, ...B,
SOUND ...C, ...D,
NEXT ZENE
SET CHARACTER ...
SET CHARACTER ...
SET CHARACTER ...
SET CHARACTER ...
FOR ZENE=1 TO 100
READ A,B,C,D
SOUND ...A, ...B,
SET CHARACTER ...
SOUND ...C, ...D,
SET CHARACTER ...
NEXT ZENE
Esetleg lehet úgy programozni, hogy két SOUND közé betenni pl a karakter változókat helyezni?Betenni be lehet éppen. Csak késni fog egymáshoz képest a két sound, ha két különböző csatornát használ (pl. egyik a source 1-et, a másik a source 2-t). De SYNC paraméterrel így is megoldható, hogy egyszerre szólaljon meg a két hang.
Ha lefordítjuk ZZZIP-el akkor is normál sebbességgel játtsza le?Igen. A DURATION paraméter megadja a hang hosszát 1/50 másodpercben, ez akkor is annyi marad, ha Zzzippel van fordítva. A hang megszakításból megy, tehát mást is tud közben csinálni a gép. Viszont Zzzippel fordítva a "hangtár" (vagy mi a neve) megtelhet, a sok sound utasítás egymás után mindig elküldi a hangot a memóriának, hogy majd onnan játssza le a gép, de ez a tár megtelhet. Ezért kell valami késleltetés is (pl. FOR-NEXT ciklussal). A Hungry Creature játékban is így oldottam meg a menüben. (De annak nincs fent a basic változata, azt hiszem, de talán a fórumra egyszer feltettem.)
Írnál egy 3-10 másodperces 1 csatornás zenét?Ha ez kell a teszteléshez:
100 RESTORE
110 FOR I=1 TO 36
120 READ G
130 SOUND PITCH G,DURATION 10
140 NEXT I
150 DATA 37,39,37,39,37,39,41,42,44,44,44,44
160 DATA 37,39,37,36,37,39,37,36,34,32,34,34
170 DATA 49,48,46,48,49,48,44,46,42,44,41,37
130 SOUND PITCH G+.2,DURATION 10,SOURCE 2,SYNC 1
135 SOUND PITCH G,DURATION 10,SYNC 1,STYLE 128
A 130-as sorba +.2 helyett lehet pl. +.3 vagy +.1 vagy +.05, de Zzzippel ez nem fog így szólni, mert az mindent kerekít.130 SOUND PITCH G,DURATION 10,SOURCE 0,SYNC 1,STYLE 64
135 SOUND PITCH G+7,DURATION 10,SYNC 1,SOURCE 1
A 135-ös sorba itt a 7 helyett lehet írni pl. 12-t vagy 19-et, más lesz a hangzás. (Ha kapásból jól írtam mindent.)
A sound: ot még csak meg értem de a keyboard: mivel irányítod a progit.
Vagy fordítva a DEMO-t?
mint írtam, a joy függvény keyboard: eszköz nélkül is műxik.Nem működik! Annyi igaz viszont, hogy POKE 56,201 alatt is működik.
Nem működik! Annyi igaz viszont, hogy POKE 56,201 alatt is működik.
ööö hát ez furcsa :DNem furcsa, az EXOS 11 speciális funkcióhívásnak (amelyen belül a JOY lekérdezés van) is kell csatornaszámot megadni, ezért kell KEYBOARD csatorna legyen.
Nem furcsa, az EXOS 11 speciális funkcióhívásnak (amelyen belül a JOY lekérdezés van) is kell csatornaszámot megadni, ezért kell KEYBOARD csatorna legyen.
És azért működik POKE 56,201 alatt, mert ez azonnali lekérdezést végez, nem a megszakítási rutin által pufferbe tett adatokból dolgozik.
Ha érdemes akkor bekerülhet a hasznos BASIC progik topikba.
Vagy hasznos ZZZIP programok BASIC-ben?
És ha igen, akkor mi a szintaxisa?CLEAR SOUND
CLEAR SOUNDVagy az is jó, ha a SOUND paraméterébe beírod, hogy INTERRUPT, és megszakítja az előző hangot. Pl.:
M1 LD H,L
LD L,00
RET
org 1000h
M1 LD H,L
LD L,00
RET
Assemble options:Zozo, menjünk le egy kicsit dedóba, elakadtam az első lépésnél... :oops:Nekem működik.
HEADER 4
ld h,l
ld l,0
ret
end
Nem lehet máshogy kinyerni a video: buffer kezdő címét.EXOS 11, 3-as alfunkció.
Nekem működik.
(Attachment Link) (Attachment Link) (Attachment Link)
SET VIDEO X 40
SET VIDEO Y 64
SET VIDEO COLOR 0
SET VIDEO MODE karakteres
OPEN #1:"VIDEO:"
Lekérem a videó buffer címét és akkor van 40x64 bájt lefoglalt bármire használható tömböm memoriám.Viszont ha újabb csatorna nyítás-zárás lesz, akkor elmozdulhat.Nem hiszem mivel ez lenne először megnyitva és csak utána lenne a többi megnyitás.
No meg a videómemória amúgy is sokkal lassabb mint a normál.És a BASIC-hez viszonyítva? Még nem mértem de mindjárt megnézem.
Szerintem akkor már praktikusabb egy egész szegmenst foglalni. Ahogy pl. az FDISK-ben csinálom.Végűlis "RAM-TAPE:" vagy a pályák, karakterek, zenék fix helyre és SPEEK(RAM-TAPE:,cim) kiolvasni.
READ A
112A=SPEEK(253,16000)
201READ A
80A=SPEEK(253,16000)
3Dimenzió. Ebből is ered a DIM utasítás.Igen. Sőt, a FORTRAN-ban még DIMENSNION-nak hívták, ez rövidült a BASIC-ben DIM-re.
És mivel két dimenziót adtál meg a deklarálásnál, ezért két dimenziós a tömböd, ami egy mátrix.És ha négy dimenziót adok meg, akkor az időben is utazhatunk az Enterprise űrhajóval? :)
Nincs semmilyen módAz avatárod nézegetve elgondolkoztam, pontosan milyen lehet a Grid Trouble hangja. Nem lehet valahogy dekódolni, vagy basicbe kiszedni a hangot? Tutira magas torzítás szól, amikor felszedi a villogó pontokat. Amikor a piros pöttyökön mászkál, akkor is magas torzítás lehet, csak alacsony frekvenciával. Az ütközésre a zajcsatornát használhatja? Vagy az is magas torzítás, csak magas frekvencián? A négyzetek bekerítésével járó rövid "zenét" még csak le lehetne hallás alapján kottázni, de a torzításokat aligha.
Órákig nyúztuk szegény gépet vele.Sok órányi játék után nem fagyott le a játék? Nálunk előfordult ilyen.
A háttérrel együtt ötöt számoltam, és ezek lehetnek egy sorban: a pálya piros és világoskék, a bekerített rész zöld, a lények fehér, plusz a háttér.4 színpár
100 PRINT £102, AT Y,X:; ! ";" is important here
110 GET £102:CHARACTER$
120 CHAR=ORD(CHARACTER$)
100 PRINT £101:CHR$(27);"A";WORD$(X);WORD$(Y); !like PLOT X,Y but it doesn't draw.
110 GET £101:COL$
120 COL=ORD(COL$)
4 színpárEz tuti? Arra a grafikus módra gondolsz, amiben a Treasure Cave vagy az Entersnake is fut? Mert ott alapból 4 szín van, és ebben benne van a háttér színe is. Valami trükkel még plusz színeket bele lehet vinni, talán bizonyos tartományban a karaktereket rá lehet venni, hogy másmilyen színűek legyenek, mint a többi.
minden színpárban a karakter háttere fekete, és a többi a 4 szín.
Ez tuti? Arra a grafikus módra gondolsz, amiben a Treasure Cave vagy az Entersnake is fut? Mert ott alapból 4 szín van, és ebben benne van a háttér színe is. Valami trükkel még plusz színeket bele lehet vinni, talán bizonyos tartományban a karaktereket rá lehet venni, hogy másmilyen színűek legyenek, mint a többi.A Treasure cave 4 színű karakteres módban fut, ott 2 színkvartett van
de LPT módosítással elérhető ez is.Igen, így már stimmel!
Ez szembejött Facebookon:
(Attachment Link)
Így mindenki összerakhatja a "japán" nevét. Vagy bármilyen szót "japánul". Kicsit azért macerás a betűk között keresgélni, így csináltam egy basic programot, ami a beírt szöveget átalakítja "japánra":
Sorry, that is totally wrong, probably a jokeYes, this is a joke, I know. It is just funny. On Facebook there are always a lot of funny (or not funny) and senseless things. I was happy to create a basic program of it in 5-10 minutes.
El lehet távolítani egy videolapot a képernyőről?FROM-ot 0-val kell kezdeni
látszik, hogy 8080 asm az alapja, a kommentekben még 8080 regiszterekre hivatkoznakAkkor Z80-ra is le lehetne fordítani? :-)
Akkor Z80-ra is le lehetne fordítani? :-)vszínű, mivel pl ehelyett: (1993-1994. sor a GWMAIN.ASM-ban)
Amúgy ha jól emlékszem anno adott ki az Intel 8080 -> 8086 assembly konvertert, ami lecserélte a forrásban az utasításokat a megfelelő újakra. Lehet, hogy ez a cucc is így készült?
MOV BH,DH ;SAVE [D,E]
MOV BL,DL
mov bx, dx
ld h,d
ld l,e
Az ALLOCATE utasításnak a program elején kell lennie mindig? Vagy elég a CODE, HEX előtt is kiadni? Azt írja a kézikönyv, hogy a változókat elrontja. DEF blokkon belül nem célszerű kiadni?Bármi olyan előtt ami értéket tárol el a BASIC munkamemóriában. Ennek a munkamemóriának tolja el a kezdetét, hogy legyen egy fix hely majd a gépi kódú részeknek.
Próbálkoztam, működik, csak mire az END DEF-hez ér, már nem tudja, az mire vonatkozik.Igen pont erről van szó, a DEF blokkhoz tartozó adatok is ebben a munkamemóriában vannak tárolva, amikor az ALLOCATE lefut, azzal ez is elromlik.
itt a Wikin (https://wiki.enterpriseforever.com/index.php?title=IS-BASIC_tr%C3%BCkk%C3%B6k) a Karakterkészlet kimentése és betöltése cím alatt az a kis program jó-e?Közben próbálgattam még. Működik, de ha egy több száz soros basic programba tesszük be, akkor már nem működik. Rejtély, hogy miért. Pedig nem változtattam rajta semmit. Rögtön a program elején lefut, de nem írja át a karakterkészletet.
Közben próbálgattam még. Működik, de ha egy több száz soros basic programba tesszük be, akkor már nem működik. Rejtély, hogy miért. Pedig nem változtattam rajta semmit. Rögtön a program elején lefut, de nem írja át a karakterkészletet.Most akkor a töltés, vagy a mentés nem megy nálad? (nálam működik)
Most akkor a töltés, vagy a mentés nem megy nálad? (nálam működik)Működik.
Biztos, h jó file-t töltesz be?
LET SZEG=IN(178)
OUT 178,255
ezt pedig a CALL USR utánOUT 178,SZEG
Csak a ZZZIP-pel lefordított változatban nem működik, vagy a nyers BASIC-ben se?Basic-ben se. Akkor majd kipróbálom a módszered.
Egyébként azt tudom elképzelni, hogy akkor, amikor meghívod a függvényt, akkor nem a 255-ös szegmens van a 2-es lapon. És akkor rossz helyre tölti be a chr készletet.Kipróbáltam, de így sem működik.
Próbáld ki úgy, hogy berakod még ezt a CALL USR elé:Code: [Select]LET SZEG=IN(178)
ezt pedig a CALL USR után
OUT 178,255Code: [Select]OUT 178,SZEG
A program tele van egy rakat SET CHARACTER utasítással, semmi más nincs benne. És lenne egy DEF blokk, amit ha akarunk, meghívunk parancs üzemmódból, és akkor HEX, USR segítségével elmenti az egész karakterkészletet.Az egyik kígyós játékba mintha beleraktam volna ezt a funkciót
Újabb darab.
CHARS_RD A komplett karakter mátrixot olvassa be fájlból.
CHARS_WR A komplett karakter mátrixot írja ki fájlba.
Az egyik kígyós játékba mintha beleraktam volna ezt a funkciótDe, ez jó. Te valami SPOKE-s módszerrel csináltad, nem CODE és USR utasításokkal. De attól még működhetne az utóbbi is. Illetve működni működik, csak ha egy hosszabb basic programba kerül bele, ott már nem működik valamiért.
Char Load / Char Save
Amúgy itt ez nem jó?
Kipróbáltam, de így sem működik.Ennyi erővel
Először simán a hosszú program elejére az eredeti "fontos" részt:
(Attachment Link)
Beleírva az OUT-os részt:
(Attachment Link)
Ha az első snapshotban, ha töröljük a programot és csak az elején a fontos részt hagyjuk meg, majd egy resetet nyomunk és futtatjuk, akkor működik.
IN A,(0B2h)
PUSH AF
LD A,255
OUT (0B2h),A
LD A,1
LD BC,0480h
EX DE,HL
EXOS 6
POP AF
OUT (0B2h),A
RET
Ha az első snapshotban, ha töröljük a programot és csak az elején a fontos részt hagyjuk meg, majd egy resetet nyomunk és futtatjuk, akkor működik.Hiányzik a font fájl amit töltene :oops: Mondjuk egy RAMDISK-es verzió?
Hiányzik a font fájl amit töltene :oops: Mondjuk egy RAMDISK-es verzió?Nálam reset után is ki kell adni, hogy :def_dev_disk, mert elfelejti néha:
Ennyi erővelEzt hogyan lehet átalakítani CODE =HEX$ formára? Csak a RET-ről tudom, hogy az C9, csak mert a végén mindig az van. :D
Ezt hogyan lehet átalakítani CODE =HEX$ formára? Csak a RET-ről tudom, hogy az C9, csak mert a végén mindig az van. :DA legegyszerűbb módja, ha begépeled az EP128emu debuggerének második lapjának bal felső ablakába:
Ezt hogyan lehet átalakítani CODE =HEX$ formára?ASMON-nal lefordítod BASIC programnak. Modernebb megoldás az István féle SJasmEP.
Kipróbáltam ezzel is, de nekem most sem működik. Az LD A,255 helyett LD A,FF-et írtam be, mert csak azt fogadta el, és még egy 00-t berakott utána:Code: [Select]IN A,(0B2h)
PUSH AF
LD A,255
OUT (0B2h),A
LD A,1
LD BC,0480h
EX DE,HL
EXOS 6
POP AF
OUT (0B2h),A
RET
start
IN A,(0B2h)
PUSH AF
LD A,0FFh
OUT (0B2h),A
LD BC,0480h
EX DE,HL
EXOS 6
POP AF
OUT (0B2h),A
RET
end
Ezt merge -rezdNem tudom, mi lehet vele, de nekem most sem működik:
Csatorna 255
betölt majd törlődik?A VIDEO_INI-ben volt egy CLEAR FONT, az állította vissza. Most már működik!
nem hiányzik a "gems.env" fájl?Ja, de igen. Az egész az összes fájllal a másik topikban van, itt van a legutóbbi verzió, amit eddig feltettem (https://enterpriseforever.com/programozas/dots-and-gems/msg79394/#msg79394). Ezt csak a karakterbetöltősdi miatt tettem ide. Azóta kicsit fejlesztettem tovább is, majd felteszem azt is.
Úttörő áruház bejön SCROLL le -föl aztán leál valami hibával.Biztos? Nem lehet, hogy csak nagyon lassú, és azért tűnik úgy, hogy leáll? Amúgy ez csak egy régebbi változat a karakterbetöltősdi teszteléséhez, ezzel nem kell nagyon foglalkozni, a másik topikban van/lesz az igazi verzió.
hang nincs.A gems.env-et nem tudta betölteni, azért nincs hang, Az eddigi legfrissebb változatot a másik topikba tettem fel minden fájllal, ami kell hozzá.
Mára ennyi, majd a következő napokba folytatjuk ezt.Oké, akkor lehet, lecserélem még a régi karakterbetöltős részt az újra DEF CHARS eljárásban.
Viszont amikor kiírja, hogy milyen karakterdefiníciót kell megadni a set character után, az mindig más, és ha a számokat átírjuk más jelekre, nem fog szépen látszani.Ez roppant fapados megoldásnak tűnik. Többet érne, ha rendes IS-BASIC programként, SET CHARACTER utasítások sorozataként exportálná, amit csak hozzá kell fűzni a programhoz, amiben használni akarod a karakter definíciókat. Valamelyik könyvben meg lehet találni hogyan épül fel egy IS-BASIC program és mik az egyes utasítások kódjai, illetve a paramétereket hogyan kell megadni. Egyszer már nekem is sikerült valahogyan kiderítenem, amikor a PETSCII karakterkészlet átalakításával foglalkoztam endi kívánságára.
ha rendes IS-BASIC programként, SET CHARACTER utasítások sorozataként exportálnáA továbbfejlesztett programban (Chr 2012 (http://ep128.hu/Ep_Util/Util.htm)) van ilyen is. Illetve ott txt fájlba exportálja a basic programot. Ez nem tokenizált, ennek hátránya, hogy nem lehet össze merge-elni más programmal. (Gondolkodtam már én is, hogy tokenizált formában is menthetne. Ehhez csak meg kéne nézni hex editorral egy tokenizált programot, amiben set characterek vannak. Utánuk a számokat, úgy emlékszem, ugyanúgy tárolja, mint a szöveget.)
Emlékeim szerint PRINT-el is lehet karaktert módosítani.Igen.
PRINT #102:CHR$(27)&CHR$(75)&CHR$(karakter kódja)&CHR$(karakter 1. sora)&CHR$(karakter 2. sora), stb.
A CHR$(27) beállítja, hogy escape szekvencia legyen. A CHR$(75) gondolom megadja, hogy SET CHARACTER.Igen.Code: [Select]PRINT #102:CHR$(27)&CHR$(75)&CHR$(karakter kódja)&CHR$(karakter 1. sora)&CHR$(karakter 2. sora), stb.
A CHR$(27) beállítja, hogy escape szekvencia legyen. A CHR$(75) gondolom megadja, hogy SET CHARACTER.
UI.: A PRINT-tel beírható karaktersort fájlba is lehet menteni, ott megnéztem hex editorral a "proba" fájlt, úgy fejtettem meg, hogy 27 és 75 van az elején. Az elmentett adatokat COPY-val a videocsatornára másolva át is definiálja a karaktert az elmentett alakúra:
(Attachment Link)
Bárcsak lehetne csatornánként más-más karakter készlet.Attribútum videolapokra kell írni mindent. Írás előtt elmenteni a memóriába a karakterkészletet (pl. ramdiskre :D ), megváltoztatni, írni, majd visszaállítani. De pár dolog nem használható így, pl. a SPEEK-es karakterfelismerő módszer már nem jó.
SELECT FONT - a rendelkezésünkre álló 26 karakterkészlet közül választhatunk ki egyet, melyet a FONT EDITOR-ba tölthetünk, majd átszrkeszthetünk.Ahogy nézem, a CHARS fájlban van benne mind a 26 karakterkészlet, majdnem 20Kb az a fájl, biztos nincs tömörítve, pedig úgy biztos jóval kisebb lehetne.
Tényleg, magnós gépnél, exdos nélkül lehetne csinálni ramdisk bővítést?
Az Util programcsokorban (http://www.ep128.hu/Ep_Util/Util.htm) van egy RAMDISK.EXT program, pont erre a célra.EP128k, tape:
Az Util programcsokorban (http://www.ep128.hu/Ep_Util/Util.htm) van egy RAMDISK.EXT program, pont erre a célra.Nem is lenne rossz arra, hogy ha sok nagy pálya van, akkor azokat előbb betölti mind magnóról, és nem kell mindig visszatekergetni a magnót új játéknál. Viszont a Zzzippel fordított program mellett nem lehet más rezidens program a tárban, tehát akkor mégse használható.
Nem is lenne rossz arra, hogy ha sok nagy pálya van, akkor azokat előbb betölti mind magnóról, és nem kell mindig visszatekergetni a magnót új játéknál. Viszont a Zzzippel fordított program mellett nem lehet más rezidens program a tárban, tehát akkor mégse használható.Basic-ban ?
De biztos létezhet olyan basic program, amihez jól jöhet, ha sok fájlt töltöget be összevissza sorrendben többször is...
Basic-ban ?Még azon gondolkodtam, hogy az a RAMDISK program kevesebb, mint 2 KB. Létre lehetne hozni ramdisk programot basic HEX és USR parancsokkal, és az fordítható lenne Zzzippel. Bár az a 2 kilobájtnyi HEX krixkrax elég terjedelmes lenne. Még akkor is, ha kihagyjuk belőle a felhasználónak kiírt szövegeket, pl. a helpet. Egyelőre nincs még olyan játék, amiben sok nagy pálya lenne és nem férne el a programban, tehát nincs is szükség ilyen ramdiskre magnós géphez.
Kár, hogy csak elméletben lehet minden "video:" csatornához külön karakterkészletet csatolni.Kelő mennyiségű POKE-val meg lehet csinálni, hasonlóan a gracha módhoz.
Kelő mennyiségű POKE-val meg lehet csinálni, hasonlóan a gracha módhoz.Esetleg egy új LPT nem lehet meg etetni BASIC-ban?
ideiglenesen tuti, nem hinnem, hogy az exos megszakitas minden futaskor atallitana, de ha igy van, akkor a bff4h cimen is atirva sztem nem fogja.Ha megcsináljuk az LPT , át írjuk a 0BFF4h címet és nem csinálunk DISPLAY, CLOSE parancsot akkor nem kellene annyi video: csatorna.
de ha azt szeretned, hogy legyen kurzorodKöszi, ez jó módszer!
GRAPHICS HIRES 2 - e parancs kiadása esetén egyszerre csak két szín használható, de a képernyő szélességében 640 pontra van felosztva;
GRAPHICS HIRES 4 - négy színnel rajzolhatunk a rendelkezésünkre álló 320 pont szélességű képernyőn;
GRAPHICS HIRES 16 - ezúttal 16 szín és 160 pont/sor használható;
GRAPHICS HIRES 256 - a 256 szín megjelentetésének lehetőségéért azzal fizetünk, hogy képernyőnk vízszintes felbontása 80 pontra csökken.
Csak ennyi a módosítás, hogy átmenetesen pakolja ki.Köszi! :smt041
A szabad videomemoria merete szab korlatot nekiMi fogyaszthatja el a szabad videomemóriát? Csak a videolapok? Tehát ha beállítom az összes szükséges videolap méretét és megnyitom őket, és utána már nem nyitok újabb videolapokat, akkor már nem csökkenhet a szabad videomemória mérete?
Hola szipucsu. Este es el programa que quiero convertir a Zzzip.I have tried both the original and the compiled program on the emulator (I have only the emulator). I know it doesn't work without the hardware. However, the original and the compiled programs do the same. "Initialising USB device.." is in progress but nothing happens. Does it do the same with the hardware? Or does it hang up earlier?
There is some way to know the offending line number?Unfortunately no. Zzzip forgets the line numbers of the original program.
510 IF (IN(35) BAND 8)<>8 THEN GOTO 510
510 IF IN(35) BAND 8<>8 THEN GOTO 510
510 LET GUSTAVO=IN(35)
515 IF GUSTAVO AND 8<>8 THEN GOTO 510
What version of Zzzip do you use? I have to fix it by myself...Zzzip 1.2. It can be downloaded here (http://ep128.hu/Ep_Util/Ep_Util_eng.htm), scroll down to the bottom of the page. Hay que ir abajo en la página.
1 PROGRAM "sorrend.bas"
10 RANDOMIZE
100 NUMERIC SZINTEK(1 TO 8)
110 FOR A=1 TO 8
120 LET B=RND(8)+1
125 IF A>1 THEN
130 FOR C=1 TO A-1
140 IF B=SZINTEK(C) THEN GOTO 120
150 NEXT
155 END IF
160 LET SZINTEK(A)=B
170 NEXT
180 FOR A=1 TO 8
190 PRINT SZINTEK(A)
200 NEXT
Zzzippel lefordítva a programot a 2. szám mindig a 2 volt, fura. Az első meg mindig vagy az 5, vagy a 6, talán ritkán más is.
ciklusban kiválasztasz véletlenszerűen két tömbelemet, amiket felcserélsz
100 PROGRAM "sorrend2.bas"
110 RANDOMIZE
120 NUMERIC SZINTEK(1 TO 8)
130 FOR A=1 TO 8
140 LET SZINTEK(A)=A
150 NEXT
160 FOR X=1 TO 20
170 LET A=RND(8)+1:LET B=RND(8)+1
180 IF A=B THEN GOTO 170
185 LET C=SZINTEK(A)
200 LET SZINTEK(A)=SZINTEK(B)
210 LET SZINTEK(B)=C
220 NEXT
230 FOR A=1 TO 8
240 PRINT SZINTEK(A)
250 NEXT
100 PROGRAM "sorrend3.bas"
110 RANDOMIZE
120 NUMERIC SZINTEK(1 TO 8)
130 FOR A=1 TO 8
140 LET SZINTEK(A)=A
150 NEXT
160 FOR X=1 TO 8
170 LET A=X:LET B=RND(8)+1
180 !IF A=B THEN GOTO 170 ! nem is kell ez
185 LET C=SZINTEK(A)
200 LET SZINTEK(A)=SZINTEK(B)
210 LET SZINTEK(B)=C
220 NEXT
230 FOR A=1 TO 8
240 PRINT SZINTEK(A)
250 NEXT
A CTRL+F2-vel középre lehet állítani az adott sort. Ennek a karakternek a kódja CHR$(241). Ha kiadom egy szöveges csatornán arra a sorra, hogy PRINT CHR$(241), akkor odarak valamilyen karaktert, ahelyett, hogy középre rakná a sort. Ez miért lehet?Valószínűleg azért, mert a billentyű kombináció egy EDITOR funkciót hoz működésbe. A BASIC program futása közben ezek ha minden igaz csak részlegesen működnek, és a PRINT paranccsal nem is lehet kiváltani ezeket.
Továbbgondolva az ötleted, végigmegyek ciklussal az összes elemen, és tetszőleges elemmel felcserélem. Így tuti, hogy mindenhol lesz csere, és elég csak akkora ciklus, ahány elem van a tömbben.
Pedig működik:
PRINT "Szöveg";CHR$(241)
5520 SET VIDEO MODE 0:SET VIDEO COLOUR 0
5560 SET VIDEO X 30:SET VIDEO Y 1
5570 OPEN #1:"VIDEO:"
5580 SET #1:SCROLL OFF:PRINT #1:CHR$(27);"o"
5590 DISPLAY #1:AT 25 FROM 1 TO 1
6000 PRINT #1:"SZOVEG";CHR$(241)
szerintem ha csinalsz editort, es hozzarendeled a csatornad, akkor mukodni fogHozzárendelni hogyan lehet? A 0-ás csatorna hogyan rendelhető hozzá videolaphoz? Szerintem alapból a 102-es videolaphoz van hozzárendelve a 0-ás editor csatorna.
100 ENVELOPE NUMBER 1;0,63,63,1;0,-63,-63,50
110 SOUND PITCH 79.5,ENVELOPE 1,DURATION 50
:D
Ha elromlik Basicben a PING parancs, akkor lehet helyettesíteni:Chuck Norris után sose tudni...
10 PROGRAM "3ENVPING.BAS"
100 ENVELOPE NUMBER 1;0,63,63,1;0,-63,-63,50
105 FOR A=1 TO 3
110 SOUND PITCH 79.5,ENVELOPE 1,DURATION 50
120 NEXT
10 PROGRAM "3PING.BAS"
105 FOR A=1 TO 3
110 PING
120 NEXT
100 TIME "00:00:00"
110 FOR X=1 TO 3000
120 DATA 1,2,3,4
130 READ A,B,C,D
140 NEXT
150 PRINT TIME$
160 END
START
*** Out of data in READ/INPUT
130 READ A,B,C,D
print x
2
ok
Az új DATA sor bekellene vinnie az adatokat a memoriába.
Mit hibáztam ?Ez most beugratós kérdés?
Mit hibáztam ?A FOR után RESTORE kellene. Beolvas 4 adatot, és nincs több adat, újra kell indítani elölről az adatok olvasását.
Ez a dolog már 25 éve is foglalkoztatottKönyveket nem olvastad? :oops:
Könyveket nem olvastad? :oops:Huszonvalahány éve olvastam valamelyikben ezt. De valamiért nem működött, pedig a POKE utáni számot számjegyenként ellenőriztem többször is. Így akkor elmaradt a hatalmas élmény, ami most meglett.
Tényleg, a funkcióbillentyűk szövegei (START, LIST, stb.) hol tárolódnak? A basic romban? Mert pl. a TOGGLE REM1, TOGGLE SPEAKER soha nem kell emulátoron, nem is tudom, csinálnak-e valamit, azokat fixre át lehetne írni valami olyan szövegre, ami hasznos. (A ZT is jó, csak azt külön el kell indítani, azt hiszem.)A SET FKEY parancs pont erre való. Példa:
set fkey 4 "PRINT"&chr$(34)&"alma"&chr$(34)&chr$(13)
Huszonvalahány éve olvastam valamelyikben ezt. De valamiért nem működött, pedig a POKE utáni számot számjegyenként ellenőriztem többször is.Ez valószínűleg angol/német gép különbség miatt volt, neked pont másik volt, mint amilyenhez a könyvet írták. (Német gépen kicsit arrébb csúsznak a dolgok a memóriában.)
A SET FKEY parancs pont erre való.Ezt ismerem, de ez resetnél visszaáll eredetire. De lehet, hogy megpróbálom.
Ezt ismerem, de ez resetnél visszaáll eredetire.Na pont ezért készült ZT azon része :-)
the enter key also worked poorly, so I reprogram F8 key with chr$(13) value and can programming more comfortably.At my first membrane also the Enter dead... this is a sign of you are programmer :lol:
Then I used CTRL+M :ds_icon_cheesygrin:
A billentyű- és joystickfigyelésnek van valami más módja, mint az INKEY$ és a JOY() függvény? Arra gondolok, hogy valami cím értéke megváltozik, ha egy billentyű le van nyomva vagy a joystick el van mozdítva. Basic programoknál körülményes megoldani, hogy figyelje a joystickot és a billentyűzetet is, egyszerűbb lenne a CASE után a címértékeket odaírni, és azokra menne pl. jobbra a figura.BASIC-ben a 181-es port írásával és olvasásával tudod figyelni a billentyűzetet és a belső joy-t, a külső joy-t a 181-es port írásával, és a 182-es port olvasásával. Szerintem ezt megvalósítani BASIC-ben nem egyszerűbb, mint a joy és az inkey$
10 OUT 181,7
20 IF (IN(181) BAND 64)=0 THEN PRINT "Enter"
30 GOTO 10
A Flappy Bird témában előjött, hogyan lehetnek a karaktereknek az egyes sorai más színűek. Ilyet basicben is meg lehet csinálni? Vagy az LPT miatt inkább felejtős? Nyilván a legegyszerűbb, hogy külön kell definiálni a karaktereknek pl. a felső és az alsó részét, és más-más színnel íratni egy grafikus képernyőre, de ez nem az igazi. Bár így belegondolva, akár a kiírogatás idejére az adott karakterek alakját ki lehet olvasni a memóriából, és azzal hókuszókuszolni és külön-külön más színnel íratni ki, ez mondjuk pl. egy játék menüjében még el is menne, de biztos van kellemesebb módszer is.
SET ATTRIBUTES-szal meg lehet adni, hogy a PLOT ne rajzoljon át, csak a színt változtassa.Na, nekem meg évek óta lyukasra furdalta a kíváncsiság az oldalamat, mire lehet jó az a set attributes, és most itt egy jó példa.
MIN(I,50) ?Ne viccelj, ez ilyen egyszerű? Mindig tudtam, hogy van ez a MIN függvény, de a gyakorlatban nem ugrott be, hogy mikre lehetne használni. A matekkal is mindig ez volt a bajom, hogy sosem tudtam összekapcsolni az elméletet a gyakorlattal. Jó annak, akinek az ilyesmik könnyen beugranak. Szerintem itt kezdődhet a matematikus gondolkodás, ami nekem mindig magas volt. :D
Esetleg bekukucskál(SPEEK) a SOUND csatorna pufferre?És hogyan lehet oda bekukucskálni? Sejtettem, hogy valami SPEEK lesz a dologban.
Szerintem egy bugot találtál :-)Biztos?
Sehol nem írják, hogy lehetne paraméterezni a PING-et, de most kipróbáltam, és nagyon meglepődtem.Senki nem próbálta ki maga?
120 CODE LDCHAR=HEX$("DB,B2,F5,3E,FF,D3,B2,2A")
130 CODE =HEX$("F4,BF,3E,06,85,6F,5E,23")
140 CODE =HEX$("56,06,07,CB,13,CB,12,10")
150 CODE =HEX$("FA,CB,B2,01,80,04,3E,6A")
160 CODE =HEX$("F7,06,F1,D3,B2,C9,00,00")
120 CODE LDCHAR=HEX$("DB,B2,F5,3E,FF,D3,B2,2A,F4,BF,3E,06,85,6F,5E,23,56,06,07,CB,13,CB,12,10,FA,CB,B2,01,80,04,3E,6A,F7,06,F1,D3,B2,C9,00,00")
Rakd be a CHR$(13)-at egy változóba, és akkor már nem olyan hosszú :-)Nem rossz ötlet! pl. az A$ egész rövid.
átalakít 2 bájtos számmáMilyen az a 2 bájtos szám? (Lehet, mindenki tudja, csak én nem.)
Szükségem lenne egy olyan rutinra vagy parancsra, ami egy 2 bájtos hexidecimális (pl. BFE0) kifejezést átalakít 2 bájtos számmá és ezt el tudom tárolni egy változóban.Ez (http://ep128.hu/Ep_Konyv/Tippek.htm#21)?
Sajnos nem tudok decimálisban gondolkodni.Ez igen furcsa! Hogyan jutottál ebbe az állapotba? Ha azt kérdezem mennyi 12+29, akkor tényleg 3B-t válaszolsz rá?
Én pedig nem akarom átváltani...Ezt simán meg tudod csinálni a Windows beépített számológépével, ha átállítod programozó módba (Alt+3 talán). És gondolom Linuxban vagy MacOS-ben is van hasonló szolgáltatás. Amúgy is érdemesebb manapság emulátorban fejleszteni és csak a végső tesztelésnél használni igazi gépet. Szerintem.
Szükségem lenne egy olyan rutinra vagy parancsra, ami egy 2 bájtos hexidecimális (pl. BFE0) kifejezést átalakít 2 bájtos számmá és ezt el tudom tárolni egy változóban.pl így lehet megoldani:
100 POKE HEX("bfe0"),255
1000 DEF HEX(H$)
1010 LET HEX=256*ORD(HEX$(H$(1:2)))+ORD(HEX$(H$(3:4)))
1020 END DEF
Elején a példa POKE a keretet állítja át EXOS 2.1+ alatt.
pl így lehet megoldani:Code: [Select]100 POKE HEX("bfe0"),255
1000 DEF HEX(H$)
1010 LET HEX=256*ORD(HEX$(H$(1:2)))+ORD(HEX$(H$(3:4)))
1020 END DEF
Mi az a 3-as betöltőkódú többszörös basic program?Igen. SAVE ALL parancs.
Lehet több EDIT alatt lévő programot egyszerre menteni/visszatölteni?
30 év után most tudom meg, hogy van save all parancs.Pedig a kézikönyv 140. oldalán írnak róla :-)
30 év után most tudom meg, hogy van save all parancs.Én már régóta tudtam, de soha nem használtam. Pedig biztos jól ki lehetne használni a lehetőséget valamire, hogy egyik program a másiknak adogassa át a kilincset. Csak a Reversi-Dáma-Awari programról tudok, ami kihasználja ezt a lehetőséget. A képernyő tetején meg mindig ott virít a "program 0" felirat, és nem tudom, kik és milyen gyakran állítgatják át, nem csak kísérletezés céljából.
részt az edit 0-ban, és RUN parancs kiadása után valahol átadja a futást edit 1-ben futó programnak, akkor az a$ függvény itt is használható?A run törli a változókat. De programból nem is tudja meghívni egyik program a másikat, erre szerintem a chain parancs való.
És a vissza térés EDIT 0 ra? Újra elveszted a változókat?CHAIN 0
On the English manual (http://enterprise.iko.hu/books/EnterpriseProgrammingGuide.pdf), the Chain command is wrongly indexed on pag. 195.Ezt a paraméterátadást sosem értettem. Az a baj, nem mutatták be gyakorlati példán, hogy a meghívott program mit tud csinálni azokkal a dolgokkal, amiket megadunk neki az egyik programból. A PROGRAM utasítás után a programnév után is meg lehetett adni zárójelben valamiket, de erre se láttam még példát, hogy hogyan lehet aztán felhasználni.
CHAIN 0Még ilyet ?
A változók más környezetben sem szoktak elérhetőek lenni más programoknak, ha hívogatják egymást, csak a paraméterekben átadott értéket látják.
Ezt a paraméterátadást sosem értettem. Az a baj, nem mutatták be gyakorlati példán, hogy a meghívott program mit tud csinálni azokkal a dolgokkal, amiket megadunk neki az egyik programból. A PROGRAM utasítás után a programnév után is meg lehetett adni zárójelben valamiket, de erre se láttam még példát, hogy hogyan lehet aztán felhasználni.
Ezt a paraméterátadást sosem értettem.Dióhéjban kb. ugyanaz, mint amikor DEF szubrutinok hívják egymást, és paraméterekben adnak át egymásnak értékeket, mert egymás változóit nem látják. A programoknál is hasonlóan működik, ők is értékeket adnak át egymásnak. Más környezetben is létezik ez, pl. DOS batch parancsfájlok és .EXE programok is adhatnak át egymásnak paramétereket.
6510 SET #2:PALETTE COLT(A,1),COLT(A,2),COLT(A,3),COLT(A,4),COLT(A,5),COLT(A,6),COLT(A,7)
6520 SET #2:PALETTE COLT(A,1),COLT(A,3),COLT(A,4),COLT(A,5),COLT(A,6),COLT(A,7),COLT(A,2)
6530 SET #2:PALETTE COLT(A,1),COLT(A,4),COLT(A,5),COLT(A,6),COLT(A,7),COLT(A,2),COLT(A,3)
6540 SET #2:PALETTE COLT(A,1),COLT(A,5),COLT(A,6),COLT(A,7),COLT(A,2),COLT(A,3),COLT(A,4)
6550 SET #2:PALETTE COLT(A,1),COLT(A,6),COLT(A,7),COLT(A,2),COLT(A,3),COLT(A,4),COLT(A,5)
6560 SET #2:PALETTE COLT(A,1),COLT(A,7),COLT(A,2),COLT(A,3),COLT(A,4),COLT(A,5),COLT(A,6)
200 LET A=1:LET B=2:LET C=3:LET D=4:LET E=5:LET F=6:LET G=7
210 FOR I=0 TO 5
220 PRINT A;B;C;D;E;F;G
230 LET BB=B:LET B=C:LET C=D:LET D=E:LET E=F:LET F=G:LET G=BB
240 NEXT I
Ez sem egy utolsó megoldás.
De egyébként Szipucsu megoldása lesz a leggyorsabb mind közül :-) Cserébe az foglalja a legtöbb helyet.Zzzippel úgyis le lesz fordítva, a sebesség mindegy, mindenképpen még lassítani is kell rajta. A lassításhoz célszerű, ha csak egyszer kell betenni lassító FOR-NEXT ciklust az egészbe, ebből a szempontból az enyém a legrosszabb. De nem Zzzippel fordított basic programhoz talán tényleg az a legjobb.
6531 LET A=RND(10)+1
6532 FOR CKL=2 TO 7
6533 LET COLV(CKL),COLV(CKL+6)=COLT(A,CKL)
6534 NEXT
6535 FOR CIKL=1 TO 15
6536 FOR CKL=2 TO 7
6537 FOR A1=1 TO 900
6538 NEXT
6539 SET #2:PALETTE COLT(A,1),COLV(CKL),COLV(CKL+1),COLV(CKL+2),COLV(CKL+3),COLV(CKL+4),COLV(CKL+5)
6540 NEXT
6541 NEXT
Még ötlet? :D
1 ! 14!4
:)
Hogy tudok egy basic programlistát txt-be, vagy bármibe konvertálni, amit a pc-n be tudok olvasni?
LLIST, virtuális nyomtatóeszközzel a windowsban? De melyik emulátor emulál nyomtatót?
OPEN #1:"lista.bas" ACCESS OUTPUT"lista.bas" helyett "lista.txt" még jobb, akkor egyből jegyzettömbben lehet megnyitni és szerkeszteni.
Hogy tudok egy basic programlistát txt-be, vagy bármibe konvertálni, amit a pc-n be tudok olvasni?Van valahol egy LUA script is az emulátorhoz, amit talán Zozo írt, és ha az lefut, akkor a LLIST (shift+F2) is kirakja txt fájlba a listát. Ez gyorsabb lehet annak, aki lassan gépeli be a parancsokat.
Köszi néktek, bevált! :)
Van valahol egy LUA script is az emulátorhoz, amit talán Zozo írt, és ha az lefut, akkor a LLIST (shift+F2) is kirakja txt fájlba a listát. Ez gyorsabb lehet annak, aki lassan gépeli be a parancsokat.
És basszus, visszatölti txt-ből a programot, és futtatja. :DArra kell vigyázni, hogy a LOAD-dal töltsd be, ne a start (F1) paranccsal. Ez utóbbi egyből futtatja is, és nincs ideje magához térnie a txt betöltéséből a rendszernek, és a programba hibás sorok kerülhetnek. Egyszer már jártam így, a Xorgame 2 basic programnál, elég nehezen jöttem rá, miért kerültek zsibbadtságok hirtelen a programba, abban a topikban írtam is.
A Reversi-Dáma-Awari (http://www.ep128.hu/Ep_Games/Leiras/Reversi_Dama_Awari.htm) játékhoz tévedve láttam, hogy a Reversi és a Dáma része nem igazán színpompás, ezen talán könnyen lehetne segíteni. Alighanem soronként változó attribútum képernyőkkel lenne a legjobb. Bár annyi szín meg minek, a Reversi 4 színű karakteres módban is jó lehet, mert nem összetett a karakterek alakja.
Az attribútum képernyő jó ötletBelekukkantottam a Reversibe. Az egész képernyő az alapállapotú szöveges képernyő. Sokat lehetne szépíteni rajta. A játéktér melletti jelzés, hogy ki lép, mehetne külön videolapra a képernyő aljára a 25-27. sorba. A játéktér lehetne mondjuk egy attribútum képernyő, a videolap méretét meghatározná, hogy mekkora pályát kérünk, és középre is rakná így. Ahol a lépéseket kell beírni, külön videolap lenne, az INPUT utasítást valami másra kellene cserélni, és nem engedne beírni olyan karaktereket eleve, amelyek nem kellenek a lépés megadásához. Amíg a gép gondolkodik a lépésén, addig lehetne poke 56,201. (És lehetne alapból out 191,12.)
Egy példa, kérem.
100 FOR A1=1 TO 40
110 IF A1<7 THEN LET X1=A1
120 IF A1>6 AND A1<11 THEN LET X1=....
130 IF ....
140 IF ....
....
200 PRINT X1
210 NEXT
90 AD=1
95 A1=0
100 FOR I=1 TO 40
110 IF A1=6 THEN LET AD=-1
120 IF A1=1 THEN LET AD=1
130 A1=A1+AD
140 PRINT A1
150 NEXT I
IF(A<2ANDI<0)OR(A>5ANDI>0)THENI=-I
Reggelre meg megfogalmazódott bennem a kérdés, hogy egy PRINT utasításban karakterlánc literálként megadva a teljes sor mintáját nem lenne ez gyorsabb és kisebb memóriaigényű?
nem lenne ez gyorsabbA sebesség nem igazán számít, persze nem baj, ha nem kell perceket várni. PRINT utasításban karakterenként akarnék majd szöveget kiíratni attribútum lapra, minden karakter előtt átállítaná a színt, és hullámzó színátmenetek lennének a szövegben. A palettát persze úgy lőném be, hogy színátmenetes legyen. Minden egyes sor kiírása előtt a sor tartalmát átadná egy változónak, meghívná a színezős szövegkiírós részt. A Manhole játékba tervezek tenni ilyet is. A Speed Collectorban és a Dot turbóban is van ilyen a kijelzőkön. Lehet, hogy ezentúl minden basic programban kötelező lesz ez az extra.
100 FOR I=0 TO 39
110 LET MARADEK=MOD(I,10)
120 PRINT 1 + MARADEK + (MARADEK>5)*((MARADEK-6)*2+1)
130 NEXT I
Ha jól emlékszem, a logikai IGEN és NEM értéke -1 és 0 IS-Basic-ben, a 120-as sorban a második plusz azért plusz. Ha a true értéke +1, akkor ott mínusz jel kellene. Ha lesz időm, otthon kijavítom, hogy tényleg fusson EP-n. :)
100 FOR I=0 TO 39
110 LET MARADEK=MOD(I,10)
120 PRINT 1 + MARADEK + (MARADEK>5)*(MARADEK-5)*2;
130 NEXT I
100 FOR I=0 TO 39
110 PRINT 1 + MOD(I,10) + (MOD(I,10)>5)*(MOD(I,10)-5)*2;
120 NEXT I
Jegyzettömböt használok Win10 Pro/Enterprise verziókonNekem Win 10 Pro van, és mentésnél át tudtam állítani ANSI-re a kódolást, újra jó lett, ahogy Zozo írta. Sima jegyzettömböt használok.
Ennek a fordítottját meg lehet csinálni valahogy viszonylag egyszerűen?Code: [Select]4210 NUMERIC C(9)
4220 C(1)=102:C(2)=255:C(3)=255:C(4)=159:C(5)=15:C(6)=159:C(7)=255:C(8)=255:C(9)=102
4230 FOR I=1 TO 9
4240 SET CHARACTER 0,C(1),C(2),C(3),C(4),C(5),C(6),C(7),C(8),C(9)
4250 FOR J=9 TO 2 STEP -1
4260 C(J)=C(J-1)
4270 NEXT J
4280 C(1)=0
4290 NEXT I
4210 NUMERIC C(9)
4215 NUMERIC CN(9)
4220 C(1)=102:C(2)=255:C(3)=255:C(4)=159:C(5)=15:C(6)=159:C(7)=255:C(8)=255:C(9)=102
4220 CN(1)=0:CN(2)=0:CN(3)=0:CN(4)=0:CN(5)=0:CN(6)=0:CN(7)=0:CN(8)=0:C(9)=0
4230 FOR I=1 TO 9
4240 SET CHARACTER 0,CN(1),CN(2),CN(3),CN(4),Cn(5),CN(6),CN(7),CN(8),CN(9)
4250 FOR J=1 TO I
4260 CN(J)=C(9-I+J)
4270 NEXT J
4290 NEXT I
de, tedd be egy másik 9-es tömbbe, a karakter kilenc sorának értékét, C(1)-C(9) legyen 0, és a for ciklusban kezdd el feltölteni a karakter értékét a másik tömbből.Bug at the end of line 4220 :lol:Code: [Select]4210 NUMERIC C(9)
4215 NUMERIC CN(9)
4220 C(1)=102:C(2)=255:C(3)=255:C(4)=159:C(5)=15:C(6)=159:C(7)=255:C(8)=255:C(9)=102
4220 CN(1)=0:CN(2)=0:CN(3)=0:CN(4)=0:CN(5)=0:CN(6)=0:CN(7)=0:CN(8)=0:C(9)=0
4230 FOR I=1 TO 9
4240 SET CHARACTER 0,CN(1),CN(2),CN(3),CN(4),Cn(5),CN(6),CN(7),CN(8),CN(9)
4250 FOR J=1 TO I
4260 CN(J)=C(9-I+J)
4270 NEXT J
4290 NEXT I
Bug at the end of line 4220 :lol::lol:
The second 4220! :lol: :lol:
4225 CN(1)=0:CN(2)=0:CN(3)=0:CN(4)=0:CN(5)=0:CN(6)=0:CN(7)=0:CN(8)=0:CN(9)=0
Yes, I just edited the original code, and entered 2 typos :DCsak a sorszám volt probléma? Más nem volt?
Csak a sorszám volt probléma? Más nem volt?Most nézem, az utolsó CN végéről lemaradt az N, pótoltam.
4210 NUMERIC C(9)
4215 NUMERIC CN(9)
4220 C(1)=102:C(2)=255:C(3)=255:C(4)=159:C(5)=15:C(6)=159:C(7)=255:C(8)=255:C(9)=102
4225 CN(1)=0:CN(2)=0:CN(3)=0:CN(4)=0:CN(5)=0:CN(6)=0:CN(7)=0:CN(8)=0:CN(9)=0
4230 FOR I=1 TO 9
4240 SET CHARACTER 0,CN(1),CN(2),CN(3),CN(4),CN(5),CN(6),CN(7),CN(8),CN(9)
4250 FOR J=1 TO I
4260 CN(9-I+J)=C(9-I+J)
4270 NEXT J
4290 NEXT I
PerszeKöszi! :smt041
óóó persze, mert az 1. érték a teteje, és nem az alja :DMost nézem, ez kirajzolja a karaktert úgy, hogy először az alját rajzolja ki, és úgy megy felfelé pixelsoronként. Én arra gondoltam, hogy először a legteteje jelenik meg alul, az menne felfelé, és így a többi része is. Mint amikor pl. egy csatornából kidugja a fejét egy ember, aki beleesett. Most próba szerencse alapon átírtam ezt:
4260 CN(9-I+J)=C(9-I+J)
4260 CN(9-I+J)=C(J)
4260 CN(J)=C(9-I+J)
CN(9-I+J)=C(J)
4750 DEF I$(X)
4760 LET I$=CHR$(27)&"I"&CHR$(X)
4770 END DEF
Ha beírom a program elejére, hogyPróbáld
240 STRING *3 I$,
az nem tetszik neki.
Ha a DEF-en belülre írom be, hogy
4755 STRING *3 I$,
az sem tetszik neki.
240 STRING I$(0 to 8)*3
vagy 4755 STRING I$(0 to 7)*3
Soronként változtatható palettájú attribútum képernyő beállítása.Nem lenne szebb, és jóval tömörebb, ha a paletta beállítás is ciklisban menne, és a színeket DATA-ból olvasná a progi?
a színeket DATA-ból olvasná a progi?Igazából ez csak egy működő példa, ha valaki ilyet akarna rakni programjába. A programtól függően maradhat így is, vagy ha túl hosszú a program, át lehet alakítani. Annyiból jó így, hogy egymás alatt vannak az egyes videolapok palettái, így könnyen beállíthatók a színek, színátmenetek. Ha meg attri helyett 2 vagy 4 színű lap kell, akkor csak kevesebb számot kell írni a paletták után, és utána ahhoz kell írni ciklust.