CASBAS - Konverziós program

Ez a program a TVC-BASIC bináris file-ját (CAS) alakítja olvasható szövegfájllá (BAS), vagy fordítva.
(Megjegyzés: Basic programot mindkét emuból ki lehet szedni az LLIST -lista nyomtatása- basic parancsal de vissza már nem megy - KKS)
Például akkor lehet haszna, ha szeretnénk egy BASIC játékban hibát keresni, vagy különböző verziókat összehasonlítani.

Némi információ kérdés-válasz formában...

- A programról
- A program által előállított BAS-file-okról
- A CAS file-okról
- A TVC-BASIC-ről
- Program letöltése

A programról

K: Hogyan lehet a CAS-fileból előállítani a BAS-t?
V: Három lehetőség:
 CASBAS <input>.CAS - létrejön az <input>.BAS file, ha még nem létezett
 CASBAS -o <input>.CAS - létrejön az <input>.BAS file, ha létezett, felülíródik
 CASBAS <input>.CAS <output> - létrejön az <output> file, ha létezett, felülíródik

K: Hogyan lehet a BAS-fileból előállítani a CAS-t?
V: Három lehetőség:
 CASBAS <input>.BAS - létrejön az <input>.CAS file, ha még nem létezett
 CASBAS -o <input>.BAS - létrejön az <input>.CAS file, ha létezett, felülíródik
 CASBAS <input>.BAS <output> - létrejön az <output> file, ha létezett, felülíródik

K: Tehát a "-o" felülírást (overwrite) jelent?
V: Igen, de csak akkor van jelentősége, ha nem adtad meg az output-file nevét.

K: A kiterjesztés csak 'CAS' vagy 'BAS' lehet?
V: Igen, mivel ebből tudja a program, hogy mit kell csinálnia.

K: A CASBAS.EXE program Windows-ban is működik?
V: Egy DOS-ablakot kell hozzá nyitni.

K: UNIX-ban nem használható?
V: A forrásprogramot ott is lefordíthatod, ha van C-compiler.

K: Milyen kódkészletet használ a CASBAS.EXE?
V: A 20-7E ASCII-kódokat és a latin2 szerinti magyar ékezetes betűket.

K: A program csak TVC-s file-okhoz használható?
V: Igen.

K: Ismeri 64K+ gépek tokenjeit is?
V: Az alábbiakat: POLIGON, RECTANGLE, ELLIPSE, AUTO, FKEY, RENUMBER, EXCEPTION.

K: Ki és mikor készítette a CASBAS programot?
V: Lőrinczy Zsigmond, 2005. júliusában.

A program által előállított BAS-file-okról

K: Mit jelent az a program outputjában, hogy "BYTES"?
V: Azt, hogy a BASIC program vége mögött még van 'valami'... mondjuk adat vagy gépi kód.

K: Mit jelent az, hogy "AUTORUN"?
V: Azt, hogy a CAS-header-ben az 'automatikus indítás' jelző be van állítva.

K: Mit jelent az, hogy \t**?
V: Olyan TVC-s kódot, aminek nincs ASCII megfelelője... a 't' után két hexa számjegy áll. Lehetséges értékei \t7f..\tdf (inputnál \t20..\tdf.

K: Mit jelent az, hogy \x**?
V: Olyen kódot, aminek még a TVC kódkészletben sincs megfelelője... valószínűleg adat, vagy gépi kód. Lehetséges értékei \x00..\x1f, \xe0..\xff (inputnál \x00..\xff).

K: Mi a különbség a \t** és a \x** között?
V: A tokenizált programban a 80H-9FH közötti kódok helyett 00H-1FH szerepel. Ez az átkódolás megtörténik a \t** esetén, de nem történik meg a \x** esetén. Tehát ha azt látjuk, hogy \t8F\t9F\x8F\x9F, akkor a CAS-fileban 0F1F8F9F van.

K: Ez elég zavaros...
V: Sajnos igen, viszont így a CAS->BAS konverzió (remélhetőleg) információ- vesztés nélkül megoldható, még gépi kódú programrészek esetén is.

A CAS-file-okról

K: Egyes CAS file-ok nagyobbak, mint amit a programméret indokol, miért?
V: Valószínűleg UPM-ből (az egy CP/M klón) származnak, ott a file-méretet 128 byte-os szektorokban számolják, az utolsó szektor használatlan részét 1A karakterekkel töltik ki.

K: Ez az 1A ismerős nekem! Ez nem a Control+Z, ami a file-ok végén szokott lenni?
V: Igen, ez az, csak annyi a gond vele hogy DOS-ban (Windows-ban) nincs rá szükség, mivel itt a file méretét pontosan (byte-ban) tárolja a rendszer.

K: Hogyan értelmezi a program a CAS fejrészt?
V: Nézd meg a TVC.H-ban a CPMHDR, PRGFILEHDR és CASHDR struktúrákat.

A TV-BASIC-ről

K: Mekkora a maximális sorszám a TV-BASIC-ben?
V: Hivatalosan 9999, ennél nagyobbat csak kerülő úton tudsz előállítani.

K: Pédául?
V: Például a BAS->CAS konverzióval... így különösebb gond nélkül előjuthatsz 32767-ig. Persze ezt csak akkor ajánlom, ha valami komoly okod van rá...

K: És ha én 65535-ig szeretnék eljutni?
V: Az sem lehetetlen, de a 32768-65535 közötti sorokra nem tudsz a programban hivatkozni (pl GOTO).

K: Milyen hosszú lehet egy tokenizált BASIC sor?
V: A végső korlát az egybyte-os hossztényező miatt 255, ebből három a fejrész, egy a terminátor, marad 251 felhasználói adat...

K: Mi az a fejrész?
V: Sorhossz egy byte-on (önmagát is tartalmazva), sorszám két byte-on.

K: És a terminátor?
V: Egy byte FF a sor végén, a program végén pedig 00.

K: Igaz, hogy a TV-BASIC mindent nagybetűsít?
V: Nem, az alábbi helyeken nem nagybetűsít: macskakörmök között, DATA-ban, megjegyzésben (REM, illetve !).

K: Hogyan lehet olyan sort előállítani, amelyben nincs semmi?
V: A sorszám után írjál egy szóközt, és nyomj Enter-t. Azt nem tudom, hogy mire jó egy ilyen sor.

Itt tölthető le a program és a forráskódja: Cas2Bas

Lőrinczy Zsigmond