forum speccy.pl
ZX Spectrum => RÓŻNOŚCI => Wątek zaczęty przez: Tygrys w 2013.08.18, 18:33:07
-
W wątku o błędach w procesorze Z80 (http://speccy.pl/forum/index.php/topic,1113.0.html) wspominano o błędach w ZX Spectrum.
Zakładam zatem wątek dotyczący błędów w ZX Spectrum -- wszystkie modele (i to nie jest furtka dla trolli :P
-
To ja na początek wrzucę skan artykułu z trzeciego numeru Komputera z listą 16 błędów w Spectrum. Jest coś więcej?
-
No tak, to są błędy w ROM.
Błędy sprzętowe, o których już wspomniano to SNOW EFFECT. Cytując wcześniejsze posty w innym wątku:
RafalM:
Zobrazowanie problemu: http://www.youtube.com/watch?v=4FIUCIyMSD4
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:
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
Wydaje mi sie że snow effect występuje tylko w ZX Spectrum 128k+ i +2. ZX Spectrum 128K+2A i +3 już to nie występuje.
Było coś jeszcze?
-
W +3 byl blad z wyjsciem AY - w efekcie AY pracuje czesciowo jak trzy kanalowy beeper.
-
ULA Snow jest w Spectrum 48.
Jako dowód załączam przykładowy snapshot:
http://www.sendspace.com/file/ci40pg
Problem tylko w tym że... niewiele emulatorów emuluje ten efekt ;)
Ja mogę polecić SpecEmu:
ftp://ftp.worldofspectrum.org/pub/sinclair/emulators/pc/windows/SpecEmu28-b101009.zip
(wchodzimy w Options/Display i zaznaczamy ULA Snow Effect)
-
Wydaje mi sie że snow effect występuje tylko w ZX Spectrum 128k+ i +2. ZX Spectrum 128K+2A i +3 już to nie występuje.
No tak... ZX 128K+2A/B +3 chyba już nie mają ULA.. dlatego nie ma tego błędu.
Ale co do 48K to jest dla mnie nowość. Lubie posiedzieć przy realnym sprzęcie i jakoś nigdy tego nie spotkałem.
-
W zasadzie efekt "floating bus" tez mozna uznac za blad, choc to raczej skutek uboczny uzycia rezystorow, do oddzielenia szyny cpu i ula. W praktyce okazal sie przydatny do animacji i dem, ale i stal sie przyczyna problemow z kompatybilnoscia ZXow.
-
Jest jeszcze błąd w sterowaniu dwoma dżojami w standardzie Sinclair. Przy skomplikowanych ruchach w rodzaju : na ukos do góry i fire, drugi gracz ma przekłamane ruchy, np. każesz mu iść do góry a on wtedy idzie na ukos do góry w prawo (coś w tym rodzaju). Sprawdziłem to na 100 %. Dziwię się że przez tyle lat nikt na to nie wpadł ::)
-
Standardowy kod obsługi przerwania w ROM niszczy zawartość rejestru IY.
Odkryłem to w praktyce w zupełnie nieformalny sposób - programy w których próbowałem używać IY nie działały z zupełnie nieznanych mi powodów. Przez dłuższy czas miałem więc własną, prywatną zasadę że nie wolno używać IY i już :)
-
ULA Snow jest w Spectrum 48.
Jako dowód załączam przykładowy snapshot:
http://www.sendspace.com/file/ci40pg
Problem tylko w tym że... niewiele emulatorów emuluje ten efekt ;)
Nie wiem czy wiesz, ale niektórzy używają częściej niż czasami prawdziwych komputerów ;)
Sprawdziłem na ZX Spectrum i faktycznie, efekt występuje tak jak na 128K.
Na Timexie również on występuje, jednak wygląda to nieco inaczej.
-
Snow na 128 jest - o ile pamiętam - bardziej dotkliwy niż na 48. Na 48 po prostu śnieży a na 128 (tych z ULA) jak się zostawi na trochę dłużej, to maszyna się resetuje.
-
Standardowy kod obsługi przerwania w ROM niszczy zawartość rejestru IY.
Hę? Niszczy zawartość pamięci pod adresem (IY+64) myśląc że jest to [FRAMES3], i pod adresem (IY+01) [FLAGS], ale IY przecież nie niszczy.
Zmieniać IY wolno tylko przy zablokowanych przerwaniach, albo w trybie IM2.
No, chyba że te wskazane miejsca w pamięci nie są istotne.
To jest niezła pułapka dla programisty, ale nie jest to błąd.
-
Trafiłem dzisiaj na coś takiego. Jak kogoś interesują błędy w Spectrum to ma tu ich pod dostatkiem:
http://nonowt.com/magfold/articfol/bugs_in.html
-
Normalnie błąd na błędzie. Jak te Spectrumy w ogóle działały? 8)
-
Bo Spectrum miał charakter! Gdyby nie było błędów, piszący program by go napisał, program by działał i zapomniał by o tym. A tu? Wszystko jest logiczne i poprawne, a program nie działa. Działało jak płachta na byka ;)
Trzeba było poświęcić czas i zdobyć wiedzę żeby pokonać ograniczenia i błędy. A wtedy już trudno było się oderwać. I z większą wiedzą wychodziły lepsze programy! :D
-
Zastanawiam się które z tych błędów rzeczywiście były uciążliwe, bo w Amstradowym Basicu jest ich kilka, raz gdzieś o tym czytałem, ale tylko jeden był ciut uciążliwy i wymagał pamiętania o nim. A mianowicie gdy zmienia liczbę hexadecymalną na dziesiętną to jeśli jest większa niż &7FFF to wynik jest ujemny. Trzeba o tym pamiętać gdy podajesz adres komórki w postaci zmiennej a nie bezpośrednio. Zresztą sam zauważyłem że coś źle to robi zanim wyczytałem, że ten typ już tak ma. A reszty błędów nawet nie zapamiętywałem bo nie były dla mnie istotne. :)
-
Zastanawiam się które z tych błędów rzeczywiście były uciążliwe
Szczerze mówiąc to w czasach gdy byłem szczęśliwym posiadaczem Spectrum nigdy nie miałem problemu z żadnych z tych błędów.
Inna sprawa że pisałem wtedy bardzo proste programiki, nie robiłem nic na styku Basica i asemblera (gdzie chyba jest najwięcej problemów) i chyba po prostu nie miałem szansy na żaden z tych błędów natrafić.
A teraz, cóż, Basic służy mi wyłącznie do uruchamiania programów w asemblerze ;) więc o błędach w Basicu mogę spokojnie zapomnieć
-
Zastanawiam się które z tych błędów rzeczywiście były uciążliwe, bo w Amstradowym Basicu jest ich kilka, raz gdzieś o tym czytałem, ale tylko jeden był ciut uciążliwy i wymagał pamiętania o nim. A mianowicie gdy zmienia liczbę hexadecymalną na dziesiętną to jeśli jest większa niż &7FFF to wynik jest ujemny.
It's not a bug, it's a feature!
Tak właśnie sie zapisuje liczby ze znakiem w systemie U2.
-
A co to mogło być w moim dawnym zestawie Timex 2048 + AY
Co któreś włączenie chip nie grał czysto, jakby co przerwanie był resetowany. Zamiast prostego beeeep było brrrrrp,
pamiętam że wspominali też o tym chyba w Bajtku.