Vše o MZ-800 -  Hardware

 

Zpět Nahoru

 

 

        Obsah této stránky:

Hardware
Testování klávesnice
Řízení kazetového magnetofonu

HARDWARE
Součást MZ-800 je díl 8255.8255 je zodpovědný za obhospodařování magnetofonu a klávesnice. Obrázek dole představuje adresování a způsob provozu dílu portů.

____          _____________
C5E0   ------!            !-------\  PA
             !            !-------/    0...7
  A0   ------!            !
             !            !
  A1   ------!            !
             !            !/------   PB
D      -----\!            !\------     0...7
 0...7 -----/!            !
             !            !
             !            !-------\  PC
             !            !-------/    0...3
  __         !            !
  MW   ------!            !/------   PC
 ___         !            !\------     4...7
 EMR   ------!____________!


Druh provozu, používaný v MZ-800 zobrazuje obr.1. Port A je nastaven na výstup, port B na vstup a na portu C jsou čtyři vedení s nižší hodnotou nastaveny na výstup, čtyři s vyšší hodnotou jsou nastaveny na vstup. Toto se provede pomocí CONTROLWORD 8AH (pomocí řídícího slova 8AH). Pomocí tohoto řídícího bytu musí být nastaven mód (druh provozu), než se s tímto dílem pracuje. ROM monitor program toto provádí pomocí standardního programu 073EH.

Úplný výčet druhů provozu najdete v následující tabulce.

Tabulka 1 : Řídící slova pro 8255 v módu 0 (adresa E003H)
            A = výstup  E = vstup

     + Řídící slovo (bit)+   port A  +  port B  +  port  C
Hex  +  7 6 5 4 3 2 1 0  + všechny b.+všechny b.+4-7.b.+0-3.b.
--------------------------------------------------------------
80   +  1 0 0 0 0 0 0 0  +      A    +     A    +   A  +  A
81   +  1 0 0 0 0 0 0 1  +      A    +     A    +   A  +  E
82   +  1 0 0 0 0 0 1 0  +      A    +     E    +   A  +  A
83   +  1 0 0 0 0 0 1 1  +      A    +     E    +   A  +  E
88   +  1 0 0 0 1 0 0 0  +      A    +     A    +   E  +  A
89   +  1 0 0 0 1 0 0 1  +      A    +     A    +   E  +  E
8A   +  1 0 0 0 1 0 1 0  +      A    +     E    +   E  +  A
8B   +  1 0 0 0 1 0 1 1  +      A    +     E    +   E  +  E
90   +  1 0 0 1 0 0 0 0  +      E    +     A    +   A  +  A
91   +  1 0 0 1 0 0 0 1  +      E    +     A    +   A  +  E
92   +  1 0 0 1 0 0 1 0  +      E    +     E    +   A  +  A
93   +  1 0 0 1 0 0 1 1  +      E    +     E    +   A  +  E
98   +  1 0 0 1 1 0 0 0  +      E    +     A    +   E  +  A
99   +  1 0 0 1 1 0 0 1  +      E    +     A    +   E  +  E
9A   +  1 0 0 1 1 0 1 0  +      E    +     E    +   E  +  A
9B   +  1 0 0 1 1 0 1 1  +      E    +     E    +   E  +  E

Nyní musíme ještě řídící slovo předat do 8255. Na to si musíme ještě blíže prohlédnout adresy dílů. Adresuje se pomocí C5E0, A0 a A1. Tím je detekovatelný adresami E000H až E003H. Každá z těchto adres má určitý význam (CS = chip select - výběr chipu)


      E000H       adresa pro port A
      E001H          "    "   "   B
      E002H          "    "   "   C
      E003H          "    "   "   řídící slovo

Tyto adresy slouží společně s MW pro psaní a s EMR pro čtení. Psaní znamená výstup, čtení vstup.
 

Testování klávesnice
Porty A a B slouží k testování klávesnice. K tomu se přes výstup portu A posílá na sloupce 1 - 10 matice klávesnice (viz.obrázek klávesnice v dodatku ), postupně L potenciál. Při každém nařízení řádku se na vedení řádku 1 - 18 zkoumá, zda L potenciál přes matici prošel nebo ne. Z bodu kde se křižuje vedení řádků a sloupců se dá potom zjistit, která klávesa byla stisknuta. Tento druh testování klávesnice se též nazývá SCANNEN. Samozřejmě nemusí být vždy testována celá klávesnice, ale je též možne testovat pouze určité klávesy (nebo též netestovat) jako v programy monitoru standardní program 001EH. Vysvětleme si na základě krátkého programu spolupůsobení hardware a software. Při tom je nutno mít na zřeteli, že zde uvedená možnost testování klávesnice je realizovatelná, když E oblast v paměti není zapojena jako RAM ale jako KEY TIMER v oblasti od E000H až E070H (druh provozu MZ-80K).

Nejprve se na port A nastaví číslo sloupce, který má být testován (=8) pomocí :
  LD    A,F8H       3E F8
  LD    (KEYPA),A   32 00 E0

Pro stabilizaci se přidá NOP. Potom se přes port B vnese zpět informace o řádkách 11 až 18 pro sloupec 8.
  NOP               00
  LD    A,(KEYPB)   3A 01 E0

Nastaví se počátečná hodnota Carry bitu (bit přenosu) a dolu na bit 0 (SHIFT)
  OR    A           B7
  RRA               1F
  JP    C,?BRK2     DA 89 09

Je-li stisknuta klávesa SHIFT, nastaví se indikátor přenosu na 0 a pomocí dvojnásobného posunutí doleva se BREAK bit přenese do indikátoru přenosu a nastane BREAK.
  RLA               17
  RLA               17
  JR    NC,?BRK1    30 04       ;SHIFT & BREAK
                                ;CY = 0

Jestliže BREAK nebylo stisknuto, uloží se do akumulátoru hodnoty pro klávesu SHIFT (bit 6 = 1 ) , nastaven indikátor přenosu a skočí se zpět.
  LD    A,40H       3E 40
  SCF               37
  RET               C9

Jestližé bylo stisknuto BREAK, vymaže se indikátor přenosu, nastaví se Z-flag a skočí se zpět.
  XOR   A           AF
  RET               C9

Tento program tedy sdělí výsledek testování pomocí stavu flagů a bitů 4 - 6 v akumulátoru. Při tom znamenají :
a)    Z=1         bylo stisknuto SHIFT & BREAK
b)    D6=1 & Cy=1   "      "     SHIFT
c)    D5=1 & Cy=1   "      "     CONTROL (CTRL)
d)    D4=1 & Cy=1   "      "     SHIFT & CONTROL

V předcházejícím oddíle bylo provedeno testování zvláštních kláves jako např. SHIFT & BREAK pomocí specielního programu. Výsledek testování byl vyjádřen pomocí flagů. Ve většině případů ale má být testována celá klávesnice a výsledek testování by měl být jako hodnota v registru. Zde SHARP používá specielní, pro klávesy upravený kód, zobrazovací kód. Tato tab. kódů ale bohužel v uživatelské příručce vůbec není otištěna. V dodatku této knihy najdete tab. zobrazovacích kódů. Vlastní testování klávesnice se provádí standardním programem monitoru 0A50H. Výsledek testování je  k dispozici v registru BC. Při tom registr B obsahuje stav zvláštních kláves, tj. byla-li stisknuta klávesa SHIFT, BREAK, CTRL atd. To odpovídá zobrazení výsledných hodnot našeho posledního programu, čili když Z = 1, bylo stisknuto SHIFT & BREAK atd. Registr C obsahuje bod křížení čili řádku a sloupec, kde bylo zjištěno stisknutí klávesy. Obsah C se dá interpretovat jako následující:
 

   X X S S S Z Z Z
 

   X = nepoužito
   S = číslo sloupce
   Z = číslo řádku

Přitom dává např. testování stisknuté klávesy "A" v registru C hodnotu 20H nebo při stisknutí klávesy "B" hodnotu 21H. Program testování klávesnice monitoru nebere v úvahu sloupec 10 = F9H. Tím nemohou být z monitoru testovány klávesy funkcí. Následující program ve strojovém jazyce testuje klávesy funkcí F1 až F5 a potom provádí skok na předem naprogramovanou adresu.

FKLAVESA: LD    A,F9H
          LD    (KEYPA),A
          NOP
          LD    A,(KEYPB)
          CPL
          OR    A
          RET   Z
          EXX
          LD    D,00H
          LD    B,00H
FT1:      INC   B
          RLCA
          JR    NC,FT1
          LD    A,B
          RLCA
          LD    E,A
          LD    HL,FLEI-2 ;od adresy FLEI leží tab. skoků pro F1 až F5. Adresu a data skoků musíte zvolit sami
          ADD   HL,DE
          LD    C,(HL)
          INC   HL
          LD    B,(HL)
          POP   AF
          PUSH  BC
          EXX
          RET

Dejte pozor na to, že při provádění tohoto navrženého programu má testování F klávesy funkci GET. Program tedy proběhne pouze jednou, t.zn. že se nečeká na stisknutí klávesy. Jestliže nebyla stisknuta žádná F klávesa, vrátí řízení programu na hlavní program se Z-flag = 0.
 

Řízení kazetového magnetofonu
Kazetový magnetofon je řízen přes C port 8255. Tím má adresu E002H. Port C se nastavuje řídícím slovem 8AH pro 8255. Bity 0-3 pracují pro směr výstupu, bity 4-7 pro vstup. Než mohou být data vydána ev. přečtena z magnetofonu, musí se spustit motor. To se může udělat pouze ručně stisknutím PLAY nebo RECORD & PLAY. Procesor se ale ptá programem monitoru 'MOTOR' z adresy 069FH přes 4.bit portu C, zda motor běží. Tento program monitoru potom zkouší spustit motor řídícím impulsem na 3.bit portu C. Tento pokus má ale úspěch pouze tehdy, je-li PLAY a RECORD & PLAY ještě stisknuto a motor byl zastaven podprogramem 'MSTOP' na 0700H.Tím se dá motor pomocí software pustit a zastavit. To je důležité zvláště tehdy, když programy ev. bloky dat musejí být nejprve zpracovány, než může být přečten další blok dat. Vlastní nahrání bitů na magnetofon se provádí vždy přes bit 1 portu C. Nahrání programu je tedy vždy ve dvou dílech, informačním díle a v datech. Data jsou vlastní obsah programu,informační díl (označovaný též jako záhlaví) se skládá z:
  1.kód souboru           1 byt pro rozlišení druhu programu
  2.jméno programu        16 bytů+1 byt označení konce
  3.délka dat             2 byty
  4.počáteční adresa dat  2 byty
  5.prováděcí adresa      2 byty (startovací adresa)
  6.komentář              104 bytů (bez praktického významu)

Program pro zapsání z pracovní paměti se podle toho skládá vždy ze dvou dílů.
  1.Zapsání informační části (záhlaví). Tuto úlohu provádí standardní program monitoru "WRI" na adrese 0021H
  2.Zapsání dat. Tuto úlohu vyřizuje program monitoru "WRD" na adrese 0024H.

Než se odstartuje program pro zápis na kazetu, musí tedy být v oblasti paměti 10F0H až 116FH připravena data pro informační část. Tato data se potom standardního programu monitoru "WRI" zapíší na pásek jako záhlaví. Pro čtení z kazety přes 5.bit portu C se nejprve do této oblasti paměti nahraje informační část (záhlaví) a z něj se potom převezmou řídící data pro čtení dat.

 

Ú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