Popis programu BW.COM pod CP/M ****************************** Program BW.COM v sobě skrývá program BFWD, což je intepretr jazyka Basic-F, který byl upraven pro spolupráci s disketovou mechanikou uskutečňovanou prostřednictvím řadiče WD2797B. Po odeslání příkazu BW v prostředí CP/M je uživatel vyzván, aby vložil do mechaniky A: disketu SKW a stiskl klávesu <SPACE>. Po stisku této klávesy je BFWD odstartován jako běžný cartridge program pro počítač SORD M5. BFWD se po spuštění nebo restartování ( CALL 0 ) ohlásí jako Basic-W a stejně tak jako Basic-F zjistí připravenost mechaniky ( mechanika hlásí připravenost, pokud je v ní zasunutá disketa ). Pokud mechanika není připravena nebo není-li připojena vůbec, nastaví se jako implicitní zařízení CMT: ( magnetofon ) a tiskne se prompt Ready. V opačném případě je nastaveno jako implicitní zařízení FD: ( disketa SKW ). Poté je z diskety načten a spuštěn program *BOOT* ( pokud se na disketě nachází ). Program *BOOT* může být jakýkoli soubor ( basic, strojový kód, obrazovka! ... ) a je zcela na libovůli uživatele, co bude obsahovat. Standardně je s programem BFWD dodáván *BOOT*, který nabízí uživateli možnost spustit služební program MENU, nebo odejít do basiku. Program MENU umožňuje spouštět stiskem jedné klávesy různé služební programy, které umožňují kopírovat soubory, měnit jejich attributy, prohlížet disketu, formátovat disketu a tak podobně. Velkou předností BFWD je to, že umožňuje používat téměř libovolně naformátovanou disketu ( při formátování musí být splněna pouze jedna podmínka ), musí se mu ale sdělit, kolik je sektorů na stopě a kolik sektorů zabírá jeden alokační blok ( obojí musí být sudé číslo ). Ostatní už si vypočítá sám. Standardně předpokládá SKW disketu s 58 sektory na stopě po obou stranách a s 81 stopami. Alokační blok má 18 sektorů po 128mi bajtech. Celková kapacita 360 KB diskety je proto 587.25 KB. Nultou stopu BFWD nijak nevyužívá, předpokládá se, že na ní bude bootstrap, jméno diskety a podobně. Proto je využitelná kapacita "pouhých" 571.5 KB pro soubory. Do direktoráře se vejde 144 hlaviček jejichž nedostatek se projeví pouze tehdy, pokud všechny soubory mají méně než 2.25 KB. Zapsat lze soubor libovolné délky. Disketu lze chránit před zápisem klasicky nastavením write protect ( u 3.5 palcové diskety odkrytím okénka, u 5.25 palcové diskety jeho zalepením ). Na "zaprotektorované" disketě nelze sice smazat žádný soubor ( ani omylem ), ale také na ní nelze nic zapsat. Proto je umožněno označovat soubory jako chráněné před smazáním ( attribut PROTECT v hlavičce souboru ). V takovém případě disketa nemusí být protektorována, je možné na ní normálně zapisovat, lze mazat nepotřebné soubory a tak dále, pouze soubory s nastaveným bitem PROTECT smazat nelze. Rovněž tak je možné označovat soubory jako skryté ( attribut HIDDEN v hlavičce souboru ), což znamená, že takto označné soubory se výpisu direktoráře příkazem BFWD nezobrazují ( zbytečně neodvádějí pozornost ). Pochopitelně v BFWD existují různá omezení oproti "plnokrevnému" Basiku-F. Na disketě může být otevřen v jednom okamžiku pouze jeden soubor a je-li otevřen, nelze použítvat příkazy KILL a FX. Soubor nelze otevřít pro APPEND, tím pádem nemá význam příkaz RECORD. Zrušeny byly také příkazy NOLIST a GCOPY. Nyní se v LISTingu sice zobrazí jako známé příkazy ( tzn. malými písmeny ), ale jinak hlásí Err 130. BFWD nezná zařízení FX: a SIO: , zařízení PRI: sice formálně existuje, ale chová se stejně jako zařízení PRT:. Obecně platí, že BFWD vypisuje shodná chybová hlášení jako originální Basic-F, ke kterému je připojeno zařízení FD-5. Příkaz KILL "jméno" slouží ke smazání specifikovaného souboru. Smazat nelze soubor s nastaveným bitem PROTECT. Při specifikaci souboru lze použít otazníkovou konvenci. Příkaz FX vypíše seznam souborů a volnou kapacitu na disketě. Výpis lze přerušit stiskem klávesy <RETURN>. Volná kapacita je uvedena v sektorech. Vydělením osmi vyjde kapacita v KB a vydělením osmnácti vyjde v alokačních blocích. To má také význam, protože i ten nejkratší soubor obsahující pouhý jeden bajt zabírá na disketě celý alokační blok ( tedy 2.25 KB ). V příkazech OLD, SAVE, VSAVE, VERIFY, OPEN, LIST a KILL lze uvést plnou specifikaci jména: "DEVXY:NAME", kde "DEV" je jméno zařízení, "X" je označení drajvru A až H, "Y" je značení mechaniky 0 až 9 a "NAME" je jméno souboru. "DEV" může mít 1 až 3 znaky ( standardně zná BFWD zařízení CNS, GRP, PRT, CMT a FD ) a "NAME" musí mít 1 až 9 znaků. Parametry drajvr a mechanika měly význam pouze u zařízení FX v originálním Basiku-F, v BFWD na ně není brán zřetel. Poté, co je při příkazu OLD nebo OPEN nalezena hlavička nějakého souboru, je vypsáno hlášení Find "jméno.TYP", nebo Skip "jméno.TYP", kde TYP označuje typ souboru a může být: CMI - souvislý datový soubor určený do RAM ( z Basiku-I ) CM - souvislý soubor určený do RAM ( zpravidla strojový kód ) MCN - strojový kód, který se má po načtení odstartovat MC - strojový kód, který se má po načtení odstartovat DAT - nesouvislý datový soubor ( vytvořený přes OPEN ) VM - souvislý datový soubor určený do VIDEO RAM BI - program v jazyce Basic-I FC - tabulka procesoru FALC BG - program v jazyce Basic-G LSG - listing programu v jazyce Basic-G SC - informace o opačné obrazovce ( generuje Basic-G ) BF - program v jazyce Basic-F BFS - program v Basiku-F, který se má po načtení odstartovat LSF - listing programu v jazyce Basic-F EXT - program ve FORTHu nebo PASCALu ??? - neznámý typ souboru Před zapsáním jakéhokoli souboru na disk ( příkazy SAVE, VSAVE, OPEN ... FOR OUTPUT ) lze příkazem POKE &73DA,X určit attributy souboru. Bit 7 čísla X určuje PROTECT a bit 6 čísla X určuje HIDDEN. Toto nastavení zůstává platné až do stisku <SHIFT>+<RESET> nebo nového "přepoukování". Zbývající bity jsou bez významu. Protože LIST využívá pro své potřeby stejný bafr jako zařízení FD, dochází zde ke kolizi, díky které nelze zapsat a poté zpětně přečíst z disku listing basického programu ( nelze tedy načíst soubor uložený příkazem LIST "FD:jméno" ). Chybová hlášení související se zařízením FD ******************************************* 23 - mechanika neohlásila připravenost ve stanoveném čase 105 - nevhodný přístup k zařízení, nesprávný směr transferu dat 106 - nevhodný typ souboru ( OPEN nelze pro souvislé soubory ) 130 - příkaz nelze vykonat, chybí jeho rutina 132 - není dovoleno prázdné jméno souboru 152 - pokus o čtení dat za koncem souboru 154 - na disku není dost místa pro zapisovaný soubor 155 - plný direktorář, není místo pro další hlavičku souboru 160 - zařízení FD je aktivní, při OPEN nelze použít FX a KILL 170 - žádaný soubor není na disku 172 - jedno jméno souboru nemůže být použito dvakrát 182 - soubor je chráněn před smazáním, nelze na něho použít KILL 202 - na disk nelze zapisovat, má nastavený write protect 205 - chyba při hledání sektoru, nebyl na disku nalezen 206 - chyba kontrolního součtu sektoru 207 - ztráta dat, CPU nestačí předávat/přebírat data od řadiče 214 - chyba při zápisu sektoru nebo ztráta signálu ready Systémové proměnné ****************** 73D2 SECALB 18T počet sektorů v jednom alokačním bloku 73D3 SECTRK 58T počet sektorů na jedné stopě z obou stran 73D4 ADRBUF 7751 adresa bafru pro uložení sektoru 73D6 ADRBIT 760D adresa bafru pro vytváření bitové mapy ABM 73D8 DIRALB 02 počet alokačních bloků vyhražených pro DIR 73D9 DRIVER 01 povel pro selekci disku - OUT (7C),DRIVER 73DA PROHID 00 atributy PROTECT a HIDDEN pro zápis IDT Tyto proměnné BFWD nastavuje na uvedené hodnoty vždy při stisku kombinace kláves <SHIFT>+<RESET>. Pracovní proměnné zařízení FD: se nachází od adresy 73DB až do adresy 73ED. Dojde-li k situaci, že je hlášena chyba Err 160, přestože zařízení FD: není aktivní, je potřeba vynulovat systémovou proměnnou INFO na adrese 73E5. Čísla uvedená v systémových proměnných, za kterými je písmeno T jsou dekadická, ostatní čísla jsou hexadecimální. ===== napsal LZR Soft, datum poslední editace: 10. 1. 1992 =====