Press "Enter" to skip to content

Identifikácia vadnej pamäte v ZXS 48k/128k

Dnes sa podelím o jednu fintu, pomocou ktorej sa pomerne ľahko dá identifikovať konkrétny vadný pamäťový čip, ak vám ZX Spectrum 48k nabieha, ale má problémy s pamäťou.

ZX Spectrum si po štarte testuje pamäť a v systémových premenných následne uloží najvyššiu adresu dostupnej pamäte. Konktrétna premenná leží na adresách 23732 a 23733, takže ak je všetko v poriadku, príkaz PRINT PEEK 23732 + PEEK 23733*256 by mal vypísať číslo 65535 (ZXS 16k vypíše logicky 32767). Ak je pamäť chybná, v premennej sa nachádza posledná dobrá adresa, čiže ak vám uvedený príkaz vypíše iné číslo, chybná bunka pamäte sa nachádza hneď za ním. Napr. ak vám vypíše 51230, chybná bunka je 51231. Dobré na tom je to, že vďaka tomu, ako má Spectrum pamäť riešenú, z tohoto čísla vieme určiť konkrétny vadný čip. Bez rozoberania, priamo cez BASIC.

VRAM je tvorená čipmi IC6 až IC13 a upper RAM je tvorená čipmi IC15 až IC22, bez ohľadu na issue dosky – číslovanie je všade rovnaké. Jednotlivé čipy zodpovedajú za jednotlivé dátové linky pamäte, takže vo VRAM je IC6 zodpovedné za D0, IC7 je D1, …, IC13 je D7. Analogicky to platí aj v upper RAM IC15 je D0, IC16 je D1, …, IC22 je D7. A teraz ako zistíme ktorý z nich je vadný?

Berme do úvahy ten príklad zhora – na adrese 51231, t.j v upper RAM máme chybnú bunku. Tak si preveríme, ktoré bity máme dobré a ktoré zlé jednoduchým testíkom. Napoukujeme na danej adrese na striedačku bity (10101010) a uvidíme, čo sa nám po PEEKu vráti. Teda spravíme POKE 51231,170: PRINT PEEK 51231 a podľa čísla, ktoré sa nám vráti sa už dá následne identifikovať vadný čip. Teda ak nám PEEK vráti napr. 138 (BIN 10001010), vidíme, že je chybný piaty bit, teda D5 a teda IC20. Rovnako treba preveriť aj druhý stav bitov (01010101), teda POKE 51231,85: PRINT PEEK 51231. V podstate je jedno, ktorú hodnotu skúsite prvú, ide len o to, aby sa preverilo, ktoré bity nesprávne reagujú. S touto matricou idú identifikovať chybné čipy aj v spodnej RAM, čiže ak vám pri POKE x,85 vráti napr. hodnotu 81 (BIN 01010001), je to tretí bit, teda D3 a teda IC8. Toto ale pri VRAM ide použiť málokedy, lebo je väčšinou odpálená tak, že Spectrum vôbec nenabieha. Pre ľahšie pochopenie sa pozrite do tabuľky:

POKE x,85 POKE x,170 Chybný Chybný čip Chybný čip
PEEK vráti PEEK vráti bit VRAM upper RAM
84 171 0 IC6 IC15
87 168 1 IC7 IC16
81 174 2 IC8 IC17
93 162 3 IC9 IC18
69 186 4 IC10 IC19
117 138 5 IC11 IC20
21 234 6 IC12 IC21
213 42 7 IC13 IC22

Neviem či sa mi to podarilo dobre vysvetliť, ale touto fintou som si už asi tak 20x ušetril kopu roboty. Ako som spomínal, v praxi som sa stretol s tým, že ak bola vadná niektorá časť VRAM, Spectrum vôbec nenabiehalo, takže diagnostika bola viac menej jednoduchá a táto finta v podstate nepomôže, ale pri vadách upper RAM človek na to príde až keď padajú hry a programy a vtedy je táto finta dobrý pomocník pri odhalení zrady bez rozoberania Spektráča. Tak dúfam, že to niekomu pomôže.

EDIT 6.9.2017: Ukázalo sa, že by bolo dobré mať aj tabuľky pre 128k stroje, tak ich dopĺňam. ZX Spectrum+ 128k (toastrack) má číslovanie zhodné s Gumákom a Pluskom, takže použite prvú tabuľku. Ostatné nasledujú.

ZX Spectrum +2 (grey)

POKE x,85 POKE x,170 Chybný Chybný čip Chybný čip
PEEK vráti PEEK vráti bit VRAM upper RAM
84 171 0 IC25 IC17
87 168 1 IC26 IC18
81 174 2 IC27 IC19
93 162 3 IC28 IC20
69 186 4 IC29 IC21
117 138 5 IC30 IC22
21 234 6 IC31 IC23
213 42 7 IC32 IC24

ZX Spectrum +2a/+3

POKE x,85 POKE x,170 Chybný Chybný čip Chybný čip
PEEK vráti PEEK vráti bit VRAM upper RAM
84 171 0 IC3 IC5
87 168 1 IC3 IC5
81 174 2 IC3 IC5
93 162 3 IC3 IC5
69 186 4 IC4 IC6
117 138 5 IC4 IC6
21 234 6 IC4 IC6
213 42 7 IC4 IC6

7 Comments

  1. Pamatuju si, že když jsme spolu na jabberu opravovali +2, tak při identifikaci vadné paměti ve VRAM mi pomohlo divIDE a TBIOS od Ziloga.

  2. z00m z00m

    Áno, na 128k strojoch je lepšie použiť TBIOS, je tam hneď vidieť, ktorá stránka je zlá.

  3. Tornado Tornado

    Ja si len tak matne nepresne pametam ze mal niekto daky kus HW, ten pripojil na zbernicu. Malo to vlastnu ROMku a niekolko LED diod. Po prebehnuti testu sa rozsvietili LEDky ktore oznacili ktora pamet je vadna.

  4. Nemal som poruke TBIOS a nezakrabickovane divIDE, takze mi dnes tento clanok velmi pomohol na identifikaicu vadneho cipu RAM v 128 +2. Pocitac nabiehal iba s pripojenym divIDE(+FatWare) a to iba do 16k modu (vid vyssie uvedeny PEEK). Treba si uvedomit, ze neparne banky su spomalovane ULA (cipy IC25-32) a RAM2 [cize prva parna od zaciatku adresneho priestoru] je zaradena od adresy 32768 (vid tiez http://8bit.yarek.pl/computer/zx.128/index.html) . Bolo tak zjavne, ze chyba je v niektorom z cipov IC17-24. Konkretne som nasiel podla tabulky vyssie, ze to je 6 bit. Vymenil som IC23 a plus dvojka krasne nabehla na prvy sup. Diky z00m, usetrilo mi to kopu casu!

  5. z00m z00m

    Paráda, som rád, že som to nepísal nadarmo 🙂

  6. Z00m, mal by som este jednu prosbu: mohol by si tu tabulku v clanku rozsirit aj o cisla cipov v 128k modeloch? Nemuselo by sa to potom pracne dohladavat v schemach. 128+ toastrack: VRAM IC6 (D0) – IC13 (D7), FastRAM IC15 (D0) – IC 22 (D7) , 128k+2 (siva) VRAM IC25 (D0) – IC32 (D7), FastRAM IC17 (D0) – IC24 (D7). 128k +2a/+3 (cierna) VRAM IC3 (D0-3), IC4 (D4-7), FastRAM IC5 (D0-3), IC 6 (D4-7) .Kvoli prehladnosti bude mozno lepsie mat na kazdy model samostatnu tabulku. Vopred vdaka!

  7. z00m z00m

    Jasne, doplnim.

Leave a Reply

Your email address will not be published. Required fields are marked *