Vše o MZ-800 - Quick disk MZ-1F11

 

Zpět Nahoru Další

 

 

        Obsah této stránky:

bullet

Quick Disk MZ-1F11

bullet

Řídící a kontrolní kódy pro rutinu E010H.

bullet

Stavba záhlaví quick disku.

bullet

Další užitečné podprogramy v ROM.

QUICK DISK MZ-1F11
Vše v následující se vztahuje na Quick disk model MZ-1F11. Nebudeme se zde blíže zabývat řízením Quick disku z BASICu, protože je dostatečně přesně popsáno v příručce Sharp. Mnohem více bychom chtěli zdůraznit možnosti použití Quick disku v programech napsaných ve strojovém kódu.
 

Všeobecně:
Pomocí od E000H do FFFFH ležící ROM(jen u MZ-800 a MZ-700, když je připojen Quick disk) můžete nahrát na disk maximálně 34 souborů o max. 64 Kbytů. Systémem je sice na disk připuštěno až 50 souborů, ale vyrovnávací paměť pro adresář stačí jen pro 34  souborů.Ale vy se pravděpodobně nikdy nedostanete do situace, aby jste museli nahrávat více než 34 souborů na jeden Quick disk. Tyto soubory leží na Quick disku jako v dlouhém řetězu bytů, a ne jako na normálních floppy discích, kde jsou rozděleny na sektory a stopy. To má, ale bohužel za následek, že žádné jednotlivé soubory nemohou být smazány nebo přehrány. Máte pouze možnost Quick disk nově formátovat a tím smazat všechny soubory. Standardní program E010H provádí kompletní řízení Quick disku ale předtím musí být vždy zadáno příslušným kódem jakou operaci má Quick disk provádět. Příslušná operace se vybírá řídícím kódem, který se předává na paměťové buňce 1130H.

 

Řídící a kontrolní kódy pro rutinu E010H.

  01  READY CHECK    - kontroluje,zda je Quick disk připraven k nasazení. Jestliže není, je indikátor pře nosu nastaven na 1.
  02  FORMAT         - formátuje Quick disk
  03  READ           - čte blok dat (od záhlaví)
  04  SAVE           - ukládá blok dat na quick disk (od záhlaví)
  05  HEADPOINTCLEAR - nastavuje bod záhlaví na počáteční hodnotu (inicializace)
  06  Vypíná motor

Tento kód musí být předán na buňku paměti 1130H, než se zavolá startovací program E010H. Bod záhlaví představuje hexadecimální kód, který se předává na adrese 113DH, a tzv. označuje bod na quick disku, odkud má číst nebo zapisovat. Pro READ(kód=3) a SAVE(04) je tento bod interpretován jako počáteční bod a po čtení/zapsání je nově nastaven. Standardní program předává v indikátoru přenosu zpět, zda došlo k chybě. Jestliže je Cy=1, je v akumulátoru popsán druh chyby.

Akumulátor   Druh chyby                                         Adr.zprávy

28H          not found err(soubor nebyl nalezen)                F290H
 
39H          bad disc err(disk není v pořádku)                  F319H

2EH          write protect(disk s ochranou proti psaní)         F2D6H

32H          not ready err(quick disk není připraven)           F2E7H

35H          no file space err(už žádné místo na disku)         F2F4H

36H          unformat err(disk není formátován)                 F309H

2AH          already exit err(jméno souboru již existuje)       F2C4H

33H          too many files err(příliš mnoho souborů na disku)  F2A2H

00H          BREAK(přeruší pomocí SHIFT+BREAK)                  F329H

Zbytek znamená - hard error                                     F2B8H

Od příslušné adresy zprávy je v ROM uloženo odpovídající chybové hlášení v ASCII formátu a může být vytištěno na obrazovku následujícím programem:

  LD    DE, `adresa zprávy`
  CALL  0006H
  CALL  0015H

 

Stavba záhlaví quick disku.
Záhlaví quick disku je velmi podobné záhlaví u startovacích programů pro kazetu, a leží v oblasti od 10F0H do 112FH.

Význam dat jednotlivě:

10F0H  kód souboru:  01H u programů ve strojovém jazyce  "OBJ"
                     02H u programů v BASICu             "BTX"
                     03H u souboru dat v BASICu          "BSD"
                     04H u rozptýlených souborů BASICu   "BRD"
                     05H                                 "RB"
                     07H                                 "LIB"
                     0AH                                 "SYS"
                     0BH                                 "GR"
                     94H u textových souborů z TEXY      "TXT"
                     95H u souborů LISPu                 "LSP"

Poznámka:
kódy 94H a 95H adresář monitoru nepozná, ale označuje je jako `???` soubor.

10F1H do 1101H   jméno souboru s koncovou značkou(0DH)

1104H            délka následujícího souboru

1106H            počáteční adresa bloku dat

1108H            adresa autostartu programu

Ostatní adresy oblasti záhlaví jsou nevyužity.
 

Další užitečné podprogramy v ROM.
EF27H            READY check      odpovídá E010H s (1130H)=01

F25FH            Headpoint clear  odpovídá E010H s (1130H)=05

E2E8H            Vypnutí motoru   odpovídá E010H s (1130H)=06

EEF7H            Filesearch
Hledá na disku soubor, jeho jméno je stejné jako v adrese 11A3H. Jestliže jméno v 11A3 začíná 0DH (čili nebylo žádné jméno vloženo), vezme první soubor z disku. Nastaví se bod záhlaví a záhlaví souboru se uloží od 10F0H po 112FH. Při tomto se nebere v úvahu kód souboru(stojí v 10F0H). Jestliže potřebujete, můžete ještě přezkoušet kód souboru. Filesearch musí být inicializován s F25FH (Headpoint clear). Při novém zavolání filesearch bez nové inicializace se hledá dále od místa, kde skončilo poslední hledání. Jestliže filesearch narazí na chybu, zastaví se na Cy=1.
Pozor: Mezi vyvoláním více filesearch nesmí mez nimi uplynout příliš dlouhá doba, protože by z technických důvodů mohly být některé soubory přeskočeny.Čas nestačí například k zobrazení jména souboru na obrazovce. Proto je pro adresář také zapotřebí vyrovnávací paměť.

EFA2H            File end search
Hledá konec dat na quick disku,nastavuje bod záhlaví a zkoumá, zda  eventuelně již není  soubor s tímto jménem (v záhlaví od 10F1H maximálně 16 znaků + CR),nebo zda na disku není příliš mnoho souborů (max. 50).Podprogram file end search se provede úspěšně bez chyby pouze tehdy,je-li nastaven Cy=1 a A=28H (not found).

Nyní k nejdůležitějším programům LOAD a SAVE, které se oba vyvolávají přes E010H.
 

LOAD
Jak jsme se již nahoře zmínili, je LOAD inicializováno kódem 03 v (1130H). Mimo kódu a bodu záhlaví, který byl nastaven pomocí file search, potřebuje LOAD ještě startovací adresu oblasti, do které má být soubor nahrán, delku souboru k nahrání a další kód, který je zapotřebí k rozpoznání datového souboru (k rozlišení od záhlaví).
Data quick disku:
  start. adresa na (1132H)
  délka         na (1134H)
  kód 03H       na (1130H)

  2.kód 01H     na (1131H)
 

SAVE
Save je popsán kódem 04 v 1130H a kódem 04 v 1131H. Kromě toho ještě musí být předána délka záhlaví 0040H, jeho startovací adresa 10F0H, startovací adresa oblasti, která má být nahrána a její délka. Následující tabulka popisuje, kde musí být data předána.
  kód           na (1130H) = 04
  2.kód         na (1131H) = 04
  zač.záhlaví   na (1132H) = 10F0H
  délka z.      na (1134H) = 0040H
  začátek DATA  na (1136H)
  délka   DATA  na (1138H)

DATA znamená oblast k nahrání.

Teď ještě příklady k formátování, LOAD a SAVE.
 

Formátování:
  CALL  EF27H       ;test je-li QD připraven
  JP    C,ERROR     ;jestli Cy=1 error(not ready err)
  LD    A,02H       ;kód pro formátování
  LD    (1131H),A   ;kód odložit
  CALL E010H        ;hlavní program QD
  JP    C,ERROR     ;je-li Cy=1 tab.chyb.hlášení
 

LOAD:
  CALL EF27H        ;test je-li QD připraven
  JP    C,ERROR     ;je-li Cy=1 error(not ready err)
  LD    DE,EE65H    ;text "jméno souboru ? "
  CALL  0006H       ;posun řádky
  CALL  0015H       ;výtisk textu
  CALL  0006H
  LD    DE,11A3H    ;vyrovnávací pamět pro jméno souboru
  CALL  0003H       ;vložit řádku
  LD    A,(DE)      ;1 znak ve vyrovnávací paměti
  CP    1BH         ;je-li break, pak error
  CALL  F25FH       ;headpoint clear
  CALL  EEF7H       ;hledání souboru
  LD    HL,(1104H)  ;délka souboru (v záhlaví)
  LD    (1134H),HL
  LD    HL,(1106H)  ;počáteční adresa souboru
  LD    (1132H),HL
  LD    HL,0103H    ;kód 03 a 2. kód 01
  LD    (1130H),HL
  CALL  E010H       ;hlavní program QD
  JP    C,ERROR
  CALL  E2E8H       ;vypnutí motoru
  RET
 

SAVE
  CALL  EF27H       ;test zda QD připraven
  JP    C,ERROR    
  LD    DE,EE65H    ;text "jméno souboru ? "
  CALL  0006H
  CALL  0015H
  CALL  0006H
  LD    DE,11A3H    ;vstupní vyrovnávací paměť
  CALL  0003H       ;vložené řádky
  LD    A,(DE)
  CP    1BH
  JP    Z,ERROR     ;viz nahoře
  EX    DE,HL       ;vyr.paměť 11A3H do HL
  LD    DE,10F1H    ;vyr.paměť pro jméno souboru v záhlaví
  LD    BC,0010H    ;max.délka jména souboru
  LDIR              ;blokový přenos
  LD    A,0DH
  LD    (DE),A      ;nastavit konec
  LD    HL,délka    ;do HL vložit délku souboru
  LD    (1104H),HL  ;uložit adresu do záhlaví
  LD    HL,st.adr.  ;do HL vložit startovací adresu souboru
  LD    (1106H),HL
  LD    HL,Execute  ;do HL vložit adresu aut.startu
  LD    (1108H),HL
  LD    A,01H       ;kód pro cílový soubor
  LD    (10F0H),A
  CALL  F25FH       ;headpoint clear
  CALL  EFA2H       ;file end search
  JP    C,ERROR
  CP    28H         ;kód pro "not found"
  JP    NZ,ERROR
  LD    HL,(1104H)  ;délka
  LD    (1138H),HL
  LD    HL,(1106H)  ;startovací adresa
  LD    (1136H),HL
  LD    HL,0404H    ;kód 04 pro SAVE a 2. kód 04
  LD    (1130H),HL
  LD    HL,0040H    ;délka záhlaví
  LD    (1134H),HL
  LD    HL,10F0H    ;start záhlaví
  LD    (1132H),HL
  CALL  EO10H       ;hlavní program
  JP    C,ERROR
  CALL  E2E8H       ;motor vyp.
  RET

Zde uvedené programy mohou běžet jako podprogramy. Musí být ale ještě přidán chybový program, který potom vydává příslušná chybová hlášení.

 

Úvod | Sharp MZ-800 | 8 bit klub Brno | Download | Kniha návštěv | Vyhledání na těchto stránkách | Mapa stránek

 

Tyto stránky byly naposledy aktualizovány dne 08. 02. 2014      Copyright © 05/2006 - SCAV - Pavel Brázda webmaster(c)scav.cz

 

 

Google