K mikropočítači SORD M5 bylo možné dokoupit přídavné zařízení FD-5. Toto
zařízení obsahuje oboustrannou disketovou mechaniků 3" (tři 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 textů. 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 sektorů 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žit
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 bloků 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 ze 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 - zapiš 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 bloků vyhrazených pro data (2), 00 (1),
z toho počet volných bloků pro data (2), 00 (1),
vyhrazeny počet hlaviček souborů (2), 00 (1),
z toho použito hlaviček souborů (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 textů,
ke komunikaci je použít princip paketových zpráv.
====== napsal LZR Soft, datum poslední editace: není známo =====
▲