Periferní zařízení FD-5

K mikropočítači SORD M5 bylo možné dokoupit přídavné zařízení FD-5. Toto zařízení obsahuje oboustrannou disketovou mechaniků 3,5 palce, řadič INTEL, který ji obsluhuje a jednoduchý mikropočítač, postavený na bázi Z80, který zastává funkci diskového systému a obstarává komunikaci s počítačem M5. Propojení FD-5 a M5 je vyřešeno paralelním stykem (8255). M5 vysílá do FD-5 tzv. akční texty, na které mu FD-5 odpovídá (dalo by se to přirovnat k volání služeb BDOSu a BIOSu). S jednotkami FD-5 (k počítači jich může být připojeno až osm) umí komunikovat interpretr jazyka Basic-F a grafický program Paint Designer. Ostatní jazyky k tomu potřebují speciální ovladače. Basic-F umožňuje zapisovat na FD-5 a číst z FD-5 pomocí příkazů SAVE, VSAVE, OLD, VERIFY, OPEN, PUT a GET. Dále je pak možné komunikovat s FD-5 přímo, pomocí příkazů FX a REG, které mají tvar: FX DRAJVR,"TXT",AF,BC,DE,HL,BAFR,DÉLKA, - do FD-5 BAFR,DÉLKA,PAMEŤ:PRINT REG(0);REG(1);REG(2);REG(3) - z FD-5 DRAJVR - určuje jedno z osmi možných připojených zařízení FD-5 (0 až 7). TXT - akční text (velkými písmeny) AF...HL - vysílané registry (viz níže) BAFR - adresa vyrovnávací paměti pro vysíláná nebo přijímaná data DELKA - délka vysílaných nebo přijímaných dat PAMET - typ paměti, ve které je BAFR (0=RAM, 1=VRAM) REG(x) - vrácené registry (0=AF ... 3=HL) Poznámka "do FD-5" znamená, že se definují data, která se vysílají z M5 do FD-5. Analogicky "z FD-5" znamená, že se definují data, která se vysílají z FD-5 do M5. Funkce REG se neváže jen na registry vyslané z FD-5, ale lze ji používat obecně k zobrazení registrů procesoru Z80. FD-5 zná několik desítek akčních textu. U každého akčního textu jsou uvedeny očekávané vstupní a vysílané výstupní údaje. Akční text sestáva vždy že tří velkých písmen abecedy (první údaj na řádce). Čísla v závorkách označují délku (dekadicky) přenášených dat. Bafr IDTCHN (63) obsahuje informace o otevřeném souboru. Obsah: atribut souboru (1), jméno souboru (9), začátek (2) délka (2) a startovací adresa (2) programu, rozšiřující atribut (1), "BF" (2), nevyužito (22), heslo souboru (4), ochrany souboru (1), číslo prvního bloku souboru (2), 00 (1), délka souboru - počítadlo (2), 00 (1), délka souboru (2), 00 (1), číslo posledního bloku (2), 00 (1), offset posledního bytu v bloku (1), 00 (1), předposlední ukazatel bloku (2), 00 (1) Speciálními příkazy lze číst obsah paměti, měnit obsah paměti a spouštět program v paměti jednotky FD-5. Zadáním registru při RMM BC=0100H, HL=FD00H se provede odemknutí paměti v FD-5 pro příkazy RMM, WMM a EXM. Při uzamčené paměti se čte a píše vždy na adresu 8000H a EXM hlásí Err 130. FD-5 má každou disketu rozlišenou jménem, které zadává uživatel a devíti bajty, jejichž obsah je obsažen náhodně vygenerovanými čísly, čímž se zaručuje rozdílnost i stejně pojmenovaných disket. FD-5 dále umožňuje chránit disketu heslem. Neuvedením správného hesla je disketa naprosto nepřístupná. Lze chránit také jednotlivé skupiny bloků před čtením nebo před zápisem. K tomuto účelu jsou vyhrazeny dva bajty (jeden pro čtení, druhý pro zápis). Bity těchto bajtů se vztahují na (nasetovane bity jsou aktivní, pro stav "inverzně" je tomu naopak): 0 - systémové bloky 1 - FAT bloky (inverzně) 2 - bloky direktoráře 3 - bloky určené pro data (inverzně) 4 - bloky rezervovaně na konci diskety 5 - nepoužit 6 - všechny bloky, na než pak nelze použít příkaz CPY 7 - všechny bloky, na než pak nelze použít příkazy RVI, FNM Rovněž lze chránit jednotlivé soubory na disketě. Bajt ochrany souboru je uložen v direktoráři a jeho bity chrání soubor před: 0 - smazáním a nebo přejmenováním 1 - čtením 2 - zápisem 3 - změnou hlavičky (příkazy SDR, RDR, WDR) 4 - nepoužit 5 - nepoužit 6 - nepoužit 7 - změnou těchto ochran (příkaz ATR) Basic-F důsledně vypíná veškeré ochrany a hesla. K jejich zavedení slouží speciální podprogram CHATR. Akční texty =========== WHO - odpověď od FD-5, jaké je jednotka FD-5 verze do FD: registry: nic bafr : nic z FD: registry: nemění bafr (16): "text verze FD-5." FMT - formátování diskety do FD: registry: B - mechanika, C - skew faktor na prokládání sektorů bafr (7): počet stop na stranu (2), 00 (1), počet stran na disketě (1), 00 (1), počet sektoru na stopě (1), 00 (1) z FD: registry: nemění bafr : nic GEN - inicializace diskety do FD: registry: B - mechanika bafr (128): "M5 BASIC-FFD-5 1.0 1.0 " počet stop na stranu (2), 00 (1), počet stran na disketě (1), 00 (1), počet sektoru na stopě (1), 00 (1), počet bloku na disketě (2), 00 (1), začátek direktoráře (2), 00 (1), konec direktoráře (2), 00 (1), počet hlaviček souboru (2), 00 (1), začátek FAT (2), 00 (1), konec FAT (2), 00 (1), první blok pro data (2), 00 (1), poslední blok pro data (2), 00 (1), prostor pro úschovu původního jména diskety při FNM (9), jméno diskety (9), náhodná čísla identifikující disketu (9), ochrany skupin bloku diskety před čtením (1), ochrany skupin bloku diskety před zápisem (1), 00 (1), heslo diskety (9), zbytek nevyužít z FD: registry: nemění bafr : nic IDV - přečtení parametrů diskety v mechanice a její přijmutí do FD: registry: B - mechanika bafr : nic z FD: registry: nemění bafr : nic RVI - načtení boot sektoru z diskety do FD: registry: B - mechanika bafr : nic z FD: registry: nemění bafr (128): blok dat viz vstupní bafr pro GEN VPR - zadání nového hesla a ochran skupin bloku diskety do FD: registry: nic bafr (22): mechanika (1), současné heslo diskety (9), nové ochrany skupin bloku diskety před čtením (1), nové ochrany skupin bloku diskety před zápisem (1), 00 (1), nové heslo diskety (9) z FD: registry: nemění bafr : nic FNM - přejmenování diskety do FD: registry: nic bafr (28): mechanika (1), staré (9) a nové (9) jméno diskety (9), nová náhodná čísla pro identifikaci diskety (9), z FD: registry: nemění bafr : nic CPY - kopírování z diskety na disketu po blocích. Diskety musí mít shodnou kapacitu, délku FAT a direktoráře do FD: registry: B - mechanika zdrojové diskety, C - mechanika cílové diskety bafr (18): heslo zdrojové (9) a cílové (9) diskety z FD: registry: nemění bafr : nic RDB - čtení bloku direktoráře do FD: registry: A - mechanika, BC - číslo bloku bafr : nic z FD: registry: nemění bafr (256): blok direktoráře (256) WDB - zápis bloku direktoráře do FD: registry: A - mechanika, BC - číslo bloku bafr (256): blok direktoráře (256) z FD: registry: nemění bafr : nic RBL - čtení libovolného bloku diskety do FD: registry: A - mechanika, BC - číslo bloku bafr : nic z FD: registry: nemění bafr (256): blok dat (256) WBL - zápis libovolného bloku diskety do FD: registry: A - mechanika, BC - číslo bloku bafr (256): blok dat (256) z FD: registry: nemění bafr : nic NAM - přejmenování souboru do FD: registry: nic bafr (23): mechanika (1), staré jméno souboru (9), heslo souboru (4), nové jméno souboru (9) z FD: registry: nemění bafr : nic OPN - otevření souboru do FD: registry: A, D - požadovaný přístup, BC - délka záznamu ( RECORD ) E - číslo kanálu FD-5 bafr (64): mechanika (1), IDTCHN (63) z FD: registry: nemění bafr : nic RDC - přečtení kanálových informací do FD: registry: E - číslo kanálu bafr : nic z FD: registry: nemění bafr (63): IDTCHN (63) CHN - zjistí volný kanál v FD-5 do FD: registry: nic bafr : nic z FD: registry: E - číslo kanálu bafr : nic WBI - zápis bloku dat do souboru do FD: registry: B - délka bloku, E - číslo kanálu, HL - zdrojová adresa dat v M5 bafr (B): blok dat (B) z FD: registry: A - poslední byte, HL - viz do FD zvětšeno o zapsané byte bafr : nic RBI - čtení bloku dat že souboru do FD: registry: B - délka bloku, E - číslo kanálu, HL - cílová adresa dat v M5 bafr : nic z FD: registry: A - poslední byte, HL - viz do FD zvětšeno o přečtené byte bafr (B): blok dat (B) WTX - zápis bloku textu do souboru do FD: registry: B - délka bloku, E - číslo kanálu, HL - zdrojová adresa dat v M5 bafr (B): blok dat (B) z FD: registry: A - poslední byte, B - zbylo nezapsáno, C - bylo zapsáno, HL - viz do FD zvětšeno o zapsané byte bafr : nic RTX - čtení bloku textu že souboru do FD: registry: B - délka bloku, E - číslo kanálu, HL - cílová adresa dat v M5 bafr : nic z FD: registry: A - poslední byte, B - zbylo nepřečteno, C - bylo načteno, HL - viz do FD zvětšeno o přečtené byte bafr (B): blok dat (B) MAP - nastavení záznamu ( RECORD ) souboru do FD: registry: BC - číslo záznamu, E - číslo kanálu bafr : nic z FD: registry: nemění bafr : nic SAP - přeskočení úseku dat do FD: registry: B - počet vynechaných byte, E - číslo kanálu bafr : nic z FD: registry: nemění bafr : nic CLS - uzavření souboru a kanálu v FD-5 do FD: registry: D - =1 uzavření kanálu, nezařazení souboru do direktoráře, do souboru zapsané bloky nejsou vyřazeny z evidence FAT, E - číslo kanálu bafr : nic z FD: registry: nemění bafr : nic DEL - smazání souboru do FD: registry: nic bafr (14): mechanika (1), jméno souboru (9), heslo souboru (4) z FD: registry: nemění bafr : nic SDR - hledání hlavičky souboru do FD: registry: nic bafr (14): mechanika (1), jméno souboru (9), heslo souboru (4) z FD: registry: BC - číslo hlavičky bafr (63): IDTCHN (63) RDR - přečti hlavičku do FD: registry: BC - číslo hlavičky bafr (5): mechanika (1), heslo souboru (4) z FD: registry: A - =0 neplatná hlavička, soubor byl smazán bafr (63): IDTCHN (63) WDR - zápis hlavičku do FD: registry: BC - číslo hlavičky bafr (68): mechanika (1), současné heslo souboru (4), IDTCHN (63) z FD: registry: nemění bafr : nic ATR - změna ochrany souboru do FD: registry: E - nový atribut ochrany bafr (14): mechanika (1), jméno souboru (9), heslo souboru (4) z FD: registry: nemění bafr : nic CAP - vrací informace o obsazení prostoru na disketě do FD: registry: B - mechanika bafr : nic z FD: registry: nemění bafr (12): počet bloku vyhrazených pro data (2), 00 (1), z toho počet volných bloku pro data (2), 00 (1), vyhrazeny počet hlaviček souboru (2), 00 (1), z toho použito hlaviček souboru (2), 00 (1) TDA - opakování posledních dat do FD: registry: nic bafr : nic z FD: registry: nemění bafr (??): blok dat (??) TRA - opakování posledních registru do FD: registry: nic bafr : nic z FD: registry: poslední registry bafr : nic WMM - zápis bloku dat do vnitřní paměti FD-5 do FD: registry: B - délka bloku, DE - na adresu bafr (B): blok dat (B) z FD: registry: nemění bafr : nic RMM - čtení bloku dat z vnitřní paměti FD-5 do FD: registry: B - délka bloku, DE - z adresy bafr : nic z FD: registry: nemění bafr (B): blok dat (B) EXC - spuštění programu ve vnitřní paměti FD-5 do FD: registry: HL - adresa rutiny bafr : nic z FD: registry: odpověď z rutiny bafr : nic DOM - přechod do jiného protokolu komunikace. Procesor Z80 komunikuje s řadičem INTEL za použití módu sense interrupt, FD-5 komunikuje s vnějším světem (server) bez pomoci výše uvedených akčních textu, ke komunikaci je použít princip paketoých zpráv. ====== napsal LZR Soft, datum poslední editace: není známo =====