Welcome, Guest. Please login or register.


Author Topic: BASIC (Read 177899 times)

Online Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #180 on: 2011.December.28. 16:04:53 »
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.

Amit a fõprogramban deklarálsz, az globális változó.

Offline szipucsu

  • EP addict
  • *
  • Posts: 8068
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #181 on: 2011.December.28. 16:33:10 »
Köszi!
Mi egyébként a gyakorlati értelme, hogy END DEF után elfelejti a változót a gép?
Szerintem célszerûbb a GOSUB-RETURN használata, mert akkor nem kell arra is figyelni, hogy egy változót nem a blokkon belül deklarálok-e véletlenül.
« Last Edit: 2011.December.28. 16:38:58 by szipucsu »
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Online Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #182 on: 2011.December.28. 16:52:59 »
Mi egyébként a gyakorlati értelme, hogy END DEF után elfelejti a változót a gép?

Az, hogy az IS-BASIC egy tökéletesen strukturált programozási nyelv. Egy nagyob program, márt több programrészbõl áll, melyeket nem is feltétlenül egy ember készít. Sokkal egyszerûbb (és kevesebb hibalehetõség), ha minden programmodul csak a saját változóit használhatja és csak a "kész" adatokat adja vissza az õt meghívó másik programrésznek.
Aki idegenkedik az eljárásoktól, az használhatja a GUSUB / RETURN-t, (vagy minden változót deklarálon a fõprogramban, pl. a program elején) és speciel hajmerevedést kapok, amikor ilyet látok... :oops:

Offline endi

  • EP addict
  • *
  • Posts: 7305
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Opera 9.80 Opera 9.80
    • View Profile
    • Honlapom
Re: BASIC
« Reply #183 on: 2011.December.28. 17:13:02 »
az is-basic nagy segítség volt nekem amikor pascal-ra áttértem
kb 2 nap után már folyékonyan írtam a strukturált pascal programokat :)

amúgy az objektum orientált programozás se egy nagy ördöngõsség, sõt, én túl nagy találmánynak se tartom, ezek mind a logikus, strukturált, értelmes programozásbõl következnek szinte maguktól
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8068
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #184 on: 2011.December.28. 17:17:03 »
Egy ravasz kérdés:
Lehetséges, hogy a SPEEK(255,16372)+SPEEK(255,16373)*256-1152 értéke ne 46208 legyen?
Azért kérdezem, mert a demokazettán a karakterdefiniáló programban többször is ez szerepel ahelyett, hogy egyszerûen csak 46208 lenne ott. Arra a memóriaterületre vonatkozik, ahol a karakterek alakját tárolja a gép, ez pedig akkor is 46208, ha bonyolultan számoljuk ki. Vagy lehet valami "turpisság" a dologban?
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.
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline IstvanV

  • EP addict
  • *
  • Posts: 4806
  • OS:
  • Linux 64 bit Linux 64 bit
  • Browser:
  • Firefox 5.0 Firefox 5.0
    • View Profile
Re: BASIC
« Reply #185 on: 2011.December.28. 17:35:37 »
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.

Ez a karakterkészlet kezdőcíme (B480h), ami EXOS 2.0 esetén más. Próbáld ki EP64 konfigurációval, azzal nem 46208 lesz.

Offline szipucsu

  • EP addict
  • *
  • Posts: 8068
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #186 on: 2011.December.28. 21:49:53 »
Van olyan OUT utasítás, amivel ki lehet kapcsolni a SHIFT, CAPS, ALT üzemmódot anélkül, hogy a lock gombot megnyomnánk. És OUT utasításokkal be is lehet kapcsolni ezeket. Nem tudjátok, hogyan lehet OUT-tal kikapcsolni, milyen értékeket kell hozzá megadni?

UI: Lehet, hogy nem OUT, hanem SET.
« Last Edit: 2011.December.28. 22:00:09 by szipucsu »
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Online Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #187 on: 2011.December.28. 22:39:54 »
UI: Lehet, hogy nem OUT, hanem SET.

POKE lesz az az utasítás... :ds_icon_cheesygrin: Zozo talán tudja fejbõl... Az EP Plus-ban errre már van külön utasítás (LOCK OFF / CAPS / ALT / SHIFT)

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #188 on: 2011.December.28. 22:49:26 »
POKE lesz az az utasítás...
Nem POKE, hanem SET! 6-os EXOS változó.

Online Lacika

  • EP addict
  • *
  • Posts: 2929
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #189 on: 2011.December.28. 22:58:16 »
Kösz! Ezt nem is tudtam...
A Referencia kézikönyvben erre a változóra sok szót nem "pazaroltak"... Mindjárt ki is egészítem!
Ugyanitt a 13-as változóra írjak valamit?
« Last Edit: 2011.December.28. 23:08:02 by Lacika »

Offline szipucsu

  • EP addict
  • *
  • Posts: 8068
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #190 on: 2011.December.28. 23:15:46 »
Nem POKE, hanem SET! 6-os EXOS változó.
Köszi!
Azon gondolkoztam, össze kéne írni valahol az ilyen "érdekes" basic utasításokat. Pl. még amivel a status sorba lehet irkálni, a status sort alulra tenni (valami SPOKE), meg az OUT 191,12 és társaik... Lehet, a wikin elkezdem ezeket összeszedni.
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.
SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13519
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #191 on: 2011.December.28. 23:41:20 »
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:

Offline szipucsu

  • EP addict
  • *
  • Posts: 8068
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 8.0 Firefox 8.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #192 on: 2011.December.28. 23:52:25 »
Karácsonyra nem sikerült kész lennem vele, csak most. Biztos nem fogja használni már 2012-ben senki, talán én sem, de érdekes volt megírni. Biztos lehetne még tökéletesíteni rajta, pl. a színeken változtatni, stb.

Character Definer 2012
A program a demokazettán található Character Definer továbbfejlesztett változata. Míg az eredeti programban csak adott karaktereket szerkeszthetünk át, itt bármelyik karaktert átszerkeszthetjük, az átszerkesztett karakterkészletet elmenthetjük, karakterkészleteket betölthetünk, vagy az átdefiniált karaktereket tartalmazó definíciókat önálló basic programként elmenthetjük. Mivel a mûveletek az összes karaktert érinthetik, a program nem tartalmaz saját karakterdefiníciókat, így a karakterek szerkesztésére alkalmas rács is másképp jelenik meg.
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. A programban egy "szintetizátor" is el van rejtve.
A N=NEXT és R=RECALL mûveletnél nem input utasítással kéri be a karakter kódját, hanem a képernyõ tetején külön ablakban megjelenik az összes karakter, amibõl kiválaszthatjuk a nekünk megfelelõt. (A "hagyományõrzés" miatt a karakterszerkesztõ mezõ mellett is megtalálható néhány karakter, a képernyõ közepe táján, ahogy az eredeti programban.) A kurzort a botkormánnyal irányíthatjuk, space-szel választhatjuk ki a karaktert. A képernyõ közepe táján az ASCII: felirat alatt kijelzi az aktuális karakter kódját, amin a kurzor éppen áll.
A program rögtön azzal kezdõdik, hogy ki kell választanunk azt a karaktert, amit át kívánunk szerkeszteni. Miután a karaktert kiválasztottuk, bal oldalon lent a CURRENT ASCII felirat alatt megjelenik a karakter kódja és maga a karakter. Az N (Next) gombbal kiválaszthatjuk a következõ átszerkesztendõ karaktert. Az átszerkesztett karakterek természetesen a fenti ablakban is megváltoztatják alakjukat.
Az R (Recall) egy meglévõ karakter alakját hívja le, akárcsak az eredeti programban. Viszont itt nem a karakter kódját kell megadni, hanem a fenti ablakból választhatjuk ki a karaktert. Jobb oldalon lent a LAST RECALLED felirat alatt kijelzi a legutoljára lehívott karakter kódját és magát a karaktert.
A demokazettáról megszokott mûveletek mellett egy új mûvelet is megtalálható, amikrõl a jobb oldali felirat is tájékoztat: F=FILE MENU - belépés a file menübe. Itt karakterkészletet menthetünk, tölthetünk, vagy basic programként elmenthetjük az átrajzolt karakterek definícióit. A basic program mentése tokenizálatlan formában történik, ezt az IS-BASIC-be minden probléma nélkül betölthetjük, vagy saját programunkkal összemerge-elhetjük, vagy (akár PC-s) szövegszerkesztõben is megnézhetjük. Azok a karakterdefiníciók kerülnek mentésre, amiket a D (Define) gombbal átdefiniáltunk.
A képernyõ tetején az összes karaktert tartalmazó ablak alatti világoskék mezõben a felirat tájékoztat az aktuális mûveletrõl: átdefiniálandó karakter kiválasztása, lehívandó karakter kiválasztása, kiválasztott karakter szerkesztése, file menüben választás.

A programot ki lehet listázni és el lehet szörnyedni azon, hogyan oldottam meg.
A program nem csinál nagy ügyet a file kezelésbõl, hiba esetén leáll, és nem ellenõrzi, hogy a mentendõ fájl létezik-e már, felülírja. Továbbá, kicsit lassú az egész, ami különösen a karakterkészlet betöltésekor figyelhetõ meg. Zzzip biztos jót tenne a programnak, de akkor meg kezelhetetlenül gyors lenne.
Érdekes lenne megvalósítani, hogy basic programokban megkeresse a karakterdefiníciókat, és azok szerint definiálná át a karaktereket.
Egyes játékok a karakterkészletet külön fájlban tárolják, érdemes lenne ezek betöltésével is próbálkozni. A lényeg, hogy 1152 bájt hosszúnak kell lennie a fájlnak. A Sorcery régebbi (gyári) változatát megnéztem, ott sajnos egyik fájl sem 1152 bájt.


Néhány fura megoldást alkalmaztak az eredeti programban:
- Az alapértelmezett, 0-ás csatornát használja kiírásra, ami kicsit lassabb, mint a 102-es csatorna lett volna.
- A H=HORIZONTAL, V=VERTICAL nem mûködik helyesen. Feltételezhetõleg az lett volna a funkciójuk, hogy megfordítsák a karaktert függõleges ill. vízszintes tengelye körül. Inkább tükrözés ez, mint forgatás. (De lehet, hogy direkt van ez így?) Nem javítottam, akinek van kedve, kijavíthatja. Az I=INVERT helyesen mûködik.
- Kurzor mozgatásának figyelése (ne lépjen ki a szerkesztõterületrõl) hosszadalmasan van megoldva.

* Chr_Def_2012.zip (13.38 kB - downloaded 87 times.)

SOUND SOURCE 3,STYLE 16,LEFT 16,RIGHT 64,SYNC 2
SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 2
SOUND PITCH 25,SYNC 2
Videos

Offline lgb

  • EP addict
  • *
  • Posts: 3496
  • Country: hu
  • æðsta yfirmaður
  • OS:
  • Linux Linux
  • Browser:
  • Safari Safari
    • View Profile
    • http://lgb.hu/
Re: BASIC
« Reply #193 on: 2011.December.29. 00:28:00 »
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.

Ez nem annyira vicces, a kislanyom a ceges notebook-ot epp a multkor locsolta meg udito szinfolttal, egeszen pontosan 2 decivel. Mikozben az mukodott. Igaz nem sokaig ...

Offline Povi

  • EP addict
  • *
  • Posts: 1873
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Safari Safari
    • View Profile
    • http://povi.fw.hu
Re: BASIC
« Reply #194 on: 2011.December.29. 11:05:17 »
Továbbá, kicsit lassú az egész, ami különösen a karakterkészlet betöltésekor figyelhetõ meg.
Gyorsítás:
a program elejére üsd be ezt a 3 sort:
Code: [Select]
    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:
Code: [Select]
2670   CALL USR(TOLT,FONT)
a 2680-2700-as sorokat töröld ki :-)

a töltés mostantól villámgyors lesz!

magyarázat a kódhoz:
Code: [Select]
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
« Last Edit: 2011.December.29. 11:18:57 by Povi »
*** Speicherplatz zu klein