Wednesday, November 6, 2019

CIF

Consul
Inter
Face je modul, cez ktorý som pripojil klávesnicu Consul 262.5 k NCB385. 

   Keď sa mi podarilo získať klávesnicu Consul 262.5, vedel som, že to bude tá pravá klávesnica k NBC385 a nahradí doterajšiu PC klávesnicu. Lenže nemal som k nej ani list dokumentácie. S dokumentáciou mi výrazne pomohol EC1045, ktorému ďakujem za skeny manuálov, schém aj za cenné rady.
Výhodou tejto klávesnice je, že používa sériový výstup dát v kóde ASCII. Takže sa bude dať
pripojiť priamo k obvodu 8251bez nutnosti programovania zvláštneho drivera pre CP/M.

Consul262.5 komunikuje v úrovniach TTL a používa signály :
- DATA IN : vstup dát, umožňuje ovládanie stavových LED klávesnice
- DATA OUT : výstup dát stlačenej klávesy v kóde ASCII
- CLK IN : vstup hodín, určujúci prenosovú rýchlosť (16 x Baudrate)
Parametre prenosu sú pevne nastavené
1 x štart bit
8 x data bit
2 x stop bit

Táto klávesnica sa osádzala kontrolérom MH103 alebo MH113. MH103 dáva na výstupe 9-bitový kód klávesy určený jej zapojením k MH103. Tento sa dodatočne prekóduje na 8-bitový ASCII dvojicou PROM typu MH74S571, kde každá z nich dekóduje 4 bity. MH113 obsahuje internú ROM naprogramovanú maskou, takže PROM nie sú potrebné. Výsledný ASCII kód klávesy potom putuje do obvodu UART, ktorý ho vyšle v sériovej podobe.

Ako UART je použitý obvod MHB1012 čo je TESLA ekvivalent obvodu AY-5-1012.
Pre zaujímavosť uvediem, že na vývoji tohoto obvodu sa podieľal aj ing.Ján Langoš
(zakladateľ Ústavu pamäti národa)  bližšie tu. MHB1012 potrebuje okrem +5V aj -12V, čo ale nie je problém lebo v NCB385 je zdroj, ktorý všetky potrebné napätia poskytuje.
V klávesnici som odskúšal aj obvod AY-3-1015 a IM6402, čo sú novšie verzie, ktoré už nepotrebujú -12V. Fungovali tiež ale medzi TESLA obvodmi mi títo kapitalisti nejako nesedeli.
Takže som pripojil DATA OUT na RxD 8251, CLK som vytiahol z generátora hodín pre 8251 na doske NCB85. Zapol som NCB385, začal ťukať a….zrada! Klávesnica posielala samé nezmysly. Takže nasledovala kontrola zapojenia a frekvencie CLK signálu. Všetko v poriadku. Tak som pripojil klávesnicu do sériového portu PC a po analýze v programe RealTerm sa ukázalo, že klávesnica posiela dáta v invertovanom tvare napr. kód klávesy "medzera" bol 0xDF a nie 0x20. Súviselo to s faktom, že klávesnice Consul boli určené pre počítače radu SMEP.  Tieto z dôvodu vtedajšieho obvodového riešenia používali invertované dáta.
Našťastie plošný spoj klávesnice bol navrhnutý tak univerzálne, že úprava nebola až tak zložitá.

Moja verzia klávesnice používa MH113, takže do voľných pozícií na doske, určených pôvodne pre PROM-ky som osadil pätice pre moduly, ktoré budú spätne invertovať dáta generované MH113. Na doske sú aj dve pozície pre osadenie MHB1012 podľa toho, či je použitý MH103 alebo MH113. Takže som vyspájkoval MHB1012, osadil pätice pre obe pozície a MHB1012 som umiestnil do pozície pre verziu s MH103.


Klávesnica osadená päticami


Osadené invert_moduly a MHB1012 v pozícií pre spoluprácu s MH103

Teraz už klávesnica posielala štandardný ASCII kód… teda okrem numerickej klávesnice, ktorej klávesy majú kód zvýšený o offset 0xC0. Čiže napr. Enter dáva kód 0xCD namiesto 0x0D. Toto som vyriešil pridaním jednoduchého dekodéra z hradiel NAND do invert_modulu_6, ktorý dekóduje horné 4 bity bytu z MH103.




Invert_moduly sú označené číslami 5 a 6 tak ako PROM-ky v originálnej schéme


Plošné spoje sú vyrobené frézovaním.


NAND_invert_modul6 (top)


NAND_invert_modul6 (bottom)


Konečné riešenie klávesnice


Bočný detail


No a teraz samotný modul CIF, ktorý je asi jednoduchší ako samotná úprava klávesnice.
Je to de facto len zlučovač signálu DATA OUT z Consul262.5 a TxD z Geoff terminálu
metódou wire-OR, ktorú umožňujú použité budiče 7407. Výstup som následne pripojil do vstupu RxD 8251.

Detail modulu CIF


Celkový pohľad na umiestnenie v NCB385


Dokumentácia k celému projektu tu a manuál ku klávesnici C262.5 aj tu

Teraz vznikla situácia podobná tej, keď do PC s PS/2 klávesnicou zapojíme ešte aj USB klávesnicu. NCB385 môže zároveň používať pripojenú PC klávesnicu z Geoffa a aj Consul klávesnicu naraz. Samozrejme nemožno písať na oboch súčasne.

Odporúčam si preštudovať článok "Bezkontaktní klávesnice" v červenom amatérskom rádiu 4/1989, kde je podrobnejší popis funkcie obvodu MH103.
Bolo by aj možné namiesto invert_modulov naprogramovať PROM-ky a doplniť napr. kódy kláves "šípky" tak, aby rovno fungovali s textovým editorom WordStar atď. ale nemám zatiaľ programátor na MH74S571 a v tomto stave to chodí uspokojivo.


4 comments:

  1. Zdravím, pekný projekt. Ako by ste postupovali pri konverzii klávesnice na USB?

    ReplyDelete
  2. Pokiaľ by ste použili v klávesnici invert_moduly, stačí priviesť na CLK_IN klávesnice TTL signál o f = 16 x požadovaný Baudrate a na DATA_OUT nejaký hotový prevodník zo sériového TTL signálu na USB. Ak nechcete zasahovať do klávesnice, potom niečo ako Arduino s programom na generovanie signálu CLK a negovanie dát z klávesnice.

    ReplyDelete