Autor Wątek: Błędna emulacja Sinclair 1 / 2?  (Przeczytany 8776 razy)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Błędna emulacja Sinclair 1 / 2?
« dnia: 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.


trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #1 dnia: 2013.09.24, 10:41:35 »
Nie wystarczy Ci efekt czegoś takiego?

PRINT IN 254: PRINT IN 63486

Ale i tak sprawdzę dopiero wieczorem.

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #2 dnia: 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

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #3 dnia: 2013.09.24, 11:50:59 »
Bo nie pomyślałeś, że szybciej jest to wstukać, niż przerzucać na CF i podpinać divIDE ;)

Gryzor

  • *****
  • Wiadomości: 2009
  • Miejsce pobytu:
    Warszawa
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #4 dnia: 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.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #5 dnia: 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???

Phonex

  • *****
  • Wiadomości: 1260
  • Miejsce pobytu:
    Warszawa
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #6 dnia: 2013.09.24, 12:52:42 »
Odkryłem przypadkowo błędy w emulatorach.

Ale chodzi o odczyt klawiszy, czy joysticka przez interfejs?

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4537
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #7 dnia: 2013.09.24, 12:59:02 »
Chodzi o odczyt joysticka.

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #8 dnia: 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.

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #9 dnia: 2013.09.24, 13:11:36 »
Chyba IN 254 zostawi górną połówkę adresu nie wyzerowaną, tylko w stanie wysokim?

matofesi

  • *****
  • Wiadomości: 2048
  • Miejsce pobytu:
    Toruń/Poland
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #10 dnia: 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.

trojacek

  • *****
  • Wiadomości: 6831
  • Miejsce pobytu:
    Warszawa
Odp: Błędna emulacja Sinclair 1 / 2?
« Odpowiedź #11 dnia: 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