Welcome, Guest. Please login or register.


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

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 #180 on: 2011.December.28. 23:15:46 »
Nem POKE, hanem SET! 6-os EXOS változó.
Köszi!
Azon gondolkoztam, össze kéne írni valahol az ilyen "érdekes" basic utasításokat. Pl. még amivel a status sorba lehet irkálni, a status sort alulra tenni (valami SPOKE), meg az OUT 191,12 és társaik... Lehet, a wikin elkezdem ezeket összeszedni.
Ja, meg azt se találtam, hogy az egyes karakterkódok mit jelentenek, pl. az insert, delete billentyûknek mi a kódja, majd ezeket is össze lehetne gyûjteni.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #181 on: 2011.December.28. 23:41:20 »
Ja, meg azt se találtam, hogy az egyes karakterkódok mit jelentenek, pl. az insert, delete billentyûknek mi a kódja, majd ezeket is össze lehetne gyûjteni.
Az elõbbi linken lejebb mész egy lappal...  :lol:

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 #182 on: 2011.December.28. 23:52:25 »
Karácsonyra nem sikerült kész lennem vele, csak most. Biztos nem fogja használni már 2012-ben senki, talán én sem, de érdekes volt megírni. Biztos lehetne még tökéletesíteni rajta, pl. a színeken változtatni, stb.

Character Definer 2012
A program a demokazettán található Character Definer továbbfejlesztett változata. Míg az eredeti programban csak adott karaktereket szerkeszthetünk át, itt bármelyik karaktert átszerkeszthetjük, az átszerkesztett karakterkészletet elmenthetjük, karakterkészleteket betölthetünk, vagy az átdefiniált karaktereket tartalmazó definíciókat önálló basic programként elmenthetjük. Mivel a mûveletek az összes karaktert érinthetik, a program nem tartalmaz saját karakterdefiníciókat, így a karakterek szerkesztésére alkalmas rács is másképp jelenik meg.
A program hangeffekteket is használ, amivel üdítõbbé (esetleg idegesítõvé?) teszi a munkát, felhasználói programok között ez üdítõ színfolt. De ha üdítõt viszünk a gép mellé és azzal véletlenül leöntjük gépünket, akkor a gépen is lesz egy üdítõ színfolt. A programban egy "szintetizátor" is el van rejtve.
A N=NEXT és R=RECALL mûveletnél nem input utasítással kéri be a karakter kódját, hanem a képernyõ tetején külön ablakban megjelenik az összes karakter, amibõl kiválaszthatjuk a nekünk megfelelõt. (A "hagyományõrzés" miatt a karakterszerkesztõ mezõ mellett is megtalálható néhány karakter, a képernyõ közepe táján, ahogy az eredeti programban.) A kurzort a botkormánnyal irányíthatjuk, space-szel választhatjuk ki a karaktert. A képernyõ közepe táján az ASCII: felirat alatt kijelzi az aktuális karakter kódját, amin a kurzor éppen áll.
A program rögtön azzal kezdõdik, hogy ki kell választanunk azt a karaktert, amit át kívánunk szerkeszteni. Miután a karaktert kiválasztottuk, bal oldalon lent a CURRENT ASCII felirat alatt megjelenik a karakter kódja és maga a karakter. Az N (Next) gombbal kiválaszthatjuk a következõ átszerkesztendõ karaktert. Az átszerkesztett karakterek természetesen a fenti ablakban is megváltoztatják alakjukat.
Az R (Recall) egy meglévõ karakter alakját hívja le, akárcsak az eredeti programban. Viszont itt nem a karakter kódját kell megadni, hanem a fenti ablakból választhatjuk ki a karaktert. Jobb oldalon lent a LAST RECALLED felirat alatt kijelzi a legutoljára lehívott karakter kódját és magát a karaktert.
A demokazettáról megszokott mûveletek mellett egy új mûvelet is megtalálható, amikrõl a jobb oldali felirat is tájékoztat: F=FILE MENU - belépés a file menübe. Itt karakterkészletet menthetünk, tölthetünk, vagy basic programként elmenthetjük az átrajzolt karakterek definícióit. A basic program mentése tokenizálatlan formában történik, ezt az IS-BASIC-be minden probléma nélkül betölthetjük, vagy saját programunkkal összemerge-elhetjük, vagy (akár PC-s) szövegszerkesztõben is megnézhetjük. Azok a karakterdefiníciók kerülnek mentésre, amiket a D (Define) gombbal átdefiniáltunk.
A képernyõ tetején az összes karaktert tartalmazó ablak alatti világoskék mezõben a felirat tájékoztat az aktuális mûveletrõl: átdefiniálandó karakter kiválasztása, lehívandó karakter kiválasztása, kiválasztott karakter szerkesztése, file menüben választás.

A programot ki lehet listázni és el lehet szörnyedni azon, hogyan oldottam meg.
A program nem csinál nagy ügyet a file kezelésbõl, hiba esetén leáll, és nem ellenõrzi, hogy a mentendõ fájl létezik-e már, felülírja. Továbbá, kicsit lassú az egész, ami különösen a karakterkészlet betöltésekor figyelhetõ meg. Zzzip biztos jót tenne a programnak, de akkor meg kezelhetetlenül gyors lenne.
Érdekes lenne megvalósítani, hogy basic programokban megkeresse a karakterdefiníciókat, és azok szerint definiálná át a karaktereket.
Egyes játékok a karakterkészletet külön fájlban tárolják, érdemes lenne ezek betöltésével is próbálkozni. A lényeg, hogy 1152 bájt hosszúnak kell lennie a fájlnak. A Sorcery régebbi (gyári) változatát megnéztem, ott sajnos egyik fájl sem 1152 bájt.


Néhány fura megoldást alkalmaztak az eredeti programban:
- Az alapértelmezett, 0-ás csatornát használja kiírásra, ami kicsit lassabb, mint a 102-es csatorna lett volna.
- A H=HORIZONTAL, V=VERTICAL nem mûködik helyesen. Feltételezhetõleg az lett volna a funkciójuk, hogy megfordítsák a karaktert függõleges ill. vízszintes tengelye körül. Inkább tükrözés ez, mint forgatás. (De lehet, hogy direkt van ez így?) Nem javítottam, akinek van kedve, kijavíthatja. Az I=INVERT helyesen mûködik.
- Kurzor mozgatásának figyelése (ne lépjen ki a szerkesztõterületrõl) hosszadalmasan van megoldva.

[ Guests cannot view attachments ]

[ Guests cannot view attachments ]
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: Általános BASIC Kérdések
« Reply #183 on: 2011.December.29. 00:28:00 »
A program hangeffekteket is használ, amivel üdítõbbé (esetleg idegesítõvé?) teszi a munkát, felhasználói programok között ez üdítõ színfolt. De ha üdítõt viszünk a gép mellé és azzal véletlenül leöntjük gépünket, akkor a gépen is lesz egy üdítõ színfolt.

Ez nem annyira vicces, a kislanyom a ceges notebook-ot epp a multkor locsolta meg udito szinfolttal, egeszen pontosan 2 decivel. Mikozben az mukodott. Igaz nem sokaig ...

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #184 on: 2011.December.29. 11:05:17 »
Továbbá, kicsit lassú az egész, ami különösen a karakterkészlet betöltésekor figyelhetõ meg.
Gyorsítás:
a program elejére üsd be ezt a 3 sort:
Code: [Select]
    1 ALLOCATE 9
    2 CODE TOLT=HEX$("3E,01,01,80,04")
    3 CODE =HEX$("EB,F7,06,C9")
a 2670-es sort cseréld ki erre:
Code: [Select]
2670   CALL USR(TOLT,FONT)
a 2680-2700-as sorokat töröld ki :-)

a töltés mostantól villámgyors lesz!

magyarázat a kódhoz:
Code: [Select]
3E 01    = LD   A,1     ;az 1-es csatornáról fogunk olvasni
01 80 04 = LD   BC,1152 ;1152 byte-ot szeretnénk betölteni (BC=Byte Count)
EB       = EX   DE,HL   ;a HL és a DE regiszterek értékeinek cseréje
                        ;a DE (DEstination) címre szeretnénk tölteni az 1152 byte-ot
                        ;a TOLT rutin hívásakor a FONT paramétert adtuk meg: CALL USR(TOLT,FONT)
                        ;a FONT változó értéke a HL-be kerül
                        ;ezért kell kicserélni a két regiszter értékét :-)
F7 06    = EXOS 6       ;olvasás a csatornáról
C9       = RET          ;visszatérés a rutinból
« Last Edit: 2011.December.29. 11:18:57 by Povi »
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #185 on: 2011.December.29. 11:36:56 »
a mentő rutint ezek után te is meg tudod csinálni, annyi a különbség, hogy EXOS 6 helyett EXOS 8 kell, minden más változatlan a kódban
*** Speicherplatz zu klein

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 #186 on: 2011.December.29. 12:59:04 »
a mentõ rutint ezek után te is meg tudod csinálni, annyi a különbség, hogy EXOS 6 helyett EXOS 8 kell, minden más változatlan a kódban
Ez azt jelenti, hogy az utolsó elõtti szám a C9 elõtt nem 06, hanem 08 lesz? A gépi kódhoz abszolút nem értek.
Köszi a segítséget!
Lehet, inkább zzzippelni kéne az egészet és a szerkesztéssel kapcsolatos részeket lelassítani valahogy egy kicsit (pl. FOR-NEXT ciklusokkal), és a szerkesztés is gyorsabb lenne. És akkor talán nem is kell ezeket a HEX-es részeket betenni. Vagy jó így a sebesség, maradjon a HEX-es töltésgyorsítás?
Még a POKE 56,201-et is be lehetne tenni töltés/mentés elõtt, utána meg 245-re visszaállítani.
Akkor nem érdemes zzzipes változatot elõállítani?
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #187 on: 2011.December.29. 13:13:12 »
Ez azt jelenti, hogy az utolsó elõtti szám a C9 elõtt nem 06, hanem 08 lesz? A gépi kódhoz abszolút nem értek.
igen, mert minden más paraméter változatlan:
az 1-es csatornán van megnyitva a fájl írása
ugyanúgy 1152 byte-ot szeretnénk írni,
és a DE most azt a címet jelenti, ahonnét menteni akarunk, de ez szintén a karakterkészlet kezdőcíme kell, hogy legyen
ennél gyorsabb nem lesz ZZZIP-pel sem, főleg, hogy akkor a ciklusok megmaradnának, és az hiába gyorsulna fel, de attól még bájtonként olvasnád és írnád  z állományt :-)
*** Speicherplatz zu klein

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 #188 on: 2011.December.29. 13:27:28 »
ennél gyorsabb nem lesz ZZZIP-pel sem, fõleg, hogy akkor a ciklusok megmaradnának, és az hiába gyorsulna fel, de attól még bájtonként olvasnád és írnád  z állományt :-)
A Zzzippel gyorsítást a program többi része (kurzor mozgatása, karakter kirajzolása) miatt vetettem fel. Jó az akkor így, ahogy van?

Na, megcsináltam a hex-es file mûveleteket. Hoppá, egy "kicsit" tényleg gyorsabb lett!  :smt041 [ Guests cannot view attachments ]

Ha találtok még benne javítani valót, szóljatok!
« Last Edit: 2011.December.29. 13:52:18 by szipucsu »
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #189 on: 2011.December.29. 13:44:55 »
*** Speicherplatz zu klein

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #190 on: 2011.December.29. 13:55:06 »
a 100-as sor végén a TEXT helyett TEXT 40-et írnék...
a program listázásakor átváltottam 80 karakteres módba, aztán úgy maradt...  :mrgreen:

kéne még valami funkció a kilépésre (pl. ESC bill. megnyomása), a programból nem túl elegánsan, a STOP gomb megnyomásával lehet jelenleg kilépni...

a ZZZIP-pel még megpróbálkoznék, biztos gyorsítana a többi dolgon, főleg, mert rengeteg ciklus van, főleg azok lassítják a BASIC-et...
*** Speicherplatz zu klein

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14723
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #191 on: 2011.December.29. 14:25:28 »
a mentõ rutint ezek után te is meg tudod csinálni, annyi a különbség, hogy EXOS 6 helyett EXOS 8 kell, minden más változatlan a kódban
Az Allocate utáni méretet is növelni kell!

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #192 on: 2011.December.29. 15:40:08 »
Az Allocate utáni méretet is növelni kell!
Úgy gondoltam, ez egyértelmű... :-)
*** Speicherplatz zu klein

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 #193 on: 2011.December.29. 18:03:06 »
a 100-as sor végén a TEXT helyett TEXT 40-et írnék...
TEXT 40 napirenden.
Kilépésre nem jó a dupla reset? :D
Majd akkor Zzzipbe is belegyömöszölöm. De megeszi a Zzzip az ilyen ALLOCATE-HEX-es programokat?
Engem a fájlkezelés zavar még, hogy hibaüzenettel leállhat. WHEN blokk betervezve. Mondjuk floppys hibaüzenetek akkor is tönkretennék szeirntem a képernyõt.
100 SOUND SOURCE 2,STYLE 128,PITCH 25.2,SYNC 1
110 SOUND PITCH 25,SYNC 1
120 ! Videos

Offline Povi

  • EP addict
  • *
  • Posts: 2296
  • Country: hu
    • http://povi.fw.hu
Re: Általános BASIC Kérdések
« Reply #194 on: 2011.December.29. 18:06:19 »
De megeszi a Zzzip az ilyen ALLOCATE-HEX-es programokat?
Simán...
*** Speicherplatz zu klein