Korzystając z drobnych przestojów w pracy oraz faktu, że zawsze mam włączone co najmniej 2 laptopy z dedykowanymi monitorami, zezowałem (zezem rozbieżnym, oczywiście) dziś sporo do kodu TT3000. A tam - kilka niespodzianek.
1. Terminal jest zrobiony "na motywach" VT52, ale oczywiście są pewne rozbieżności (do przełączania fontów oraz włączania/wyłączania inwersji wykorzystano kody, które w VT52 służą do innych celów). Do tego jest ładnie zaimplementowany bufor klawiatury, no ale to w zasadzie standard w terminalach.
2. Mapowanie klawiszy zrobiono wręcz elegancko. Bardzo łatwo je zmodyfikować do innego układu klawiszy (nie dotyczy 8 klawiszy specjalnych, czytanych z portu #nnBF). Banalizuje to poprawienie układu klawiszy do jakiegoś sensownego, współczesnego standardu, gdyby ktoś się podjął zrobienia klona TT3000
Pozwala to na zaadaptowanie jakiejś mniej lub bardziej generycznej klawiatury, o ile tylko jej matryca zmieści się w docelowej siatce 8x8 (tyle da się osiągnąć bez głębszego kombinowania, bo w porcie #BF pozostał jeszcze bit D6 do wykorzystania).
3. Matryca klawiatury to niezła kombinacja
W zasadzie trzon jest odziedziczony po Spectrum/TC2048, do tego wspomniany port #nnBF (nn to stan niski wystawiany na jednej z linii A8-A15 - brzmi znajomo?) dla 8 dodatkowych klawiszy specjalnych, no ale jak zacząłem liczyć klawisze, doliczyłem się kolejnych 8
Otóż kody klawiszy nie są odczytywane po 5 bitów (D0..D4), tylko... po 6 (bo jeszcze dodatkowo D6). Szósta linia została wykorzystana, bo przecież terminal nie wykorzystuje magnetofonu, zatem wejście EAR jest w SCLD wolne
4. Jak już wspominałem, port #BF jest wykorzystywany do komunikacji z FDD. Do wysyłki służą bity 0..3 (czyli młodszy "nibble"), a bity 4 i 5 służą do sterowania przesyłem (natomiast bit 7 steruje diodą LED w klawiszu CAPSLOCK). W drugą stronę - z FDD do TT - jest tak samo (przy czym na bicie D7 pojawia się dodatkowo stan klawisza, zaadresowanego jedną z linii A8-A15, jak opisywałem powyżej).
5. Beeper siedzi na porcie #FE jak w Spectrum/TC2048 i służy do produkcji dźwięku przy naciskaniu klawiszy oraz przy "drukowaniu" kodu 07h (BELL).
6. Przy weryfikowaniu list kodów klawiszy z i bez shifta odkryłem, że w jednej z wersji klawiatury jest błąd na keycapie - znakowi zapytania towarzyszy backslash (\) zamiast slasha (/). Ma tak klawiatura z capsami podobnymi do klawiatury LoProfile. Wersja z "kółeczkami" na palce (coś jak klawiatury Siemensa) ma ten opis poprawiony.
7. TT3000 po starcie/resecie przeprowadza test ROM i RAM. Jak coś nie gra - wyświetla stosowny komunikat po portugalsku i się haltuje.
No i czas mi się skończył, do usłyszenia w następnym odcinku