Welcome, Guest. Please login or register.


Author Topic: BASIC (Read 161248 times)

Offline endi

  • EP addict
  • *
  • Posts: 6962
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 70.0.3538.102 Chrome 70.0.3538.102
    • View Profile
    • Honlapom
Re: BASIC
« Reply #1320 on: 2018.December.26. 14:36:28 »
egyébként, hogy én milyen hülye vagyok! hiszen marha egyszerű megoldani hogy basic-ből egyszerűen megadjunk videó memória címet, ami fix lesz az adott videó lapon! nem lekérdezni kell hogy az exos hova osztotta ki! hanem egyszerűen le kell foglalni egy videó szegmenst, és brute force módszerrel bele-poke-olni az lpt-be. így exos kompatibilis lesz (hiszen le van foglalva neki a szegmens) és fix memória című, hiszen azt poke-olunk az lpt-be amit akarunk.
így kikerülhető az, hogy az exos ki tudja hova és hány szegmensre foglal le egy exos videólapot.
na persze ez esetben csak poke-al tudunk majd írni a videólapra :)
A diplomás magyar programozó megcsinált egy pacmant egy év alatt, majd lefikázta a világ legjobb játékait. :D

Offline szipucsu

  • EP addict
  • *
  • Posts: 7587
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1321 on: 2019.February.01. 12:26:51 »
Van bármilyen előnye a program működése szempontjából, ha hosszú változónevek helyett rövideket adunk meg? Pl. LET BOMBA=3 helyett LET B=3. Akár a program sebessége szempontjából, vagy Zzzippel lefordítva gyorsabb lesz? Előnyös, ha minél kevesebb változónevet használunk? Pl. átmeneti változóknak ugyanazt a nevet adni, pl.
100 FOR WAIT=1 to 200
110 NEXT
(És mindig a WAIT változót használni átmeneti kis feladatokra, a WAIT tartalmát máshol nem használja fel a program.)
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
OPEL #1:"Audi(o):" ACCESS DENIED

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13260
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #1322 on: 2019.February.01. 13:05:49 »
Rövidebb név valóban gyorsabb, bár ki kéne mérni, hogy mennyire észrevehető.
Ami biztos: kisebb lesz a programméret, valamint futás közben is kevesebb memóriát igényel a program. Nagy méretű, a Basic memóriát kitöltő programnál ez már számíthat.
Minél kevesebb változót használni szintén spórolás a memóriával. És amikor egy még nem használt változót használunk, akkor azt létre kell hozni a rendszernek, így biztos gyorsabb újrafelhasznált változókkal dolgozni. Szintén kérdés, hogy ez vajon mennyire észlelhető.
Zzzipnél szerintem a neveket eldobja, lefordított címeket használ, valamint eleve definiálja az összes változót, így szerintem sebesség befolyásolás nincs. De a zzzipelt programnál eleve hamarabb elszokott fogyni a memória, így a minél kevesebb változó használata ajánlott.

Offline Povi

  • EP addict
  • *
  • Posts: 1816
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
    • http://povi.fw.hu
Re: BASIC
« Reply #1323 on: 2019.February.01. 13:29:53 »
Van bármilyen előnye a program működése szempontjából, ha hosszú változónevek helyett rövideket adunk meg? Pl. LET BOMBA=3 helyett LET B=3. Akár a program sebessége szempontjából, vagy Zzzippel lefordítva gyorsabb lesz? Előnyös, ha minél kevesebb változónevet használunk? Pl. átmeneti változóknak ugyanazt a nevet adni, pl.
100 FOR WAIT=1 to 200
110 NEXT
(És mindig a WAIT változót használni átmeneti kis feladatokra, a WAIT tartalmát máshol nem használja fel a program.)
Nem tudom, az IS-BASIC hogy működik, de pl. a C64-nél (és az összes korai Microsoft BASIC esetében) a változó neveit deklarálás sorrendjében rakta el a memóriába, és hivatkozáskor lineáris kereséssel kereste meg azokat. Ezért a gyakran használt változókat minél előbb kellett deklarálni, hogy hamarabb megtalálja.
A BBC BASIC-ben már ABC sorrednben rakta el a változóneveket, lehet, hogy az IS-BASIC is így működik, elég sok ötletet át vettek belőle
*** Speicherplatz zu klein

Offline endi

  • EP addict
  • *
  • Posts: 6962
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 70.0.3538.102 Chrome 70.0.3538.102
    • View Profile
    • Honlapom
Re: BASIC
« Reply #1324 on: 2019.February.01. 13:58:43 »
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 :)
A diplomás magyar programozó megcsinált egy pacmant egy év alatt, majd lefikázta a világ legjobb játékait. :D

Offline endi

  • EP addict
  • *
  • Posts: 6962
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 70.0.3538.102 Chrome 70.0.3538.102
    • View Profile
    • Honlapom
Re: BASIC
« Reply #1325 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.
A diplomás magyar programozó megcsinált egy pacmant egy év alatt, majd lefikázta a világ legjobb játékait. :D

Offline Zozosoft

  • EP addict
  • *
  • Posts: 13260
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
    • http://enterprise.iko.hu/
Re: BASIC
« Reply #1326 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: 1816
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
    • http://povi.fw.hu
Re: BASIC
« Reply #1327 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: 6962
  • Country: hu
  • grafikus, játékfejlesztõ, programozás, scifi, tudományok, vallás
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 70.0.3538.102 Chrome 70.0.3538.102
    • View Profile
    • Honlapom
Re: BASIC
« Reply #1328 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.
A diplomás magyar programozó megcsinált egy pacmant egy év alatt, majd lefikázta a világ legjobb játékait. :D

Offline szipucsu

  • EP addict
  • *
  • Posts: 7587
  • Country: hu
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Chrome 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1329 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?
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
OPEL #1:"Audi(o):" ACCESS DENIED

Offline Tomato77

  • EP fan
  • *
  • Posts: 204
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
Re: BASIC
« Reply #1330 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 fan
  • *
  • Posts: 204
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Chrome 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
Re: BASIC
« Reply #1331 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

Online gflorez

  • EP addict
  • *
  • Posts: 2509
  • Country: es
  • OS:
  • Linux Linux
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
Re: BASIC
« Reply #1332 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

  • EP addict
  • *
  • Posts: 7587
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 64.0 Firefox 64.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1333 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.
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
OPEL #1:"Audi(o):" ACCESS DENIED

Online gflorez

  • EP addict
  • *
  • Posts: 2509
  • Country: es
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: BASIC
« Reply #1334 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 »