Welcome, Guest. Please login or register.


Author Topic: BASIC (Read 175437 times)

Offline ergoGnomik

  • EP lover
  • *
  • Posts: 815
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Vivaldi 2.2.1388.37 Vivaldi 2.2.1388.37
    • View Profile
Re: BASIC
« Reply #1335 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?

Online gflorez

  • EP addict
  • *
  • Posts: 2642
  • Country: es
  • OS:
  • Windows XP Windows XP
  • Browser:
  • Firefox 52.0 Firefox 52.0
    • View Profile
Re: BASIC
« Reply #1336 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 lover
  • *
  • Posts: 815
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 10.0 Windows NT 10.0
  • Browser:
  • Firefox 64.0 Firefox 64.0
    • View Profile
Re: BASIC
« Reply #1337 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

  • EP addict
  • *
  • Posts: 8025
  • 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 #1338 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?
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 endi

  • EP addict
  • *
  • Posts: 7270
  • 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 #1339 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! :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8025
  • 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 #1340 on: 2019.February.05. 12:16:12 »
Az envelope-nak miért csak 25 fázisnak van hely alapból? Persze fel lehet szabadítani több helyet is neki, pl.

CLOSE #103
SET SOUND BUFFER 30 (vagy még nagyobb)
OPEN #103:"sound:"

Ha nagy sound buffert adunk meg, akkor az mi elől veszi el a helyet? Hogy a Zzzipnek bezavar, azt nem hiszem, hiszen a zzzippel lefordított program betöltése előtt is lehet sok envelope numbert létrehozni, még a zzzippelt program is tudja azokat használni.
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 endi

  • EP addict
  • *
  • Posts: 7270
  • 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 #1341 on: 2019.February.05. 13:39:45 »
hát a nagyobb sound buffet több memóriát foglal.
már nem emlékszem pontosan mennyit, de asszem nem sokat, csodálkoztam is hogy miért olyan kevés a default
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8025
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1342 on: 2019.February.24. 18:19:17 »
Endi, az jutott eszembe, hogy a Mega Pacman játékodat meg lehetne csinálni grafikus karakteres képernyőre, több szín lenne. Bár a soronként megnyitott videólapok a scrollt talán nem tennék lehetővé, vagy legalábbis nehezebb lenne megcsinálni. De attól tartok, nincs meg az eredeti basic program, csak a zzzippelt, legalábbis az ep128.hu-n.
Meg a 2016-os (félig befejezett) Snakeprise is megcsinálható lenne gracha módra. Ez akár sokszínű is lehet, mert a karakterek alakjának nincs túl nagy jelentősége.
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 endi

  • EP addict
  • *
  • Posts: 7270
  • 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 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
    • Honlapom
Re: BASIC
« Reply #1343 on: 2019.February.24. 18:41:36 »
Endi, az jutott eszembe, hogy a Mega Pacman játékodat meg lehetne csinálni grafikus karakteres képernyőre, több szín lenne. Bár a soronként megnyitott videólapok a scrollt talán nem tennék lehetővé, vagy legalábbis nehezebb lenne megcsinálni. De attól tartok, nincs meg az eredeti basic program, csak a zzzippelt, legalábbis az ep128.hu-n.
Meg a 2016-os (félig befejezett) Snakeprise is megcsinálható lenne gracha módra. Ez akár sokszínű is lehet, mert a karakterek alakjának nincs túl nagy jelentősége.

már el is felejtettem ezt a játékot :D
Vigyázat! Szektás vagyok! :)

Offline szipucsu

  • EP addict
  • *
  • Posts: 8025
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1344 on: 2019.March.15. 22:14:53 »
Eljárás nem hívhatja meg önmagát, mert a sokadig meghívás után hiba lesz? Például ez a 40. meghívás után lefagy:

10 DEF EKT
20  CALL EKT
30 END DEF
40 CALL EKT

De ha nem ilyen direktbe hívjuk meg, akkor működhet? Például ilyesmi:

10 DEF EKT
20   IF A>80 THEN CALL EKT
30 END DEF
35 FOR X=1 TO 2000
40   LET A=RND(120)
50   CALL EKT
60 NEXT

Valami hasonlót sikerült a kígyós játékomba betenni. Próbálgattam, de sokadik meghívás után sem fagy le.
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 endi

  • EP addict
  • *
  • Posts: 7270
  • 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 71.0.3578.98 Chrome 71.0.3578.98
    • View Profile
    • Honlapom
Re: BASIC
« Reply #1345 on: 2019.March.15. 23:07:08 »
a rekurzív függvényhívás hasznos dolog, de persze nyilván minden hívás plusz memóriát foglal, így aztán egyszercsak elfogy a memória...
Vigyázat! Szektás vagyok! :)

Offline ergoGnomik

  • EP lover
  • *
  • Posts: 815
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Vivaldi 2.3.1440.61 Vivaldi 2.3.1440.61
    • View Profile
Re: BASIC
« Reply #1346 on: 2019.March.16. 00:05:09 »
Nos, a két változat között az az eltérés, hogy mesterségesen 39-re (vagy 38-ra?) korlátozod a hívás "mélységét" a második esetben, így sosem éri el a 40-es határt. Egyébként a kettő között nincs érdemi különbség.

Offline szipucsu

  • EP addict
  • *
  • Posts: 8025
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1347 on: 2019.March.16. 10:10:45 »
Nos, a két változat között az az eltérés, hogy mesterségesen 39-re (vagy 38-ra?) korlátozod a hívás "mélységét" a második esetben, így sosem éri el a 40-es határt.
Ezt nem teljesen értem. Mivel korlátoztam én a hívás mélységét 39-re?

Arra jöttem rá, az első változat lényegében végtelen ciklusba állítja az eljárást, ez tesz be neki.
Ha nem kerül végtelen ciklusba, hanem különféle IF és CASE ágak esetén hívja meg önmagát újra, és közben változnak a feltételek is, ami miatt önmagát újra meghívhatja, akkor már nem érvényes ez a 39 körüli határ? Ha egyszer már lemegy végig END DEF-ig, akkor már jó lesz?

A kukacos játékban van egy tárgy, amihez ha hozzáér a kukac, átkerül a képernyő másik részére. Viszont a képernyő másik részén is egyből meg kell nézni, milyen tárgy van ott, ahova kerül a kukac. Tehát az eljárás, amiben megvizsgálja, mihez ér hozzá a kukac, az meghívja önmagát, ha ilyen teleporthoz ér hozzá, hogy utána azt is megvizsgálja, hogy ahova került a kukac, ott mi van. Remélem, érthető. :D Ha nem akkor majd teszek fel róla részt.
Én sokat próbálgattam, játék közben mindig teleportáltam, és nem fagyott le.
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 ergoGnomik

  • EP lover
  • *
  • Posts: 815
  • Country: hu
  • Stray cat from Commodore alley
  • OS:
  • Windows NT 6.3 Windows NT 6.3
  • Browser:
  • Firefox 64.0 Firefox 64.0
    • View Profile
Re: BASIC
« Reply #1348 on: 2019.March.16. 10:58:36 »
Jajj! Nagyon figyelmetlenül olvastam a kódod. Bocsi! Nem is értem hogyan, de beleláttam hogy A értékét hívásonként csökkentgeti, pedig konkrétan nem csinál semmit.

Amíg A értéke nem haladja meg a nyolcvanat, addig csak egyszer fog lefutni az EKT függvény. Ha A értéke legalább 81, akkor viszont az én értelmezésem szerint újra előáll a "végtelen ciklus".

Egyébként nem a "végtelenség" a baj, hanem annak az adminisztratív memóriának (ún. verem) az elfogyása, amivel nyomon követi az IS-BASIC az egymásba ágyazódó függvényhívásokat.

Offline szipucsu

  • EP addict
  • *
  • Posts: 8025
  • Country: hu
  • OS:
  • Windows 7/Server 2008 R2 Windows 7/Server 2008 R2
  • Browser:
  • Firefox 65.0 Firefox 65.0
    • View Profile
    • Webnyelv.hu - Tanuljunk nyelveket!
Re: BASIC
« Reply #1349 on: 2019.March.16. 11:15:03 »
Ha A értéke legalább 81, akkor viszont az én értelmezésem szerint újra előáll a "végtelen ciklus".
Igen, most már ki is próbáltam, tényleg végtelen "ciklus lett", pedig én sem erre számítottam először.
Ha nem lesz végtelen ciklus, akkor nem telhet be a verem az ilyen önmagát meghívó eljárástól, akkor sem, ha sokszor hívja meg önmagát?
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