Welcome, Guest. Please login or register.


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

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #210 on: 2012.March.09. 16:34:16 »
Erre jó ez az allocate-s dolog. További pár bájtos rutinokkal a mentés betöltés is gyorsan meg van.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #211 on: 2012.March.10. 08:17:03 »
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?
Ez tetszik!
És akár többször is egymás után meghívhatjuk pl.? WS1, WS2 változókra?

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #212 on: 2012.March.10. 08:51:46 »
Ha jól gondolom, ezután SPOKE/SPEEK WS,X,Y paranccsal szabadon garázdálkodhatunk a kiutalt szegmensen?
Igen.

Quote
És akár többször is egymás után meghívhatjuk pl.? WS1, WS2 változókra?
Igen.

Offline Tuby128

  • EP addict
  • *
  • Posts: 1448
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #213 on: 2012.March.10. 14:00:05 »
Private Enterprise folyóirat
Issue 1. (1985)

8. oldal (részlet)

IS-BASIC hibák:
1. RETRY nem megengedett parancs IF után (ezt nem is említi a kézikönyv)
2. A standard 40 karakteres képernyõ nem mûködik megfelelõen PRINT AT paranccsal. A PRINT AT 3,39 parancs kiadása esetén a szöveg 4,2-re kerül. Ez nem történik meg felhasználó által generált videolap esetén csak az editor videolapnál.
3. A COS függvény nem mûködik megfelelõen, mert a COS(PI/2) eredménye 1E-11 lesz. (Tuby128 megjegyzése: lehet hogy nem volt kiadva az OPTION ANGLE DEGREE parancs? - csak tippelek)
4. A TIMER hibás. Kb. 25%-os idõbeli eltérés tapasztalható.
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 kellene visszaadnia az aktuális cursor pozíciónál.
6. Allocate -n kitörli az aktuális programot.
7. Annak ellenére, hogy létre lehet hozni egy 255 soros képernyõt, mégis csak 223 sort lehet scrollozni.
8. VAL (STR$(A(N,M))(X:Y)) nem mûködik

Dave Race, Oxford.
http://enterpriseforever.com/dlattach.html;topic=203.0;attach=4656

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #214 on: 2012.March.10. 16:12:37 »
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 kellene
De erre ott van a GET.

Nekem magas kicsit ez a SPOKE-os, ALLOCATE-es megoldás, amit Zozo írt. Akkor a következõ programrészt pl. hogyan kellene átírni?
Code: [Select]
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

Én ilyesmire tippelek:
Code: [Select]
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

Ez tényleg ilyen egyszerû, vagy ennél azért bonyolultabb a gyakorlatban?
« Last Edit: 2012.March.10. 19:34:44 by szipucsu »
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: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #215 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
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #216 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

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #217 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?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #218 on: 2012.March.10. 21:53:31 »
De pont a LOAD / SAVE-re mondta Zozotools
Õ kicsoda?  :oops:

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #219 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
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Online Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #220 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: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #221 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: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #222 on: 2012.March.11. 12:20:14 »

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #223 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

  • Global Moderator
  • EP addict
  • *
  • Posts: 9898
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #224 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.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos