Tahle série článků mě prostě baví, už jen proto, že mi připomíná moje asm pokusy na Spectru v době mého útlého mládí.
Jinak attribute clash měla vtipně řešená hra Three Weeks in Paradise - zmáčknutím trojky jste přepínali, zda má postavička převzít atributy pozadí, nebo zda má postavička být žlutá a přebarvovat pozadí.
Hele klidne a v klidu (to neni nic osobniho). Na Atarku jsou bitmapove rezimy ciste "linearni", coz je super a kazdej to hned chape a i zacatecnik muze zacit zkouset assembler a dostat neco rozumneho (na druhou stranu sirka 160 nebo 320 pixelu je opruz oproti 256, o tom zadna - i to ale Antic umi)..
Speccy s atributama, to by jeste taky nebyl problem (ostatne komous to ma taky trosku podobne), ale to rozdeleni obrazovky na tretiny a jeste interlace po osmi radcich proste vsechny vykreslovaci algoritmy dost zabije.
Technicky chapu, proc to chteli takto (atributy maji vysku osm scanlines), ale zase takovej problem by nebyl (IMHO!) to udelat linearne z pohledu CPU - poprehazovat par adresovych radku :)
[sprity a tak po Speccym nechci, to je proste jinej stroj, elegantni svym minimalismem a je to tak dobre]
Potom Speccy dost trpi tim, ze nemelo od zacatku joystickovej port. Jako je to vlastne uplna kravina, ale takto to "umoznilo" firmam si udelat vlastni nekompatibilni reseni a od te doby se to tahne. Kazda hra musi mit vyber joysticku, podpora pro dva joysticky docela vazne atd.
Co se týče organizace video paměti, to je daný dvěma věcmi. O přístup do nižších 16K RAM se dělí ULA a Z80. Aby nebyl procesor moc zpomalován, načítá se vždycky jeden pár bajtů, osmice pixelů a attributy pomocí page modu. Místo aby ULA dala na sběrnici adresu řady, poslala RAS, pak dala na sběrnici adresu sloupku, poslala CAS, což je základní postup jak dostat jeden bajt z paměti, pošle na sběrnici adresu řady, pošle RAS a pak dvakrát za sebou pošle adresu sloupce a CAS. Je to o něco rychlejší, ale ty dva bajty musí být z hlediska organizace paměti ve stejné řadě. Šlo by to udělat lineárně pomocí standardního čtení paměti, ale to by chtělo rychlejší a tedy dražší paměti.
Druhej problém je, že ULA není klasickej ASIC jako POKEY, ANTIC, VIC, SID ale polotovar, je tam nějaká matrice X*Y předpřipravených buněk a v každé je tranzistor a pár odporů, přes to pak dodá jen jedna vrstva spojů a upeče se čip. Výhoda je, že vývoj čipu je mnohem rychlejší ale je to o něco méně flexibilní a musí se ta logika vejít do standartních velikostí dodávaných výrobcem. Takže se hodně šetřilo na počtu logických prvků, aby se to vůbec vešlo do té matrice. Pro představu, zákaznický čip, podle katalogu Synerteku, trvalo vyvinout asi 9 až 12 měsíců, od začátku do nájezdu na produkční kvantity. ULA Spectra byla vyvinuta asi za třetinu až polovinu času.
S tím portem pro joystick souhlasím, ale takových bot má Spectrum víc, třeba microdrive místo standardního pro disku.
25. 8. 2023, 12:46 editováno autorem komentáře