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í
DIRvypíš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:

Turbo Basic XL
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 --run

Simulá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 SECTORS

Ako to funguje

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.

Turbo Basic XL
10 BLOAD "D:FONT.OBJ"
20 POKE 756,152

V 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 neexistujeERROR- 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 menomchyba 165 – nové meno sa píše bez zariadenia
meno dlhšie než 8 znakov alebo s malými písmenamiERROR- 165 NAME
DIR počas otvoreného kanála 7DIR si kanál 7 berie pre seba a zavrie ho

Vyskúšaj si

  1. Vyrob tri súbory A.TXT, B.TXT, C.DAT a vypíš najprv všetky, potom len *.TXT.
  2. Napíš „správcu súborov“: ponuka s voľbami zoznam, zmazať, premenovať; meno sa pýta cez INPUT.
  3. Zachyť chybu 170 pri DELETE súboru, ktorý nie je, a vypíš No such file.

Zhrnutie

Späť: 36. Zvuk v šestnástich bitoch · Ďalej: 38. Hľadanie chýb