Welcome, Guest. Please login or register.


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

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #30 on: 2007.January.06. 23:09:22 »
Az gondolom közismert, hogy eredetileg az IS-BASIC-ben hibás az EXT utasítás:
[ Guests cannot view attachments ]
A példa esetén egy 25 GOTO 30 utasítással ki lehet kerülni a hibát.

Anno sikerült kijavítanom a hibát a ROM-ban, el is küldtem a leírást az Enterpressbe, de valamiért nem került leközlésre :-( (legalábbis nem találom egyikbe se...)
De most megtaláltam az egyik lemezemen a levelet :-)

Quote
     Tisztelt Szerkesztõség
   
    Biztos önök is sokat bosszankodtak azon, hogy a Basic EXT utasítás után
   mindig GOTO kell ! Itt a megoldás :
    Ha az ASMON-ban megcsináltuk a leírtakat, akkor már csak be kell égetni
   a módosított BASIC-et, vagy az EPDOS ROMLOAD paranccsal betölteni.
   
           A módosításhoz sok sikert kiván:
   
                                 ZOZOSOFT&APUCI
Code: [Select]
-[O] B1 [ENTER] xx [ENTER] xx:A BASIC szegmens
-[C] 4000 [ENTER] 7FFF [ENTER] 8000 [ENTER]
-[C] BA42 [ENTER] BA7F [ENTER] BA3F [ENTER]
-[C] BA5A [ENTER] BA7B [ENTER] BA57 [ENTER]
-[M] BA76 [ENTER] 0D 0A F7 1A DF D7 16 00 C9 [ESC]
-[M] 8095 [ENTER] 3C [ESC]
-[M] 9850 [ENTER] C3 78 FA [ESC]
-[S] 8000 [ENTER] BFFF [ENTER] BASIC.ROM [ENTER]


   10 PROGRAM "extdemo.bas"
  100 FOR I=1 TO 5
  110   READ NEV$
  120   CALL HIV(NEV$)
  130 NEXT
  140 DEF HIV(A$)
  150   TEXT
  160   PRINT "ext ""help "&A$&""""
  170   EXT "help "&A$
  180   WAIT 2
  190 END DEF
  200 DATA "",wp,basic,exdos,isl1985

Ahogy nézem a javított BASIC.ROM annyira elterjedt, hogy ma már csak azt lehet fel lelni a neten :-) így itt egy eredeti ROM fájl is.

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #31 on: 2007.January.06. 23:41:52 »
Részletesen kifejtve a módosítást:
Az eredeti EXT végrehajtó része így néz ki:
D850  EXOS 1AH
D852  RST 18H
D853  RET

Az EXOS hívás maga az EXOS parancs kiadása, az RST 18H az EXOS hiba ellenõrzése funckció a BASIC ROM-ban.
Kimaradt viszont a BASIC verem kitakarítása! Ez okozza a hibát, ill. ez az amit a GOTO megcsinál...
Ezt egy:
RST 10H
DB 16H,0
kóddal érhetjük el.
Viszont hova írjuk be?
A HELP BASIC-re adandó help szövegbõl szedtem le pár szóközt, és az így keletkezett helyre kerül a módosított kód:

FA78  EXOS 1AH
FA7A  RST 18H
FA7B  RST 10H
FA7C  DB 16H
FA7D  DB 00H
FA7E  RET

D850-re pedig JP FA78H

A korábbi ASMON leírás sorról sorra:
1) BASIC ROM belapozása az 1. lapra
2) BASIC ROM átmásolása a 2. lapra
3) HELP szöveg elsõ sorának lerövidítése 3 bájttal (bevezetõ szóközök)
4) második sor lerövidítése
5) a keletkezett helyre beírásra kerül elöször a szöveget lezáró CR/LF, majd a szükséges új kód
6) HELP szöveg hosszának átírása
7) kódra ugró JP elhelyezése
9) javított ROM fájl kimentése (azért 9 mert a 8 után zárójel kombinációból szmájli lesz 8)

Házifeladat ezek alapján az IS-BASIC 2.0-ban kijavítani az EXT hibát! :-)
« Last Edit: 2007.January.22. 19:34:26 by Zozosoft »

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #32 on: 2007.January.22. 20:01:25 »
Házifeladat ezek alapján az IS-BASIC 2.0-ban kijavítani az EXT hibát! :-)
Úgy látom senki nem csinálta meg a házifeladatot :(
Akkor ime a javított 2.0 ROM.
Az EXT végrehajtó része ez esetben D827-en van, a javított kód a HELP szöveg átrendezése után FA22-re került.

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 #33 on: 2007.May.22. 01:51:37 »
Nyilván igen nagy marhaság, de a következõ programmal lehet a fagyáson kívül károkat okozni?

10 RANDOMIZE
20 DO
30   POKE RND(65535)+1,RND(256)
40 LOOP

(Az másik kérdés, hogy ilyen zsibbadtság csak nekem jut eszembe...)
Az elsõ RND után kell az a +1 itt? Van nullás cím?

Egyébként soha nem értettem, mi a különbség a POKE és a SPOKE között. Ráadásul a SPOKE után az elsõ szám majdnem mindig 255 volt, látszólag felesleges. Mi van, ha 255 helyett valami mást írunk ilyen esetben?
Amúgy alighanem szójáték lehet a poke-peek mintájára a spoke-speek, talán csak az Enterprise basic-je ismeri.
Számomra, aki nem értek e gépi kódhoz, érdekesség, hogy az OUT is hasonlóan mûködik, mint a poke, hiszen egy új értéket adhatunk valaminek. Lekérdezni már nem tudom, mivel lehet az OUT-os belepiszkálást, talán a print in(n)-nel.
Arra emlékszem, hogy bizonyos BASIC parancsokat is helyettesíteni lehetett az out-tal (set status off, toggle akármik). A set character meg helyettesíthetõ volt spoke-kal, úgy emlékszem. A kedvencem az out 191,12 volt, ez felgyorsította kicsit a gépet, ezt majdnem minden basic programom elejére betettem. Valamilyen spoke-kal el lehetett érni, hogy az egész képernyõn a status sor scroll-ozzon fentrõl lefelé, meg be lehetett kapcsolni a CAPS-et anélkül, hogy billentyût megnyomtunk volna hozzá.
De lehet, hogy az out-ot keverem a set-tel... Talán a set-es ügyködést lehetett az ASK-kal lekérdezni...
« Last Edit: 2007.May.22. 01:55:13 by szipucsu »
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 #34 on: 2007.May.22. 08:22:00 »
A SPOKE /SPEEK utasítások nagyon jól használhatóak az Ep szegmensekre osztott memóriájában való "turkálásra". (Tekintve, hogy a négy lapon nem biztos, hogy mindig ugyanazok a szegmensek vannak belapozva, a POKE utasítással egyáltalán nem biztos, hogy jó helyre írjuk be a kívánt értéket.)

A két utasításról az Enterpress-ben olvashatunk részltesebben.

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2755
  • Country: hu
    • Enterprise Forever
Re: Általános BASIC Kérdések
« Reply #35 on: 2007.May.22. 08:36:48 »
Egyébként soha nem értettem, mi a különbség a POKE és a SPOKE között. Ráadásul a SPOKE után az elsõ szám majdnem mindig 255 volt, látszólag felesleges. Mi van, ha 255 helyett valami mást írunk ilyen esetben?
Úgy látom az RTFM már régebben is rádfért volna! :-D

Offline Oliver

  • Newbie
  • Posts: 5
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #36 on: 2007.May.22. 10:32:37 »
Ahoj, valaki nem emlékszik rá, mit kell bepötyögni készenléti módban, hogy ne az alapértelmezett zöld betükkel irjon a gép, hanem mondjuk világoskék? Valamelyik könyvben régen olvastam, de már nem emlékszem rá. Köszi.

Offline MrPrise

  • Administrator
  • EP addict
  • *
  • Posts: 2755
  • Country: hu
    • Enterprise Forever
Re: Általános BASIC Kérdések
« Reply #37 on: 2007.May.22. 10:49:21 »
Üdv a fórumon! :-)

Ahoj, valaki nem emlékszik rá, mit kell bepötyögni készenléti módban, hogy ne az alapértelmezett zöld betükkel irjon a gép, hanem mondjuk világoskék? Valamelyik könyvben régen olvastam, de már nem emlékszem rá. Köszi.
Kézikönyv
A set palette-t keresed szerintem.

Offline Lacika

  • EP addict
  • *
  • Posts: 3191
  • Country: hu
    • http://www.ep128.hu
Re: Általános BASIC Kérdések
« Reply #38 on: 2007.May.22. 12:13:20 »
Ide tartozik még egy, az Enterpress-ben ismertetett bug is (keress rá a "Bosszúságaink" címre.)

Offline Oliver

  • Newbie
  • Posts: 5
  • Country: hu
Re: Általános BASIC Kérdések
« Reply #39 on: 2007.May.22. 13:18:51 »
Végülis a SET INK megteszi csak nem emlékszem hogy ha a 101 az alapértelmezett csatorna, miért is kell megadnom 102-t. Nem gond, halványan térnek azért vissza az emlékek, most már sejtem azt is miért nem lehet kék a karakter csak piros-zöld... Lehet butaság (10 évet kihagytam) de valami olyasmire emlékszem hogy a 40 karakteres VIDEO MODE 0 esetén csak 2 szin használható...

Offline Zozosoft

  • Global Moderator
  • EP addict
  • *
  • Posts: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #40 on: 2007.May.22. 13:38:04 »
Végülis a SET INK megteszi csak nem emlékszem hogy ha a 101 az alapértelmezett csatorna, miért is kell megadnom 102-t.
Valóban a 101 az alapértelmezett, de az a grafikus lap. a Szöveges lap, amit a BASIC használ, az a 102-es, ezért kell megadni.
Lehet butaság (10 évet kihagytam) de valami olyasmire emlékszem hogy a 40 karakteres VIDEO MODE 0 esetén csak 2 szin használható...
4 szín használható, a 0-127 kódú karakterek az elsõ 2 szín párosával jelennek meg, a 128-255 karakterek meg a második párossal.
Ezt használja ki az EXOS, így ha SET #102:INK 2, akkor már a második párost fogja használni. Ez alapban fekete alapon piros betû.
80 karakteres módban pedig 4 színpáros használható.

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 #41 on: 2007.May.22. 15:42:41 »
4 szín használható, a 0-127 kódú karakterek az elsõ 2 szín párosával jelennek meg, a 128-255 karakterek meg a második párossal.
Ezt használja ki az EXOS, így ha SET #102:INK 2, akkor már a második párost fogja használni. Ez alapban fekete alapon piros betû.
80 karakteres módban pedig 4 színpáros használható.

És akkor akármilyen színt el lehet érni. Ha jól emlékszem, a SET #102:INK 2 után a SET #102:COLOR 2,255-öt kell megadni a fehérhez. A SET #102:PALETTE után 4 szám áll, amik szineket jelölnek, de hogy melyik minek a színét, arra már nem emlékszem... Az egyik a háttér, a másik a betûszín, az biztos.
Azt nem szeretem viszont, hogy képernyõtörlés (TEXT) után visszaáll az alapfelállás, de ha a CLEAR SCREEN-nel törlünk képernyõt, akkor asszem nem...
Ami a spoke-ot és az RTFM-t illeti: a poke-nál még fel tudtam fogni, hogy egy címre elhelyez egy értéket, meg hogy a gép a kettes számrendszer alapján tárolja a dolgokat, de hogy a lap és a szegmens micsoda, addig nem jutottam el anno... Még azt is felfogtam, hogy az ASMON-ban át lehet írni a memória területét, ami lényegében hasonló, mint a BASIC poke, és így az egész memória elõttünk van, szóval még nem tudtam felfogni, miért kell a spoke még ezen kívül, de megpróbálom megemészteni az Enterpress cikkét. :)
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: 14722
  • Country: hu
    • http://enterprise.iko.hu/
Re: Általános BASIC Kérdések
« Reply #42 on: 2007.May.22. 15:47:20 »
Azt nem szeretem viszont, hogy képernyõtörlés (TEXT) után visszaáll az alapfelállás, de ha a CLEAR SCREEN-nel törlünk képernyõt, akkor asszem nem...
Mivel a TEXT az nem képernyõtörlés. Az a szöveges alapállapot beállítása. Bezárja a megnyított videó lapokat, és megnyit egy új alapértelmezett szöveges lapot a 102-es csatornára.
A CLEAR pedig egy létezõ videó lapra küldi ki a képernyõtörlés kódját.

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 #43 on: 2007.May.22. 22:25:24 »
Mivel a TEXT az nem képernyõtörlés. Az a szöveges alapállapot beállítása. Bezárja a megnyított videó lapokat, és megnyit egy új alapértelmezett szöveges lapot a 102-es csatornára.
A CLEAR pedig egy létezõ videó lapra küldi ki a képernyõtörlés kódját.
Talán annyi a hátránya a laikus felhasználó (mint pl. én :D ) számára, hogy egy gombnyomás (F6) és letörli a képernyõt, és ez rögzül, meg ki fog ilyen hosszú szöveg begépelésével (clear screen) bíbelõdni. Egyébként már mondták, hogy jó sokat kell gépelni az Enterprise basicben, míg más gépeknél sokkal rövidebbek a kulcsszavak (pl. cls). A SOUND parancs paraméterei is elég terjedelmes szavak után adhatók meg.
Meg ha átdefiniálom az egyik funkcióbillentyût clear screen-e, akkor egy reset után elfelejti a gép. Tényleg, van valami utasítás, amivel le lehet kérdezni, hogy egy funkcióbillentyû éppen mire van definiálva? (Ha pl. nem akarom kipróbálni valamiért.)
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 #44 on: 2007.May.23. 08:08:09 »
Talán annyi a hátránya a laikus felhasználó (mint pl. én :D ) számára, hogy egy gombnyomás (F6) és letörli a képernyõt, és ez rögzül, meg ki fog ilyen hosszú szöveg begépelésével (clear screen) bíbelõdni. Egyébként már mondták, hogy jó sokat kell gépelni az Enterprise basicben, míg más gépeknél sokkal rövidebbek a kulcsszavak (pl. cls). A SOUND parancs paraméterei is elég terjedelmes szavak után adhatók meg.
Meg ha átdefiniálom az egyik funkcióbillentyût clear screen-e, akkor egy reset után elfelejti a gép. Tényleg, van valami utasítás, amivel le lehet kérdezni, hogy egy funkcióbillentyû éppen mire van definiálva? (Ha pl. nem akarom kipróbálni valamiért.)

A funkcióbillentyűkkel kapcsolatos minden igény kielégítésére tökéletesen alkalmas a ZozoTools FL parancsa.