forum speccy.pl
ZX Spectrum => EMULATORY => Wątek zaczęty przez: Tygrys w 2013.09.24, 09:11:35
-
Odkryłem przypadkowo błędy w emulatorach.
Podsyłam programik pomocny do testowania na prawdziwym sprzęcie i emulatorze.
Na moim szarym +2 IN 254 i IN 63486 dają różne wyniki -- na emulatorach zawsze te same.
Proszę, odpalcie program testujący na prawdziwych maszynach i powiedzcie czy odczyty z Sinclair są również różne niż odczyty z portu 254.
To samo można zrobić na emulatorach, aby potwierdzić emulacja Sinclairów jest niezgodna z oryginałem. Interesują mnie informacje, na których emulatorach wyniki są jednakowe, a na których różne (czyli te działające poprawnie)
Tak, wiem, teoretycznie IN 254 powinien zczytywać wszystko, tym większe wywołało to moje zdziwienie.
-
Nie wystarczy Ci efekt czegoś takiego?
PRINT IN 254: PRINT IN 63486
Ale i tak sprawdzę dopiero wieczorem.
-
dokładnie to robi ten program, w basicu ;)
Tylko zamiast zmuszać do wpisywania programu, podesłałem gotowego .tap
1 REM 2013.09.24 Tygrys / speccy.pl
9 CLS
10 PRINT AT 0,0;"IN 254 = ";IN 254;" "
20 PRINT AT 2,0;"IN 63486 =";IN 63486;" "
30 GO TO 10
-
Bo nie pomyślałeś, że szybciej jest to wstukać, niż przerzucać na CF i podpinać divIDE ;)
-
Emulatory nie dzialaja na poziomie sprzetu, wiec roznic na niskim poziomie jest sporo, bo "co programista zakodowal to tak zostalo".
Przykladem moze byc wlasnie czytanie z portow. Zreszta na PC nie da sie np. chyba w ogole zasymulowac wcisniecia wielu klawiszy.
-
Zreszta na PC nie da sie np. chyba w ogole zasymulowac wcisniecia wielu klawiszy.
Znaczy jak się nie da? Klawiatury przestały wysyłać kilka kodów wciśnięcia po kolei a następnie kilka kodów zwolnienia w stosownej kolejności???
-
Odkryłem przypadkowo błędy w emulatorach.
Ale chodzi o odczyt klawiszy, czy joysticka przez interfejs?
-
Chodzi o odczyt joysticka.
-
Wyjaśniając problem - wychodzi nam z Tygrysem, że Sinclair'y w +2 mają pełne dekodowanie górnej połówki adresu i zgłaszają się tylko wtedy jeśli się je czyta na konkretnym porcie a nie działają jak część klawiatury - nie da się wykryć wciśnięcia/wychylenia (a właściwie NIE-wciśnięcia/wychylenia) przez odczyt portu 254 z wyzerowanymi wszystkimi bitami górnej połówki adresu.
-
Chyba IN 254 zostawi górną połówkę adresu nie wyzerowaną, tylko w stanie wysokim?
-
BASICowe IN woła najpierw FIND-INT2 pobierając parametr jako liczbę dwubajtową do BC a następnie robi IN A,(C) czyli wystawia całe BC na szynę adresową i czyta wynik. Co oznacza, że IN 254 ustawia górną połówkę na zera.
-
Timex 2048 daje tę samą wartość - 95.
Ale jak się naciska klawisze, to raz jedna liczba się zmienia, raz obie :D