Autor Wątek: Błędy w procesorze Z80?  (Przeczytany 9215 razy)

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4540
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Błędy w procesorze Z80?
« dnia: 2013.08.13, 15:08:57 »
Czy ktoś natknął się na informacje o błędach w procesorach Z80?

W sieci są informacje o słynnym błędzie w Pentium związanym z FPU, błędach w 6502, ale nic nie ma o błędach w Z80.

http://en.wikipedia.org/wiki/Pentium_FDIV_bug
http://en.wikipedia.org/wiki/MOS_Technology_6502#Bugs_and_quirks

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Błędy w procesorze Z80?
« Odpowiedź #1 dnia: 2013.08.13, 16:08:25 »
Jest jeden błąd, podobno ukryty pod obrusem przez Ziloga: błędne działanie SLL (Shift Left Logical), co doprowadziło do skreślenia tej instrukcji z oficjalnej listy. Jest na liście nieoficjalnych rozkazów coś, co zależnie od źródła nazywane jest SLL lub SLS (Shift Left Set), SL1, SLL/SL1, czy SLIA (Shift Left Inverted Arithmetic). Instrukcja ta ma opcode taki jak powinna mieć SLL i robi prawie to co powinna SLL - przesuwa bity w lewo, ale w bit zerowy wstawia 1 zamiast 0.

http://www.cpcwiki.eu/index.php/Z80_-_undocumented_opcodes#CB_prefix

robreg

  • *
  • Wiadomości: 29
  • Miejsce pobytu:
    Warszawa
  • Timex 2048 + FDD3000
Odp: Błędy w procesorze Z80?
« Odpowiedź #2 dnia: 2013.08.13, 16:36:36 »
Czy ktoś natknął się na informacje o błędach w procesorach Z80?

W sieci są informacje o słynnym błędzie w Pentium związanym z FPU, błędach w 6502, ale nic nie ma o błędach w Z80.

Bo, jak to wspominał mój profesor od urządzeń peryferyjnych, w czasach pentium to się nazywało błędy, w czasach 8008 i podobnych, były to nieudokumentowane instrukcje CPU :) :) :)

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Błędy w procesorze Z80?
« Odpowiedź #3 dnia: 2013.08.13, 22:09:51 »
Czy to znaczy że różne egzemplarze różnie wykonują ten rozkaz?
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Błędy w procesorze Z80?
« Odpowiedź #4 dnia: 2013.08.13, 23:19:07 »
Nieeee. W zależności od źródła, czyli autora opisu, a nie źródła procesora :)

Ale jest jeden rozkaz, który jest inaczej wykonywany przez podróbki Z80!
LDIR. Rosyjskie podróbki za każdym przesłaniem danych pobierają ponownie kod rozkazu z pamięci, więc jeśli program będzie zerował pamięć używając LDIR i dotrze do miejsca gdzie LDIR jest, to na podróbce zamaże pierwszy bajt rozkazu LDIR i przestanie go wykonywać!

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Błędy w procesorze Z80?
« Odpowiedź #5 dnia: 2013.08.14, 10:16:52 »
Z tego co kiedyś słyszałem nieoficjalne instrukcje mogą  się zachowywać dziwnie na klonach.

Podobnie było na pierwszych modelach Z80 wypuszczanych oryginalnie przez Zilog.

Jak sądzicie, dlaczego Zilog nie włączył ich do oficjalnej specyfikacji procesora?

Czy dlatego że nie wiedzieli o ich istnieniu?

Raczej nie, wiedzieli dobrze, tylko instrukcje te były zawodne a ich efekt był nieprzewidywalny.

Później udało się ogarnąć sprawę i w czasach Zx Spectrum możemy być w zasadzie pewni że instrukcje te będą działać poprawnie
(pamiętajmy że Z80 to 1976 rok a Spectrum był aż 6 lat później)


Gryzor

  • *****
  • Wiadomości: 2010
  • Miejsce pobytu:
    Warszawa
Odp: Błędy w procesorze Z80?
« Odpowiedź #6 dnia: 2013.08.14, 10:44:16 »
Na klonach to juz nie tylko rozkazy, ale tez sygnaly zachowuja sie inaczej.
Niektore, chyba np. niemiecki U80 mialy nawet jakies rozszerzenia listy rozkazow.
Moim zdaniem czesc rozkazow nie byla oficjalna, bo Zilog uznal je za malo przydatne, a ich obecnosc i tak wynikala z architektury procesora.
Pewno dla innych prockow jest podobnie, bo przy kopiach x86 tez wychodzily niezgodnosci.

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4540
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Błędy w procesorze Z80?
« Odpowiedź #7 dnia: 2013.08.16, 14:24:41 »
Moim zdaniem nieudokumentowane instrukcje nie są błędami, nie powodują błędnych wyników operacji. Lubię je i z nich korzystam ;-)
Sprawa klonów procesora jest poboczna.

Zatem, nie ma żadnych oficjalnych i nieoficjalnych informacji o błędach w Z80?

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Błędy w procesorze Z80?
« Odpowiedź #8 dnia: 2013.08.16, 16:41:55 »
O takich że wykonujesz 2+2 i dostajesz 5 to nie słyszałem. Są jakieś błędy obliczeniowe w Basicu, ale to wina Basica a nie procesora.

Było ileś rozbieżności między oficjalną dokumentacją Ziloga i faktycznym działaniem procesora ale można powiedzieć że to były błędy dokumentacji a nie procesora.

Możemy również twierdzić że to błędne i nielogiczne że DEC HL nie zmienia flagi zero, a INC A nie zmienia flagi przeniesienia itp., ale jak to mówią - "it is not a bug, it is a feature" :)

Trochęę sprzętowych błędów by się w Spectrum znalazło ale raczej nie na poziomie procesora, tylko w ULA i innych częściach. Największy z nich to chyba znany "snow effect".

ZbyniuR

  • *****
  • Wiadomości: 3333
  • Miejsce pobytu:
    Carlisle w UK
  • CPC AGA PSX
Odp: Błędy w procesorze Z80?
« Odpowiedź #9 dnia: 2013.08.16, 21:32:01 »
A jak się objawia ten snow effect, tak w dwóch zdaniach?
- Jeśli masz w domu światło i wodę, tzn. że masz światłowód. ;)

Phonex

  • *****
  • Wiadomości: 1261
  • Miejsce pobytu:
    Warszawa
Odp: Błędy w procesorze Z80?
« Odpowiedź #10 dnia: 2013.08.16, 21:44:09 »
Jest jeszcze błąd wskaźnika przerwań IFF.
Po wykonaniu LD A, I (lub LD A, R) stan wskaźnika przerwań IFF2 jest kopiowany do flagi P/V. Ale jeśli w trakcie wykonywania tej instrukcji nadejdzie przerwanie - P/V przyjmuje błędnie wartość 0.
Zero we fladze P/V oznacza więc, że przerwania są zablokowane, lub w trakcie wykonywania instrukcji LD A, I nastąpiło prerwanie.

W oficjalnej dokumentacji Z80 jest opisane to zachowanie, co nie zmienia faktu że jest to błąd.
Podobno w procesorach Z80 CMOS zostało to naprawione.
« Ostatnia zmiana: 2013.08.16, 22:25:59 wysłana przez Phonex »

RafalM

  • *****
  • Wiadomości: 1133
  • Miejsce pobytu:
    Sulejówek
Odp: Błędy w procesorze Z80?
« Odpowiedź #11 dnia: 2013.08.17, 13:05:41 »
Cytuj
A jak się objawia ten snow effect, tak w dwóch zdaniach?

Ano latają jakieś śmieci po całym ekranie
http://www.youtube.com/watch?v=4FIUCIyMSD4

(w filmiku ktoś to niby wykorzystał jako efekt specjalny, ale zwykle wygląda to naprawdę paskudnie i jest mocno niepożądane)

To jest związane z przerwaniami. W Spectrum 16 kB, 48 kB i paru innych chyba też nie można ustawić wektora przerwań w pamięci poniżej 32768, bo coś takiego dostaniemy.

Tutaj jest to opisane w szczegółach i wyjaśnione dlaczego tak jest. Niestety nie streszczę bo sam nigdy tego  nie zrozumiałem :)

http://www.zxdesign.info/dynamicRam.shtml

W późniejszych modelach Spectrum chyba zrobili z tym porządek.

ikci

  • *****
  • Wiadomości: 1216
  • Miejsce pobytu:
    Kraków
Odp: Błędy w procesorze Z80?
« Odpowiedź #12 dnia: 2013.08.18, 18:25:17 »
A czy czasem ULA SNOW EFFECT to nie problem jedynie 128K oraz szarego 128K+2 ??

Widziałem, że  Velesoft poradził sobie z tym problemem i sprzedaje chip - zamiennik problematycznego układu HAL10H8(PAL10H8)

http://velesoft.speccy.cz/zx/umbrella/umbrella.htm 
ZX Spectrum 48K, ZX Spectrum +, ZX Spectrum 128K, ZX Spectrum +2, ZX Spectrum +2B, ZX Spectrum +3, TIMEX TC2048, UNIPOLBRIT Komputer 2068, Didaktik Gama 80kB, 
Amstrad/Schneider CPC6128, Schneider CPC464, Commodore C64, Atari 800XL, 65XE 130XE, A500+, A600, A1200, ATARI 1040 STF

Tygrys

  • Administrator
  • *****
  • Wiadomości: 4540
  • Miejsce pobytu:
    Warszawa
  • mistrz ceremonii
Odp: Błędy w procesorze Z80?
« Odpowiedź #13 dnia: 2013.08.18, 18:28:25 »
błedy Z80 to co innego niż błędy w ZX Spectrum. Zakładam zatem nowy wątek -- http://speccy.pl/forum/index.php/topic,1118.0.html