Klasické SAPI-1 desky moderně – JPR-1S a JPR-1X

Zatím jsem se spíš věnoval SAPI-1 deskám s podporou CP/M, tj. sestavám ZPS-3 a hlavně ZPS-4. SAPI-1 ale začalo a vyrostlo okolo jednodeskového počítače JPR-1 jehož popis vyšel v modrém Amatérském rádiu 1/1983. Má procesor 8080 taktovaný na 2 MHz, paměť RAM 1 kB, ROM až 8 kB a tři vstupní a tři výstupní 8-bitové brány. Dá se tak v pohodě použít na řízení různých procesů, člověk by řekl takové prehistorické Arduino 😉 V sestavách ZPS-1 a ZPS-2 je pak základní deska počítače rozšířená o více RAM i ROM, zobrazovací jednotku, klávesnici, sériové porty a kazetový záznamník. Libor Lasota vytvořil postupem času dvě desky nahrazující JPR-1. JPR-1S vznikla již asi před třemi lety, ale zatím jsem o ní tady nepsal, tak si ji představíme společně se žhavou novinkou, deskou JPR-1X.

Jak už jsem se zmínil, obě desky nahrazují původní JPR-1, takže žádná CP/M, jedeme MikroBASIC, Monitor s MIKOS a BASIC, případně pár dalších programů. Další alternativou je Liborův vlastní Falcon monitor, ale přehršel softwaru nečekejte.

Desku JPR-1S udělal Libor jako jednu z prvních. Jestli to správně chápu, tak hlavně pro to, aby mohl testovat a psát programy pro svoji grafickou kartu BGP-1S, o které se taky časem určitě zmíním. JPR-1S klasickou desku JPR-1 konstrukčně zjednodušuje. Libor odstranil podporu DMA a řadič přerušení 3214 a naopak rozšířil RAM o až 48 kB a umožnil použít snadno dostupnou programovatelnou paměť EEPROM 28C64 místo původních 4 kusů 2708 nebo 2716. Jinak je karta kompatibilní s JPR-1 a rozjedete na ní všechny SAPI programy tak, jako na JPR-1. Já jsem u mojí DTR-1 narazil na nemožnost DMA přístupu, ale na druhou stranu, to jsem si hrál s vlastním softem a HW. Se standardními SAPI programy si myslím, že nenarazíte na žádný problém a ještě ušetříte za desku RAM-1.

JPR-1X je trochu z jiného těsta. Vrací do hry původně vyhozené featury, jako je podpora DMA a řadič přerušení 3214. Procesor 8080 je nahrazen novějším procesorem 8085 a je možné ho taktovat nejen na původní 2 MHz, ale i turbo frekvenci 4 MHz. Kartě díky použití 8085 stačí napájení jen 5V. ROM můžete přepínat jumperem a vybírat si ze dvou 8 kB bank v jednom čipu 28C256 (další dvě banky 8 kB jsou nevyužité). Jako ROM můžete osadit i 27128 nebo 28C64 apod. Dostupné RAM je 1kB, jako na původní kartě JPR-1, ale je použita RAM 6116 místo 2 ks 2114. Díky použití 8085 karta negeneruje signál INTE, ale ten se stejně na nic nepoužívá. Všechno ostatní zůstává a karta je tak plně kompatibilní s JPR-1.

Vlastně je na kartě ještě jedna drobná novinka, která navenek není „vidět“. Pro reset a hlídání napětí Libor použil obvod MAX707, který po naběhnutí napětí nad korektní úroveň udělá definovaný reset 200 ms. To krásně zajistí, že mi spolehlivě nabootuje ROM emulátor (PicoROM startuje asi 8 ms) o hodně dřív, než SAPI naběhne z resetu.

Použité TURBO na 4 MHz je za mně super, i monitor získá na responzivnosti od ANK-1M2 a běh programů třeba v BASICu je svižnější, sériové přenosy nemusíte tolik limitovat pauzami. Navíc frekvenci můžete klidně přepínat za chodu. Parádička.

Během mých pokusů jsem narazil jen na jednu drobnou nekompatibilitu, která se navíc projevovala jen na mojí kartě a ne na Liborově. Když jsem něco zapsal do paměti na neexistující adresu, tak jsem tu samou hodnotu i přečetl, jako kdyby tam paměť byla. To byl drobný zádrhel u Monitoru s MIKOS 5, který testuje přítomnost AND-1 tak, že zapíše bajt C3h na adresu 3800h a hned ho přečte a zkontroluje. Z toho nabude pocit, že má AND-1 k dispozici a nastaví konzoli na obrazovku místo na sériák na DSM-1. Přidal jsem na D3 pullup 4k7 a to situaci vyřešilo. Místo C3 se vracelo CB a monitor už nabíhal jak měl. Ničemu jinému pullup na datech nevadí. Zkoušel jsem trochu laborovat a vyloučil jsem ostatní karty v systému včetně sběrnice. Zalaboroval jsem i s některými IO, ale nic. Ne, že by mně to nějak extra trápilo, na správně adresovaných oblastech vše funguje, jak má, je to jen chování v nedefinované oblasti a workaround jsem vymyslel rychle, ale stejně jsem nad tím přemýšlel a došel k závěru, že to musí být v procesoru, něco ve vnitřní architektuře. Tak jsem obrátil naruby své letité nasyslené zásoby a našel jsem pár dalších 8085 od jiných výrobců než MITSUBISHI. A světe div se, všechno, co jsem našel tj. TOSHIBA TMP8085AP, INTEL P8085AH, INTEL C8085A (origo fialová keramika z roku 77) a OKI M80C85AH se chovají tak, jako Liborova karta, že v nedefinované oblasti vracejí spodní bajt adresy. Zato všechny 3 moje MITSUBISHI M5M80C85AP-2 vrací z nedefinované adresové oblasti naposledy zapsaná data a je jedno z jaké adresy se čte.

Když už jsem měl ty různé CPU v desce, vyzkoušel jsem na nich i TURBO režim a všechny fungují spolehlivě i na 4 MHz, včetně toho prehistorického keramického Intelu z roku 1977. Nenarazil jsem na žádnou jinou nekompatibilitu nebo program, co by mi nefungoval, takže kartu JPR-1X považuji za úspěšně otestovanou a vysoce použitelnou. Příště napíšu pár slov o softwaru, který se dá na JPR-1 provozovat a o tom, jak přenášet programy, když se nechcete trápit s kazeťákem. I když i to je správná retro cesta.

Příspěvek byl publikován v rubrice Československé počítače, Moderní projekty, SAPI-1 se štítky , , , , , , . Můžete si uložit jeho odkaz mezi své oblíbené záložky.

6 komentářů: Klasické SAPI-1 desky moderně – JPR-1S a JPR-1X

  1. Libor L.A. napsal:

    Díky moc za propagaci vývoje pro SAPI a taky za čas, který jsi věnoval objevení podstaty problému s vracením údajů z neexistující RAM u karty JPR-1X. Samotnému mi není stále jasné, jak může procesor změnit čtená data, která mu dost silně vnutí oddělovač datové sběrnice 74LS245, který nepozná, že načítá data z neexistující lokace. Myslím, že na příští akci vezmu logický analyzátor a bude nad čím bádat. Mám takové nejasné tušení, že malý rozdíl může být pouze v časování signálu /RD procesoru a to rozhoduje, jaká parazitní data se v té chvíli „povalují“ na vstupní straně 74LS245. Zda nějaké zbytky po zápisu spodní části adresy nebo poslední datový výstup.

    • Martin napsal:

      No, je to divný, že zaznamená ten pullup na D3 za 74LS245. Ještě může být rozdíl v časování INTA nebo HLDA a něco uvnitř, co se prostě chová jinak, nic jiného na to už vliv mít nemůže.

      • Libor Lasota napsal:

        Ještě jsem si uvědomil, že tím, že u 74LS245 přepínám směr při aktivovaném budiči, může při tom přepnutí dojít k načtení informace, která těsně před tím přepnutím proudila směrem od CPU. Jestli je tam na 74LS245 nějaký měkký level keeper nebo je to dílo parazitní kapacity je úplně jedno. A pak už opravdu záleží na vlastním CPU, co v čase těsně před načtením dat z datové sběrnice sám vysílal směrem ven. Zda relikt adresy nebo poslední data, která zapisoval. Tento scénář by i vysvětlil, proč je možné ten načtený údaj korigovat externím pull-up či pull-down rezistorem.

  2. Mahoney napsal:

    Bude možné použít JPR-1X (8085) spolu s BGP-1S?

    • Martin napsal:

      Já jsem to zatím nezkoušel, ale nevidím žádný důvod proč by to nešlo.

    • Libor Lasota napsal:

      Ano, ale spíše než BGP-1S (výstup video v režimu SCART/RGB) bych výhledově doporučil BGP-1V s výstupem na VGA monitor. Prototyp BGP-1V byl předveden letos na jaře ve Vrbicích. Jsou tam však navrženy ještě nějaké úpravy, které by ve verzi 1.1 měly jít do výroby v řádu tří týdnů. Ale stále je ta BGP-1V v režimu vývoje a není tak otestovaná jako jiné karty.

      K BGP-1S mám jednu poznámku ve spojení s osazováním obvodů do patic. Díky použití oscilátoru z hradel po vzoru desek AND/DGD najel jednou její oscilátor na 3. harmonické, což by pro klasické CRT znamenalo pokud ne smrt, tak minimálně nefunkčnost, na LCD se „jen“ ve vodorovném směru 3x zobrazil identický obraz. Takže u oscilátoru nedávat integrované obvody do patic.

      BGP-1V je vývojově pokročilejší náhrada BGP-1S s následujícími vylepšeními: umožňuje zpětné čtení obsahu vlastní videoram, umožňuje programově povolit a zakázat přerušení od polohy vykreslovacího paprsku, a pak kvalita obrazu je díky VGA monitoru někde jinde.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *