Welcome, Guest. Please login or register.


Author Topic: BASIC (Read 179179 times)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8094
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #225 on: 2012.March.10. 16:29:43 »
Ezek után ha megszakad a program és kíváncsi vagy az értékre, akkor:
START 2000
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ó.
Helyette DEF blokkba lehetne tenni a változókiíró részt és azt CALL-lal meghívni, az nem törli a változókat, pl.

1990 DEF VALTOZOKIIRAS
2000   PRINT A, B, N, X, Y, CURX, CURY, A$, NEV$, KIIR$
2010 END DEF

CALL VALTOZOKIIRAS
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 Lacika

  • EP addict
  • *
  • Posts: 2930
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #226 on: 2012.March.10. 16:37:45 »
Ez tényleg ilyen egyszerû, vagy ennél azért bonyolultabb a gyakorlatban?

Ennél egy csipetnyivel bonyolultabb:

Code: [Select]
  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, hogy gépi kódú rutinnal kellene megoldani. (Ez így ugyanis lassabb, mint az eredeti.)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8094
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #227 on: 2012.March.10. 19:31:44 »
Jaaa, akkor azért kellett az a getsegment, freesegment, amit Zozo is írt, na azt nem értettem. Mondjuk így se sokkal bonyolultabb. A legvégén azt a CALL USR(FREESEGMENT,WS)-t mikor kell kiadni? Amikor a program futása befejezõdik? Mert azt itt nem szokott, resetelni szoktam.
De lehet, ezt nem is lenne fontos megcsinálni, nem lenne tõle gyorsabb? (Max. az elején a STRING utasítás tart sokáig, azt ki lehetne kerülni.)

Érdemes lenne ezt is, meg a töltés-mentést is megcsinálni HEX$ módon?
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: 13531
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #228 on: 2012.March.10. 21:53:31 »
De pont a LOAD / SAVE-re mondta Zozotools
Õ kicsoda?  :oops:

Offline szipucsu

  • EP addict
  • *
  • Posts: 8094
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #229 on: 2012.March.10. 22:05:27 »
De pont a LOAD / SAVE-re mondta Zozotools
Még beszélni is tud a Zozotools? A beszédre milyen utasítással lehet rábírni?
Laci elírta, biztos gyerekvisítás mellett nehéz a basic programozással is foglalkozni. :D
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: 13531
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #230 on: 2012.March.11. 08:52:07 »
A legvégén azt a CALL USR(FREESEGMENT,WS)-t mikor kell kiadni? Amikor a program futása befejezõdik?
Igen.
Quote
Mert azt itt nem szokott, resetelni szoktam.
Kilépés menüpont, mondjuk STOP-ra?  :oops: (Lehet When Exception)
Quote
É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.

Offline Lacika

  • EP addict
  • *
  • Posts: 2930
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #231 on: 2012.March.11. 12:19:48 »
Esetleg lehetne még az EPDOS SS,SL parancsokat is használni.

Ennyire felesleges cifrázni, ZZZIP-pel fordítva elfogadható a sebesség.

Offline Lacika

  • EP addict
  • *
  • Posts: 2930
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #232 on: 2012.March.11. 12:20:14 »

Offline Lacika

  • EP addict
  • *
  • Posts: 2930
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://www.ep128.hu
Re: BASIC
« Reply #233 on: 2012.March.11. 12:21:33 »
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?

Offline szipucsu

  • EP addict
  • *
  • Posts: 8094
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #234 on: 2012.March.11. 12:47:30 »
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.

Az EPDOS SS, SL parancsok mit csinálnak?
Nálam alapból nincs EPDOS az emuban.  :oops: Ezért nem is szeretem pl. az olyan programokat, amik az EPDOS karakterkészletét használják, mert pl. ha annyira kell, be is tölthetné külön fájlból ezt a karakterkészletet.

De azt a HEX-es mentést-töltést bele lehetne tenni. Megírnátok, az hogyan van? Én a gépi kódhoz semmit nem értek. Tehát amit írt lentebb Laci, hogy a FREESEGMENT-re betölti a cuccot, na az a betöltés, hogy HEX módon legyen megoldva, ne pedig GET utasítással kapja ki a fájlból a bájtokat. (Ez ugye gyorsítana a dolgon?) De lehet, elõbb ki kéne próbálni, mûködik-e rendesen Zzzippel ez az ALLOCATE-es megoldás, mert néha balhét okozott. Igaz, azzal már úgyis olyan gyors, hogy nem kell talán zzzippelni sem.
A töltés valahogy így nézne ki (Povi régebbi hozzászólása alapján), de néhány számot nem tudok benne, így a 7719-et nem tudom, hogyan, hova kell beírni, meg hogy a beolvasott cuccokat hova tegye:

CODE TOLT=HEX$("3E,01,????")
CODE =HEX$("????,06,C9")

CODE MENT=HEX$("3E,01,????")
CODE =HEX$("????,08,C9")

Persze elõbb több bájtot kell allocate-ezni.
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 szipucsu

  • EP addict
  • *
  • Posts: 8094
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #235 on: 2012.March.11. 12:51:21 »
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.
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 Tuby128

  • EP lover
  • *
  • Posts: 955
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 3.6.27 Firefox 3.6.27
    • View Profile
Re: BASIC
« Reply #236 on: 2012.March.11. 19:31:16 »
Mit csinál az OUT 191,12 parancs?

Nem is ez a kérdés, mert idõközben kinéztem az EXOS referencia könyvbõl. A kérdésem: Mennyi az alapértéke a 191-es IO portnak?

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13531
  • Country: hu
  • OS:
  • Windows 7 Windows 7
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #237 on: 2012.March.11. 20:09:39 »
Mennyi az alapértéke a 191-es IO portnak?
4

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13531
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #238 on: 2012.March.12. 09:18:16 »
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?

Offline szipucsu

  • EP addict
  • *
  • Posts: 8094
  • Country: hu
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 10.0.2 Firefox 10.0.2
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #239 on: 2012.March.12. 14:12:40 »
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.
Meg a program többi részében is majd át kell írni SPOKE, SPEEK-re néhány utasítást, amiket eddig másképp oldottam meg, azt majd megcsinálom.
Így jó lesz, vagy a végleges verziót csináljam meg elõször inkább?
(A gyakorlatban még nem próbáltam ki a GETSEGMENT-féle megoldást, de hiszek nektek, biztos mûködik. :D )

Code: [Select]
  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$
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