Welcome, Guest. Please login or register.


Author Topic: Általános BASIC Kérdések (Read 428993 times)

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2756
  • Country: hu
    • Enterprise Forever
Re: Általános BASIC Kérdések
« Reply #15 on: 2006.August.15. 14:24:20 »
Quote from: "Zozosoft"
mivel a GOTO-k miatt soha nem jut el ide a programvégrehajtása, ezért nincs hibaüzenet.

Az interpreteres programnyelvek szépsége :-D

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #16 on: 2006.August.15. 15:28:04 »
Most próbáltam ki az emulátorral, mit csinál egy önmagában álló END IF. Érdekes módon tényleg nem jelez hibát. A gépkönyvben viszont nem találtam olyat, amirõl írtam, azt valószínûleg csak álmodtam.
Ha a GOTO-val még ki is biztosítjuk, hogy ne érjen oda a program, akkor aztán még tutibb, hogy nem lesz hiba.
A kakaóról nem is beszélve.  :D

Ez olyan, mint az Aquafresh: háromszoros védelem


(Ha már nagyon az idegeitekre mennék a hülyeségeimmel, nyugodtan szóljatok!)

Egyébként GOTO és kakaó ide vagy oda, tényleg érdekes, hogy az önmagában álló END IF miért nem okoz [epline tc=146 bc=0 ttc=0 tbc=1 xs=1 ys=2]*** Invalid end of block.[/epline] -ot, míg az END DEF meg a többiek igen...
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14733
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #17 on: 2006.August.15. 15:35:53 »
Hmmm, fogtunk egy újabb IS-BASIC bugot? :-)
Az END SELECT is ezt csinálja.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #18 on: 2006.August.15. 15:39:05 »
Quote from: "Zozosoft"
Hmmm, fogtunk egy újabb IS-BASIC bugot? :-)
Az END SELECT is ezt csinálja.


És ha tegnap éjfél után nem jövök a gép mellé egy bögre kakaóval, ki se derül. Igyatok kakaót, tele van tejjel, az élet, erõ egészség!
köszönet EDC-nek, hogy kakaó mellett futó programot készített! :) Így kideríthetjük a bugokat.
De tényleg, meg kéne nézni, minden EP (a 64-es, a német, az angol) is ezt csinálja-e, meg más gépeken hogy van ez, ha van.
Én láttam már a [epline tc=146 bc=0 ttc=0 tbc=1 xs=1 ys=2]*** No case selected.[/epline] üzenetet, de lehet, hogy az nem akkor volt, mint amirõl most beszélünk.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3198
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #19 on: 2006.August.15. 20:26:15 »
Quote from: "Zozosoft"
Hmmm, fogtunk egy újabb IS-BASIC bugot? :-)
Az END SELECT is ezt csinálja.


Úgy néz ki, hogy igen!



Az IS-BASIC védelmében el kell mondjam, hogy a "klasszikus" BASIC-ek közül (Tehát pl. nem Visual BASIC-re gondolok), az EGYETLEN, amellyel megoldható a struktúrált programozás, akár egyetlen GOTO nélkül is.
END IF azért kell, mert ha nem használjuk, az IF ... THEN után egyetlen sorba kellene "összesûritenünk" a feltételhez kapcsolódó teendõket.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #20 on: 2006.August.15. 21:48:40 »
Tuti, hogy az END IF-nek nincs más funkciója az eljárás lezárása mellett? Csak éppen kimaradt a kézikönyvbõl. (Akárcsak a VER$ és a VERNUM változók, melyeket ha kiíratunk PRINT-tel, utána mintha meghülyülne a gép, talán a változók törlõdnek.)
Lacika és a kézikönyv is javasolja az eljárások alkalmazását az ON GOTO helyett, pedig ez utóbbi rövidebb. Talán a program futását is gyorsítja, ha 10 sor helyett egyetlen sor szerepel.

Egyszer úgy jártam, hogy egy basic játékot írogattam, amit teleraktam CALL-DEF utasításokkal. Gyakran lefagyott. A CALL-DEF helyett GOSUB-RETURN-t dobtam be, és ezzel már rendesen mûködött.
Egyébként a CALL (eljárás) helyett úgy emlékszem, használható a PRINT (eljárás) is. Vannak azok a DEF REF valamik, amik függvényt definiálnak (talán nem is kell feltétlenül a REF, már nem emléxem), és az is a PRINT-tel hívható meg, pontosabban íratható ki az értéke. De a nem függvénydefiniáló DEF is meghívható PRINT-tel, így parancs üzemmódból egy PRINT-tel program üzemmódba léphetünk.
Ha pedig egy DEF blokkon belül egy CALL-lal meghívjuk önmagát, mintha lefagyna a gép.
Valahol mintha olvastam volna, hogy ha STOP-pal megszakítjuk a program futását, egyetlen RESET, majd CONTINUE, az is fagyás. De ha progi futása közben STOP nélkül RESET, utána CONTINUE, akkor is fagyi. Meg ha a RESET helyett INFO, talán az is balhé.
Listázta már ki valaki a Submarine Commandert? Vad dolgokat mûvel...

[epline tc=146 bc=0 ttc=0 tbc=1 xs=1 ys=2]PRINT CHR$(127)[/epline]
Ez olyan karaktert ír ki, amit semmilyen billentyûkombinációval nem lehet elõhívni, sem SHIFT-tel, sem ALT-tal. :o
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline endi

  • EP addict
  • *
  • Posts: 7298
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
    • Honlapom
Re: Általános BASIC Kérdések
« Reply #21 on: 2006.August.15. 22:24:35 »
az én fagyasztási kedvencem:

graphics (funkcióbillentyûrõl gyorsabb)
look

:)

vagy look #102:
(vagy mennyi is volt a szöveges képernyõ csatornaszáma?)

Ja meg errõl jut eszembe, milyen jók voltat az ún. escape szekvenciák. Pl. írt az ember egy zenét basicban, átirányította a hangot hogy kimentse file-ba és akkor utána a kimentett file-t betöltéskor vissza kellett irányítani a hangcsatornára és lejátszotta a zenét. Ugyanez érvényes volt grafikai parancsokra is.
Vigyázat! Szektás vagyok! :)

Offline Lacika

  • EP addict
  • *
  • Posts: 3198
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #22 on: 2006.August.15. 22:24:51 »
Én sohasem használtam az ON GOTO, GOSUB parancsokat. az IS-BASIC legnagyobb erénye pontosan az eljárások, és függvények. Nekem sohasem akadt ki program az eljárások, függvények hívásától, arra persze vigyázni kell, ne ugorjunk ki eljáérásból (ha az ember nem használ GOTO, GOSUB parancsokat, ez eleve nem fordulhat elõ). Ha egy eljárás ömmagát hívja, azt rekurziónak hívják. Álltalában fraktálok programozására használt megoldás ez, mely látványos eredményeket produkálhat. Az angol gépekhez adott demokazettán láthatunk erre példát. Arra persze vigyázni kell, hogy a többszörös eljáráshivásból legyen visszatérés, mert különben bekövetkezik az, hogy "végtelen ciklusba kerül a gép", azaz látszólag lefagy. A verem mérete is véges
A rekurzióról a Mikro Magazin egyik számában olvashatunk többet ("Hívja önmagát!" címmel)

Offline Lacika

  • EP addict
  • *
  • Posts: 3198
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #23 on: 2006.August.15. 22:39:57 »
Quote from: "szipucsu"
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.


IF természetesen létezik más BASIC nyelvekben is. Eljárások viszont nincsenek más "nyelvjárásokban", Spectrum-on van kezdetleges függvényhívás (DEF FN) A hibakezelés megint csak az IS-BASIC kiváltsága! Akárcsak a LOGO-ból kölcsönzött teknõc grafika!
END IF sincs más gépeken, ezért ott a THEN mögé kell mindent "bepasszírozni" (ezért olyan gyakori más gépeken a IF ... THEN GOTO xx szerkezet.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #24 on: 2006.August.15. 23:15:04 »
Quote from: "Lacika"
A hibakezelés megint csak az IS-BASIC kiváltsága!


Ha minden igaz, hibakezelés van ABC80-as basicben is, pl. on error goto x (l. Ismerd meg a basic nyelvjárásait - HT1080Z, ABC80, ZX81, 63.oldal). Legalábbis, ha jól értem, mintha hasonló lenne a WHEN-HANDLER eljáráshoz.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline gafz

  • EP lover
  • *
  • Posts: 700
  • Country: hu
    • http://gafz.atw.hu
Re: Általános BASIC Kérdések
« Reply #25 on: 2006.August.16. 03:00:29 »
Hm... on error goto azt hiszem van HT-n is de talán még C64-en is. Én ezeken kezdtem programozgatni, és elég megrázó volt on error... egyszerûsége helyett a handler... szerkezet.
Enterprise Forever

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #26 on: 2006.August.16. 12:07:03 »
Vajon egy indián hogyan zárná le a feltételes ciklust?
[epline tc=146 bc=0 ttc=0 tbc=1 xs=1 ys=2]END UFF[/epline]
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #27 on: 2006.September.14. 18:41:31 »
Találtam két basic játékot, ami talán még nincs fenn a neten.
A Joe's snakes nekem nem is mûködik, de lehet, hogy valamilyen konfigurációval jól mûködik, majd meg kéne nézni az emuval (is). Van valahol egy másik Joe's snakes-em is. Hogy az mûködik-e, azt nem tudom.
Kéne esetleg egy olyan topik, ahova az ilyen új progikat feltöltjük (pl. régészeti leletek címmel)?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9926
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #28 on: 2006.September.26. 12:25:48 »
Ravasz kérdésem, hogy pl. az ep128.hu oldalról letölthetõ maga az IS-BASIC. 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?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14733
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #29 on: 2006.September.26. 16:10:16 »
Quote from: "szipucsu"
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?

Ami onnan letölthatõ, abban benne van 2.1-es ROM fájl illetve, egy átbütykölt változat, aminek az a lényege, hogy valaki nagyon megörült annak, hogy Asmonban átírhatja a szerzõk nevét a sajátjára :-) és ezt elnevezte 2.2-nek...
Ez a változat tényleg betölthetõ, de ilyet lehetne az eredetibõl is (vagy bármely más max 16K-s ROM fájlból) csinálni. Vagy ha van EPDOS-od, akkor bármilyen ROM fájlt be tudsz tölteni.

Quote from: "szipucsu"
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.

Ajaj, a zavaros kérdés feltevésbõl úgy érzem nem igazán vagy tisztában az EP memóriakezelésével :-(
Az elsõ szabad RAM szegmensre fog kerülni a program, egy alap 128K-s gép esetén ez az F9.
Basic programok nagy része számára ez tök mindegy. Olyan programok esetén lehet gond, amik német gépen se mentek, csak angolon. Ezekben vannak olyan közvetlen memóriahivatkozások, amik itt is gondot okozhatnak.
Ill ott vannak még a gépikódú programok, ezek kb 99%-a helybõl agyonvágja az F9 szegmenst, mivel nem tartják be az EXOS játékszabályait... így ha olyan mûvelet történne, aminél az EXOS végig kérdezi a rendszerbõvítõket, akkor fagyi...

Quote from: "szipucsu"
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?

Ezt megint elég zavaros kérdés lett :-)
Ha elhagyjuk az Allocate-t akkor az elsõ Code-val felülírjuk a program elejét, és elveszik az egész...
Próbáld ki!
10 CODE A=HEX$("00")
Ezután RUN, majd LIST...