Jak už jsem psal dříve v mém krátkém shrnutí z BYTFESTu 2014, upravil Bohouš svoji poslední verzi Unikarty pro SHARP MZ-800 pro o generaci starší verzi Sharpíka a to konkrétně SHARP MZ-700. Karta ještě není úplně hotová, Bohouš stále pracuje na firmwaru. Nicméně i tak už je karta poměrně hodně použitelná a teď se mi dostal do rukou druhý prototyp, tak neodolám možnosti toho o této užitečné novince napsat víc.
Karta vychází z Unikarty Mk3b, o které jsem tady už psal, která zase vychází z původní Unikarty Michala Hučíka a Vaška Peroutky. Zásadní změnou je konektor, kde zatímco SHARP MZ-800 disponuje rozšiřujícím slotem, kam lze zasunout jednu interní a jednu externí kartu, tak SHARP MZ-700 nic takového nemá. Jedinou možností připojení periferií na sběrnici je přímý konektor na zadní straně. Do něj se zapojuje např. řadič Quick Disku MZ-1E14, nebo rozšiřující box MZ-1U06. Bohouš udělal krátkou kabelovou spojku a kartu místo přímého konektoru vybavil konektorem pro plochý kabel. Další změny pak leží převážně ve firmware karty.
Bohouš na firmware stále pracuje a nic není definitivní, ovšem to co funguje, už je i tak paráda a obrovský přínos pro MZ-700 komunitu, která je rozšířená spíše v zahraničí
Hned, jak jsem si kartu přinesl domů, proběhlo důkladné testovaní a inspekce všemi členy naší rodiny
Kartu zatím nemám v krabičce, ale Bohoušův prototyp samozřejmě krabičku má a jsem si jist, že finální výrobek bude mít i efektní čelní panely.
Kromě podpory standardních periferií, jako je emulace až 4 floppy mechanik prostřednictvím obrazu na microSD kartě, emulace Quick Disku, RAM disku, sériové linky RS-232c, zálohované hodiny reálného času, USB shell, síť, přístup přes zabudovaný webový server, plnohodnotný VGA výstup a zvukový vstup/výstup, o kterých se dočtete v mém příspěvku k Unikartě pro MZ-800, má Unikarta pro MZ-700 několik specifických vlastností vycházejících z konstrukce tohoto staršího počítače.
MZ-700 nemá žádný grafický režim a textově umí jen 40×25 znaků. To je poměrně výrazné omezení z hlediska použitelnosti na pořádnější práci a také pro použití CP/M. Proto vznikly minimálně dvě funkční řešení tohoto problému. První pochází ze Sharp Users Club UK (SUC) a funguje tak, že s pomocí malé hardwarové úpravy zdvojnásobí frekvenci při vykreslování řádku a zdvojí video paměť. Použití není úplně nejjednodušší, ale úprava nebyla složitá ani finančně náročná. Zkouším vypátrat originální schéma a postup úprav. Svého času prodával SUC kit na 80 column mod za 15 GBP. Mimochodem, Sharp Users Club UK, funguje dodnes.
V SUC upravili PCP/M původně určenou pro MZ-800 pro tento znakový režim a provoz na počítači MZ-700.
Bohouš používá tento režim i pro kreslení Unicard Managera. Michal Hučík, který Unicard Manager napsal ještě pro původní Unikartu a nedávno dokonce vydal novou vylepšenou verzi 2.3, poskytl Bohoušovi zdrojáky a ten jej upravil pro MZ-700. Takže teď máme na MZ-700 ten stejný komfort jako na osmistovce. Díky nedostupnosti grafiky sice chybí efektní SHARP lodička, ale Bohouš si vyhrál s logem MZ-700, které každou chvíli duhově zabliká. Celkem legrační je, pokud se podíváte místo na VGA výstup na kompozitní výstup počítače. U MZ-700 bez SUC hardwarové modifikace uvidíte klasický 40-znakový režim a v něm každý druhý znak, protože emulace SUC modifikace je emulována jen v Unikartě a tudíž jen na VGA.
Druhá verze rozšíření na 80 znaků je technicky složitější. Jedná se o emulaci K&P 80-column interface, což je přídavná karta, která se k MZ-700 připojovala přes externí box MZ-1U06 a obsahovala oblíbený grafický čip Synertek SY6845E, 2kB RAM a 2kB EPROM a příslušnou logiku. Vznikl tak výstup na druhý monitor a bylo na programech, jak si s tím poradí. Například K&P MZ-700 DISK BASIC má příkaz SCREEN s parametrem 0 nebo 1, kde 1 je rozšířená 80-znaková obrazovka a do ní i defaultně startuje.
Když jsem si s kartou hrál, celkem mně překvapilo, kolik her jsem měl zafixováno jako sedmistovkových a ve skutečnosti na MZ-700 neběží. Resp. běží, ale využívají editovatelný charakter generátor, který je až na MZ-800, takže místo panáčků a obludek honíte lomítka a kostečky Typickým příkladem je třeba známé GALAO, Sharpácká obdoba hry GALAGA.
Naproti tomu třeba Advoka šlape v pohodě. Taky jsem zavzpomínal na starý dobrý sedmistovkový HOBRA Flugsimulator a s chutí si zapřistával na letiště 2×3 pixely .
Jak jsem psal, Bohouš ještě dolaďuje nějaké sice malé, ale pracné „drobnosti“, jako je implementace kurzoru v emulaci SY6845E nebo synchronizace vykreslování videa s interní grafikou, aby jely i některé sedmistovkové specialitky.
Když vše dobře dopadne a práce půjde Bohoušovi od ruky, dočkáme se i emulace některých hardwarových, a u nás méně známých, specialitek, jako je např. programovatelný znakový generátor PCG700 nebo Japonský RAM disk PIO-3034 320K EMM firmy I-O DATA a na nich velice zajímavých dem a aplikací.
Ahoj, Unikarta pro MZ700 je moc pekna prace. Uz se tesim az si pohraju s tou vylepsenou grafickou kartou i kdyz trosicku mne mrzi, ze to Bohous nepojal tak, ze by Unikarta byla stale jen jedna – ta „osmistovkova“ a k MZ700 by se pripojovala pres redukci s napajenim, takze by clovek jen prepinal FW.
Co se tyka te absence grafiky, tak to docela hledim! Ja jsem byl dodnes presvedceny, ze v MZ700 je uplne normalni CG-RAM, jako v MZ800 v 700 modu. Nicmene kdyz uz Unikarta na MZ700 poskytuje i EXROM, tak by do ni mozna slo pridelat i „tu nasi“ CGRAM, ne? Co ty na to Bohousi? 😉
Ahoj, kdysi jsem v boji za vyšší WAF (wife acceptance factor) mých výrobků vyhlásil boj polotovarům a vše strkám do krabiček, takže i pro MZ700 unikartu mám připravenou krabičku tady . Až to bude v krabičce, tak se to bude špatně přendávat do MZ800, proto extra verze pro MZ700, ale jinak až na pořadí pinů na sběrnici je zapojená stejně. Takže přes redukci by to šlo taky, do firmwaru by se musely nahrát obě varianty a přepínat na základě něčeho, co se má spustit (třeba souborem na SD kartě ?), stejně tak už funguje verze pro MZ800, umí běžet jak se startší kartou s MCU STM32F407 s obrazem přes IO piny tak i s STM32F429 s LCD řadičem. Je tady ale nebezpečí strčení karty přepnuté na unikartu MZ700 do MZ800, pak by se potkaly výstupy s řadičema v MZ800 a to by nebylo dobré.
Jinak CGRAM není co se týče emulace problém, horší je to s monitorem, který po resetu přehraje do CGRAM obsah CGROM (který se ovšem nenamapuje a tím se nahraje do CGRAM cosi náhodného z RAM od 1000h) a pak ještě nesmí program používat RAM od C000h do CFFFh, když přepisuje CGRAM, tak by se sám poškodil. Takže by to tak jednoduché nebylo.
Mám ale rozepsanou emulaci jiného „standardního“ zařízení pro MZ700, která umožnuje měnit aspoň část znakového generátoru a to PCG700.
Podle me by se melo podle komunikace po resetu poznat, zda pripojeny pocitac je MZ-700 nebo MZ-800 (pristup na ruzne porty, ktere v jednom pocitaci jsou a v druhem nejsou) nebo podle inicializacnich dat pro ruzne porty…?
Na komunikaci bych az tak moc nespolehal – pak staci, aby nekdo experimentoval s boot ROM a je po ptakach. Kazdopadne MZ800 ma na konci sbernicoveho konektoru tusim 6 neobsazenych pinu, kterymi by ta pripadna MZ700 redukce mohla priznat barvu.
Přesně tak, velmi záleží na obsahu ROM, stačí v ROM u MZ700 změnit druhý a třetí byte na 00h,E8h a bootování s unikartou pro MZ800 a MZ700 včetně inicializací periférií bude naprosto identické u obou strojů. Stěmi volnými piny na konektoru je to lepší varianta, experimentátorů s volnými piny je podstatně míň než experimentátorů s upravenými ROMkami, ale stejně by se musely karty upravit. Když se tak dívám na rozdíl konektoru MZ800 a MZ700, tak mě napadá použít signál IEI, u MZ800 je připojen pull-up odporem na log.1, u MZ700 neexistuje, tam by mohla redukce dát pro změnu pull-down na log.0 a bylo by to rozlišené (kontrolovat během resetu, aby do toho nepovídaly jiné karty a ještě v kombinaci s detekcí, že karta neběží z externího napájení, tedy překontrolovat pull-up i na jiném vstupu). Mno tak uvidíme, možná za dlouhých zimních večerů …
Pingback: Sharp setkání – jaro 2016 – Tálský mlýn | Martinův 8-bitový blog
Pingback: Sharp setkání Tálský mlýn – podzim 2016 | Martinův 8-bitový blog
Pingback: ZX Spectrum 48/128, PMD 85 a Ondra na SHARP MZ-700/800 | Martinův 8-bitový blog