Dziwna sprawa z 8242

Jak niektórzy pamiętają, od jakiegoś czasu bawię się techniką mikroprocesorową retro. W chwili obecnej pracuję m.in. nad dwoma równoległymi projektami prostych komputerków: jeden wykorzystuje 6502, drugi polski mikroprocesor MCY7880. W obydwu przypadkach zastosowałem pecetowy kontroler klawiatury AT/PS2, czyli popularny kiedyś układ 8242.

W komputerze na MCY7880 wszystko zadziałało bez większego problemu. Uruchomiłem przerwania, napisałem procedurę odbierającą bajt danych z klawiatury, a następnie dodałem kod tłumaczący skankody klawiszy (w domyślnym formacie Set 2, funkcja "translation" w kontrolerze jest wyłączona) na ASCII. Wszystko działa.

W przypadku 6502 miałem natomiast więcej problemów. Kod przepisałem w asemblerze 6502, nie wprowadzając do niego większych zmian (największą była zmodyfikowanie zawartości bajtu konfiguracyjnego o jeden bit - wyłączenie przerwań). Nic jednak nie chciało działać - funkcja tłumacząca wyrzucała jakieś bzdury. Postanowiłem więc sprawdzić, co w ogóle przyjmuje na wejściu. I tutaj przeżyłem spore zaskoczenie - kontroler wysyłał kody, ale w formacie "Set 1", a przecież cały czas używałem tej samej klawiatury i nie włączałem translacji.

Pomyślałem, że może trafił mi się jakiś dziwny egzemplarz 8242, więc podmieniłem je między komputerami. Jednak nie - każdy komputer zachowywał się tak samo jak przedtem.

Ktoś ma jakiś pomysł co powodu takiego stanu rzeczy?

Kod procedury inicjującej 8242 pod MCY7880:

formatting link
Kod analogicznej procedury pod 6502:
formatting link
Ktoś ma jakiś pomysł skąd się może brać ta ciekawa sytuacja?

Reply to
Atlantis
Loading thread data ...

Dnia Sat, 7 Mar 2020 19:49:44 +0100, Atlantis napisał(a):

MVI A, 09H ;Interrupts enabled, system flag set, first port clock enabled

LDA #$08 ;Interrupts enabled, system flag reset, first port clock enabled

To jest ta jedna zmiana ?

Jeszcze bym zasugerowal sprawdzenie linii danych ... ale tam jakies AA i 55 jest, to chyba sprawdzili programowo ...

A na pewno masz te sama wersje zrodla i binarki ?

J.

Reply to
J.F.

Tak.

Linie danych na pewno nie są pomieszane ani przerwane. Na obydwu komputerach uruchomiłem dość rozbudowane oprogramowanie, w postaci interpreterów BASIC-a. W przypadku takiego uszkodzenia nie działałyby prawidłowo. Poza tym cała procedura inicjacji 8242 przechodzi do samego końca, z związku z czym wiemy, że sterownik przyjmuje konkretne rozkazy/dane, odpowiadając na nie we właściwy sposób.

W sensie? Kod pisałem i kompilowałem samodzielnie, wygenerowany plik hex osobiście grałem do EPROM-u. ;)

Na razie w przypadku 6502 problem obejdę w najprostszy możliwy sposób - ustawiłem w konfiguracji bit odpowiedzialny za translację kodów (tak na wszelki wypadek, gdyby mu się odwidziało) a teraz zmodyfikuję procedurę odpowiedzialną za tłumaczenie na ASCII, aby przyjmowała dane wejściowe w set 1.

Reply to
Atlantis

W dniu 07.03.2020 o 19:49, Atlantis pisze:

Jeśli to retro, to ja miałem kiedyś problem z klawiaturą tego rodzaju, że kiedyś klawiatury miały przełącznik AT/XT ;) Płytę główna wymieniłem na giełdzie (Grazybowska) i dopiero się zorientowałem.

Reply to
Cezary Grądys

Pan Cezary Grądys napisał:

A jeszcze wcześniej nie miały. Najpierw był komputer PC/XT i do niego klawiatura. Potem pojawił się PC/AT, już z nową klawiaturą. Te dwusystemowe z przłącnikiem, to w tajwańskich klonach.

Reply to
invalid unparseable

Pan Cezary Grądys napisał:

A jeszcze wcześniej nie miały. Najpierw był komputer PC/XT i do niego klawiatura. Potem pojawił się PC/AT, już z nową klawiaturą. Te dwusystemowe z przłącznikiem, to w tajwańskich klonach.

Reply to
invalid unparseable

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.