41. Diskety a dobové programy: --atr, --dir, --list, --save
Na čo to je
Atari ukladalo programy na diskety. Dnes sa disketa uchováva ako jeden súbor na PC – obraz diskety s príponou .atr. Emulátor s ním zaobchádza ako so skutočnou disketou a na internete sú v tomto tvare tisíce diskiet s dobovými programami.
Basic26 vie s obrazmi diskiet tri veci:
- uložiť preložený program na disketu tak, aby sa po zapnutí Atari sám spustil,
- pozrieť, čo na diskete je,
- prečítať program rovno z diskety – a to aj v tvare, v akom ho uložil interpreter.
Voľby
| Voľba | Čo robí |
|---|---|
--atr disk.atr | uloží preložený program na obraz diskety; ak disketa neexistuje, vyrobí ju aj s DOS-om |
--dos meno | ktorý DOS má byť na novej diskete (predvolene dos25) |
--exit-to-dos | po skončení programu sa vráti do DOS-u |
--dir disk.atr | vypíše obsah diskety |
disk.atr:MENO.BAS | namiesto mena programu: súbor na diskete |
--list súbor | zapíše program ako čitateľný text |
--list-atascii | výpis nechá v kódoch Atari namiesto prevodu do UTF-8 |
--save súbor | zapíše program v tvare, v akom ho ukladá SAVE |
--from-cp1250 | výpis písaný na PC s českými písmenami prevedie do českej znakovej sady Atari |
Program na disketu
Program, ktorý pracuje so súbormi, potrebuje DOS – a emulátor spustený cez --run ho sám nemá. Preto:
Basic26 files.abas --atr files.atr --runČo sa stane:
- Prekladač preloží
files.abas. - Obraz
files.atrneexistuje, tak ho vyrobí: čistá disketa s DOS 2.5. - Uloží na ňu preložený program pod menom
AUTORUN.SYS– súbor s týmto menom DOS po štarte sám spustí. --runnaštartuje emulátor z tejto diskety.
Disketa ostane vedľa programu. Súbory, ktoré na ňu program zapíše, na nej sú aj pri ďalšom spustení (kým files.atr nezmažeš).
Basic26 --dir files.atrDOS 2, single density
DOS.SYS 37 ?
DUP.SYS 42 ?
AUTORUN.SYS 17 ?
NOTES.TXT 1 ?
610 free sector(s)Meno, veľkosť v sektoroch a voľné miesto. NOTES.TXT je súbor, ktorý program vyrobil pri behu v emulátore.
Voľba --atr patrí do hlavičky programu, ktorý disketu potrebuje vždy:
0 REM @COMPILE --atr files.atr
Iný DOS
DOS 2.5 je ten, ktorý Atari dodávalo. --dos vyberie iný: mydos, sparta (SpartaDOS), bwdos, litedos, wolfdos, alebo cestu k vlastnému obrazu diskety, ktorý sa použije ako vzor. Každý DOS spúšťa programy po štarte pod iným menom; prekladač to vie a použije správne.
Návrat do DOS-u
Preložený program po skončení stojí a nechá obrazovku tak, ako je. Program, ktorý sa má spúšťať z DOS-u ako nástroj a po skončení sa doň vrátiť, sa prekladá s --exit-to-dos.
Starý program z diskety
Súbor examples/oldies.atr je disketa, na ktorú niekto kedysi uložil program z Atari BASICu. Čo na nej je?
Basic26 --dir oldies.atrDOS 2, single density
DOS.SYS 37 ?
DUP.SYS 42 ?
STARS.BAS 2 ?
626 free sector(s)Program STARS.BAS sa dá preložiť a spustiť rovno z diskety – meno súboru sa napíše za meno obrazu a dvojbodku:
Basic26 oldies.atr:STARS.BAS -o stars.xex --sim*
**
***
****
*****Program uložený cez SAVE nie je text
Keby si STARS.BAS z diskety vytiahol a otvoril v editore, uvidel by si nezmysly. Interpreter totiž program neukladá ako text, ale tak, ako ho má v pamäti: každý príkaz je jeden bajt, čísla sú v šiestich bajtoch, mená premenných v tabuľke na začiatku. Prekladač tento tvar pozná a číta ho priamo.
Keď chceš program vidieť – a upravovať –, nechaj si ho vypísať:
Basic26 oldies.atr:STARS.BAS --list stars.abasVznikne súbor examples/stars.abas:
10 REM STARS - AN OLD PROGRAM SAVED ON A DISK
20 FOR R=1 TO 5
30 FOR S=1 TO R:PRINT "*";:NEXT S
40 PRINT
50 NEXT RTo je ten istý text, aký by na Atari vypísal príkaz LIST. Dá sa upraviť a preložiť ako každý iný program:
Basic26 stars.abas --sim*
**
***
****
*****Výpis je v kódovaní UTF-8: grafické znaky Atari, ktoré v dobových programoch bývajú v textoch, sa prevedú na podobné znaky, ktoré editor na PC vie ukázať, a pri preklade zasa naspäť. Z výpisu vznikne bajt po bajte ten istý program ako z pôvodného súboru. --list-atascii nechá bajty tak, ako sú – to treba, keď má výpis ísť späť na disketu pre skutočné Atari.
S voľbou -v prekladač povie, čo o programe zistil:
reading oldies.atr:STARS.BAS (5 lines, ATASCII, SAVEd, Atari BASIC)Či ide o Atari BASIC alebo Turbo-BASIC XL, spozná sám podľa príkazov, ktoré v uloženom programe nájde.
Čo sa z uloženého programu nedá dostať
Interpreter pri ukladaní zahodil medzery (okrem tých v textoch a komentároch) a všetko previedol na veľké písmená. Výpis ich preto nemá. Niektoré programy boli proti čítaniu chránené – zmazané mená premenných, pokazené dĺžky riadkov. Prekladač si s bežnými ochranami poradí; premenné bez mien dostanú vo výpise mená V0, V1$, V2(.
Program schovaný v .xex
Dobové nástroje vedeli program v BASICu „zabaliť“ do spustiteľného súboru, ktorý si so sebou niesol kópiu pamäte interpretera. Aj z takého súboru sa dá program dostať:
Basic26 hra.xex --save hra.bas --list hra.abas--save zapíše program tak, ako by ho uložil SAVE, --list ako text. (Samotný .xex na vstupe sa neprekladá – len sa z neho číta.)
České výpisy z PC
Texty českých hier sa na Atari písali vlastnou znakovou sadou, v ktorej písmená s diakritikou ležia na miestach iných znakov. Výpis, ktorý niekto prepísal na PC s normálnymi českými písmenami (v kódovaní Windows-1250), prevedie na kódy tejto sady voľba --from-cp1250.
Časté chyby
| Čo sa stalo | Čo sa stane |
|---|---|
program s D: spustený cez --run bez --atr | ERROR- 130 – DOS nie je v pamäti |
súbor na diskete nie je (oldies.atr:NOFILE.BAS) | error B26201: … file not found on the disk: NOFILE.BAS |
| disketa je plná | program sa na ňu neuloží; prekladač to ohlási |
--list s menom vstupného súboru | error B26202 – prekladač nikdy neprepíše to, čo číta |
| uložený program otvorený v editore | nezmysly; použi --list |
.bas z Turbo-BASICu XL prečítaný ako Atari BASIC | nestane sa – prekladač dialekt uloženého programu spozná sám |
Vyskúšaj si
- Daj
hello.abasna disketu a spusti ju:Basic26 hello.abas --atr hello.atr --run. Potom si pozri jej obsah cez--dir. - Vypíš
STARS.BASz diskety do súboru, zmeň počet riadkov hviezdičiek na 10 a prelož ho. - Skús
--dos mydosa porovnaj--dirs disketou s DOS 2.5.
Zhrnutie
.atrje obraz diskety;--atr disk.atrnaň uloží program tak, aby sa spustil sám.- Program so súbormi sa skúša cez
--atr disk.atr --run. --dir disk.atrvypíše obsah diskety.disk.atr:MENO.BASprekladá program rovno z diskety, aj uložený cezSAVE.--list súborspraví z uloženého programu čitateľný text.
Späť: 40. Nastavenia v zdrojáku · Ďalej: 42. Miesto v pamäti