Autor ::Martin Ulrich Poslaná :: 04.07.2011 21:43:33 Predmet ::Myš Poly - 08 a myš 602 .
Zdravím,zjistil jsem že emulátor umí emulovat myš Poly a 602 . Na internetu jsem kromě stručného popisu nenašel nic, a tak se ptám jestli někdo neví jak posíla souradnice a jestli je zmáčklé tlačítko. Pravděpodobně přes nějaký port. ale nemůžů najít jaký. Dál se chci zeptat jestli by v budoucnu šla udělat emulace sítě . Tuším že přes PMD 70 nebo něco takového.
Správa
Autor ::Roman Bórik Poslaná :: 05.07.2011 11:34:31 Predmet ::Re: Myš Poly - 08 a myš 602 .
Myš Poly je sériová myš vyrábaná v OPVS Dolný Kubín a to v dvoch verziách. Poly-16 je určená pre PC-XT/AT a Poly-08 je určená prednostne pre PMD 85, ale pripravovali sa interfejsy pre ďalšie 8 bitové počítače. Myši sa líšili iba pár prepojkami na DPS a konektormi.
Myš obsahuje jednočipový mikroprocesor MHB 8748C, ktorý spracúva pohyby myši a stlačenie tlačidiel. Tento stav je sériovo zhruba každých 10 ms posielaný do PMD 85 v sérii 3 bytov - stav tlačidiel, deltaX, deltaY.
Myš sa pripája na aplikačný konektor, je použitý port 8Ch a na ňom iba bit D7, ako vstup sériových dát. Pred odoslaním svojho stavu myš vyvolá prerušenie a séria troch bytov je bit po bite prečítaná v obsluhe prerušenia a uložená do pamäte. Hlavný program potom tieto dáta spracuje. Komunikácia medzi myšou a PMD 85 prebieha v asynchrónnom režime, rýchloťou 4800Bd, 8 datových bitov a 1 stop bit.
K myši bola dodávaná kazeta s ovládačom (MDRIVER) a ukážkovým testovacím programom (MTEST). Mimochodom, ovládač a aj testovací program sú napísané veľmi amatérsky a je len zázrak, že to vôbec funguje... Neviem o inom programe, ktorý by túto myš využíval.
Myš 602 pre PMD 85 bola navrhnutá Ing. Vítom Libovickým a Jiřím Olmerom. Vznikla aj pre ZX Spectrum.
Je to paralelná myš, ktorá sa pripája na aplikačný konektor PMD 85 a používa vstupný port 8Ch. Paralelná myš vracia po dva navzájom posunuté signály pre X-ovú a Y-ovú os. Na základe zmeny týchto signálov sa vyhodnocuje pohyb myši. Signály AY, BY, AX, a BX sú pripojené na bity D0 až D3. Na ďalšie dva bity D6 a D7 sú pripojené tlačidlá ľavé a pravé. Myš 602 využíva prerušenie pre pravidelné snímanie stavu myši. Prerušenie je vyvolávané časovačom 8253. Využité sú časovače 0 a 1, ktoré sú zreťazené.
Myš nepotrebuje žiadny špeciálny interfejs, ale prepojenie časovačov musí byť prevedené v konektore. Port 8Ch je "implicitne" aktivovaný samotným zapojením aplikačného konektora na PMD 85.
Vhodnou myšou je typ 3WN16605 z Tesly Blatná. U tejto myši je ale potrebné invertovať signály tlačidiel. Naviac, z vlastnej skúsenosti som zistil, že označenie farieb vodičov v návode k tejto myši nezodpovedalo skutočnosti a musel som trošku laborovať s prehadzovaním signálov medzi AY/BY, AX/BX a tlačidlami.
Existuje jediný program, ktorý túto myš využíva. Je to Greditor od Ing. Víta Libovického.
Emulácia siete by teoreticky/prakticky urobiť šla, avšak nemáme dostatočné informácie o tom, ako sieť s PMD 70 fungovala. PMD 70 sa vyrábala vo viacerých verziách. V základe PMD 70-Master a PMD 70-Slave, kde aj Master aj Slave sú PMD 85. Ďalej existovali PMD 71-A, o ktorej nevieme vôbec nič a PMD 72 určená pre PP-06, ktoré zastávalo pozíciu Mastera. Naviac, máme iba ovládač pre PMD 70-Slave (pre PMD 85-3), ktorý je zmapovaný iba čiastočne.
V základe sieť umožňovala Master stanici poslať Slave stanici/staniciam konkrétny program v BASICu. Jednotlivé stanice si mohli navzájom posielať textové správy. Master vedel získať obsah obrazovky ktorejkoľvek Slave stanice a podobne.
Správa
Autor ::Libor L.A. Poslaná :: 24.06.2018 10:17:14 Predmet ::Re: Myš Poly - 08 a myš 602 .
Jak vlastně funguje emulace myši 602? Zkoušel jsem zapnout emulaci a na portu 8Ch jsem očekával stav clonek a tlačítek. A ono nic. Předpokládám, že to bere stav normální hardwarové myši z PC a změny souřadnic promítá do stavu clonek na portu 8Ch.
Správa
Autor ::dex Poslaná :: 24.06.2018 18:47:05 Predmet ::Re: Myš Poly - 08 a myš 602 .
Podle mých informací přiřazení bitů portu na ZX Spectru (a na PMD by mělo být snad stejné, na PMD je použit port 140, na Spectru nula) je:
Rutina pro obsluhu myši 602 pro Spectrum (a pro PMD měla být použita stejná, Libovický pro PMD psal v assembleru Z80) je kromě manuálu k myši zveřejněna i v ZX Magazínu 3/2004, strana 9.
Správa
Autor ::Libor L.A. Poslaná :: 24.06.2018 19:25:08 Predmet ::Re: Myš Poly - 08 a myš 602 .
Prozatím mám svou rutinu na dekódování pohybu myši v obou osách o délce 19 bajtů plus lookup tabulka 256 bajtů. Prozatím mě místo netlačí, tak to nechám tak. Pokud se ukáže, že je i s vykreslováním myšího kurzoru "strojového času dost", tak bych to zoptimalizoval (prý někdo použil Karnaughovy mapy) nebo bych použil verzi bez tabulek. Ale ta lookup tabulka je v mém případě ideální řešení, protože poskytuje přímo směrový kód pohybu myši 1..8 (0 znamená bez pohybu, 9 znamená přeskok dvou fází) pro obě sady clonek najednou.
Ale pokud se mi podaří stáhnout uvedená čísla ZXM, asi se budu inspirovat a nebudu objevovat objevené.
Správa
Autor ::dex Poslaná :: 26.06.2018 18:59:05 Predmet ::Re: Myš Poly - 08 a myš 602 .
Verze s Karnaughovými mapami (pro A-mouse) je v ZXM 1/1995, strana 22.
Připojení myši je podobné, jako myši 602 - Amiga myš připojená do konektoru kempston joysticku na ZX Spectru.
Ještě někdo posílal nějakou pozdější modifikaci, která byla kratší, ta je v ZXM 4/2000, strana 18, ale mně se moc nelíbila.
Správa
Autor ::Libor L.A. Poslaná :: 27.06.2018 17:04:51 Predmet ::Re: Myš Poly - 08 a myš 602 .
Díky vám oběma s Romanem za informace, ovladač myši 602 pro PMD-85 je hotový (a brzy bude implementován v nové hře). Ještě zkusím o víkendu připojit ATARI ST myš ve stylu myši 602 na systémový konektor. Myslím, že by na to mělo stačit 6ks odporů ca 4k7 přímo na odpovídající linky datové sběrnice a to ještě jen jako ochrana proti zpětnému zápisu na port 8Ch. Sice to bude číst všechny porty, které nejsou na základní desce adresovány - ale to by asi nemělo vadit.
Správa
Autor ::Roman Bórik Poslaná :: 24.06.2018 20:36:45 Predmet ::Re: Myš Poly - 08 a myš 602 .
Autor ::Roman Bórik Poslaná :: 24.06.2018 15:04:47 Predmet ::Re: Myš Poly - 08 a myš 602 .
Myš 602 je implementovaná iba pre PMD 85-1. Myš využíva zreťazené čítače CT1 a CT0 (do CT1 vstupuje PHI2TTL, výstup CT1 vstupuje do CT0 a výstup CT0 vyvoláva prerušenie).
A ako som už písal, jediný program, ktorý túto Myš používa je GREDIT16 z balíka Grafické programy.
Ten inicializuje časovače tak, že je prerušenie vyvolávané približne raz za 1 ms.
V programe je od adresy 0B4Dh inicializácia prerušenia a časovačov. Hneď za touto rutinou je samotná obsluha prerušenia a teda aj samotnej Myši.
Správa
Autor ::Libor L.A. Poslaná :: 24.06.2018 16:49:45 Predmet ::Re: Myš Poly - 08 a myš 602 .
A co vlastně brání tomu, aby myš typu 602 byla implementována i u ostatních verzí PMD-85? Ten port 8Ch se mi opravdu ozývá jen u verze 1.
Správa
Autor ::Roman Bórik Poslaná :: 24.06.2018 19:02:15 Predmet ::Re: Myš Poly - 08 a myš 602 .
Teoreticky asi nič... Na PMD 85-1 som to zrejme "limitoval" iba preto, že bola Myš pôvodne iba pre PMD 85-1. Napíšem si to do TODO listu.
Správa
Autor ::Libor L.A. Poslaná :: 24.06.2018 19:17:11 Predmet ::Re: Myš Poly - 08 a myš 602 .
Díky. Já bych byl pro. Ostatně tělo programu tak bude moci být sdíleno i myšmi z ATARI ST (a prý i z Amigy) a provozováno na všech verzích PMD-85.
Správa
Autor ::dex Poslaná :: 05.07.2011 10:34:35 Predmet ::Re: Myš Poly - 08 a myš 602 .
Mxš 602 pracuje jako BUS mouse (tedy stejně, jako myš k Amize, Atari ST nebo Acornu Archimedes), na portu se objevují stavy clonek a tlačítek (nejkratší ovladač, který jsem viděl, na to používá Karnaughovy mapy).
Bohužel nemám k myši dokumentaci, opsal jsem si, když jsem ji měl půjčenou, jen údaje pro ZX Spectrum.
Vím jen, že na PMD se používá časovač k vyvolání rychlých přerušení (cca 1000x za sekundu), aby se stav myši četl dostatečně často. Ovladač z programu Greditor, jehož výpis byl součástí dokumentace k myši, byl pro PMD-85 psán v assembleru s využitím Z80 mnemoniky (obvyklý postup Víta Libovického na 8080 strojích).
Bohužel já číslo portu neznám, mohl by to být 8C (viz tabulka http://pmd85.borik.net/_work/porty_PMD_85.htm ).
Správa
Autor ::Roman Bórik Poslaná :: 05.07.2011 12:39:46 Predmet ::Re: Myš Poly - 08 a myš 602 .
Autor ::Martin Ulrich Poslaná :: 06.07.2011 15:59:02 Predmet ::Re: Myš Poly - 08 a myš 602 .
aha,dekuji. A nemáte někdo obraz kazety s tím ovladačem a ukázkovým programem? Původně sem chtěl udělat jenom takovou blbost, podle toho jak by se myší hýbalo tak by se ukazoval bod na obrazovce, primitivni kurzor. Čekal jsem něco jako Kempston mouse,kde jsou 3 porty a na jednom je souřadnice X,na druhém souřadice Y a na třetí tlačítka myší,ale tyhle dvě jsou na mě moc složité.
Správa
Autor ::Roman Bórik Poslaná :: 06.07.2011 23:30:19 Predmet ::Re: Myš Poly - 08 a myš 602 .
Ovládač a testovací ukážkový program možno predbežne stiahnuť tu: http://pmd85.borik.net/_work/poly-08.ptp
Scany z manuálu k myši: http://pmd85.borik.net/_work/poly-08-1.jpg http://pmd85.borik.net/_work/poly-08-2.jpg
Nahrať treba MDRIVER a aj MTEST a spustiť JUMP 5000. Keby to náhodou "zhavarovalo", tak to treba skúsiť znovu.
Problém je v tom, že MTEST používa pri výpisoch na obrazovku podprogramy z Monitora PMD 85, ktoré využívajú SP register ako ukazateľ do VRAM bez toho, aby sa pred tým zakázalo prerušenie. A ako bolo spomenuté vyššie, myš prerušenie využíva. Pokiaľ SP práve ukazuje niekde do VRAM a dôjde k prerušeniu, tak sa po vstupe do prerušenia v najlepšom prípade iba poškodí časť VRAM. Ak je ale SP niekde hore na prvých stĺpcoch obrazovky, PUSHovanie vlastne "pretečie" do systémových premenných Monitora a čo sa stane ďalej je už "vo hviezdach". Najčastejšie sa mi to stávalo hneď pri spúšťaní MTESTu, zrejme pri mazaní obrazovky.
Správa
Autor ::Roman Bórik Poslaná :: 07.07.2011 09:46:45 Predmet ::Re: Myš Poly - 08 a myš 602 .
Musím (po)opraviť svoje tvrdenia o probléme s prerušením a rutinami v Monitore.
Pri tlači znaku v rutine na adrese 854Ah sa nastavuje register SP na hodnotu 0FFC0h, čo je -64 a predstavuje offset pre prechod na predchádzajúci mikroriadok VRAM. Na to je tam použitá inštrukcia DAD SP (HL ukazuje do VRAM). Pokiaľ v tomto čase, kedy má SP hodnotu 0FFC0h, dôjde k prerušeniu, tak sa pochopiteľne na "zásobník" uloží návratová hodnota a hodnoty ostatných registrov odpamätávaných v obsluhe prerušenia. Keďže od adresy 0FFC0h k nižším adresám nič nie je, tak to v prípade MTESTu nevadí a všetko chodí ako má. Možno si to overiť v emulátore tak, že si v debuggeri do MEM dajte adresu 0FFB0h a spustite MTEST. Po zapnutí PMD 85 by tam mali byť samé nuly, ale pri behu MTESTu je od adresy 0FFB4h vidieť hodnoty, ktoré sa tam uložili pri vyvolaní prerušenia.
Väčší problém je v rutine pre zmazanie obrazovky na adrese 85A7h. Tam sa SP register používa na dva účely. V prvom prípade je to ukazateľ do VRAM, kedy sa inštrukciou PUSH B vypĺňa VRAM nulami. Tu platí to, čo som uviedol v predošlom príspevku. Pokiaľ sa SP dostane do ľavej časti obrazovky, vyvolané prerušenie môže poškodiť niektoré systémové premenné. Druhý prípad je kritickejší, pretože sa SP nastavuje na hodnotu 0040h, opäť ako offset pre prechod na nasledujúci mikroriadok VRAM. I keď má SP túto hodnotu iba veľmi krátko (20 taktov pre každý mikroriadok), tak v prípade vyvolania prerušenia, samotná rutina obsluhy prerušenia si prepíše skokovú inštrukciu JP xxxx, ktorá je na adrese 0038h. MDRIVER sa pri prerušení vnára o 12 bytov, 0040h - 000Ch = 0034h. Pri nasledujúcom prerušení sú už na adrese 0038h nezmysly a to je dôvod k nepredvídateľnému chovaniu. MTEST maže obrazovku iba pri spustení (po inicializácii a povolení prerušenia), takže preto mi program padal iba pri jeho spúšťaní.
Správa
Autor ::dex Poslaná :: 06.07.2011 19:43:15 Predmet ::Re: Myš Poly - 08 a myš 602 .
Já Greditor v .ptp souboru pro PMD mám (laskavostí bratří Bóriků), nahrál jsem ho sem: http://www.uloz.to/9592248/gredit16-ptp
ALE (cituji):
"Editor je iba pre PMD 85-1 a bez pripojenej myši sa ani nenahraje, pretože pre čítanie bytu z MGF používa prerušenie od časovača, ktoré je potom používané samotným ovládačom myši."
"Podľa prvotného preskúmania kódu síce program nevolá žiadne rutiny z ROM, ale na začiatku si inicializuje systémové premenné podľa tabuliek z ROM. Ťažko teraz povedať, aký to má účel.
Čo sa týka HW, tak hlavne kvôli MGF IF, takže kód, ktorý číta z MGF funguje iba na PMD 85-1.
Pokiaľ sa nemýlim a skutočne program nevolá žiadne rutiny z ROM, tak by sa s drobnými úpravami dal použiť aj na ostatných modeloch. Pochopiteľne, bez pôvodného efektného loaderu, u ktorého sa najprv priblíži číslo 602 a roztiahne sa do priestoru a následne sa zobrazí "obostranný" štvorboký vektorový ihlan, ktorý sa počas nahrávania otáča. Libovický sa zrejme nudil :-)"
"Ten kúsok kódu z Greditu, ktorý si uviedol v ZXM 3/04 je takmer identický ako ten v Gredite na PMD 85.
Nejde mi ale do hlavy, prečo má Libovický v tom ovládači až 4 platné prechodové stavy pre každý smer (4x 1 a 4x -1)."
ZXM 3/04 je možno najít zde: http://zxm.speccy.cz/zxm/3-04.pdf (strana 9).
(první zmínka byla http://zxm.speccy.cz/zxm/1-02-4-03.pdf strana 19).
Správa
Autor ::dex Poslaná :: 06.07.2011 20:16:12 Predmet ::Re: Myš Poly - 08 a myš 602 .
I když já pro A-Mouse na ZX Spectru používal s úspěchem celkem krátký ovladač ze ZXM 1/95, který považuju za nepřekonaný (a to i tím ze ZXM 4/00). http://zxm.speccy.cz/zxm/1-95.pdf
Nepoužívá žádné Z80 specifické instrukce, které by se nedaly na 8080 nahradit.
Tento program nevyžaduje aktivaci rychlého přerušení, na Spectru stačilo zavolat ho jednou během TV snímku a podle výsledku překreslit šipku.