BS DOS 308 - ovladanie z basicu

Tento dokument popisuje presnu syntax vsetkych basicovych prikazov a funkcii, ktore podporuje basicovy interpret operacneho systemu BS-DOS verzia 308.

  1. Prikazy pre nastavovanie cesty
  2. Prikazy pre manipulaciu s disketou
  3. Prikazy pre manipulaciu s datami
  4. Nove basicove funkcie

Vo vsetkych prikazoch a funkciach, na miestach kde sa ocakava cislo, je mozne pisat akykolvek vyraz, ktory ma ciselny vysledok. Tak isto vsade tam, kde sa vyzaduje retazec alebo meno, mozno pisat akykolvek vyraz retazcoveho charakteru. Ak je nejaky parameter prikazu napisany v takychto hranatych zatvorkach [ ] znamena to ze je nepovinny a je mozne ho vynechat.

1. Prikazy pre nastavovanie cesty

Umiestnenie suboru (cesta alebo path) je v dose 308 definovana tymito tromi parametrami:
    - cislo disku (1-255)
    - cislo adresara (0-255)
    - cislo suboru (1-65279) nazvane tiez load-kurzor
V kazdom adresari moze byt teoreticky lubovolne velky pocet suborov, ale z technicko-praktickych dovodov je tento pocet obmedzeny na 65279 subov pre jeden adresar. To znamena, ze na jednom disku moze byt teoreticky celkovo az 16711424 suborov (16711424 = 256*65279). Pravdaze, ak to kapacita disku dovoli. Load-kurzor predstavuje cislo suboru, ktory sa bude ako prvy nahravat. Inymi slovami je to subor, na ktorom je prave pretocena virtualna magnetofonova paska pri emulacii load-save rutiniek #4C6 a #562.

USR 15522
presmerovanie prikazov LOAD, SAVE, VERIFY, MERGE na magnetofon (magnetofon bude aktualnym zariadnim).

USR 15524
presmerovanie prikazov LOAD,SAVE,VERIFY,MERGE na disk (disk bude aktualnym zariadenim).

@ cislo
@ retazec

Nastavenie aktualneho disku. Retazec predstavuje meno diskety, ale hladanie disku podla mena v dose 308 nie je implementovane. Ak cislo=0 tak sa load-save rutinky presmeruju na kazetu (presne ako USR 15522) Ak sa ma vykonat @ s nenulovym parametrom, tak okrem nastavenia danej mechaniky sa este vykona USR 15524 - load-save rutinky sa presmeruju na disk.

$ cislo
$ retazec

Nastavenie aktualneho adresara na aktualnom disku. Adresar mozno zadat aj menom, v takom pripade sa vyhlada prvy adresar, ktoreho meno zodpoveda zadanemu. Ak je zadane meno dlshie ako 10 znakov, sa berie sa z neho len tych prvych 10 znakov. Ak je kratsie, doplni sa medzerami. Hladane podla mena zacina od byvaleho aktualneho adresara smerom k adresaru cislo 255 a potom od nulteho az po aktualny. Ak sa adresar s takymto menom nenajde, vypise sa chyba "Invalid file name".

` cislo
` retazec

Nastavenie load-kurzora na dany subor. Znak ` je libra (SS+X). Pre zadani suboru menom a jeho vyhladanie v adresari plati presne ten isty mechanizmus ako pri zadani adresara menom.

   Lubovolna kombinacia tychto troch prikazov tvori parameter cesta v dalsich prikazoch. Vyhodnocuje sa zlava do prava. Napriklad: @ 3 $ 5 @ 8 $22 $"bubu" ` "ahoj" znamena, ze na disku zasunuteho do mechniky 3 sa nastavi aktualny adresar 5, na disku 8 sa nastavi adresar 22, potom sa najde prvy adresar po 22 ktory ma meno "bubu" a load-kurzor sa v tomto adresari nastavi na subor "ahoj". Postupnost tychto prikazov moze byt ukoncena bodkociarkou (ak to syntax dakeho prikazu potrebuje).

2. Prikazy pre manipulaciu s disketou

.FORMAT [cesta]
Zmazanie uplne vsetkych suborov a adresarov z diskety. Disketu je este mozne obnovit, pokial sa nespravi SAVE. Pred samotnym zmazanim sa este vypise dotaz, ci naozaj chcete tento prikaz pouzit. Zmazane data sa este daju obnovit prikazom UNERASE.

.ERASE [cesta] data
Logicke zmazanie suborov. Subory je este mozne obnovit. Fyzicky sa zmazu az vtedy, ked sa na disketu nieco sejvne. Zmazanie suboru s cislom 0 znamena zmazanie celeho, aj neprazdneho adresara. Pred zmazanim neprazdneho adresara sa este vypise dotaz, ci naozaj chcete tento adresar zmazat - podobne ako v prikaze .FORMAT

.UNERASE [cesta] data
Obnovenie zmazanych suborov alebo adresarov. Cislo 0 znamena obnovenie aktualneho adresara. Pozor, obnovuje sa len samotny adresar, subory v nom je treba obnovit rucne.
Tymto prikazom je mozne obnovovat subory a adresare aj po zmazani celej diskety prikazom FORMAT - a to tak, ze najprv treba obnovit adresar ako taky (.UNERASE 0) a potom vsetky potrebne subory v nom.
Pozor, subory su zdanlivo obnovene uz pri obnoveni adresara, avsak samotne datove sektory nie su este obnovene, preto je potrebne na ne aplikovat prikaz UNERASE. Subory, o ktore nemate zaujem, mozete zmazat prikazom ERASE, aby v adresari nezavadzali.

.RENAME [cesta] cislo,retazec
Premenovanie suboru "cislo" na nove meno "retazec". Ak cislo=0 tak sa bude menit meno adresara. Pozor ! Meno adresara moze byt az 26-znakove.

.RENAME [cesta] cislo,cislo
Zmena zaciatocnej adresy daneho suboru. Zmena adresy nulteho suboru (to je akoze cely adresar) znamena definiciu, kam ma tento adresar v stromovej strukture patrit (je to cislo jemu nadradeneho adresara).

.MOVE [cesta] cislo1,cislo2
Presunutie suboru "cislo1" do adresara "cislo2". Ak cislo1=0 tak sa bude presuvat cely adresar.

.MOVE [cesta] cislo;data
Presunutie viacerych suborov specifikovanych v polozke "data" do adresara cislo.
Poznamka: Presunutie suboru do toho isteho adresara znamena iba jeho presun na koniec tohto adresara.

.PRESS [cesta]
Utrasenie aktualneho adresara.

.KILL [cesta]
Zrusenie vnutornych CACHE pameti. Tento prikaz prakticky nie je potrebny, pretoze operacny system si vykonava spravu vnutornych CACHE pameti plne automaticky.

.SEARCH [!] [cesta] [local] [retazec]
Hladanie daneho retazca na diskete. Prehladavaju sa vsetky mena adresarov (iba prvych 10 znakov) a mena vsetkych existujucich suborov. Vykricnik znamena, ze sa budu prehladavat aj mena zmazanych suborov a volnych adresarovych poloziek. Prehladavanie zacina aktualnym adresarom, pokracuje az po adresar 255, a potom zase od nulteho az po aktualny.

CAT  [.] [!] [cesta] [local] [cislo]
COPY [.] [!] [cesta] [local] [cislo]

Katalog aktualneho adresara alebo adresara daneho cislom. Vykricnik znamena vypis aj zmazanych suborov a volnych adresarovych poloziek. Bodka znamema vypis nie od zaciatku adresara, ale od aktualnej pozicie load-kurzora.

Poznamka: Specifikacia suborov udajom "data" ma takyto tvar:   polozka [,polozka] [,polozka] [,polozka] ...
kde polozka ma takyto tvar:
  cislo1 [TO [cislo2]]
alebo:
  TO [cislo2]
kde cislo1 znamena zaciatok intervalu (nezadane znamena vsetky subory od zaciatku adresara a cislo2 znamena koniec intervalu (nezadane znamena subory az po koniec adresara). Samotne cislo1 bez spojky TO predstavuje iba jeden specifikovany subor (akoze interval "cislo1 TO cislo1").

Napr (v adresari je 32 suborov):
   TO 3 , 10, 20 , 13 TO 15 , 28 TO
znamena tieto subory:
   1,2,3,10,20,13,14,15,28,29,30,31

Polozka [local] znamena lokalne nastavenie inej mechaniky v danom prikaze a zacina identifikacnym znakom '#' za ktorym nasleduje ciselny vyraz ktoreho vysledna hodnota identifikuje danu mechaniku. Za tymto vyrazom moze na oddelenie nasledujuceho kontextu nasledovat ciarka (ak je to potrebne a vhodne).

Napriklad nech 4 je aktualna mechanika. Potom prikaz
  CAT #2,66
vypise katalog 66-teho adresara na disku v mechanike 2.

3. Prikazy pre manipulaciu s datami

  SAVE [!] [*] [cesta] [cislo]  meno
  SAVE [!] [*] [cesta] [cislo]  meno  SCREEN$
  SAVE [!] [*] [cesta] [cislo]  meno  DATA var()
  SAVE [!] [*] [cesta] [cislo]  meno  CODE adresa,dlzka
  LOAD [!] [*] [cesta] [cislo] [meno]
  LOAD [!] [*] [cesta] [cislo] [meno] SCREEN$
  LOAD [!] [*] [cesta] [cislo] [meno] DATA var()
  LOAD [!] [*] [cesta] [cislo] [meno] CODE [adresa [,dlzka]]
 MERGE [!] [*] [cesta] [cislo] [meno]
VERIFY [!] [*] [cesta] [cislo] [meno]
VERIFY [!] [*] [cesta] [cislo] [meno] SCREEN$
VERIFY [!] [*] [cesta] [cislo] [meno] DATA var()
VERIFY [!] [*] [cesta] [cislo] [meno] CODE [adresa [,dlzka]]
Bezne kazetove prikazy. Cislo znamena nastavenie load-kurzora - je uplne rovnocenne polozke ` v parametri cesta. Vsetky tieto prikazy pracuju v aktualnom adresari, alebo v adresari specifikovanom v ceste (ktory sa tym stava aktualny). SAVE vzdy nahrava subory na koniec adresara. Vykricnik a hviezdicka na zaciatku prikazu sa ignoruju - koli syntaxi prikazov LOAD ! v basicu 128 a LOAD * v D80. Vsetky prikazy VERIFY skutocne porovnavaju obsah pameti a v pripade nezhody o tom vypisu riadne chybove hlasenie.

NEW [cesta] [local] parameter
Nahratie a spustenie suboru specifikovaneho parametrom. Ak je parameter cislo tak sa nahra dany spustitelny subor z aktualneho adresara. Ak je parameter retazec tak sa hlada subor s takymto menom v aktualnom adresari. Ak sa nenajde v aktualnom adresari, bude sa hladat v nultom adresari. Ak sa nenajde ani tam, tak chyba. Spustitelne subory su alebo Bytes alebo Program. Ak je dany subor basic tak sa normalne nahra a spusti (ak ma nejake LINE) ako prikazom LOAD. Ak je dany subor typu Bytes tak sa vykona nasledovna cinnost:

Nech je AAA zaciatocna adresa suboru. Potom sa spravi:
  IF AAA >= #5d00 THEN CLEAR AAA-1
  LOAD parameter CODE AAA
  CONTINUE AAA

Ak parameter nie je uvedeny, tak sa vykona klasicky basicovy NEW.

4. Nove basicove funkcie

Cielom tychto funkcii je poskytnut programom v basicu informacie, ktore by boli pre basic inak nepristupne (bez pomoci strojaku). Jedna sa o informacie o diskete, o jednotlivych adresaroch, o suboroch v tychto adresaroch,...

FN ?
Vrati cislo verzie systemu.

FN @
Vrati cislo aktualneho drajvu.

FN $
Vrati cislo aktualeho adresara.

FN `
Vrati polohu load-kurzora. [libra = SS+X]

FN #
Vrati pocet suborov v aktualnom adresari.

FN %
Vrati pocet volnych sektorov na aktualnom disku.

FN *
Vrati 32 znakovy retazec v ktorom je adresarova polozka obsahujuca informacie o subore na ktory ukazuje load-kurzor. Napriklad FN *(7 TO 16) predstavuje meno suboru a FN *(6 TO 22) vrati klasicku magnetofonovu hlavicku tohto suboru. Ak load-kurzor ukazuje mimo adresara, tak funkcia vrati prazdny retazec. Ak je HI(load-kurzor)=255 (vyssi bajt 255) tak tato funkcia vtedy vrati 32 bajtovu polozku obsahujucu meno diskety.

FN (c)
Toto je specialna funkcia, ktorej vysledok je retazec obsahujuci celu pamet od adresy 1 az po 65535.

Nazad / back