PMI-80

    Jedná se velice jednoduchý počítač, ve kterém jsou v podstatě jen nejdůležitější části nutné k provozu, což z něj dělá výbornou učební pomůcku. Na tomto jednoduchém počítači jsem se naučil programovat ve strojovém jazyce. Dodnes obdivuji jeho jednoduchost a možnost navrhnout si rozšiřující obvody.

 Celkový obrázek počítače

Návod na použití PMI-80:
Jelikož je procesor napájen 3 druhy napětí (+12V, +5V, -12V) a záleží na pořadí zapnutí jednotlivých napětí, musíte mít zdroj, který bude toto respektovat !!! Po úspěšném startu se na displeji zobrazí úvodní obrazovka:

Klávesnice PMI-80 má tyto tlačítka:

Po stisknutí libovolné klávesy (kromě „RE“ a „I“) nám display zobrazí P jako připraven.

Naťukání programu do paměti:

Stisknete klávesu „M“, zadejte adresu (interní RAM začíná na: 1C00h) (obrázek je z PMI s rozšířenou pamětí)

Po stisku „=“ se vypíše obsah paměti, který jednoduše změníte přepsáním a stiskem „=“ Pro ukázku můžete naťukat tento kód:

21 00 00 23 c3 08 00

Zdrojový kód pro TASM:   (pro přeložení nutno změnit mezery na tabulátory)

konec  .ORG 00008H  ;adresa, kam  má skočit program, aby korektně pokračoval monitor
start     .ORG 1C00H   ; startovní adresa
            ld hl,0000h       ;vynulování registru HL
            inc hl                ;přičtení jedničky k HL
            jp konec           ;návrat do monitoru
            .END               ;konec souboru

Z editoru se navrátíte stiskem libovolné „funkční“ klávesy (např. „M“). Program spustíte takto:

Stiskneme klávesu „EX“ a zadáme adresu startu (např. 1C00h),  na displeji uvidíme podobny text (ale jinou adresu):

Po stisku klávesy „=“ se program spustí:

Po ukončení programu počítač vypíše hlášení o zastavení běhu programu:

Výsledek programu můžeme zkontrolovat prohlédnutím obsahu registrů stiskem klávesy „R“ a čísla „9“ (nad kterým je napsáno HL) čímž uvidíme obsah registru HL, měl by mít hodnotu 0001.

Na překládání programu používám program TASM (přiložen i ukázkový program)

blikac.asm přepíná piny PB4 a PB5 na přídavném 8255 obvodu
blikac2.asm pokud je na pinu PB3 na základním 8255 modulu LOG 0, tak přepíná piny PB4 a PB5 na přídavném 8255 obvodu
display.asm Zobrazování znaků na display (nejsem si jist, jestli se text mění automaticky, nebo ho musíte potvrzovat klávesou

Další informace se můžete dočíst v naskenovaných textech z manuálů níže.

Ovládání vstupně/výstupních portů:
 V těchto počítačích je zamontován jeden až dva obvody 8255, které mají 3x8 vstupně výstupních portů. První, základní obvod, využívá piny PA a PC pro vstup z klávesnice a výstup na monitor, tudíž můžete využívat jen piny PB. Základní adresa prvního obvodu je: F8h a přídavný obvod má adresu F4h. Každý obvod obsazuje čtyři paměťová místa:

0 PA
1 PB
2 PC
3 registr (nastavení obvodu)

 Nastavení obvodu:
a) řídící slovo pro volbu režimu
D0 bity C3-C0  1=vstup 0=výstup
D1 brána B 1=vstup 0=výstup
D2 volba pracovního režimu  (skupina B)
D3 bity C7-C4  1=vstup 0=výstup
D4 brána A 1=vstup 0=výstup
D5,D6 volba pracovního režimu (00-režim0, 01-režim2, 1x režim3)
D7 vždy 1

b) řídící slovo pro ovládání bitů brány C (nemusíte to takto ovládat)
D0 1.nastavení  0.nulování
D1,D2,D3  000 0.bit  001 1.bit ... 111 7.bit
D4 bez významu
D5 bez významu
D6 bez významu
D7 vždy 0

Rozšíření paměti:

    Do tohoto počítače je v podstatě možno zabudovat libovolnou statickou RAM paměť. Největší omezení je ve velikosti. Pokud máte po ruce paměť větší než 64KB zřejmě větší část vůbec nevyužijete (pokud neuděláte stránkování paměti). K rozšíření budete potřebovat vývody sběrnice a to tyto:
GND, 5V, A0-A15, D0-D7, MR, MW.

  Krátce bych popsal jejich význam:
D0-D7 jsou datové vodiče, po kterých se přenáší (při zápisu nebo čtení) data.
5V, GND - napájení
MR - pokud je v nízké úrovni, signalizuje procesor paměti, že má dát na datové vodiče obsah paměti, daný podle adresních vodičů A0-A15
MW - pokud je v nízké úrovni, signalizuje procesor paměti, že data, která jsou na datových vodičích má zapsat na adresu podle A0-A15
A0-A15 udává s jakou adresou v paměti chce procesor pracovat

    Jelikož je začátek paměťového prostoru obsazen ROM a RAM pamětí. Potom pokud procesor přistupuje k paměti od adresy 0x0000h do 0x2000h, naše paměť musí být ve stavu vysoké impedance (tzn., nijak nezasahuje do komunikace). Toho se docílí piny CE (některé paměti mají těchto pinů více). Pokud je na všech těchto pinech logická 0, pak je paměť ve stavu aktivní a normálně reaguje. Takže stačí udělat jednoduchou logiku, která přivede na CE nulu, pokud je splněna tato logická rovnice: (!MR+!MW)*(A15+A14+(A13*A12))
   Vyjádřeno slovy: procesor musí chtít buď číst, nebo psát (MR nebo MW je v 0) a zároveň musí být adresa paměti větší než 0x2000h, takže bude v log. 1 pin A15, nebo A14, nebo A13 zároveň s A12  (A13+A12 = 0x3000h), nebo může být nějaká kombinace zahrnující více zmíněných pinů.
   Pokud máte více CE vývodů, můžete zbylé uzemnit a používat jen jeden, nebo mít tlačítko, kterým přepínáte jeden CE mezi 0 a 5V (tzn. 5V je přes odpor 1K připojen na plus a přes spínač spojujete pin se zemí) čehož využívám k tomu, že mám tuto RAMku zálohovanou baterií a při vypnutí počítače nedochází k náhodným přepisům paměti.
   Shrnuto: k paměti připojíte napájení, datové vodiče, adresní vodiče. MR se většinou u pamětí značí jako OE a MW jako WE, tyto tedy propojíte (MR-OE a MW-WE). K CE vymyslíte vhodnou logiku a nevyužité CE piny uzemníte. K paměti můžete přidat ještě baterii, pak ale musíte zajistit pomocí diody, aby nenapájela zbytek počítače a aby se moc nenabíjela (případně aby se vůbec nenabíjela, záleží na tom, jakou baterii máte). A pak se stačí modlit a zapnout počítač, mělo by to bez problémů fungovat

Komunikační program PC->PMI-80

 K nahrávání programů do PMI-80 jsem udělal jednoduchý program v delphi, ke stažení zde: komunikační program PC PMI-80 (zahrnut jak exe soubor pro PC tak i asm soubory pro PMI). Programy pro PMI-80 jsou dva, jeden jednoduchý, který umí nahrát maximálně 255 znaků (ale je krátký, takže se hodí pro prvotní naťukání přes klávesnici) a druhý který umožňuje libovolné nahrávání. Programy můžete umístit libovolně v paměti, podle toho, kde máte místo (akorát podle toho musíte změnit startovní adresu ve zdrojovém asm kódu). Před spuštěním programu v PMI musíte zadat začátek a konec adresy, kam se bude program ukládat, pokud nezměníte ve zdrojáku umístění těchto dat, tak v případě použití kratší verze programu je startovní adresa na FFFD-E a koncová na adrese FFFF (pouze 8 posledních bitů). Plná verze komunikačního programu čte informaci o začátku zapisování z FFFC-FFFD a konec z FFFE-FFFF. Adresa se zadává opačně, než jak je 8080 zvyklé, čili na nižší adresu zapíšete první část adresy (MSB). Zapojení je patrné z obrázku:

Překladač a editor k programovacímu jazyku PL0

Programovací jazyk PL0 je jeden z nejjednodušších programovacích jazyků určen pro výuku. A jelikož jsem měl ve čtvrtém ročníku svých studií informatiky semestrální práci upravit překladač na procesor Z80, trošku jsem si zadání předělal na procesor 8080 a celý program odladil na PMI-80. Pokud si tento program chcete vyzkoušet, potřebujete PMI-80 s rozšířenou pamětí (viz výše).

    Program v PL0 může vypadat např. takto:
var a;
procedure pr;
  var b;
  begin
    a:=10;
    b:=20;
  end;
begin
  a:=100;
  call pr;
end.

takovýto program přeložíte spuštěním programu Pl0-proc.exe který je v zip souboru ke stažení níže, zdrojový program musí mít název zdroj.pl0. Program vám vytvoří soubor zdroj.asm který bez problémů přeložíte překladačem TASM. Tímto překladačem přeložte i zdrojový kód pro editor pl0ed.asm (v zip souboru níže). Oba přeložený soubory nahrajte do PMI-80 na odpovídající adresy (pokud nezměníte zdrojové kódy, tak editor se nahrává od adresy 6100h a kód se nahrává od A000h 

Editor PL0 pro PMI-80:
Pokud máte nahraný PL0 program v paměti, můžete spustit samotný editor (který se nemusí nahrávat vždy znova do paměti (jen kdyby došlo k jeho nechtěnému přepsání). Editor spustíte stiskem klávesy „EX“, zadáním adresy:

a stiskem klávesy „=“

            Program vynuluje všechny proměnné (PC, Báze, L.Top, G.Top), do zásobníku nahraje na vrchol dvě nuly a dál nahraje hodnoty –1  (tzv. neinicializováno, slouží pouze pro přehlednost).

            Na displeji zobrazí stav zásobníku  „S-00 0000“ (nultá pozice zásobníku má hodnotu 0000).

V editoru můžete používat tyto klávesy:

 Pokud program do-krokujete až do konce, program se sám ukončí a na displeji zobrazí:

Stáhnout překladač a emulátor PL0 pro PMI-80

Naskenované dokumenty a texty k PMI-80

Návod k ovládání 1. část Návod1 Návod k ovládání 2. část Návod2 Návod k ovládání 3. část Návod3 Návod k ovládání 4. část Návod4
Návod k ovládání 5. část Návod5 Návod k ovládání 6. část Návod6 8255 - blokové schéma a zapojení vývodů 8255 zapojení 8255 - funkce přívodů 8255 funkce přívodů
8255 - nastavení obvodu 8255 nastavení obvodu 8255 -  popis obvodu 8255 popis popis konektoru K2 + 8255 popis konektoru a 8255 Paměťový systém a periferní obvody pamět a periferie
Rozmístění součástek Rozmístění součástek Schéma centrální části Centrální část  Zapojení konektorů K1 i K2 popis konektorů Hodiny z PMI-80 s využitím přerušení Hodiny z PMI
Rozšíření PMI-80 o periodické oživování displaye Periodické oživování displeje Uvedení počítače do provozu Uvedení počítače do provozu Sběrnice a paměťový systém 1. část Sběrnice a paměťový systém Sběrnice a paměťový systém 2. část Podsystém styku se sběrnicí

Mám ještě další materiály, které nepovažuji za tolik důležité, ale pokud by jste měli nějaké speciální přání, neváhejte a napište mi.

adoid@centrum.cz,  Před napsáním emailu si můžete přečíst moje tipy na psaní emailu.

 

 Created by K2

Na úvodní stránku