1. Klávesnice
-------------
Řídící klávesy
┌───┐ ┌───┐ Přeřazovač. Po dobu stisku platí další význam klá-
│SHF│ │CNT│ kláves. SHiFt zpřístupňuje horní význam klávesy,
└───┘ └───┘ CoNTrol dolní, stisk obou nemá význam.
┌───┐ ReSeT systému. Uplatní se pouze při současném
│RST│ stisku klávesy CNT.
└───┘
┌────┐ Uživatelská klávesa, přerušuje vykonávání povelů
│STOP│ např. DUMP, MGLD, uplatní se zj. v uživatelských
└────┘ programech.
┌───┐ Potvrzení příkazu, tj. odeslání příkazového řádku
│EOL│ ke zpracování.
└───┘
Znakové klávesy
┌───┐ ┌───┐ generují ASCII kód příslušného znaku. Pro horní
│ A │ │ Z │ význam nutno stisknout SHF, pro dolní CNT.
└───┘ └───┘
Editační klávesy
┌───┐ ┌───┐
│<--│ │-->│ posuv kurzoru vlevo či vpravo o jeden znak
└───┘ └───┘
┌───┐ ┌───┐
│BGNL │ENDL posuv kurzoru na začátek / konec řádku
└───┘ └───┘
┌───┐ ┌───┐
│<--│ │-->│ se SHiFtem posouvá obsah řádku vůči kurzoru
└───┘ └───┘
┌───┐ ┌───┐
│DELT │INST zrušení / vložení znaku na pozici kurzoru
└───┘ └───┘
┌───┐
│CLL│ výmaz celého řádku
└───┘
┌───┐
│DELL výmaz řádku od kurzoru do konce
└───┘
┌───┐
│RCL│ opětné vyvolání naposled odeslaného řádku
└───┘
┌───┐
│C-D│ opětné vyvolání posledního chybového hlášení
└───┘
┌───┐
│WRK│ klávesa pro zápis do klíčů K0-K11
└───┘
┌───┐ tzv. softwarové klíče /K0-K11/, pro každou klávesu lze
│K10│ stiskem klávesy WRK nadefinovat text max. 80 znaků,
└───┘ stiskem klíče se obsah vypíše do editačního řádku
┌───┐
│PTL│ vypíná / zapíná opis odeslaného řádku do obrazovky
└───┘
┌───┐
│BEEP vypíná / zapíná akust. signalizaci stisku klávesy
└───┘
┌───┐
│CLS│ smaže obrazovku
└───┘
┌───┐
│INVR vypíná / zapíná inverzní zobrazování
└───┘
┌───┐
│MON│ předá řízení operačnímu systému, používá se pro výstup
└───┘ z uživatelského programu - BASIC apod.
2. Obrazovka
------------
Obrazovku tvoří část paměti označená jako VIDEORAM - ta je
stále zobrazována na připojeném monitoru. Z byte paměti jsou
viditelné pouze bity 0-5, bit videoram v log.1 bude na obra-
zovce zobrazen jako svítící bod. Z jednotlivých bodů je takto
složen celý obraz. /viz. Paměť počítače/
Dialogový řádek
Slouží pro zápis a editaci příkazů, u obou formátů zobrazení
je umístěn na dolním okraji obrazu pod pracovní částí.
Alfanumerický formát
Zobrazuje 25 řádků po 48 znacích. Jsou-li řádky delší,
systém automaticky přejde na další řádek, případně odroluje
obrazovku o řádek vzhůru.
Grafický formát
Zobrazuje 256 řádků po 288 bodech. Pro zrychlení grafických
operací si systém zúží obrazovku jen na 256 bodů, při používání
služeb systému lze tedy přímo ovládat jen 256 bodů v řádku a
243 řádků - systém ignoruje dialogový řádek. /INPOL, POINT/
┌─────────────────────────────────────────┬──────┬────┬──────┐
│ F F 0. řádek alfanum. formát 48x25 │ │ │ F │
│ F │ 1. řádek │ │ │ │
│ │ │ │ │ │
│0.zn alfanum. formátu │ │ 47.zn│
│ │ │ │ │ │
│ │ │ │ │ │
│ │ │ │
│ │ │ │ │ │
│ │<───────────────────────────────────┼──────┼───>│ │
│ │ │ │ │ │
│ grafický formát │ │ │
│ │ 48x6=288 x 256 /255x243/ │ │ │ │
│<───┼────────────────────────────────────┼──────┼────┼─────>│
│ │ │ │ │ │
│ │ │ │
│ │ 24. řádek v │ │ │
│ │ oddělovač alf. form. - 19 ř. TV rozkladu │ │ │
├────────────────────────────────────────────────┼───────────┤
│ dialogový /editační/ řádek v │
└────────────────────────────────────────────────────────────┘
3. Paměť počítače
-----------------
Paměť slouží k uchování údajů nutných pro probíhající úlohu.
V počítači MAŤO je osazeno celkem 64 kB paměti, z toho 32 kB od
adresy 0000 až po 7FFF je RWM - obsah lze programově měnit, od
adr. 8000 až BFFF je 16 kB EPROM - obsah lze změnit jen pomocí
speciálního přípravku, zbytek C000-FFFF je opět RWM, část je
použita pro zápisník sytému /systémové proměnné/ a zbytek
obsluhuje vidoeprocesor jako VIDEORAM.
0000H ┌──────────────────────────────────────────────┐
│ zde pracuje interpret BASIC-G, pokud ho nech-│
│ ceme využívat, lze i zde psát program │
├──────────────────────────────────────────────┤ 23FFH
2400H │ │
│ │
│ zde je nejvhodnější místo pro psaní programu │
│ │
│ │
│ │ 7EFFH
7F00H ├──────────────────────────────────────────────┤
│ zásobník, buffer dial. ř., prog. klíče │ 7FFFH
8000H ├──────────────────────────────────────────────┤
│ služby Monitoru, tab. tvarů znaků, tab. pří- │
│ kazů, tab. obslužných kláves atd. │ 8FFFH
9000H ├──────────────────────────────────────────────┤
│ oblast v EPROM pro doprogramování uživatelem │ 97FFH
9800H ├──────────────────────────────────────────────┤
│ interpreter jazyka BASIC-G, demonstrační │
│ program │ BFFFH
C000H ├──────────────────────────────────────┬───────┤
│ VIDEORAM - toto je viditelná část │systém.│
│ paměti, pomocí níž Monitor zobrazuje │prom. │ C1FFH
C200H │ formát videoúdaje ├───────┤
│┌───┬───┬───┬───┬───┬───┬───┬───┐ │toto je│
││ D7│ D6│ D5│ D4│ D3│ D2│ D1│ D0│ │3kB úze│
│└───┴───┴───┴───┴───┴───┴───┴───┘ │mí niko│
│ │ │ │ │ │ │ │ │ │ │ │ho, pro│
│ │ │ └ viditelné bity ┘ │tože je│
│ │ └── atribut polojasu │nespoji│
│ └────── atribut blikání │té │
FFBFH └──────────────────────────────────────┴───────┘ FFFFH
4. Operační systém MONITOR
--------------------------
je základní program trvale umístěný v pevné paměti /EPROM/
počítače. Obsluhuje klávesnici, obrazovou paměť videoram,
magnetofon, zajišťuje editaci dialogového řádku a provádění
základních příkazů uživatele, o jejich průběhu podává uživateli
hlášení v dialogovém řádku.
Příkazy MONITORu
SUB aaaa data - změna obsahu paměti, po odeslání platných dat
se zobrazí přík. SUB s následující adresou,
ukončuje se klávesou CLL
MEM aaaa - zobrazení 16B paměti k editaci,příkaz samočinně
přechází v příkaz SUB
DUMP aaaa - výpis obsahu paměti hexadecimálně a ASCII,
ukončí se klávesou STOP, pozastavit lze kl. SHF
JUMP aaaa - start programu od zadané adresy, řízení plně
přebírá spuštěný program, Monitor dále nezodpovídá
za průběh činnosti !!!
MGSV nn;aaaa-kkkk;jméno - zápis paměti do souboru na magnetofon
MGLD nn - načtení souboru z magnetofonu do paměti, lze pře-
rušit STOP, neshoduje-li se nn, čeká na další hlavičku
MGEND nn - kontrola správnosti záznamu souboru na magnetofonu
pracuje jako MGLD, ale soubor neuloží do paměti
BASIC - spuštění vestavěného interpreteru jazyka BASIC-G
JOB rrrrllllaaaa - přenos souboru z ROM-modulu připojeného na
konektor K2 a spuštění daného souboru
COPY - provede skok do neosazené části EPROM, pravděpodobně
má sloužit pro uživatelem doprogramovanou rutinu
GO - provede skok na začátek právě nahraného souboru,
pracuje správně jen pro právě nahraný program !!!
DEMO - načte do operační paměti Basic s demonstračním
programem, lze jej spustit povelem Basicu RUN
aaaa - počáteční /startovací/ adresa, čtyřmístná hexadecimální
kkkk - koncová /poslední/ adresa
llll - délka souboru zvýšená o 0100H
nn - číslo souboru dvoumístné decimální 00-63, je-li nn=00,
systém nn nebude rozlišovat
jméno - text max. 8 znaků, je-li prvním znakem *, soubor se po
načtení z magnetofonu spustí od adresy aaaa
data - dvouciferná hexadecimální čísla, jednotlivá data lze
oddělovat mezerami, případně lze zadávat celé řetězce
ASCII uzavřené v apostrofech.
Příklady
SUB 61F0 3E41CD0085 C3 40 8C 'MATO'
MGSV 07;0000-5FFF;*GAME
Hlášení operačního systému a jejich adresy v paměti
++ NO COMMAND ++ 8392 - nejedná se o příkaz Monitoru
++ ERROR IN ADDRES ++ 8346 - chybná adresa aaaa
++ ERROR IN DATA ++ 8291 - chybně zadaná data
++ EXECUTIVE ++ 827D - systém plně předal řízení programu
++ MG STOP! ++ 8DB4 - soubor uložen, vypněte magnetofon
++ FILE ERROR ++ 835C - čtený soubor je chybný
++ READING OK ++ 8F93 - soubor byl vpořádku načten
++ MEMORY OVERFLOW ++ 837C - pro další klíč nestačí paměť
** OS READY ** 836D - Monitor potvrdil připravenost
nn/? jméno C1B2 - načtena hlavička souboru, znak za lomítkem
udává typ souboru /? monitor,> basic,K karel/
Mimo standardní příkazy můžeme využívat řadu služeb operační-
ho systému, které jsou dále popsány. V popisu je vždy pomocné
návěští, volací adresa a stručný popis funkce služby systému.
U nich jsou popsány potřebné vstupní údaje a výstupní údaje.
Řada služeb po provedení akce zničí obsahy registrů. Registry,
které se zničí, jsou uvedeny. Pokud uvedeny nejsou, ruší se
všechny mimo SP,PC /tzn. BC,DE,HL,PSW/. Hexadecimální číslo je
označeno jako HEX. Pro systémové proměnné, které monitor
používá, jsou také zavedena návěští, a tyto jsou dále také
popsány. Nákres rozdělení paměti Vám usnadní vytvořit si
představu, kde se nachází videoram, kde je monitor a kde má
proměnné a kam můžete psát svůj program.
Systémové proměnné
BUF C030 začátek bufferu dialogového řádku
DIAL C032 začátek výpisu dial. řádku na obrazovce
DLZRAD C034 konec bufferu dial. řádku
DCUR C036 pozice kurzoru v bufferu
RPOS C038 první vypisovaný znak z bufferu na obrazovku
COLOR C03A atribut zobrazení
BEEPPOS C03B pozice v bufferu pro pípnutí před koncem řádku
CURSOR C03E adresa kurzoru na obrazovce
SPVAL C070 adresa vrcholu zásobníku
CURCH C072 nastavení při analýze bufferu
MESS C074 začátek textu hlášení
RETCLL C076 návratová adresa pro ENTER
ODLOZ C078 adr. uložení textu po EOL v ENTER
RETSP C07A adr. zásobníku pro návrat z ENTER
SPEED C07C konstanta rychlosti čtení z magnetofonu
ITABDIR C07E začátel tabulky příkazů monitoru
TSRTAB C0B0 tabulka vektorů instalovaných ovladačů /driverů/
SBEEP C0BF příznak pípnutí při stisku klávesy
RAM C0F0 vektor modifikace MGLD, MGSV, MGEND
IIROLL C0F4 počet posouvaných linek displeje
RSIRRAD C0F5 počet mazaných linek
POROLL C0F6 poslední řádek
CURROLL C0F8 adresa psaní další řádky
VYSKA C0FA
ENLNW C0FB
RADSIR C0FC rozteč řádků
DLZR C0FE počet znaků pro výpis edit bufferu
DLZP C0FF
BEEDT C130 adr. tabulky standardního pípnutí pro BEEP
KDIR C132 adr. tabulky adres podprogramů řídících kláves
ASCII C134 znak načtený z klávesnice z INKLAV
SWRK C135 příznak WRK
MGCHAR C136 typ souboru pro MGSV, MGLD, MGEND
SPTL C137 příznak PTL
MONX C138 návratová adresa pro JUMP
CDBUF C13A adr. C-D bufferu
LSTR C13C
STACK C13E místo pro odkládání ukazatele zásobníku
X1 C170 souřadnice X počátečního bodu
Y1 C172 Y poč. bodu
X2 C173 X konc. bodu
Y2 C174 Y konc. bodu
DCUROLD C175
DELKA C177
OLDKEY C178 pomocná proměnná pro autorepeat klávesnice
BCUR C17A ukazatel na testovaný byte videoram
KEYEND C17C adresa klíčů
KEYTOP C17E rádoby hranice paměti pro klíče
FINDNR C1B0 požadované číslo souboru
FINDTP C1B1 požadovaný typ souboru
HEAD C1B2 tabulka hlavičky souboru
NUMFIL C1B2 číslo souboru
TYPFIL C1B3 typ souboru
ADRFIL C1B4 adresa začátku dat souboru
LENFIL C1B6 délka souboru - 1
NAMFIL C1B8 8 znaků názvu souboru
OCHR C1F1 pokus o ochranu souborů, * => chráněno
POC C1F2
VYSTUP C1F4
MODIFY C1FA mód grafiky /nastavení, negace, mazání/
OUTPOINTC1FE adresa pro styk s uživatelským programem
Popis služeb operačního systému
START 8000 vstupní bod po RESETu, studený start
MON 803B vstup do MONITORu z uživatelského programu
výst.: vstoupí do Monitoru a podá zprávu ** OS READY **
MAIN 8054 vstup do hlavní smyčky MONITORu
ROLL 8088 posun obrazu směrem vzhůru o 1 řádek
vstup: IIROLL C0F4
nelze použít s povoleným přerušením !!!
HEX 80E0 vstupní hex konverze 4 bity
vstup: A=ASCII převáděného znaku
výst.: převede ASCII do hex
CY= není to hex číslice /chyba/
NC= je to hex číslice, A= 0..15
PAIRIN 80F7 vstupní hex konverze 8 bitů
vstup: HL= adr. textu - dvě hex číslice
výst.: CY= chyba
NC= správně převedeno, A=0..255
zničí: HL, B, PSW
ADRIN 8109 vstupní hex konverze 16 bitů
vstup: HL= adr. textu - 4 hex číslice
výst.: CY= chyba
NC= správně, DE= 0..65535
zničí: HL, DE, B, PSW
PREVOD1 8125 výstupní hex konverze 8 bitů s výpisem
vstup: A= 0..255
výst.: volá PRTOUT 8500 - výsledek vypisuje na obrazovku
zničí: B, PSW
PREVOD2 813B výstupní hex konverze 8 bitů
vstup: A= 0..255
HL= adresa bufferu pro výstup - 2 znaky
výst.: konverze A na adrese HL
zničí: HL, B, PSW
RADR 814B vstupní hex konverze 16 bitů s výpisem chyby
vstup: CURCH C072= adresa textu
výst.: NC= správně, DE= 0..65535
CY= vypíše ++ ERROR IN ADDRES ++, skočí do MAIN
CURPOS 815E výpočet adresy aktuálního znaku v edit. bufferu
výst.: HL= adresa akt. znaku
TEXTSP 81C5 přenos textu s doplněním mezer do počtu
vstup: HL= text končící CR
DE= buffer pro cílový text
B = max. počet znaků
výst.: přenese text, na konec doplní mezery
pozn.: k přenosu hlavičky HEAD se použije TEXTHEAD 81C0
INKLAV 84A1 načtení znaku z klávesnice s čekáním na stisk
vstup: SBEEP C0BF = má / nemá při stisku klávesy puknout
výst.: A= ASCII kód klávesy, volá SCAN 8C03
zničí: PSW
PRTOUT 8500 výpis znaku do obrazovky
vstup: CURSOR C03E= pozice kurzoru, A= znak: 1C= cls,
0D= nový řádek, 0A= ignorovat, 08= kurz. o pozici zpět,
COLOR C03A= atribut výpisu znaku - polojas, blikání
výst.: volá WRCHAR 854A
zničí: PSW
WRCHAR 854A rozkreslení znaku do displeje
vstup: HL= adresa kurzoru 2 linky pod znakem
A= kód znaku: netištitelný znak= vypíše šachovnici 95
COLOR C03A= atribut výpisu znaku - polojas, blikání
výst.: rozkreslí znak, nelze použít s povoleným přerušením !
SYST1 8579 provedení příkazu Monitoru
MODNEG 859F zapnutí/vypnutí inverzního tisku + výmaz obrazovky
výst.: COLOR C03A, volá ERASE 85A7
ERASE 8597 smazání obrazovky
vstup: COLOR C03A= čím mazat
výst.: volá SWIND 85B3
SWIND 85B3 vymazání části obrazovky - okno
vstup: HL= adr. kurzoru
DE= konec nejvyšší mazané linky+1
B= počet mazaných linek
COLOR C03A= čím mazat, nelze použít s přerušením !!!
RPOINT 85E6 test rozsvícení bodu obrazovky
vstup: X1 C170, Y1 C172 = souřadnice bodu ve videoram
výst.: Z, A=0 nesvítí
NZ, A=1 svítí
EDIT 8800 provedení změny v editačním řádku
vstup: ASCII C134= kód znaku nebo povelu
výst.: změněný editační buffer je vypsán na obrazovku
WRLINE 8855 výpis editačního bufferu do dialogového řádku
vstup: RPOS C038 první vypisovaný znak
DIAL C032 pozice pro výpis na obrazovce
DLZR C0FE počet znaků pro výpis
PREVOD0 886B výstupní hex konverze 4 bity
vstup: A= bity 0..3= číslo
výst.: A= hex.
BEEP 88A3 standardní pípnutí
vstup: BEEDT C130 adresa tabulky pípnutí
výst.: volá BELL 88A6
BELL 88A6 generuje tóny podle tabulky
vstup: HL= adresa tabulky /délka,výška,....,délka,výška,FF/
výst.: zahraje melodii podle tabulky
WAITS 88B5 čekací smyčka
vstup: DE= zpoždění
výst.: vykoná časové zpoždění
zničí: DE
XCUR 8A7D vykreslení/smazání kurzoru
vstup: CURSOR C03E= pozice kurzoru
PRTTEXT 8A89 pípnutí a tisk hlášení
vstup: MESS C074= adr. textu hlášení ukončeného 0D
DIAL= pozice dial. řádku na obrazovce
výst.: provede výpis, volá BEEP /8A8C nezavolá BEEP/
OCHRAN 8B1C ochrana proti prohlížení paměti
vstup: OCHR C1F1= kód ochrany, 2A= chráněno
výst.: je-li paměť chráněna, smaže celou paměť a provede
reset systému. Tato služba je volána po resetu, takže
již spuštěný chráněný program je resetem vymazán
ERROR 8B31 výpis chybového hlášení
vstup: MESS C074= adr. textu
ENDLN 8B46 vyhledání posledního znaku v editačním bufferu
vstup: DLZRAD C034= konec textu
výst.: HL= adresa posledního platného znaku
ENTER 8BEE vstup řádky s editací
vstup: RETCLL C076= návrat po EOL
ODLOZ C078= adr. uložení textu po EOL
RETSP C07A= adr. odložení zásobníku
výst.: volá INKLAV 84A1, zajišťuje správnou korespondenci
mezi uživatelským programem a Monitorem. Umožňuje
odložení vrcholu zásobníku, vlastní nastaví na 7FFF
SCAN 8C03 letmý test klávesnice
výst.: Z= nic není stisknuto, A=00
NZ, A= kód stisknuté klávesy
DOKEY 8C43 provedení změny v editačním bufferu
vstup: ASCII C134 řídící nebo grafický znak
výst.: změněný text v bufferu
STOP 8C74 test klávesy STOP
výst.: Z, A=03 STOP stisknuto
NZ, A=40 STOP nestisknuto
POINT 8C7D vykreslení bodu v daném grafickém módu
vstup: X1 C170, Y1 C172 = souřadnice bodu
MODIFY C1FA= mód zobrazení /AB negace, AF zhášení,
B0 rozvěcování/, COLOR C03A= atribut /barva/
výst.: vykreslí bod vypočtený ze zadaných souřadnic vzhledem ke strojové nule C000
zničí: PSW
POSPOINT8C94 výpočet adresy v displeji+ bitová maska vykreslení
vstup: L= souřadnice X, H= souřadnice Y
výst.: HL= adresa byte v displeji
B= bitová maska (1,2,4,8,10,20,40,80)
TAPEOUT 8D6C zápis bloku dat na magnetofon
vstup: HL= začátek dat
DE= počet byte-1
výst.: zapsaný blok dat
LOAD 8DC2 načtení bloku dat z magnetofonu
vstup: HL= adresa kam ukládat
DE= počet byte-1
výst.: Z= blok dat v paměti je vpořádku načten
NZ= chyba při čtení nebo bylo stisknuto STOP
zničí: DE, BC, PSW
SHEAD 8DE2 vyhledání a načtení souboru z magnetofonu
vstup: FINDNR C1B0, FINDTP C1B1= číslo, typ hledaného souboru
RAM C0F0 modifikace údajů po načtení hlavičky
výst.: HEAD C1B2= hlavička nalezeného souboru
C,NZ= chyba, vypíše ++ FILE ERROR ++
NC,Z= správně načteno, vypíše ++ READING OK ++
při nalezení jiného souboru vypíše jméno, hledá dál
volá LOAD 8DC2, ERROR 8B31
DECPAR 8E3E načtení čísla souboru
výst.: načte číslo souboru, převede ho na dekadické číslo
BINBCD 8E73 konverze BCD kódů na binární
vstup: A= BCD kód
výst.: A= binární kód
zničí: HL, B, PSW
SYNC 8EBE načtení synchrosměsi pro čtení dat z magnetofonu
výst.: zasynchronizování systému pro HEADIN 8EE4
HEADIN 8EE4 načtení hlavičky souboru
výst.: HEAD C1B2= hlavička souboru
OUTSYNC 8F2D zápis synchrosměsi před hlavičkou na magnetofon
DTSYNC 8F38 zápis synchrosměsi pro zápis dat na magnetofon
PRGOUT 8F60 zápis bloku dat do souboru na magnetofon
vstup: HEAD C1B2= číslo, typ, počátek, délka, název
RAM C0F0= modifikace zápisu po uložení hlavičky
TRANSFER8FA4 načtení bloku dat z ROM modulu připojeného na K2
vstup: parametry se ukládají v programu těsně za voláním služby CALL TRANSFER : adresa začátku v ROM modulu, počet čtených byte-1, adresa uložení v RAM
SSKIP 8FB1 přeskočit mezery v textu
vstup: HL= adresa textu
výst.: HL= adresa textu za mezerami
6. Popis vybraných tabulek Monitoru
-----------------------------------
80D2 definice standardního pípnutí pro BEEP, končí FFH
80F4 definice puknutí při stisku klávesy, končí FFH
8089 definice melodie při resetu systému, končí FFH
8231 inicializační data - přenáší se do oblasti zápisníku
83F2 mapování kódů klávesnice
82B2 tabulka podprogramů editačních kláves, končí 00H
82EC tabulka příkazů Monitoru, končí FFH
8600 tabulka tvarů znaků s kódy 20H-5FH, končí FFH
88B8 tabulka tvarů znaků s kódy 60H-7FH
5. Převodní tabulka adres služeb mezi PMD 85-1,2 -> Maťo
Jsou zde uvedeny pouze ty nejpodstatnější.
Návěští 85-1 85-2 Maťo charakteristika
MONIT 8C40 805A 8054 vstup do monitoru
ROLL ---- 808E 8088 posun obrazu o 1.ř
TEXTHEAD ---- 81D8 81C0 přenos hlavičky souboru
TEXTSP ---- 81DD 81C5 přenos textu s doplněním mezer
BECLR ---- 81EE 8170 vypnout pukání klávesnice
JUMP 81F5 81F5 81D6 povel JUMP
DUMP 8205 8205 81E6 povel DUMP
KEYMAP ???? 82D0 83F2 tab. kódů kláves
XCHUR ???? 8481 8A7D vykreslení/smazání kurzoru
WRK ---- 8493 83C1 příznak zápisu do klíčů
PTL 8499 8499 83C7 příznak rolování dial. řádku
LEADER ???? 886B 8F2D inicializace I/O
HOME ???? 8880 85F6 nastavení kurzoru na 1. znak
PRE00 ---- 8888 886B výst. konverze 4.bity
SCAN ---- 89C0 8C03 ohmatá klávesnici
DECPAR ---- 8A54 8E3E načtení čísla souboru
BYTE ???? 8B6C 8EFA načtení byte z magnetofonu
MGLD ???? 8B9C 8873 povel MGLD
MGEND ???? 8BA0 8879 MGEND
WAITS 88B5 8BCB 88B5 časová smyčka
OCHRAN ---- 8BD8 8B1C pokus o ochranu
TRANSFER 8C00 8C00 8FA4 přenos z ROM modulu z K2
MGOUT ???? 8D7E 8DA2 zápis byte na MG
ERROR ???? 8E43 8B31 výpis ch. hlášení do dial.
ENDLN ---- 8E5D 8B46 vyhledání konce textu
I/O INI 8F4F 8F4F 8C6B nastavení interf. desky
JOB ???? 8F94 8FD7 povel JOB
Adresy ostatních podprogramů jsou shodné nebo chybí.
5. Porty a přípojná místa počítače
----------------------------------
Zobrazovací jednotka /K4/
Jako zobrazovací jednotka se k počítači použije běžný TV přijímač. Počítač generuje úplný televizní signál modulovaný na nosný signál v televizním pásmu VHF - 9. kanál. Anténní vodič televizoru zapojíme do konektoru K3 počítače a televizor naladíme na 9. kanál. Videoprocesor je v počítači MAŤO zapojen
napevno, žádná programová modifikace jeho vlastností není možná. Zápis informace pro zobrazení se provádí jako přímý zápis do dané části paměti /viz. Obrazovka, Paměť počítače/
Vnější paměť - magnetofon /K3/
Počítač je vybaven přípojkou pro vnější paměť - magnetofon, obvykle běžný kazetový, lze však použít i jiný typ magnetofonu.
Propojovací šňůru magnetofonu zapojíme do konektoru K4 počítače, tím je počítač připraven pro spolupráci s magnetofonem pomocí standardních příkazů MONITORu. Někdy se vyskytne závada, kdy soubor uložený na magnetofonu nelze načíst do počítače. Vyloučíme-li běžné příčiny, jako např. poškozený mgf pásek, znečištěná snímací hlava mgf nebo špatně nastavená kolmost snímací hlavy, pak se nejspíše jedná o převrácenou polaritu přiváděného signálu z magnetofonu. Pomoc spočívá v prohození vodičů 2,3 propojovací šňůry na straně počítače, vývod 1 odpojíme. Tuto šňůru lze použít pouze pro čtení z magnetofonu do počítače, nicméně se hodí ji mít po ruce pro případ, že dostaneme kazetu, která byla nahrána na jiném typu magnetofonu - tehdy nejčastěji dochází k převrácení polarity signálu, s kterým si pak počítač neumí poradit.
Magnetofon je obsluhován pomocí systémového portu F6.
2 2
┌────────────── GND ┌────────────── GND
┌────┼────┐ ┌────┼────┐
1 │ \ / │ 3 1 │ \ / │ 3
┌─┼── K3 ──┼───────── DATAIN ┌─┼── K4 ─ │
│ └─────────┘ │ └─────────┘
└───────────────────── DATAOUT └───────────────────── TVOUT
Klávesnice
je připojena pomocí systémových portů F4, F5, F6.
Klávesy SHF, CNT, STOP, EOL jsou připojeny samostatně a lze
tedy jejich stav snímat z portu. Klávesa RST je připojena
odlišným způsobem a její stav snímat nelze. Ostatní klávesy
jsou zapojeny v matici, takže pro načtení jedné klávesy je
nutné nejprve zakázat řady matice, v kterých se klávesa
nevyskytuje a poté číst sloupec, v kterém se klávesa nachází.
Reproduktor
slouží ke generování akustických návěští, melodií, pazvuků
apod. Je připojen na systémový port F6, a proto můžeme bězným
způsobem nastavit jen dva stavy. Tón se generuje jako rychlé
přepínání mezi těmito stavy. Tímto způsobem je zapojen
i výstup dat na magnetofon, je možné generovanou melodii
zavádět jak na vestavěný reproduktor, tak současně i na
výstup pro magnetofon, kam potom místo magnetofonu můžeme
připojit zesilovač pro hlasitější poslech generovaných
melodií.
Systémový port a obsluha připojených zařízení
Systémový port je realizován obvodem INTEL 8255A, který
obsahuje tři osmibitové brány /PA,PB,PC/ a řídící registr
/CWR/ určující režim vstupu/výstupu jednotlivých bran.
PA výstupní / adresa F4
zápisem log.1 na některý bit zakážeme čtení dané řady kláves,
zapíšeme-li na některý bit log.0, vybereme tím danou řadu
kláves ke čtení. U jednotlivých bitů jsou vypsány klávesy
připojené v dané řadě a konstanta, kterou vybíráme danou řadu.
┌───┬───┬───┬───┬───┬───┬───┬───┐
│PA7│PA6│PA5│PA4│PA3│PA2│PA1│PA0│
└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘
│ │ │ │ │ │ │ └─ FEH 1 2 3 4 5 6 7
│ │ │ │ │ │ └───── FDH Q W E R T Z U
│ │ │ │ │ └───────── FBH A S D F G H J
│ │ │ │ └───────────── F7H Y X C V B N M
│ │ │ └───────────────── EFH = 0 ^ 8 , K I
│ │ └───────────────────── DFH P ? + 9 . L O
│ └───────────────────────── BFH up dn spc @ « » *
└───────────────────────────── tento bit je nezapojen
PB vstupní / adresa F5
přečtením bytu a vymaskováním daného bitu přečteme stav
klávesy připojené v daném sloupci. U jednotlivých bitů jsou
vypsány klávesy v daném sloupci a konstanty, kterým je roven
stav načteného byte, pokud povolená klávesa v daném sloupci
byla stisknuta.
┌───┬───┬───┬───┬───┬───┬───┬───┐
│PB7│PB6│PB5│PB4│PB3│PB2│PB1│PB0│
└─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┘
│ │ │ │ │ │ │ └─ FEH 1 Q A Y = P dn
│ │ │ │ │ │ └───── FDH 2 W S X 0 ? up
│ │ │ │ │ └───────── FBH 3 E D C ^ + spc
│ │ │ │ └───────────── F7H 4 R F V 8 9 *
│ │ │ └───────────────── EFH 5 T G B , . «
│ │ └───────────────────── DFH 6 Z H N K L »
│ └───────────────────────── BFH 7 U J M I O *
└───────────────────────────── 7FH EOL se nevybírá v matici
Příklad načtení klávesy M
MVI A,F7 vybrání /povolení/ řady kláves obsahující M
OUT F4 vyslat na port řad matice klávesnice F4
IN F5 přečtení sloupců z portu F5
CPI BF porovnat, zda byla stisknuta klávesa ve sloupci s M
JZ bylo stisknuto
nebo
ANI 40 vymaskovat 6. bit sloupce s klávesou M
JZ bylo stisknuto, tento druhý způsob je lepší, protože test
není ovlivněn stiskem více kláves současně
PCL výstupní PCH vstupní / adresa F6
┌───┬───┬───┬───┼───┬───┬───┬───┐
│PC7│PC6│PC5│PC4│PC3│PC2│PC1│PC0│
└─┬─┴─┬─┴─┬─┴─┬─┼─┬─┴─┬─┴─┬─┴─┬─┘
│ │ │ │ │ │ │ │
│ │ │ │ │ │ │ └─ výstup dat na magnetofon
│ │ │ │ │ │ └───── výst. na vestavěný repro.
│ │ │ │ │ └───────── nezapojeno, možno vyvést na K2
│ │ │ │ └───────────── přepíná polaritu signálu z mgf
│ │ │ └───────────────── klávesa STOP /aktivní v log.0/
│ │ └───────────────────── klávesa SHF
│ └───────────────────────── klávesa CNT
└───────────────────────────── čtení dat z magnetofonu
Příklad načtení klávesy STOP
IN F6 načtení portu F6
ANI 10 vymaskovat bezvýznamné bity, zbude jen bit 4
JZ byl STOP
Příklad gerování tónu na výstupu mgf a repro najednou
LXI B,0020 délka tónu
*01:
LXI D,0400 výška tónu /zpoždění/
CALL WAITS zavolat službu vykonající zpoždění
IN F6 sejmout stav výstupního portu
XRI 03 invertovat bity 0 a 1
OUT F6 vyslat nový stav na port
DCX B snížit BC o 1
MOV A,B test BC na nulu
ORA C
JNZ *01 není-li BC=0, generuje se dále
JMP MON návrat do monitoru
CWR řídící registr systémového portu / adresa F7
viz. obvod 8255
Aplikační konektor K2
slouží k připojování dalších vstupních a výstupních zařízení k počítači MAŤO. Obsahuje úplnou datovou sběrnici, vybrané bity adresové sběrnice, vstup pro hardwarové přerušení, výstup hodin počítače, externí reset a body pro možnost napájení připojeného
zařízení z počítače. Pomocí tohoto konektoru můžeme připojit např. externí paměť, diskovou jednotku, interface pro připojení
tiskárny, joysticku apod.
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│GND│+5V│-5V│12V│xRD│ A0│ A1│ A7│ A6│ A4│ A3│ A2│CLK│ D6│ NC│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GND│+5V│-5V│12V│ A5│xWR│RST│ D0│ D1│ D2│ D3│ D4│ D5│INT│ D7│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
GND společný bod, 0V
+5V vývod napětí zdroje +5V, max. odběr 100 mA
-5V napětí zdroje -5V, max. odběr 15 mA /nedoporučuji používat/
12V napětí zdroje +12V, max. odběr 30 mA
A0-A7 nižší bity adresní sběrnice pro adresaci I/O zařízení
xWR signál mikroprocesoru /CPU/ pro zápis dat do zařízení /OUT/
xRD signál CPU pro načtení dat ze zařízení /IN/
INT vstup přerušení CPU, nepřipojen je v log. 0 /viz. CPU/
CLK výstup hodin /taktovací kmitočet/
NC nezapojen, můžeme přes rezistor 180R vyvést bit PC2 sys.
RST externí reset systému
x- označení negovaného signálu /aktivní v log. 0/
6. Připojení dalších zařízení
-----------------------------
Chcete-li připojovat další zařízení, jste jistě zkušenější uživatel, proto Vám doporučuji následující úpravy počítače, které zlepší jeho funkci.
1. zapojte propojku mezi vývod INT /14 mikroprocesoru a rezistor R16 dle schematu počítače. Toto má být zapojeno, skutečnost je taková, že veškeré počítače, které jsem dostal do opravy toto propojené neměly. Tím zůstává vstup přerušení mikroprocesoru "v luftě", což způsobuje nahodilé hroucení systému při spuštění jiného program než je BASIC.
2. Citlivost klávesnice zlepšíte zvětšením rezistorů R27-R37 z 11k na 120k.
3. Vodivost nevodivého "vodivého" elastomeru klávesnice zlepšíte vlepením kolečka z pečlivě vyrovnaného alobalu na plochu "vodivého" elastomeru v tlačítku. Kolečko vyrobíte pomocí kancelářské děrovačky. K vlepení do tlačítka použijte Chemopren. Vyjmuté tlačítko s vlepeným kolečkem alobalu zasadíte zpět do klávesnice a z druhé strany zcela lehce zakápnete Purocelem.
Paralelní interface
Využije se pro připojení tiskárny, zapisovače, joysticku ap.
Z mnoha variant je nejefektnější konstrukce interface s obvodem
INTEL 8255A. Ke konstrukci potřebujeme univerzální desku plošných spojů, konektor FRB 30 pin /2x, samec,samice/, spojovací vodiče, obvod 8255 - vhodný je NEC 8255AC, MHB 8255,
KR 580NB 55, a obvod 7400 - MH 7400, SN 7400 /bude sloužit jako
invertor pro připojení zařízení s nestandardními řídícími signály/. Obvod 8255 se připojí přímo na sběrnice počítače přes
konektor K2 počítače Maťo. Důležité je správné propojení adresních a výběrových signálů, aby nedocházelo ke kolizím na sběrnici počítače. Uvedené zapojení toto splňuje, navíc adresy portů interface jsou zvoleny tak jako u počítače PMD-85 a to pro obě rozhraní PMD-85 /GPIO 4CH-4FH, IMS-2 7CH-7FH/, tj. pro adresaci interface lze využít dvojího adresování. V nových námi psaných programech použijeme vyšší adresu /7CH-7FH/, nižší adresa by mohla způsobit kolizi při připojení více zařízení na sběrnici, to však v našem případě není možné. Akceptování nižší adresy je výhodné, protože programy z PMD-85 není nutné upravovat a též je možné využít povely jazyku BASIC. /kanál 7 IMS-2 se potom chová stejně jako kanál 4, jenom není invertován výstup dat/. Pro toto zapojení jsou psány i mé programy, tj. bude správně fungovat joystick ap./2/ Konektor interface budeme
nazývat K5.
Adresy: PA 7CH /4CH/, PB 7BH /4BH/, PC 7DH /4DH/, CWR 7FH/4FH/
Tabulka instrukcí PIO
Mód 0 /všechny brány/ Mód 1 /handshake/ pouze
v PA /+PC3-7/ a PB /+PC0-PC2/
CWR PA PB PCl PCh CWR PA PB PCi
80H out out out out A0H out ... PC7=xOBF PC6=xACK PC3=INTa
81H out out out in
82H out in out out B0H in ... PC4=xSTB PC5=IBF PC3=INTa
83H out in out in
88H out out in out 84H ... out PC1=xOBF PC2=xACK PC0=INTb
89H out out in in
8AH out in in out 86H ... in PC2=xSTB PC1=IBF PC0=INTb
8BH out in in in
90H in out out out + kombinace s módem 0
91H in out out in
92H in in out out
93 in in out in
98H in out in out
99H in out in in
9AH in in in out
K2 K5
┌──────────────────────────────────────────────────── PB7
│ ┌────────────────────────────────────────────────── PB6
│ │ ┌──────────────────────────────────────────────── PB5
│ │ │ ┌────────────────────────────────────────────── PB4
│ │ │ │ ┌──────────────────────────────────────────── PB3
│ │ │ │ │ ┌──────────┐
│ │ │ │ └─┤ ├─────────────────────────────── PB2
│ │ │ └───┤ ├─────────────────────────────── PB1
│ │ └─────┤ ├─────────────────────────────── PB0
│ └───────┤ ├─────────────────────────────── PC3
└─────────┤ ├─────────────────────────────── PC2
+5V ──┬──────────┤+Ucc ├─────────────────────────────── PC1
D7 ──X──────────┤ ├─────────────────────────────── PC0
D6 ──X──────────┤ ├─────────────────────────────── PC4
D5 ──X──────────┤ 8255A ├─────────────────────────────── PC5
D4 ──X──────────┤ ├─────────────────────────────── PC6
D3 ──X──────────┤ ├─────────────────────────────── PC7
D2 ──X──────────┤ A0├─────────┐
D1 ──X──────────┤ A1├───────┐ │
D0 ──X──────────┤ GND├─────┐ │ │
RST ──X──────────┤RESET CS├───┐ │ │ │
xWR ──X──────────┤IOWR IORD├─┐ │ │ │ │
│ ┌───────┤ ├─X─X─X─X─X───────────────────── PA0
│ │ ┌─────┤ ├─X─X─X─X─X───────────────────── PA1
│ │ │ ┌───┤ ┌┐ ├─X─X─X─X─X───────────────────── PA2
│ │ │ │ ┌─┤ ││ ├─X─X─X─X─X───────────────────── PA3
│ │ │ │ │ └────┴┴────┘1│ │ │ │ │
│ │ │ │ └──────────────X─X─X─X─X───────────────────── PA4
│ │ │ └────────────────X─X─X─X─X───────────────────── PA5
│ │ └──────────────────X─X─X─X─X───────────────────── PA6
│ └────────────────────X─X─X─X─X───────────────────── PA7
│ │ │ │ │ │
│ │ │ │ │ │ ┌─────┬───────────── +5V
xRD ──X───────────────────────┘ │ ├─X─X─X─────X────────┬──── GND
A7 ──X─────────────────────────┘ │ │ │ │ │ │
GND ──X───────────────────────────┘ │ │ │ ┌┴┴┴┴┴┴┴┐ │
A1 ──X─────────────────────────────┘ │ │ ├─ 7400 │ │
A0 ──X───────────────────────────────┘ │ 1└┬┬┬┬┬┬┬┘ │
└─────────────────────────────────┘ └┤│ └──┘
│└─────────── XOU
└──────────── XIN
Konektor interface K5
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│GND│+5V│XIN│PA6│PA4│PA2│PA0│PC6│PC4│PC2│PC0│PB1│PB3│PB5│PB7│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GND│+5V│XOU│PA7│PA5│PA3│PA1│PC7│PC5│PC3│PC1│PB0│PB2│PB4│PB6│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
PA0-PA7 vstupně/výstupní brána A XIN vstup invertoru
PB0-PB7 vstupně/výstupní brána B XOU výstup invertoru
PC0-PC7 vstupně/výstupní brána C
Konektory PMD-85 pro úpravu zapojení pro Maťo
PMD-85 zezadu
┌─────────────────────────────────┐
│ 1. 2. 3. 4. 5. 6.│ Význam signálů je stejný
│┌─┐ ┌─┐ ┌─────┐┌───┐┌───┐┌──────┐│ jako u interface pro Maťo
│└─┘ └─┘ └─────┘└───┘└───┘└──────┘│
└─────────────────────────────────┘
5. GPIO AC /adr. 4C+4E, kanál 4/
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│XOU│xIN│XoU│REV│PC6│PC4│PA0│PA2│PA4│PA6│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GND│xOU│XIN│XiN│PC7│PC5│PA1│PA3│PA5│PA7│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
REV - ovládání směru toku dat, log.0=PAvstup
4. GPIO BC /adr. 4D+4E, kanál 4/
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│XOU│xIN│XoU│REV│PC2│PC0│PB0│PB2│PB4│PB6│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│GND│xOU│XIN│XiN│PC3│PC1│PB1│PB3│PB5│PB7│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
3. IMS-2 /adr. 7C-7E, kanál 7/
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│PC2│ NC│ NC│GND│PA3│PA2│PC0│PC5│PA1│PC7│PA7│ ? │PA4│ NC│ NC│
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤
│ NC│PC1│PC3│GND│ NC│PB5│PB7│ NC│ NC│ NC│PA0│PA6│PA5│ NC│ NC│
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
6. Aplikační konektor
Měl by se chovat stejně jako K2 počítače Maťo, má však prohozené signály D6 a INT !!!.
Joystick pro interface Maťo
Použijeme libovolný joystick s alespoň 5-ti spínanými
kontakty. K interface ho připojíme dle schematu. Obvod
je vhodné zapojit uvnitř mechanizmu joysticku.
┌───┬───┬───┬───┬─────────────────── +5V
5x 8k2
5x 10k
DOWN ─┴─ │ │ │ │ │
┌─ ───┴───X───X───X───X─────── ───────── PA0
UP│ ─┴─ │ │ │ │
├─ ───────┴───X───X───X─────── ───────── PA1
RIGHT│ ─┴─ │ │ │
├─ ───────────┴───X───X─────── ───────── PA2
LEFT│ ─┴─ │ │
├─ ───────────────┴───X─────── ───────── PA3
FIRE│ ─┴─ │
ize:8.0pt; ├─ ───────────────────┴─────── ───────── PA4
│ ┌─────────────────────────────────── PA5
│ │ ┌─────────────────────────────── PA6
│ │ │ ┌─────────────────────────── PA7
│
│
│ │ │ │ 3x 18k
└───────┴───┴───┴─────────────────────────── GND
X- křížení vodičů
Ovládání
1. Naprogramování interface
3E 92 MVI A,92H Basic: OUT '7F,'92
D3 7F OUT 7FH nebo CONTROL 7,3,146
2. Test přítomnosti joysticku
DB 7C IN 7CH Basic: IF INP('7C)='1F THEN je přítomen
FE 1F CPI 1FH
Z -joystick je přítomen
NZ -joystick není přítomen
3. Snímání stavu /princip viz. klávesnice/
DB 7C IN 7CH Basic:
E6 10 ANI 10H bit FIRE A=BIT STATUS('7C),5
IF A=0 THEN bylo stisknuto FIRE
Z -bylo stisknuto FIRE
NZ -nebylo stisknuto FIRE
Tiskárna BT-100
K obsluze tiskárny je nutný obslužný program.
Pro obsluhu pomocí mého programu zapojte tiskárnu dle schematu.
Údaje v závorkách platí pro kazetopáskovou jednotku SP 210.
K6
┌─────────────────────────────────────── GND
│ psací hlava
┌────────┐ │ ┌──────────────────────────────────── PA0
│ ┌─┼──┼──┼─┐
│ │ └\ /┘ │ ┌──────────── PA2 /SP 210T/
│ ┌─┼── I N ──┼─────┘
│ │ │ ┌/ \──┼────────────────── PA3 /SP 210T/
│ │ └─┼───────┘ posun papíru
│ │ └────────────────────────────────────────── PA4
│ │ posun hlavy doprava
│ └────────────────────────────────────────────── PA5
│ posun hlavy doleva
└─────────────────────────────────────────────────── PA7
┌─────────────────────────────────────── GND
│
┌────────┐ │ ┌──────────────────── PA6 /SP 210T/
│ ┌─┼──┼──┼─┐ snímač posuvu papíru
│ │ └\ /┘ │ ┌──────────────────────────── PC4
│ ┌─┼── OUT ──┼─────┘ snímač souřadnic bodů
│ │ │ ┌/ \──┼────────────────────────────────── PC6
│ │ └─┼───────┘ snímač synchronizace
│ │ └────────────────────────────────────────── PC7
│ │ snímač dorazu vozíku
│ └────────────────────────────────────────────── PC5
│
└─────────────────────────────────── PA1 /SP 210T/
Tiskárna Gamacentrum 01
Obsluhuje se pomocí programu.
K6
snímač polohy
┌─────────────────────────────────────── PB4
│ hlava 2
┌────┐ │ ┌──────────────────────────────────── PC7
│ ┌─┼──┼──┼─┐
│ │ └\ /┘ │ ┌──────────────────────────── GND
│ ┼ ─ OUT ──┼─────┘ posun papíru
│ │ ┌/ \──┼────────────────────────────────── PC6
│ └─┼───────┘ posun vozíku
│ └────────────────────────────────────────── PC4
│ hlava 1
└─────────────────────────────────────────────── PC5
Tiskárna Consul 2111, 2112, 2113 /Zbrojovka Brno
A ────────────────────────────────────────────── PB0
B ────────────────────────────────────────────── PB1
C ────────────────────────────────────────────── PB2
D ────────────────────────────────────────────── PB3
E ────────────────────────────────────────────── PB4
F ────────────────────────────────────────────── PB5
G ────────────────────────────────────────────── PB6
H ────────────────────────────────────────────── PB7
M ────────────────────────────────────────────── PC
K ────────────────────────────────────────────── XOU
┌── XIN
└── PC
I,J,L,P,T,V ──────────────────────────────────── GND
Tiskárna D100 /dovoz PLR
D0 ───────────────────────────────────────────── PB0
D1 ───────────────────────────────────────────── PB1
D2 ───────────────────────────────────────────── PB2
D3 ───────────────────────────────────────────── PB3
D4 ───────────────────────────────────────────── PB4
D5 ───────────────────────────────────────────── PB5
D6 ───────────────────────────────────────────── PB6
D7 ───────────────────────────────────────────── PB7
xSTB ─────────────────────────────────────────── PC
xACK ─────────────────────────────────────────── PC
GND ──────────────────────────────────────────── GND
Tiskárna PRT 80 GS /dovoz MLR
Plotter DIDAKTIK Z2 /Didaktik Skalica
D0 ───────────────────────────────────────────── PB0
D1 ───────────────────────────────────────────── PB1
D2 ───────────────────────────────────────────── PB2
D3 ───────────────────────────────────────────── PB3
D4 ───────────────────────────────────────────── PB4
D5 ───────────────────────────────────────────── PB5
D6 ───────────────────────────────────────────── PB6
D7 ───────────────────────────────────────────── PB7
xSTROBE ──────────────────────────────────────── PC
BUSY ─────────────────────────────────────────── XIN
┌── XOU
└── PC
GND ──────────────────────────────────────────── GND
Připojení monitoru
Můžeme připjit monitor videosignálu - obvykle TV přijímač s videovstupem, nebo monitor, který zpracovává obrazové signály odděleně /jas+synchro/.
Výstup pro monitor videosignálu
zapojíme nejlépe na vývod č.3 konektoru K4. Signál odebíráme z
vývodu č.6 obvodu U11/3 - na konektor ho zavedeme přes rezistor
390R. Případný výstup audiosignálu odebíráme z vývodu č.16 obvodu U36 přes rezistor 22k, vhodné je zapojit ho na vývod 5 konektoru K4.
2
┌────────────── GND
│ ┌─────────── AUDIOOUT
┌────┴──┼─┐
1 │ \ /┘ │ 3
┌─┼── K4 ──┼───────── VIDEOOUT
│ └─────────┘
└───────────────────── TVOUT
Výstup pro klasický monitor
/po úpravě synchronizačních kmitočtů je možné použít i monitory od počítačů PC - vhodné jsou Hercules, CGA, EGA/.
Pro tento monitor nejlépe nahradíme stávající konektor K3 7-kolíkovým konektorem, signály zapojíme jako v předchozím případě, takže veškeré funkce zůstanou zachovány a přidáme signály jasové složky a vertikální a horizontální synchronizace. Jasový signál odebíráme přes rezistor 390R z vývodu 8 obvodu U8/3, chceme-li inverzní, pak z vývodu 9 téhož obvodu, případně zapojíme přepínač. Vertikální synchronizaci odebíráme z vývodu 12 U10/2, horizontální z 9 U11/4, obojí přes
390R.
┌─────────────── GND
│
┌────────┐ │ ┌──────────── AUDIOOUT
│ ┌─┼──┼──┼─┐
│ │ └\ /┘ │ ┌──── VIDEOOUT
│ ┌─┼── K4 ──┼─────┘
│ │ │ ┌/ \──┼────────── VSYNC
│ │ └─┼───────┘
│ │ └────────────────── HSYNC
│ │
│ └────────────────────── TVOUT
│
└─────────────────────────── Y
7. Instrukce mikroprocesoru INTEL 8080A
---------------------------------------
kód op dél takt příznaky popis
Osmibitová aritmetika
ANI/XRI/ORI d8 2 7 # log. součin, nonekvivalence, součet s A
ADI/SUI d8 2 7 * prostý součet nebo rozdíl s A
ACI/SBI d8 2 7 * součet n. rozdíl včetně příznaku CY s A
CPI d8 2 7 * srovnání A s d8 /příznaky jako SUI/
ANA/XRA/ORA rm 1 4/7 # log. součin, nonekvivalence, součet s A
ADD/SUB rm 1 4/7 * součet n. rozdíl včetně příznaku CY s A
CMP rm 1 4/7 * srovnání A s rm /příznaky jako SUB/
INR/DCR rm 1 5/10 " zvýšení/snížení rm o 1 /modulo 2**8/
DAA 1 4 v dekadická úprava A
CMA 1 4 - jedničkový doplněk A /inverze/
RLC/RRC 1 4 ! rotace A /a krajní bit do CY/
RAL/RAR 1 4 ! rotace A a CY /9.bitů/
STC/CMC 1 4 ! nastavení/inverze příznaku CY
Šestnáctibitová aritmetika
DAD ps 1 10 ! přičtení ps k registrovému páru HL
INX/DCX ps 1 5 - zvýšení/snížení ps o 1 /modulo 2**16/
Osmibitové přesuny
MOV rm,rm 1 5/7 - přesun mezi registry nebo registry a rm
MVI rm,d8 2 7/10 - přímá hodnota do rm
STAX/LDAX px 1 7 - A do/z M /adr. M v BC či DE !/
STA/LDA a16 3 13 - A do/z M /adr. M v operandu instrukce!/
OUT/IN a8 2 10 - výstup A na port / vstup z portu do A
Šestnáctibitové přesuny
LXI ps,d16 3 10 - přímá hodnota do ps
SHLD/LHLD a16 3 16 - HL do/z paměti /adresa v instrukci/
PUSH/POP pp 1 11/10 & ulož na zásobník / vyber ze zásobníku
SPHL 1 5 - HL do SP, změna ukazatele zásobníku
PCHL 1 5 - HL do PC, t.j. skok !!!
XCHG 1 4 - výměna obsahu páru HL a DE
XTHL 1 18 - výměna obsahu zásobníku a HL, nemění SP
Skokové instrukce a řízení procesu
JMP a16 3 10 - skok na a16
CALL a16 3 17 - volání podprogramu na a16
RET 1 10 - návrat z podprogramu či přerušení
JNZ/JZ JNC/JC JPO/JPE JP/JM a16 3 10 - JMP podmíněný příznaky
CNZ/CZ CNC/CC CPO/CPE CP/CM a16 3 17/11 - CALL podmíněný přízn.
RNZ/RZ RNC/RC RPO/RPE RP/RM a16 1 11/5 - RET podmíněný přízn.
INT n 1 11 - volání obsluhy přerušení /0-7/
DI/EI 1 4 - zákaz/povolení přerušení
HLT 1 7 - zastavení mikroprocesoru
NOP 1 4 - prázdná instrukce
- nikdy nemění žádné příznaky
v mění všechny příznaky
# mění všechny příznaky, vynuluje CY a AC
& POP PSW změní příznaky obnovením AF
! mění pouze CY
* mění všechny příznaky:
-sečítání nastaví CY=1 pro součet>255 /přetečení/, jinak CY=0
-odčítání nastaví CY=1 pro A <operand /podtečení/, jinak CY=0
- CMP,CPI nastaví CY=1 pro A <operand, jinak CY=0,
Z=1 pro A=operand, jinak Z=0.
-SBB,SBI 0. přičte CY k operandu -DAA 1. dolní půlbyte>9 nebo
-SUB,SUI 1. dvojkový doplněk AC=1 - přičte 06H k A
2. přičtení k A+CY 2. horní půlbyte>9 nebo
3. negace CY CY=1 - přičte 60H k A
d8 data 8 bitů rm registry nebo M Takty dle operandů:
pp BC,DE,HL,PSW pp pár BC,DE,HL,PSW registry/paměť nebo
a8 adresa portu ps pár BC,DE,HL,SP PUSH/POP nebo
a16 adresa paměti px pár BC nebo DE splněná/nesplněná
n číslo obsluhy podmínka /JZ apod./
přerušení 0-7
M pseudoregistr,pomocí něho pracujeme s pamětí, fyzickou adresu
paměti pro M určuje HL
INT adresy podprogramů obsluhy přerušení jsou mapovány do paměti
jako 0000H+n*08H, tj. INT 5 vyvolá totéž co CALL 0028H.
HW přerušení mikroprocesoru je mapováno jako INT 7.
HLT zastaví činnost mikroprocesoru, pokračování nastane signálem
HW přerušení /na vstupu INT mikroprocesoru/, pokud není zaká-
záno instrukcí DI, jinak se činnost obnoví pouze Resetem.
8. Popis obvodu CPU INTEL 8080A
-------------------------------
Registry
Registry jsou paměťová místa přímo v mikroprocesoru. Slouží
ke krátkodobému uschovávání dat při výpočtu, k provádění aritmetických operací, a k předávání dat mezi mikroprocesorem,
pamětí a I/O zařízeními, případně data důležitá k řízení průběhu procesu. Do datových registrů lze vkládat 8bitová data,
případně lze některé využívat spojené jako dvojregistr, data
pak mohou být 16bitová. Registry pro řízení procesu jsou 16bitové. Registry mají písmenné označení, používáme-li dvojregistr, pak je označen oběma písmeny - první je vyšší byte, druhý nižší byte dvojbytového registru.
┌────────┬────────┐ ┌────────┬────────┐ ┌─────────────────┐
│8b A │8b F │ │8b D │8b E │ │16b S P │
└────────┴────────┘ └────────┴────────┘ └─────────────────┘
┌────────┬────────┐ ┌────────┬────────┐ ┌─────────────────┐
│8b B │8b C │ │8b H │8b L │ │16b P C │
└────────┴────────┘ └────────┴────────┘ └─────────────────┘
┌────────┐
│8b M │
└────────┘
A základní registr, zde probíhají výměny dat mezi pamětí, registry a I/O, a výpočty. Někdy se nazývá střadač, častěji akumulátor. Lze využít pouze jako 8bitový.
F příznaková část reg. A. Přímý zápis do tohoto registru není možný. Tento registr slouží k testování a zjišťování stavu vykonané operace. Stav operace je indikován jako tzv. příznaky. Každý bit tohoto registru udává určitou událost, která nastala při výpočtu, tj. každý bit je příznak. V závislosti na příznacích je potom možné rozhodnout o dalším průběhu výpočtu /JNZ,CNC,RZ..../. Výjimkou jsou instrukce RLC,RRC,RAL,RAR,STC,CMC, které provádí zápis do tohoto reg.
┌──┬──┬──┬──┬──┬──┬──┬──┐ S 0=kladné číslo n. 0
│ S│ Z│ 0│AC│ 0│ P│ 1│CY│ 1=záporné číslo
└──┴──┴──┴──┴──┴──┴──┴──┘ Z 0=nenulové číslo
1=nulové číslo
P 0=lichá parita /ODD/
1=sudá parita /EVEN/
AC pom. přenos z bitu 3
CY přenos z bitu 7 /přetečení/
B,C,D,E datové registry, používáme pro dočasnou úschovu dat, pro řízení cyklů. Pár BC,DE používáme pro řízení cyklů pracujících s pamětí, je-li obsazen HL /STAX,LDAX/.
H,L tyto datové registry se zřídka používají samostatně. Častěji se používá pár HL, protože pomocí něho definujeme adresu paměti pro pseudoregistr M. Jinak jako B,C,D,E.
M toto není registr v pravém slova smyslu. Tímto se díváme na
paměť jako na registr, což zrychluje běh programu. Adresu paměti v případě užití tohoto pseudoregistru určuje HL ! Jeho použití je složitější a výrazně rychlejší než STAX,LDA.
SP obsahuje aktuální adresu zásobníku tj. část paměti vymezená pro ukládání návratových adres /CALL,INT/, případně hodnot registrů, kterých hodnoty nechceme ztratit a potřebujeme je
použít /PUSH/.Zásobník při ukládání roste směrem k začátku paměti, tj. při uložení do něj se adresa sníží. Vybírat ze zásobníku /POP,RET/ je nutno v opačném pořadí než v jakém byly hodnoty vkládány, jinak se nám budou vracet data jiných
registrů. Neprovedeme-li POP v podprogramu, kde jsme provedli PUSH, podprogram se instrukcí RET nevrátí na uloženou návratovou adresu, ale na adresu uloženou instrukcí
PUSH, což vede k nedefinovatelným efektům !!! Systém si většinou sám nastavuje zásobník při startu, nemusíme se proto příliš starat o jeho hodnotu. /MAŤO: po RST SP=7FFFH/
PC ukazuje na adresu paměti, kde se nachází právě zpracovávaná
instrukce. Změnou obsahu provedeme skok na jiné místo v paměti, program bude pokračovat od zadané adresy /JMP,JZ/.
Jiné změny obsahu nejsou možné.
Sběrnice a vstupy, výstupy CPU
D0-D7, A0-A15
Tento obvod je vybaven 8bitovou datovou sběrnicí a 16bitovou adresní sběrnicí. Datová sběrnice slouží pro přenos dat mezi registry mikroprocesoru, pamětí a I/O. Adresní sběrnice určuje
adresu připojené paměti s kterou se bude pracovat, max. obsluhovaná paměť je určená 16 bity tj. 64kB. Dolních 8 bitů adresní sběrnice slouží k adresaci I/O zařízení, tj. zařízení může být 255. /viz. zapojení K2/
IOWR,IORD,IORQ
Na těchto výstupech generuje mikroprocesor žádost o práci s I/O zařízeními. Pouze při tomto signálu smí být aktivní připojené I/O zařízení, jinak dojde ke kolizi na datové sběrnici a tím k havárii systému.
CLK
Vstup taktovacích hodin mikroprocesoru. Kmitočet určuje 1 takt vykonání instrukce. Čím je kmitočet vyšší, tím je vyšší i
rychlost vykonávání instrukcí, zvýšení kmitočtu nad určitou mez
má za následek zastavení mikroprocesoru. U počítače Maťo je taktovací kmitočet /2.62 MHz/ generován obvodem INTEL 8228A. Z tabulky počtu taktů instrukcí je možné určit dobu trvání instrukce či výpočtu na počítači Maťo.
INT
Vstup signálu přerušení. Je-li instrukcí EI povoleno přerušení, pak signál log.1 přivedený na tento vstup způsobí přerušení zpracovávaného programu provede se volání obsluhy tohoto přerušení /jako CALL 0038H/. Je-li mikroprocesor zastaven /HLT/, pak lze signálem přerušení /je-li povoleno/ obnovit činnost mikroprocesoru /obsluha přerušení se nevolá/.
RST
Signál pro reset mikroprocesoru - provede se skok na adresu vnucenou na adresní sběrnici. U počítače Maťo je to 8000H.
Ucc,GND
Přívody napájení +5V,-5V,12V potřebného pro napájení CPU.
GND je společný bod CPU.
9. Popis obvodu PIO INTEL 8255A
-------------------------------
Paralelní vstupně/výstupní obvod zajišťuje převzetí dat ze zařízení/datové sběrnice a přenesení na sběrnici/zařízení.
Obsahuje tři osmibitové brány z nichž každá může pracovat ve vstupním nebo ve výstupním režimu, mimoto poslední z nich může být rozdělena na dolní a horní 4 bity, pro které lze také nastavit různý režim. Obvod má 4 registry, první tři slouží pro
zápis nebo čtení dat do/z jednotlivých bran /každá brána má svůj registr/ a zbývající slouží pro zápis režimu jednotlivých
bran. Registry se označují jako PA, PB, PC - brána tohoto registru může být rozdělena=> PCL, PCH, CWR - registr pro zápis
režimu obvodu. Obvod má tři režimy - mod 0-2. Mod 0 je běžný vstup/výstup. Mod 1 je tzv. strobovaný vstup/výstup. Slouží k výměně dat přes brány PA,PB ve spojení se strobovacími impulzy nebo signály pro potvrzení z rozdělené brány PC.
Mod 2 je strobovaná obousměrná sběrnice, pouze pro PA. PB může
být v modu 0,1.
Sběrnice a vstupy, výstupy PIO
D0-D7
datová sběrnice /viz. CPU/
A0-A1
adresní signály pro výběr registrů PIO
PA0-PA7,PB0-PB7,PC0-PC7
bity vstupně/výstupních bran
CS
signál aktivity I/O zařízení
IORD,IOWR
signál žádosti čtení/zápisu do I/O
RST
reset obvodu
12. Doporučená literatura
-------------------------
1. Počítač a jeho programování, J. Starý
2. Output/Enter - uživatelská příručka PMD-85, TESLA Piešťany