6502

Z Atariki
Wersja z 10 lut 2011, 23:46 autorstwa KMK (dyskusja | edycje) (→Ciekawostki: skoro "56 udokumentowanych rozkazów" powyżej nie jest linkiem, to i tu nie ma uzasadnienia dla linku. Poza tym ten temat to chyba jednak 6502.org?)
Przejdź do nawigacji Przejdź do wyszukiwania

Procesor produkowany przez MOS Technology. Pierwszy raz wprowadzony do produkcji we wrześniu 1975 roku, wytwarzany przy wykorzystaniu technologii NMOS. Procesor w odróżnieniu od innych rówieśników nie był budowany w oparciu o mikrokod, był wewnętrznie prostszy i mógł pracować z mniejszymi częstotliwościami zewnętrznymi (zwykle pomiędzy 1 a 2 MHz), osiągając przy tym porównywalną wydajność. Obniżało to koszt układów z nim współpracujących, wykorzystywanych w komputerze.

Parametry

  • ośmiobitowa szyna danych
  • szesnastobitowe adresowanie
  • 56 udokumentowanych rozkazów
  • 13 trybów adresowania
  • jeden ośmiobitowy rejestr ogólnego przeznaczenia (A - akumulator)
  • dwa ośmiobitowe rejestry indeksujące (X i Y)
  • ośmiobitowy rejestr statusu - P
  • ośmiobitowy wskaźnik stosu - S
  • szesnastobitowy licznik programu - PC

W przestrzeni adresowej 6502 jest wyróżniony obszar przeznaczony na stos - jest to obszar od $0100 do $01FF.

Błędy w 6502

  • dodawanie i odejmowanie w trybie dziesiętnym ustawia znaczniki N i Z nieodpowiednio dla uzyskanego wyniku dziesiętnego (odzwierciedlają one cząstkowy wynik binarny operacji, przed korekcją dziesiętną)
  • rozkaz JMP ($xxFF) pobierze adres skoku z komórek $xxFF/$xx00 zamiast z $xxFF/$xy00.
  • rejestr znaczników zapisany na stos przez PHP ma zawsze ustawiony bit B

Błędy związane z przerwaniami

  • znaczniki są nieustalone po RESET
  • wystąpienie przerwania nie wyłącza trybu dziesiętnego ALU
  • wystąpienie przerwania podczas wykonywania rozkazu BRK spowoduje, że zostanie on zignorowany.
  • jednoczesne wystąpienie przerwania NMI oraz IRQ powoduje, że to pierwsze zostanie zignorowane (jest to w zasadzie błąd w oryginalnej dokumentacji 6502, który spowodował, że sygnał NMI podawany przez układy specjalizowane zbudowane na jej podstawie - np. ANTIC - jest za krótki w stosunku do rzeczywistych wymagań procesora).
  • obsługa przerwania NMI, które wystąpiło podczas wykonywania odgałęzienia ("wykonany" rozkaz Bxx), jest opóźniona do chwili zakończenia wykonywania rozkazu następnego po odgałęzieniu, zamiast rozpoczynać się w chwili zakończenia samego rozkazu odgałęzienia (źródło).

"Zbędne" odczyty i zapisy

  • rozkazy typu read-modify-write (ASL, DEC, INC, LSR, ROL, ROR) wykonują dwa zapisy do modyfikowanej komórki pamięci, z czego za pierwszym razem procesor zapisuje odczytaną z komórki wartość.
  • rozkazy w indeksowanym trybie adresowania (abs,X i abs,Y) dokonują dodatkowego odczytu spod niewłaściwego adresu, jeśli dodanie adresu bazowego i indeksu powoduje zwiększenie starszego bajtu adresu efektywnego (czyli jego "przejście" na następną stronę).
  • wykonany rozkaz odgałęzienia (Bxx) powoduje dodatkowy odczyt spod niewłaściwego adresu, jeśli przeskok jest na sąsiednią stronę.

Błędów tych pozbawione są późniejsze wersje procesora, tj. 65C02 oraz 65C816.

Ciekawostki

  • Procesor ma pewną liczbę nieudokumentowanych rozkazów. Szczegóły działania części z nich zależą od konkretnej wersji procesora. Dlatego, mimo że zastępują one w niektórych przypadkach kilka rozkazów standardowych, nie jest zalecane ich używanie.
  • Listing programu przeznaczony dla procesora 6502 był wykorzystany w filmie "The Terminator" (1984, pol. Elektroniczny Morderca) przy wyświetlaniu obrazu z kamery Terminatora T800 Model 101. Jest to listing programu dla komputera Apple II.
  • Robot Bender, bohater serialu animowanego Futurama, będącego jedną z głównych atrakcji czwartego Sztabu Małopolska, ma "mózg" zbudowany na procesorze 6502, o czym dowiadujemy się z odcinka pod tytułem "Fry & the Slurm Factory".

6502 w Atari

Komputery serii 400/800 są wyposażone w układ 6502A lub 6502B. Są to "szybsze", czyli przystosowane do pracy z szybszym zegarem, wersje 6502. Zwykły 6502 może działać z częstotliwością do 1 MHz, wersja A do 2 MHz, a wersja B do 3 MHz.

Serie XL i XE mają jeszcze nieco zmodyfikowany procesor, znany jako 6502C. Zmiana w stosunku do oryginału polega na dodaniu linii HALT, której uaktywnienie powoduje zatrzymanie procesora i odłączenie go od magistrali. W modelach 400/800 robił to oddzielny obwód złożony z elementów dyskretnych.

Szybkość taktowania procesora w Atari zależy od tego, do jakiego systemu telewizji przystosowany jest komputer:

  • wersja NTSC: 1,789790 MHz lub (w XE) 1,7897725 MHz
  • wersja PAL: 1,773447 MHz
  • wersja SECAM: 1,7815 MHz (tylko XL i XE)

Zobacz także