Retró rovat XI: Kinek mit hozott a miku...nyuszi?

2019-04-29 01:21, hup.hu - Informatika

A hosszú hétvégére nekem speciel egy régi ismerőst. Az akkor boncolt / takarított gép még most is megvan, szépen bedobozolva vár a sorára. Nem állítom, hogy azóta rengeteg alkalommal előkerült volna, pedig a maga nemében egy eléggé érdekes „jószág”. Valahogy nem sikerült neki akkora kultuszt elérnie, mint a C64-nek, a C128 az eladott darabszámot tekintve messze nem érte utol. Manapság meg szinte csak elvétve találkozni vele, pedig annyira azért nem rossz gép! Mint említettem, az „elmosogatott” darab jelenleg is a szekrényben pihen, nem is róla lesz most szó. Meg most nem is a takarításé a főszerep (pedig bőven lenne ok rá, :) majd legközelebb), hanem némi tesztelés / javítgatás, ha meg már úgyis itt járok, jöhet egy kis érdekesség-felderítés is. No de jöjjenek az alanyok: Ezt a pakkot az egyik haveromtól kaptam. (Ezúton is köszönet érte!) A két gép közül az egyiknek a billentyűzete némiképp problémás, cserébe hibátlan az alaplap. A másik gép hiányos, de a billentyűzete teljes. Az egyes számú terv: a két gépből kellene egyet csinálni. (A kettes meg az, hogy a másik gépet is fel kellene éleszteni, de az érzésre egy későbbi projekt lesz.) Viszont ezekhez a gépekhez nem a „szokásos”, műgyantával kiöntött tégla-tápegység járt, hanem egy másmilyen, amit jobb is lesz mindenféle próba előtt megvizsgálni: Ez szerencsére roncsolás nélkül szétszedhető, bár a csavarokat rendesen lekupakolták. (Egy csavarhúzóval „kifúrva” azért ki lehet a dugókat szedni.) Amúgy a „szokásos” feszültségeket állítja elő: AC 9V, illetve DC +5V. Amint látható, ez még egy hagyományos, hálózati transzformátoros tápegység, de a +5V-ot nem áteresztős (és ezzel jól melegedő), hanem kapcsolóüzemű stabilizátor állítja elő. Ezt ezért is akartam elsőnek megnézni; a potenciométerrel a feszültséget lehet beszabályozni, azt meg jó lenne leellenőrizni, hogy szabályozható-e. (Láttam már „elfáradt” trimmer potenciométert, ami az első megmozdításnál szétesett. Egy ilyenre bármit bízni felelőtlenség. :) ) De ebbe így mérni semmit se lehet, kellene valami mérőpont, ahova oda tudok csatlakozni a műszerrel... Ezt sikerült produkálni: A pirossal bekeretezett rész a tápvezérlő IC, ez egy LM78S40. (Normális link nincs. :| Még hogy az interneten minden fent marad!) A zölddel bekeretezett részeken eredetileg nem használt furatok vannak, az egyik a GND, a másik a +5V-os fólia fölött. Ide beforrasztódott két, alkatrészlábból tekert hurok, ahova már be lehet akasztani a mérőzsinórt egy méréshez: A potenciométerrel szabályozható az egyébként megfelelő értékű feszültség, ennek azért örülök, legalább nem tűnik „halálosnak”. :) Ennek a tápnak azért megvan az a jó tulajdonsága, hogy még annyira nem harap mint a mai megfelelőik; a szabályzó kör már leválasztott, alacsony feszültségről üzemel mindenestől. Első körben ugyan a jó alkatrészek összeválogatása a feladat, de ez ide kívánkozik: Régebben javítottam egy billentyű-törött gépet, ahol azt találtam írni, hogy jellemzően nem a betét, hanem a gombsapkából kiálló, ebbe a betétbe belecsúszó műanyag rúd szokott eltörni. Hát, itt az összes selejt gombban a betét („amorf valami”) van eltörve... Sajnos a gombsapkák nincsenek meg, akkor egy kicsit reménykeltőbb lenne a helyzet. De most nem ezért vagyok itt, hanem a belsőségek miatt: A jobb-felső sarokban a tápkapcsoló van bekeretezve pirossal, ezt ki kell cserélnem, mert időközben tönkrement. Elvileg ennek az alaplapnak ennyi a gondja összesen. De ha már itt járok, a zölddel bekeretezett részt is érdemes lesz megvizsgálni, hogy mi a csoda az ott? :) Illetve van két vezeték a nyákra forrasztva (kékkel jelölve), azoknak a funkciójára is kíváncsi vagyok. A kapcsoló kiforrasztva; ez is a szokásos: két áramkör, az egyik a DC +5V-ot, a másik az AC 9V egyik felét szakítja meg. (A kép jobb-felső sarkában egy LM7812 látszik részben, ez egy kicsit korrektebb megoldás, mint ami a C64-ben van. :) Ez csinálja a +12V-os feszültséget a SID számára.) A cserekapcsoló visszaforrasztása sima ügy, utána a gép rendesen elindult. (Túl sokat nem teszteltem, egyelőre elég volt az, hogy van kép. :) ) Csakhogy ez a tervezett feladatok egy része csak, lesz még mit itt forrasztgatni. De közben jöhet egy adag vizsgálódás, első körben a zölddel bekeretezett részen: A kérdés: Eeeez itt meg miiii? :) A jobb oldali csip egy 2K×8 bites SRAM. Ez a memória a VIC-IIe-hez tartozó attribútum-tároló. A C64-ben levő VIC-II-höz egy 1K×4 bites SRAM van társítva ugyanezen célra. A C128 VIC-IIe-je is ennyit kezelne, de úgy látszik, végre elfogyott az 1K×4 bites 2114! :-D Itt ez a RAM hiába 8 bites, csak 4 bit szélességűnek van használva. A „hosszában” dupla kapacitást legalább lehet használni, a két lap között tud kapcsolni az MMU. A bal oldali rész egy kicsit érdekesebb: ez egy 2764-es EPROM. A címke a felirattal ugyan lehullott róla (majd visszaragasztom), de ez funkciójában nem más, mint a gép karakterkészlete, ez a karaktergenerátor ROM. Meglehetősen furcsa ezzel a nyákkal alatta, de mindjárt jól megvilágosodok: Az U18 eredetileg egy 24 lábú IC, értelemszerűen egy maszkprogramozott ROM. Csakhogy ez eredetileg 8 KB-os! Ami abból a szempontból problémás, hogy nem „ipari szabvány” a lábkiosztása. Egy 8 KB-os memóriához kell 13 címvezeték, 8 adatvezeték, ez eddig 21 láb. A tápon + földön kívül van hozzá még két engedélyező jel, ez így összesen 25. A 2764 egy 8 KB-os EPROM, ezért is van 28 lábú tokban. (A maradék 3 láb vagy nem használt, vagy csak a programozáshoz kell.) A CBM a 8 KB-os ROM-ot úgy pakolta bele a 24 lábú tokba, hogy a két engedélyező jel közül az egyiket elhasználta címnek. Ilyen ROM-ról nincs adatlapom, de a kapcsolási rajzokból azért kideríthető a bekötés. A 28 lábú EPROM-ok 24 lába „kompatibilis” kiosztásban van a 24 lábúakkal körülbelül: a nagyobb tok 1, 2, 27, illetve 28-as lába „hiányzik” a 24-es verziókról, tehát az „alsó fele” az IC-nek nagyjából ugyanúgy van kiosztva. A CBM 8 KB-os ROM-ja is kb. illik ebbe a sémába, de van itt is egy csavar: az ellopott engedélyező lábra még véletlenül sem a legmagasabb helyiértékű címvezeték van kapcsolva. Azért, mert... ...csak! :) A fenti „patch” panelen a következő látszik: az EPROM 1, 2, 27, 28-as lába el van hajtva, ezeknek nincs hely az IC foglalatban. A 2764 1-es, 28, 27, 26-os lába össze van kötve. 1: Vpp, normál üzemben +5V kapcsolandó ide. 27: PGM, programozó impulzus bemenete, +5V kell ide is normál működéskor. 26: nincs bekötve, az alaplap 24 lábú foglalatában ez a 24-es láb, ami a +5V-os táp, ezen keresztül jön fel a tápfeszültség az EPROM-hoz. A 28-as meg maga a táp-bemeneti láb (Vcc). Ez eddig sima ügy. Az EPROM 2-es lába az A12-es (legmagasabb helyiértékű) címbemenet, ez van kivezetve oldalra, erre van ráforrasztva a vezeték, ami az alaplapról hoz valamit. (Értelemszerűen címbitet.) Ezen felül az EPROM 14-es lába, ami a GND, össze van kötve a 20-assal, ami az egyik engedélyező bemenete (CE). Ez az EPROM láb ki van hajtva még a nyákon felül, így az nem lóg bele a foglalatba. Ez lenne a 24 lábú tok 18-as számú lába, amire az A11 van kötve. :) Az alaplapra forrasztott drót ezt az A11-et hozza fel az EPROM A12-re. A ROM 21-es lábára jön az A12, ami az EPROM-nál az A11. Szóval a ROM és az EPROM között fel van cserélve az A11 / A12. De jó... :) Ez csak abból a szempontból „probléma”, hogy összekeverednek a 8 KB-on belül 2 KB-onként a „lapok”. Ha ennek megfelelően van átrendezve az EPROM-ban a tartalom, akkor a működés szempontjából nem látszik semmi rendkívüli. Ez a nyákos alátét legalább kiderült hogy mire van (a maszkprogramozott ROM kihelyettesítése egy EPROM-mal), mondjuk nem szép, de ezen hamarosan csinosítok egy kicsit. No de mi végre ez az egész? Miért is kellett kicserélni az eredeti ROM-ot? (Merthogy természetesen a Commodore gyártott belevalót.) Az indok valójában egyszerű: mindkét gép (meg az előző, tisztított is) Német forgalmazású, náluk meg valami jogszabályi előírás (volt?), hogy otthon csak honosított gépet lehetett árusítani. Ezt a C128-nál viszonylag furcsa módon valósították meg, de a karaktergenerátorról érdemes előtte pár szót ejteni. A CBM régi, 8 bites gépeiben a képernyőn egy karakter 8×8 pixel méretű. A karakterkészlet (maibb néven „font-set”) úgy épül fel, hogy egy BYTE 8 bitje az egymás melletti pixelek ki / bekapcsolt állapotát mondja meg. (Olyan sorrendben, ahogy a bináris számot leírják: a B7 jelenik meg bal oldalon, aztán sorban egymás után, a B0 a jobb-szélső.) Ami 1, az „bekapcsolt”, ami 0, az „kikapcsolt”. A C128 esetén a „bekapcsolt” pixel színét a fent emlegetett 2K×8 bites SRAM felhasznált 4 bitje mondja meg (minden karakterhelyhez (tehát egy 8×8 pixeles blokkhoz) tartozik ebben egy BYTE, abból a használt 4 bit), a „kikapcsolt” szín meg a videovezérlő egyik regiszteréből (a háttérszín-regiszterből) jön. 1 BYTE az 8 pixelt ad meg vízszintesen, a karakter viszont 8×8 képpont, tehát egy karakter teljes képét 8 BYTE írja le. Ezek a BYTE-ok a karaktergenerátorban egymás után helyezkednek el. A képernyő-memória (ami a rendes rendszer-memóriában van valahol, beállítható) minden karakterhelyhez tárol egy BYTE-ot, (ezekhez párban tartozik még a fent emlegetett 4 bit a színnel,) ez mondja meg, hogy a karaktergenerátorból melyik karaktert kell az adott helyen megjeleníteni. A karaktergenerátor címe úgy áll össze, hogy az alsó 3 bit a videovezérlő egy belső, 3 bites számlálójából jön, ami azt számolja, hogy az adott karaktersoron belül hányadik rasztersor íródik éppen ki. (Ez 0..7 tartományban pörög értelemszerűen.) A következő 8 bit a karakterkód maga. Ez így összesen 11 címbit, a maradék 5 az több részből tevődik össze, de az most nem érdekes. A 11 db. címbit az 2 KBYTE-nyi területet jelent. A VIC20 / C64 / C128 karakterkészlete gyárilag úgy néz ki, hogy vannak az alap számok + írásjelek, a nagybetűk, illetve különböző grafikus alakzatok. Ez elfoglal 128 karaktert. A másik 128 karakter ugyanez, csak inverzben. Az inverz üzemmód úgy megy, hogy egyszerűen a karaktergenerátor felső 128 karakterének a képe inverzben ugyanaz, mint az alsó. Egyszerű, de nem éppen ROM-takarékos megoldás. :) (Az általam sokat emlegetett plus/4 videovezérlője olyan, hogy van neki direkt 128 karakteres üzemmódja. A karakterkód legfelső bitje ilyenkor az invertálást kapcsolja be; ekkor a videovezérlő szintén a rendes karakter képét olvassa be, de megfordítva jeleníti meg.) Aztán van egy olyan karakterkészlet, amiben a számok + írásjelek mellett kisbetűk és nagybetűk vannak. (Itt is van azért jó néhány grafikai elem, de kevesebb az előzőnél.) Ez is 128 karakter, illetve ugyanennek szintén van egy inverz változata. (Ezt a két karakterkészletet lehet váltogatni a Commodore és a Shift billentyű egyidejű lenyomásával.) Ez úgyszintén 2 KBYTE, az eddig összesen 4. Na de mire kell a C128-ban 8 KBYTE? Ez kiderül a kapcsolási rajzból: A pirossal bekeretezett jumperrel a ROM legfelső címbitjét (A12) lehet konfigurálni; erre két fajta jel köthető a rajz szerint. A „128/64” jel a C128 mód illetve a C64-kompatibilis üzemmódot jelzi, gyárilag erre van kötve, tehát C64 kompatibilis üzemmódban más karaktergenerátor van használatban, mint C128 módban. (Kíváncsi lennék, mennyi eltérés van a kettő között, egyszer lehet megnézem... :) ) A jumper másik állásában a „CAPSLK” jel választ a két karaktergenerátorpár közül, ami viszont a billentyűzet-csatlakozóról jön közvetlenül... Na de! Nincs CapsLock billentyű a billentyűzeten! :) (A ShiftLock-ot ne keverjük ide; az teljesen más téma.) Valójában van CapsLock gyárilag, de ez is a honosítás áldozatául esett, feliratnak az ASCII/DIN került a helyére. És itt „körbe is értem”, mert a honosított gépekben pontosan ez a funkció lett élesítve; itt nem a C128/C64 üzemmód váltja a két karakterkészletet, hanem ez a gomb (ami egy reteszelős kapcsoló: nyomásra kapcsol és lent marad, majd újbóli nyomásra kikapcsol és visszajön). Valahogy így néz ki a két karakterkészlet: A bal oldali az eredeti (ASCII), a jobb oldali a módosított (DIN) verzió. (Már ami a megjeleníthető karakterek alakját illeti, a hozzá tartozó kódok az más kérdés...) A DIN verzió ránézésre a VIC-20-as karakterkészletéből készült, annak vannak ilyen vékony szárai. Ez az átkapcsolás eléggé „fapad” így, szoftverből nem kapcsolható, mondjuk kitiltani se lehet. Sőt, ezen a téren valami zavar támadt a megvalósításban... A rajzon a „jumper” megnevezés mellett nincs szám, de a nyákon azért sikerült beazonosítani, ez a J7: (Közben a nyákból kiforrasztottam a 8721-es PLA-t, és kapott maga alá egy foglalatot. A hiányos gépben ez is foglalatban van, a terv az, hogy ezeket át tudom majd cserélni egy teszt idejére a két alaplap között. Később ugyanerre a sorsra jut majd a két CPU is.) A J7 a jobb alsó sarokban látszik és ni'csak: az egyik ismeretlen vezeték pont oda van forrasztva..? (Meglehetősen csúnyán, mellesleg...) Érdemes ezt a jumpert közelebbről is megvizsgálni: A vezetéket leforrasztva egy igen érdekes dologra derült fény. A jumperek klasszikus „átmenőfuratos” verziónak néznek ki, a nyák túloldalán ugyanúgy megvan a négyzet alakú pad, amit lehet forrasztani. Viszont: nincs bele furat fúrva. :) Tehát ezek a jelek nem jutnak át a túloldalra. :) De nem is ez a fő probléma. A J7 jobb oldali padjére a billentyűzetcsatlakozó egyik lába van kötve, ez a „CAPSLK”, ez idáig rendben is van. A középső és a bal oldali pad össze van kötve, ez is oké, mert ez a gyári beállítás. De! A középsőnek kellene mennie a karaktergenerátor A12 címvezetékére, de az maga a „128/64” nevű jel! A bal oldali pad meg külön be sincs kötve! Azaz a J7 lesz az a jumper, ami a rajzon szerepel, csak nincs befejezve a bekötése! A karaktergenerátor A12 címvezetéke nincs külön elhozva eddig a jumperig, hanem a „128/64” jel van direktbe rákötve. A két ismeretlen drót közül az egyik a „CAPSLK” jelet viszi a karaktergenerátor ROM közelébe: A jelölt, most kitisztított furat a ROM A12 címvonala, a drót ide van bekötve. A fólia mellette szépen elvágva, az eredetileg a „128/64” jel közvetlenül. Szóval az egész drótkígyó csak azért kell, mert a jumpert nem sikerült a nyákon úgy bekötni, ahogyan tervezték! :) Ezt a vezetéket most lendületből le is szedtem, majd visszaforrasztom a nyák túloldalára, hogy ne itt rondítsa az összképet. De ha már szépítgetés: a ROM-peccs panelt is megjavítottam: Az EPROM alatti panelen azon a helyen, ahova a drót volt forrasztva, van egy furat. „Érdekes módon” pont alatta, egy átvezető furatra az alaplapon volt a vezeték másik fele forrasztva... Az alaplap kapott egy IC-foglalat lábat, az EPROM paneljába meg beforrasztottam egy alkatrészlábat, a kettő pont összetalálkozik. :) Így nem lóg a ronda vezeték, illetve simán bontani is lehet. (Szerintem valahogy gyárilag így is tervezhették, csak foglalatláb nélkül, direktben egy egyenes drótdarabbal összeforrasztva. Csak azt meglehetősen macerás összeszereltetni olyan munkaerővel, aki a fent is látható forrasztásokra képes csak... :) ) A következő megvizsgálandó részlet a másik, szépen formára behajtogatott drót, ami a Z80 egyik lábáról indul, és a DRAM-ok címmultiplexerének az egyik lábara érkezik: Ez a vezeték már csak azért is „zavar”, mert a két CPU is ki lesz forrasztva / be lesz foglalatozva hamarosan, hogy ezeket is lehessen csereberélni a teszteléshez. Első körben arra gondoltam, hogy ez az összekötés csak simán lemaradt az alaplapról, de a nyák azt mondja magáról, hogy „REV.7”. Az meg eléggé fura lenne, ha 7 verzión keresztül nem oldanák meg ezt; az ilyen vezeték-forrasztás mindig kézi munka, ergo sosem olcsó. :) Leforrasztás után megmérve a két pontot, ezek a nyákon is össze vannak kötve... Akkor meg hogy kerül ez ide? :) Némi keresgélés után meg is lett a megfejtés, erről maga Bil Herd, az egyik fejlesztő mesél. (De érdemes ezt a reddit szálat is elolvasni.) A történet lényege (ha jól hámozom ki a szövegből), hogy az elkészült gépek vagy 30%-a nem indult CP/M módban. A mérésekből az derült ki, hogy a DRAM címmultiplexer egyik bemenetén egy zavar van akkor, amikor a Z80 hajtja a buszt; ez a nyákon levő vezetékezés nem túl optimális elhelyezkedéséből adódhat. (Itt Bil az A10 címvonalat emlegeti, de a képen a Z80 33-as lába a vezetékes, az meg az A3.) Aztán fogott egy drótot, direktben összekötötte ezt a két pontot, utána megszűnt a hiba, az összes gép működőképes lett. A későbbiekben azért nem tervezték át a nyákot, mert akkor ez a hiba esetleg máshova átkerül, lehetett volna újra kezdeni a hibakergetést. :-D Jelenleg én ezt a vezetéket jól leforrasztottam, ez a konkrét gép ettől még elindul, de később talán érdemes lesz ezt megmérni... :) A két CPU kiszedve a foglalatozáshoz, de itt is van egy érdekesség, csak éppen alul. Ez egy 68Ω-os ellenállás, ami a két jelölt rész közé van beforrasztva. A bal oldali jelölésben az alsó átvezető furathoz (a beónozotthoz) menő fólia el van vágva, ebbe a szakaszba van „betoldva” ez az ellenállás. Furcsa módon ez megtalálható a kapcsolási rajzon is: Ez a VIC-IIe által generált 1 MHz-es órajel útjába került bele, talán valami minimális késleltetés lehet a szerepe. (D1MHZ → Delayed 1MHz? Mondjuk az 1MHz az erősen „körülbelül”, ez az órajel itt is akkora, mint C64-en: 985KHz PAL gép esetén.) Ez mondjuk tényleg furcsa, hogy nem került fel rendes módon a nyákra a 7. verzióra se... :) Viszont lassan ideje lesz véget vetni ennek a bontásnak, össze fele se ártana most már rakni valamit. A CPU-k „betokozva”, a patch-panel berakva, legalább valahogy néz is ki az egész: A vezetékezés átköltözött a túloldalra. Nem állítom, hogy szép, de legalább nem szembeötlő: A pirossal bekeretezett részen látható a J7-es jumper alulról. Kár, hogy nincs összekötve az alkatrészoldali párjával... :) Az A3 vezeték útvonala úgy körülbelül megmaradt, nem tudom, hogy a hossznak van-e szerepe, egy méricskélést majd ez meg fog a későbbiekben érni. Az alaplap működőképesnek tűnik, a billentyűzet jó koszos, majd egy fürdetés ráfér, de érdekes módon így is hibátlanul működik minden gomb rajta. A tesztelés egyelőre kimerült a „van-e kép” megnézésében; van kép. A VDC-hez tartozó videokimenethez majd kell építeni valami illesztőt, ez többé-kevésbé egy CGA-kompatibilis, digitális kimenet gyárilag. Egyetlen eltérés, hogy a 7-es csatlakozó pont eredetileg reserved státuszú, a C128-nál viszont egy monokróm videokimenet van ide kötve. Ami abból a szempontból jól jön, hogy egy CVBS bemenetre rá tudom tesztből kötni. Hát... Szépnek nem szép: Hogy a színeket honnan szedte össze a tuner-kártyám, az jó kérdés. :-D Konklúziónak most elég lesz annyi, hogy a „nem beszerezhető” státuszú alkatrészek, ami a VIC-IIe (8566), a VDC (8563), a PLA (8721), az MMU (8722), illetve a „ritka” CPU (8502), azok működőképesek a hiányos alaplapból átpakolva ebbe. (Meg jó a Z80 is, bár azt még ma is gyártják.) A CIA-kat (6526) nem csereberéltem egyelőre, de azok akár egy C64-ből is kitermelhetőek. :) A SID-et (6581) se néztem, de az a másik alaplapból hiányzik egy rakás memóriával egyetemben. Mindenesetre nem tűnik lehetetlennek most már elindítani azt sem, de az majd egy következő alkalomra marad, lejárt a hosszú hétvége. (Már egy hete...) Ahogy a fenti csipek konkrét feladatainak a körbejárása is vissza van; jelenleg az MMU a leginkább ismeretlen, de ez bizonyos szempontból azért csalódás lesz, ezt már most tudom. Irodalom: Szervizdoksik a gépről, több változat is letölthető, bennük – többek között – a kapcsolási rajzokkal Néhány fajta C128 billentyűzet, mivel nem csak Német verzió létezik az eredeti mellett Bil Herd a „drótról” Reddit szál C128 témában, szintén az alkotó(k)tól RGBI kimenet Scart-ra kötése, ez még majd jól jöhet, ha normális képet is szeretnék látni a VDC-ből Memóriabővítés, ezt csak iderakom, hogy el ne vesszen balagesz --- 2019.04.28.

Tovább »