forum speccy.pl

ZX Spectrum => EMULATORY => Wątek zaczęty przez: Tygrys w 2013.09.24, 09:11:35

Tytuł: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana 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.

Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: trojacek w 2013.09.24, 10:41:35
Nie wystarczy Ci efekt czegoś takiego?

PRINT IN 254: PRINT IN 63486

Ale i tak sprawdzę dopiero wieczorem.
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: Tygrys w 2013.09.24, 11:29:57
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
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: trojacek w 2013.09.24, 11:50:59
Bo nie pomyślałeś, że szybciej jest to wstukać, niż przerzucać na CF i podpinać divIDE ;)
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: Gryzor w 2013.09.24, 12:05:05
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.
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: matofesi w 2013.09.24, 12:34:08
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???
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: Phonex w 2013.09.24, 12:52:42
Odkryłem przypadkowo błędy w emulatorach.

Ale chodzi o odczyt klawiszy, czy joysticka przez interfejs?
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: Tygrys w 2013.09.24, 12:59:02
Chodzi o odczyt joysticka.
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: matofesi w 2013.09.24, 13:06:26
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.
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: trojacek w 2013.09.24, 13:11:36
Chyba IN 254 zostawi górną połówkę adresu nie wyzerowaną, tylko w stanie wysokim?
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: matofesi w 2013.09.24, 13:23:45
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.
Tytuł: Odp: Błędna emulacja Sinclair 1 / 2?
Wiadomość wysłana przez: trojacek w 2013.09.24, 20:46:27
Timex 2048 daje tę samą wartość - 95.
Ale jak się naciska klawisze, to raz jedna liczba się zmienia, raz obie :D