Spectrum ULA verziók

A Sinclair lélek és lélekvándorlás kérdései...
Avatar
Bali
Alapító tag
Hozzászólások: 2434
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Spectrum ULA verziók

Hozzászólás Szerző: Bali » 2012.08.26. 19:18

Sokszor beszéltünk, olvastunk arról, hogy van pár hiba az ULA-ban, amiket a helyettesítésnél is figyelembe kell venni stb. Én viszont nemigazán tudom, emlékszem. Lehet, hogy csak én vagyok ilyen tudatlan a témában, de jó lenne, ha ezeket összeszednénk, hogy mik is ezek a hibák az egyes ULA verziókban.
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Zozosoft
Hozzászólások: 804
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Spectrum ULA verziók

Hozzászólás Szerző: Zozosoft » 2012.08.27. 15:33

Nem hallottam még ilyenekről, érdekelnének!

Avatar
Bali
Alapító tag
Hozzászólások: 2434
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: Spectrum ULA verziók

Hozzászólás Szerző: Bali » 2012.08.27. 16:51

Lehet, hogy én talán rosszul fogalmaztam és nem konkrétan az ULA IC-ben vannak hibák, hanem az egyes Spectrum issuek-ban vannak tervezési hibák, amit miatt létrejön pl. a "snow effect" is. De ha nem az ULÁ-ban van hiba, akkor tisztába tesszük ezt a dolgot.
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Bali
Alapító tag
Hozzászólások: 2434
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: Spectrum ULA verziók

Hozzászólás Szerző: Bali » 2012.08.27. 17:18

Szeretném ha összeszednénk, hogy az egyes gépekben milyen ULA verziók voltak és milyen különbésgek vannak az egyes verziók között. Elsőre szerintem maradjunk kizárólag a 48 Spectrumnál, aztán ha sikeresen végére érünk a témának, akkor folytathatjuk a többiekkel is.
Ráadásul az egyes fő verziókból voltak alverziók is, pl. ULA5C112-2 vagy ULA6C001E-6
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Zozosoft
Hozzászólások: 804
Csatlakozott: 2012.01.06. 14:03
Kapcsolat:

Re: Spectrum ULA verziók

Hozzászólás Szerző: Zozosoft » 2012.08.27. 17:51

Amik nekem vannak, és az ISSUE albumhoz is elküldtem a fotókat (amelyekért évek óta nem kapom meg a pontokat :cry: :cry: :cry: )
026-074287~1
ISSUE 2
5C112E-3

032-139620
ISSUE 4A
6C001E-7

139-379076
ISSUE 4B
6C001E-7

139-380599
ISSUE 4A
6C001E-7

AR408789
ISSUE 4S
6C001E-7

Avatar
Asimo
Hozzászólások: 147
Csatlakozott: 2012.01.09. 18:49

Re: Spectrum ULA verziók

Hozzászólás Szerző: Asimo » 2012.08.28. 01:02

Chris Smith könyve alapján az alábbi ULA problémákat ismerem. Megpróbáltam összefoglalni a lényeget, illetve néhol kiegészíteni plusz infóval.

Issue 1 ULA - típus: 5C102E

Volt egy logikai hiba az I/O contention kezelésben. Memória és I/O contention-ről akkor beszélünk, mikor ugyanabból a tartományból akar egyszerre címet elérni a Z80 és az ULA is, mivel a címbusz (alsó 16K RAM-nál) közös, illetve még I/O contention az is mikor az ULA-tól kérünk egy I/O műveletet, de az el van foglalva video-bájt beolvasással. Hivatalosan a 0xFE az ULA-t címzi meg, de a valóságban minden páros cím (A0=0) az ULA-t jelenti (tervezési egyszerűsítés). Memória vagy I/O contention alatt az ULA megállítja a CPU-t, hogy be tudja fejezni a video-bájt olvasást. Gyk. a videokép felépítése élvez prioritást.
A logikai hiba abban állt, hogy I/O contention esetén picivel rövidebb ideig állította meg a CPU-t az ULA mint kellett volna, így hibás volt a beolvasott adat. Ez csak akkor derült ki, mikor a BASIC INPUT, INKEY$ helyett gépi kódú billentyűzet beolvasó rutint próbáltak használni. A BASIC beolvasás csak az elektronsugár függőleges visszafutásakor történik (IM 1, 0x0038->0x02BF->0x028E), ezért ott nincs I/O contention, ezért nem tűnt fel. A hibát utólag egy 14 lábú IC-vel javították (melyet döglött csótánynak kereszteltek el, mivel a hátára fordítva ragasztották a NYÁK lemezre), ami ezután az I/O contention-t memory contention-nek álcázta. A javítás a későbbi ULA-kba kompatibilitási okok miatt ugyanígy került bele.

Maradt ebben az ULA-ban egy felfedezetlen hiba: az ULA minden I/O-t egyformán lassított be, akkor is ha nem az ULA lett megcímezve. Kimaradt az A0 cím figyelése. Emiatt a ZX Printer és az Interface-1 nem működött megfelelően.


Issue 2 ULA - típus: 5C112E

A fenti felfedezetlen hibát csak a 2-es ULA-k sorozatgyártása után vették észre, így itt is utólag kellett hack-elni. Egy tranzisztor és egy ellenállás kellett csupán. A tranzisztort a Z80-ra ültették, lábait úgy forrasztották hozzá. Kinézete miatt ezt a megoldást póknak keresztelték el.

Ennél a verziónál vették észre, hogy az alsó 16K RAM-ban nem működik úgy a Refresh ahogy kitalálták. A RAM-ok adatlapjai szerint max. 2ms-onként frissíteni kell a memória-cellákat, de az ULA miatt a CPU csak akkor tudta elérni a RAM-okat ha épp ROM-ot címzett az ULA pedig nem olvasta a video-memóriát. Emiatt gyakorlatilag csak az ULA-n múlott a frissítés, azaz milyen gyakran olvasta a videoram-ot. Majdnem 8ms is eltelhetett két frissítés között, de úgy nézett ki, hogy ez nem okoz gondot, ezért leválasztották a CPU /RFSH jelet, és a további verziókban is így maradt.


Issue 3 ULA - típus: 6C001E-6

A Color Burst időzítésén javítottak, így több színes tévével lett kompatibilis a Speccy. Ennek következtében egy picit balra tolódott a kép.
A fenti pók-tranzisztor továbbra is kellett, nem javították a hibát egyetlen későbbi ULA-ban sem. A tranzisztor minden panelon ott van TR6 néven.


Issue 4 ULA - típus: 6C001E-7

Javítottak az alsó 16K RAM időzítésén, ami azt jelenti, hogy az ULA késleltetett CAS jelet állít elő. Ezek az új Speccyk régi ULA-val bizonytalanul műkodnek, mert az alaplapon is már ennek megfelelően van beállítva a multiplexerek időzítése. Viszont az új ULA régi Speccykben jól működik (állítólag, nem próbáltam).


Minden ULA-ra jellenző problémák

1. Ha egy alaphelyzetben fehér képernyőn egy fekete-háttér-fehér-előtér+villogás attributumot állítunk be egy karakteren, és az épp inverz állapotban van (azaz nem kellene látnunk, mert szintén fehér), akkor mégis a bal és jobb szélein egy-egy vékony fekete függőleges vonalat lehet látni. Ez azért van, mert az ULA-ban a Flash,Paper,Ink bitek különböző késleltetéssel (több-kevesebb logikai kapun keresztül) érnek össze. A Flash bit picivel később érvényesül. Ez a késlekedés látszik abban a két vékony vonalban.

2. Hasonló késleltetési gondok miatt a fehér alapon fekete és a fekete alapon fehér pixelek nem egyformán vastagok. Az eltérés egy 010101 mintázaton jól látszik.

3. A szín segédvivőt nem az ULA állítja elő, így van egy kis fáziskülönbség az ULA által előállított sorfrekvencia és a színsegédvivő között, ami erősen kontrasztos színek közötti hullámzásban figyelhető meg.

4. Havazás effektus: az ULA nem figyeli a címet Refresh ciklus alatt, ezért nem is állítja meg a CPU-t, és ha ilyenkor a 4000-7F7F közötti cím kerül a címbuszra, az elrontja az épp aktuális video-bájt kiolvasását, az eredmény egy szétesett kép. Ez akkor lehetséges, ha az I regiszter értéke 40-7F között van, mert refresh alatt a Z80 az I és R regiszterek alsó 7-7bitjét teszi ki a címbuszra. Azért rontja el a video-bájt kiolvasást, mert 4000-7F7F közötti címekre az ULA előállítja a CPU számára az alsó 16K RAM eléréshez a RAS jelet (page mode), de közben a video-bájtok sorozatos kiolvasásához is előállítja a RAS jelet, a kettő így interferál (máskor változik az értéke, mint ahogy az a video jel előállításához szükséges lenne), ezért megváltozik a RAM cím is, máshonnan olvas az ULA az alsó 16K-n belül. Ennek a page-mode-read-nek az a lényege, hogy a memóriát 7bit sor és 7bit oszlopra osztja (mátrix), így jön ki a 14bit (4116-os IC-k 14bit, azaz 16Kx1bit-esek), és ha beállította a 7bit sorcímet, akkor az alsó 7bit-et gyors egymásutánban lehet megadni, ezzel gyorsabb memória-elérést lehet megvalósítani. Többek között ezért is olyan fura a Spectrum képfelépítése, hogy így gyorsan ki tudja olvasni az attributum bájtot is (de ezt már írtam máshol). Contention ellenőrzés csak T1 fázisban van, míg a refresh a T3-T4 fázisban történik.
A hozzászólást 1 alkalommal szerkesztették, utoljára Asimo 2012.08.30. 08:57-kor.

Avatar
Bali
Alapító tag
Hozzászólások: 2434
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: Spectrum ULA verziók

Hozzászólás Szerző: Bali » 2012.08.28. 11:58

Na pont valami ilyesmire gondoltam. :) A végcél természetesen, hogy egy kis összefoglalót összerakjunk a portálra is.
Áthelyeztem ide a hibákról szóló hozzászólásokat is, nemigen lehet ezeket szétszedni.
-= Bali =-
(c) 1983-2017 Evil-Soft

Avatar
Bali
Alapító tag
Hozzászólások: 2434
Csatlakozott: 2012.01.06. 13:34
Tartózkodási hely: Budapest III.
Kapcsolat:

Re: Spectrum ULA verziók

Hozzászólás Szerző: Bali » 2012.09.05. 13:40

Nekem most jött egy sima 6C001E ULA, ezen nincs olyan -6/7 postfix, erről tudunk vmit?
-= Bali =-
(c) 1983-2017 Evil-Soft

Válasz küldése

Vissza: “ULA”

Ki van itt

Jelenlévő fórumozók: nincs regisztrált felhasználó valamint 1 vendég