@trojacek: Właśnie udowodniłeś, że emulator którego używasz, nie odzwierciedla zachowania sprzętu w 100%
![Cheesy :D](https://www.speccy.pl/forum/Smileys/aaron/cheesy.gif)
Moim zdaniem, jedynymi sensownymi i prawidłowymi odpowiedziami na wywołanie
IN 254, przy braku sygnału na wejściu magnetofonu oraz zwarcia na klawiaturze, są:
191 lub
255.
Dlaczego?Zapiszmy binarnie otrzymane odpowiedzi:
Dec = 7654 3210b
95 = 0101 1111 (emulator)
191 = 1011 1111 (hardware)
255 = 1111 1111 (hardware)
Przy odczycie z portu 254 stany poszczególnych bitów pojawiające na szynie danych zostały przypisane następująco:
- D0...D4 - klawiatura
- D5 - bez znaczenia (*)
- D6 - wejście EAR (**)
- D7 - bez znaczenia (*)
* - bez znaczenia, czyli 1 lub 0.
** - w zależności od wersji ZX Spectrum (ULA), może być 0 lub 1.
I na tym można by zakończyć dywagacje, ponieważ wartości bitów D5 i D7 nie mają znaczenia, więc wszystkie 3 wartości wydają się prawidłowe. ALE w ZX Spectrum szyna danych (cała) jest podciągnięta do stanu wysokiego poprzez rezystory (R9-R16). Dlatego D5 i D7 będą w stanie wysokim (1), a nie niskim (0), jak w przypadku odpowiedz emulatora. Reasumując, na wywołane
IN 254 i braku urządzeń siejących po szynie danych, powinniśmy otrzymać:
1x11 1111 czyli 191 lub 255.
Joy w standardzie Kempstona:Przy odczycie z portu 31 (
IN 31) i braku czegokolwiek siejącego po szynie danych, jedyną poprawną odpowiedzią jest
255. Wyjaśnienie dlaczego tak jest, jest powyżej.
Jeśli w systemie obecny jest Kempston, w jego stanie bezczynnym (żadne z kierunków ani FIRE nie są aktywne) odczytana wartość wyniesie
0. A wynika to z jego konstrukcji.
Dlatego uważam, że wszystkie inne odpowiedzi, niż przywołane powyżej, są błędne.