Dostałem kiedyś używaną klawiaturę PC XT. Nie miałem jej do czego podłączyć, nie wiedziałem, jak ona działa... Nie było wtedy Internetu! Zaczynałem pierwszą pracę i mój szef polecił mi, żebym przyniósł ją (klawiaturę) do pracy. (Przynieść było łatwo, w drugą stronę znacznie trudniej.) W ramach testów mojej przydatności, dał mi polecenie służbowe: rozpracuj ją! No i nie było innego wyjścia. Jaki to ma związek z V20? W środku był i8035 z zewnętrznym EPROMEM.
Na pierwszy rzut oka - prościzna. Niestety bajty odczytane z pamięci nijak nie chciały ułożyć się w program. Dopiero odtworzenie schematu dało jakieś wskazówki. Linie danych były pozamieniane. Trzeba było trochę gimnastyki - drukarki nie mieliśmy nawet w pracy. Jedyny dostępny komputer: CA80. Ale zrobiłem to. Szef pomógł zbudować prosty układ na 74198. Niestety nigdy nie dokończyłem komputera, do którego miała być podłączona.
Po kilku latach zmieniłem pracę, a elektronika staniała na tyle, że możliwy stał się zakup czegoś gotowego, kupiłem płytę główną do mojej klawiatury. W tej samej cenie można było zdobyć AT, ale... wybrałem XT z procesorem V30. Najszybszy XT na świecie!
Pod wpływem emocji zamówiłem płytki, procesor i RAM i znowu mam XT. Niestety moja pierwsza klawiatura odmówiła współpracy, ale i tak na nic by się zdała, bo uTerm obsługuje klawiatury PS2.
Ale do rzeczy! W kodzie znalazłem taki fragment:
Kod: Zaznacz cały
// Read D0-D7 and A0-A1
ioAddress = PIN_A1A0; // Read V20 address bus line A1-A0
ioData = PINA & B11110110; // Read V20 data bus D7-D0 (D0 and D3 cleared)
ioData = ioData | ((PINA >> 3) & B00000001); // Adjust D0
ioData = ioData | ((PINA << 3) & B00001000); // Adjust D3
Czy ktoś wie, w jakim celu autor projektu zamienił linie danych? Chyba nie po to, by utrudnić sobie życie...