Welcome, Guest. Please login or register.


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

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 #1275 on: 2019.February.01. 14:00:30 »
érdekes amúgy hogy a gracha-ból exportált programot ha először kilistázzuk, furcsán néz ki.
ha elindítjuk, leállítjuk és újra listázzuk, már jó.
persze nagyjából értem mi ez.
Vigyázat! Szektás vagyok! :)

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14776
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #1276 on: 2019.February.01. 14:08:23 »
érdekes amúgy hogy a gracha-ból exportált programot ha először kilistázzuk, furcsán néz ki.
:shock:

Offline Povi

  • EP addict
  • *
  • Posts: 2307
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #1277 on: 2019.February.01. 15:39:04 »
ez érdekes. ezek szerint az x használata nem igazán jó, ahol abc sorrendben van indexelve :)
ki lehetne mérni ezeket, bár lehet, hogy felesleges, úgyis minden basic programot zzzippelni kell :)
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)

szerk: tényleg így van:
http://www.bbcbasic.co.uk/bbcbasic/mancpm/annexd.html#variablestorage
« Last Edit: 2019.February.01. 15:43:37 by Povi »
*** Speicherplatz zu klein

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 #1278 on: 2019.February.01. 18:08:47 »
első idő: "a" a változó neve
második idő: "z" a változó neve
harmadik idő: hosszú változó név
mint láthatjuk, nem számít semmit.
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10094
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1279 on: 2019.February.01. 18:38:57 »
persze nagyjából értem mi ez.
Jó neked.
Talán a tokenizálással függ össze, hogy először még a tokenizálatlan programot töltötte be (txt fájlból). De attól már elsőre tokenizáltnak kellett volna lennie.

Velem olyan volt nemrég, hogy egy programot nem akart a Zzzip lefordítani. Kilistáztam fájlba, majd abból a fájlból betöltöttem a load-dal és elmentettem. Így már vitte a Zzzip. Az eredeti program néhány bájttal több volt. Ez meg miért lehet?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Tomato77

  • EP user
  • *
  • Posts: 398
  • Country: hu
    • Támogató Támogató
Re: Általános BASIC Kérdések
« Reply #1280 on: 2019.February.02. 08:26:22 »
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.
Kotasoft

Offline Tomato77

  • EP user
  • *
  • Posts: 398
  • Country: hu
    • Támogató Támogató
Re: Általános BASIC Kérdések
« Reply #1281 on: 2019.February.02. 09:25:09 »
Kipróbáltam: az első mérésnél "A" volt a változó neve, a másodiknál "AZ". Nincs mérhető különbség... A NEXT-ből elhagytam a változónevet, mert ahogy korábban olvastam, ott bármit elfogad az interpreter, és csak 20000 ciklust vártam ki normál emu sebességgel.
Kotasoft

Offline gflorez

  • EP addict
  • *
  • Posts: 3615
  • Country: es
    • Támogató Támogató
Re: Általános BASIC Kérdések
« Reply #1282 on: 2019.February.02. 21:56:12 »
Most, hogy a végrehajtási idők méréséről beszélünk.

Körülbelül 1/50 másodperc múlva mérhetjük az időt, a 39-es változót használva, RANDOM_IRQ.

Kíváncsi voltam, hogyan gyorsabb lenne elválasztani a 16 bites szám 2 bájtját?

----------------------

Talking about measuring execution times.

We can approximately measure time with 1/50th of seconds, using the variable 39, RANDOM_IRQ.

I wonder, how would it be faster to separate the 2 byte of a 16-bit number?

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

Azt hiszem, törölhetjük a 230-as vonalat. És mindezeket a nyomtatási parancsokat vezérlőkódként helyezzük el egy karakterláncba

----------------------

I think that we can eraae line 230. And put all these Print commands as control codes inside a string.
« Last Edit: 2019.February.03. 13:17:57 by gflorez »

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10094
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1283 on: 2019.February.03. 16:39:06 »
Code: [Select]
 100 PROGRAM EXTRACT L AND H FROM HL
What is the sense of using a text after "program" command, without quotes? I have seen this somewhere else too.
If you use e.g. 100 PROGRAM "EXTRACT", SAVE command will save with this file name. But without quotes it has no function I think.

---
Mi értelme a "program" parancs után idézőjel nélkül írni szöveget? Már máshol is láttam ilyet.
Idézőjellel, pl. 100 PROGRAM "EXTRACT" a SAVE parancs ezzel a file névvel fogja kimenteni. De idézőjelek nélkül nincs semmi funkciója, úgy tudom.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline gflorez

  • EP addict
  • *
  • Posts: 3615
  • Country: es
    • Támogató Támogató
Re: Általános BASIC Kérdések
« Reply #1284 on: 2019.February.03. 17:23:06 »
Természetesen igazad van.

Új verzió néhány optimalizálással:

-------------------

Of course you are right....

New version with some optimizations:

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

« Last Edit: 2019.February.03. 17:47:14 by gflorez »

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1342
  • Country: hu
  • Stray cat from Commodore alley
Re: Általános BASIC Kérdések
« Reply #1285 on: 2019.February.03. 19:00:25 »
Quote
Code: [Select]
160 ... "Please enter an 8 bit number(0-65535):"
Wouldn't that actually be either a 16 bit number or (0-255)?

Could you try it with
Code: [Select]
330 ... L=W BAND 255 ...instead of
Code: [Select]
330 ... L=REM(W,256) ...as a third or at least two-and-a-halfth method?

Offline gflorez

  • EP addict
  • *
  • Posts: 3615
  • Country: es
    • Támogató Támogató
Re: Általános BASIC Kérdések
« Reply #1286 on: 2019.February.03. 21:09:19 »
Sajnálom, egy nagyon nyilvánvaló hiba, hogy egy 8 bites számot kérjen nagyobb tartományban.

Hozzáadtam a javasolt módszert. Gyorsabban működik ... de csak 9999-ig .... Miért?

-----------------------------

Sorry, a very evident error to ask for an 8 bit number with a bigger range....

I have added your suggested method. It works... faster.... but only up to 9999.... Why?


Code: [Select]
 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
« Last Edit: 2019.February.03. 21:13:40 by gflorez »

Offline ergoGnomik

  • EP addict
  • *
  • Posts: 1342
  • Country: hu
  • Stray cat from Commodore alley
Re: Általános BASIC Kérdések
« Reply #1287 on: 2019.February.04. 07:50:36 »
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 - 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.

Offline szipucsu

  • Global Moderator
  • EP addict
  • *
  • Posts: 10094
  • Country: hu
    • Támogató Támogató
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: Általános BASIC Kérdések
« Reply #1288 on: 2019.February.04. 23:13:06 »
És azzal lehet spórolni valamit, ha string változó maximális hosszát előre meghatározzuk?
Például:

100 GET A$
110 IF A$....

És ez elé még odaírjuk, hogy

90 STRING *1 A$

Így talán a Zzzip is később fut ki a szabad helyből és nem tart fent annyi helyet egy új változónak?
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 #1289 on: 2019.February.04. 23:29:07 »
ezzel nagyon sokat lehet spórolni! ha nincs megadva a hossz, asszem minden string 256 bájtot foglal
Vigyázat! Szektás vagyok! :)