Rozšířený monitor pro počítač Savia 84

Nahrávání z PC a další funkce

Primární snahou bylo implementovat systém TRAPP umožňující přenos dat mezi PC a PMI-80 na počítač Savia. V případě počítače Savia byl systém nazván TRAPS TRAnsfer Pc-Savia. Kód byl umístěn do volné oblasti EPROM vyhražené pro práci s magnetofonem. Kód byl optimalizován pro počítač Savia, využil jsem instrukce Z80, které 8080 nemá a využil jsem služby monitoru Savie pro zadání více dvojbytových hodnot. V EPROM zůstávalo mnoho nevyužitých byte, tak jsem se ještě rozhodl přidat program pro zaplnění obsahu paměti danou hodnotou a pro přesun bloku paměti. Protože jsem se se všemi úpravami chtěl "vlézt" do spodního 1KB, aby šel upravený monitor používat i na původní Savii s pamětí 2758, tak mi pak naopak několik byte chybělo, provedl jsem proto ještě jednu změnu. Na adresách 03A5-03AD původního monitoru se nachází nepoužívaný text "Start MGF". Tento text jsem nahradil textem "Error", neboť jsem ho potřeboval pro TRAPS. Toto umístění má řadu výhod. Text lze použít i v jiných programech, na těchto adresách ho zcela jistě nechám i v příštích verzích a zcela jistě se text "Error" bude ještě v nějakých dalších programech hodit. Zobrazení se provede snadno, třeba něčím jako

    ld hl, 003a5h
    call 00199h	
Pokud se toto provede na Savii s původním monitorem, zobrazí se text "Sart MGF" (t se vynechá). Je to sice trochu matoucí, ale je to lepší, než aby se zobrazily nějaké hieroglyfy. Stačí si prostě pamatovat že "Sart MGF" znamená "Error". Text "Error" je formátován tak, že začíná mezerou. To má důvod - pokud by někdo postavil Savii s rozšířeným displejem, tak že by využil i vynechanou druhou pozici, text se zobrazí správně, jen před nápisem "Error" budou dvě mezery. Savii s takto rozšířeným displejem se chystám postavit. Podle mojí analýzy monitoru to bude normálně pracovat a na druhé pozici displeje bude mezera a nehrozí, že by se zde v monitoru zobrazil nějaký nepatřičný znak. A ještě něco - v mojí úpravě je na začátku původně nevyužívané části EPROM, tedy na adrese 024A umístěn program, který text "Error" zobrazí, čeká na stisk klávesy a pak provede restart monitoru. Tento prográmek lze využít i v jiných programech, určitě se bude hodit. I v dalších verzích rozšířeného monitoru garantuji, že prográmek bude na této adrese.

Kdo byl líný si přečíst celý předešlý odstavec, pro toho mám i souhrn provedených změn heslovitě:

Jinak je monitor beze změn a zůstává kompatibilní s původním. Nyní o nových funkcích podrobněji:

TRAPS - nahrávání z PC a do PC

TRAPS je to hlavní, proč jsem to celé dělal. Slouží hlavně pro nahrávání programů z PC do Savie, obecně pro přenos jakýchkoliv dat mezi PC a Savií. Na straně PC se používá stejný program jako TRAPP pro PMI-80 lze si ho stáhnout na stránce systému TRAPP. Na rozdíl od PMI-80 se ale vždy musí provést všechny úkony napřed na straně Savie a potom až se spouští program na PC. Pro nahrání dat z PC stačí stisknout "L" na Savii. Pro nahrání dat ze Savie do PC je potřeba stisknout "S" a pak se zadává počáteční adresa označená jako a1 a koncová, označená jako a2. Pak se spustí přenos.

Co se týká propojení s PC, jsou potřeba dvě vstupní linky a jedna nebo dvě výstupní. Vstup byl řešen přes port PB, ten ovšem nelze "rozpůlit", musí být celý nakonfigurovaný jako vstupní nebo celý jako výstupní. V programu se tedy konfiguruje na vstup. Pro výstup byla použita volná linka PC7, možná si tam někdo zapojí desetinné tečky, vůbec si to ale vzájemně nebude vadit. Druhá výstupní linka je nutná jen pokud je požadován i přenos dat ze Savie do PC a rozhodl jsem se pro linku PC6. Tou jsou ovšem ovládány h segmenty displejů (střední vodorovná čára). Sdílení těchto funkcí ničemu nevadí. Při nahrávání do PC tak poblikává střední čárka písmena S, to lze však chápat i jako určitou výhodu, indikuje to, že probíhá přenos.

Schéma propojení je jednoduché. Stejně jako TRAPP pro PMI, se TRAPS připojuje na sériový port PC (pokud ho máte), nebo na kabelový převodník USB <-> RS232. Ceny těch kabelových převodníků začínají někde okolo stokoruny a tak jako tak se vyplatí ho mít, zařízení, které mají sériový port je hromada.

V závorkách jsou u linek uvedeny odpovídající vývody obvodu 8255. Jo, a kdyby to někdo nevěděl ani nedokázal najít v datasheetu, tak obvod MAX232A potřebuje přivést napájení +5V na pin 16 a zem má na pinu 15. Se omlouvám, že sem to do toho schématu zapomněl nakreslit a se mi už nechce to tam přikreslovat.

Zaplnění části paměti

Protože všechny "nečíselné" klávesy Savie už mají svůj význam, rozhodl jsem se program pro zaplnění části paměti spouštět klávesou F jako Fill. Očekává se zadání tří hodnot - počáteční adresa (a1), koncová adresa (a2) a hodnota, kterou se má úsek paměti zaplnit (a3). Jako poslední hodnotu lze zadat 4místné hexa číslo, využívá se však pouze dolní byte. Je to děláno takto, neboť celé zadání se provádí voláním jedné služby Savie a optimalizuje se tak délka kódu.

Kopie části paměti

Protože všechny "nečíselné" klávesy Savie už mají svůj význam, rozhodl jsem se program pro kopii části paměti spouštět klávesou C jako Copy. Očekává se zadání tří hodnot - počáteční adresa (a1) a koncová adresa (a2) kopírovaného bloku a počáteční cílová adresa (a3). Pozor, pokud se kopíruje směrem na vyšší adresu, bloky se nesmí překrývat. Ono by se dalo testovat směr kopírování, patřičně přepočítat vstupní data a místo instrukce LDIR použít LDDR. Jenže to už jsem jednak byl líný, za druhé bych tím přelezl kilobajt a za třetí je to obvyklá vlastnost jednoduchých monitorů. Ále zvažuju to udělat, až budu monitor Savie obohacovat o další "vychytávky" a bude pak jasné, že do 1KB už se prostě "nevlezu".

Download - prozatím nezveřejňuji zdroják

Binárka 1KB.
Tu si prostě stáhněte a "napalte" do vaší EPROM, pokud je to jednokilová 2758 v souladu s původní dokumentací, pak se zaplní celá. Máte-li dvoukilovku 2716, pak horní kilobyte zůstává volný, třeba pro Vaše programy.
Zpět