Modyfikacje sprzętowe procesora: Różnice pomiędzy wersjami

Przejdź do nawigacji Przejdź do wyszukiwania
brak opisu edycji
Nie podano opisu zmian
Nie podano opisu zmian
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika)
Linia 61: Linia 61:
Przykładowe konstrukcje używające 17-bit adresowania bajtów (w składni assemblera [[EMAS]]):
Przykładowe konstrukcje używające 17-bit adresowania bajtów (w składni assemblera [[EMAS]]):


<syntaxhighlight lang="asm">
  LW r2, 0x9400    ; 0x9400 to adres słowa, w którym adresujemy bajt
  LW r2, 0x9400    ; 0x9400 to adres słowa, w którym adresujemy bajt
  MD 1            ; wskazanie bajtu w słowie
  MD 1            ; wskazanie bajtu w słowie
  LB r1, r2+r2    ; załadowanie bajtu; adresem bajtowym staje się 2*r2+1
  LB r1, r2+r2    ; załadowanie bajtu; adresem bajtowym staje się 2*r2+1
</syntaxhighlight>


<syntaxhighlight lang="asm">
  LW r5, 0xAAAA    ; 0xAAAA to słowowy adres bazowy obszaru, który chcemy adresować
  LW r5, 0xAAAA    ; 0xAAAA to słowowy adres bazowy obszaru, który chcemy adresować
  LW r6, r5+r1    ; w r6 do adresu bazowego dodajemy również przesunięcie (indeks) przechowywany w rejestrze r1
  LW r6, r5+r1    ; w r6 do adresu bazowego dodajemy również przesunięcie (indeks) przechowywany w rejestrze r1
  MD r6            ; pre-modyfikacja zapewnia dodanie do argumentu wartości r5+r1
  MD r6            ; pre-modyfikacja zapewnia dodanie do argumentu wartości r5+r1
  RB r3, r5        ; zapamiętanie bajtu pod bajtowym adresem 2*0xAAAA+r1
  RB r3, r5        ; zapamiętanie bajtu pod bajtowym adresem 2*0xAAAA+r1
</syntaxhighlight>


17-bitowe adresowanie bajtów może rodzić problemy w specyficznych przypadkach użycia go w oprogramowaniu pisanym na oryginalny procesor. Rozpatrzmy następujący przykład:
17-bitowe adresowanie bajtów może rodzić problemy w specyficznych przypadkach użycia go w oprogramowaniu pisanym na oryginalny procesor. Rozpatrzmy następujący przykład:


<syntaxhighlight lang="asm">
  LW r2, 0x3b00
  LW r2, 0x3b00
  LW r3, -12
  LW r3, -12
  MD r2
  MD r2
  LB r1, r2+r3
  LB r1, r2+r3
</syntaxhighlight>


Jeśli przeniesienia przy obliczaniu argumentu normalnego są zaniedbywane (jak w oryginalnym procesorze), adres bajtowy zostanie obliczony zgodnie z intencją programisty w następujący sposób:
Jeśli przeniesienia przy obliczaniu argumentu normalnego są zaniedbywane (jak w oryginalnym procesorze), adres bajtowy zostanie obliczony zgodnie z intencją programisty w następujący sposób:
Linia 166: Linia 160:


Jeśli modyfikacja procesora jest aktywna, sygnał '''+ZI8''', oprócz swojej pierwotnej funkcji, powoduje też zamaskowanie przerwań w grupach 4, 5, 6 i 7.
Jeśli modyfikacja procesora jest aktywna, sygnał '''+ZI8''', oprócz swojej pierwotnej funkcji, powoduje też zamaskowanie przerwań w grupach 4, 5, 6 i 7.
= Reakcja procesora na brak pamięci =
'''Uwaga:''' Na istnienie poniższej zmiany silnie wskazuje analiza zawartości kości EPROM pamięci MEGA oraz inne zmiany w procesorze MX-16, jednak nie została ona definitywnie potwierdzona.
Ponieważ MX-16 nie był wyposażony w pulpit techniczny, konieczna była zmiana w sposobie, w jaki procesor reaguje na odwołanie do nieskonfigurowanego segmentu pamięci w obszarze systemowym. Oryginalny procesor przechodził w stan STOP, z którego można go było wybudzić jedynie kluczem START/STOP. W MX-16 nie było takiej możliwości, więc obsługa takiego przypadku musiała być w pełni programowa i ograniczać się do zgłoszenia przerwania, podobnie jak w przypadku błędów dostępu do pamięci programów użytkowych.
== Realizacja techniczna ==
Zostało to osiągnięte nie tyle przez modyfikację, co rekonfigurację procesora. Na pakiecie P-X istnieje zwora S-R (nie opisana w dokumentacji), która decyduje o tym, czy w opisanym wyżej przypadku wymuszany jest stan STOP. W komputerach MX-16 była ona najprawdopodobniej rozwarta.


= Połączenia na platerze procesora =
= Połączenia na platerze procesora =

Menu nawigacyjne