37. Disketa: DIR, DELETE, RENAME, LOCK, UNLOCK, BLOAD, BRUN
Na čo to je
V Atari BASICu sa súbory mazali a premenovávali krkolomným XIO (kapitola 24) a zoznam súborov na diskete sa z programu vypísať skoro nedal. Turbo-BASIC XL má na prácu s disketou obyčajné príkazy.
Ako sa to píše
| Príkaz | Čo robí |
|---|---|
DIR | vypíše všetky súbory na diskete D: |
DIR "D:*.TXT" | vypíše len súbory, ktoré sedia na vzor |
DELETE "D:MENO.TXT" | zmaže súbor |
RENAME "D:STARE.TXT,NOVE.TXT" | premenuje súbor; nové meno je za čiarkou, bez D: |
LOCK "D:MENO.TXT" | zamkne súbor: nedá sa zmazať ani prepísať |
UNLOCK "D:MENO.TXT" | odomkne ho |
BLOAD "D:MENO.OBJ" | nahrá do pamäte súbor so strojovým kódom alebo dátami |
BRUN "D:MENO.OBJ" | nahrá ho a spustí |
Vo vzore znamená * „čokoľvek“ a ? „jeden ľubovoľný znak“: D:*.TXT sú všetky súbory s príponou TXT, D:LEVEL?.DAT sú LEVEL1.DAT, LEVEL2.DAT …
Celý program
Súbor examples/disk.tbas:
10 REM DIR, RENAME, LOCK, UNLOCK, DELETE
20 OPEN #1,8,0,"D:FIRST.TXT":PRINT #1;"Hello":CLOSE #1
30 PRINT "After writing:":DIR "D:*.TXT"
40 RENAME "D:FIRST.TXT,SECOND.TXT"
50 LOCK "D:SECOND.TXT"
60 PRINT "Renamed and locked:":DIR "D:*.TXT"
70 TRAP #LOCKED
80 DELETE "D:SECOND.TXT"
90 PRINT "Deleted"
100 END
110 # LOCKED
120 PRINT "Cannot delete, error ";ERR
130 UNLOCK "D:SECOND.TXT"
140 DELETE "D:SECOND.TXT"
150 PRINT "Unlocked and deleted:":DIR "D:*.TXT"Preklad a spustenie
Tieto príkazy vykonáva DOS, takže program potrebuje disketu s DOS-om. Voľba --atr ju vyrobí, uloží na ňu preložený program a --run z nej emulátor naštartuje (kapitola 41):
Basic26 disk.tbas --atr disk.atr --runSimulátor operácie DOS-u nevie, v ňom tento program neskúšaj.
Čo uvidíš
After writing:
FIRST TXT 001
611 FREE SECTORS
Renamed and locked:
* SECOND TXT 001
611 FREE SECTORS
Cannot delete, error 167
Unlocked and deleted:
612 FREE SECTORSAko to funguje
- Riadok 20: program si najprv vyrobí malý súbor, aby mal s čím pracovať.
- Riadok 30:
DIRso vzorom vypíše súbory s príponouTXT. Každý riadok je meno, prípona a veľkosť v sektoroch (sektor má 125 bajtov dát). Posledný riadok hovorí, koľko sektorov je na diskete ešte voľných. - Riadok 40: staré meno aj nové v jednom texte, oddelené čiarkou.
- Riadok 60: zamknutý súbor má vo výpise na začiatku hviezdičku.
- Riadok 80: zamknutý súbor zmazať nejde – chyba 167. Pasca na riadku 70 pošle program na návestie
LOCKED. - Riadky 130 až 150: po odomknutí už
DELETEprejde a súbor zo zoznamu zmizne; voľných sektorov je o jeden viac.
DIR bez vzoru vypíše všetko, čo na diskete je – aj súbory DOS-u (DOS.SYS, DUP.SYS) a tvoj program (AUTORUN.SYS).
BLOAD a BRUN
Súbory so strojovým kódom majú na Atari vlastný formát: nesú v sebe adresy, kam sa majú nahrať (je to ten istý formát ako .xex). BLOAD taký súbor nahrá na jeho miesto a program pokračuje – takto si dobové programy nahrávali rutiny pre USR, znakové sady a obrázky. BRUN ho po nahratí aj spustí; keď sa strojový kód vráti, pokračuje program ďalším príkazom.
10 BLOAD "D:FONT.OBJ"
20 POKE 756,152V preloženom programe býva pohodlnejšie taký súbor pribaliť voľbou --embed (kapitola 43) – nahrá sa spolu s programom a disketu netreba.
Časté chyby
| Čo sa stalo | Čo sa stane |
|---|---|
| súbor neexistuje | ERROR- 170 ?FILE |
| súbor je zamknutý | ERROR- 167 LOCKED |
program beží bez DOS-u (--run bez --atr) | ERROR- 130 ?DEV |
RENAME s D: aj pred novým menom | chyba 165 – nové meno sa píše bez zariadenia |
| meno dlhšie než 8 znakov alebo s malými písmenami | ERROR- 165 NAME |
DIR počas otvoreného kanála 7 | DIR si kanál 7 berie pre seba a zavrie ho |
Vyskúšaj si
- Vyrob tri súbory
A.TXT,B.TXT,C.DATa vypíš najprv všetky, potom len*.TXT. - Napíš „správcu súborov“: ponuka s voľbami zoznam, zmazať, premenovať; meno sa pýta cez
INPUT. - Zachyť chybu 170 pri
DELETEsúboru, ktorý nie je, a vypíšNo such file.
Zhrnutie
DIRvypíše súbory na diskete, so vzorom len niektoré.DELETE,RENAME,LOCK,UNLOCKrobia to, čo hovoria.BLOADnahrá strojový kód alebo dáta,BRUNich aj spustí.- Program s disketou sa skúša v emulátore:
--atr disk.atr --run.
Späť: 36. Zvuk v šestnástich bitoch · Ďalej: 38. Hľadanie chýb