OldComp.cz

Komunitní diskuzní fórum pro fanoušky historických počítačů


Právě je 19.04.2024, 05:11

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 2 ] 
Autor Zpráva
 Předmět příspěvku: Rozšíření videoram
PříspěvekNapsal: 17.05.2014, 17:21 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1614
Has thanked: 31 times
Been thanked: 357 times
suksoft píše:
Myslenka velke interni pameti Velesofte neni uplne k zahozeni. Kdyz pocitam tak s 2MB pameti by to byl buffer pro 3 sekundy perfektniho obrazu pri 25 snimku/sekundu. Umim si teoreticky predstavit, ze v PC by ze pustil treba Youtube stream a nejaky program by to rychle prepocital na 16 barev a poslal by to sitovou kartou do Sama a zde by se to ulozilo a nasledne zobrazilo. Je dosti pravdepodobne ze by to slo i bez rozsirene interni pameti. Na monochromatickem monitoru by to mohlo vypadat i pekne.


Pro ucel videa by stacily i dve videoramky, na to netreba vice ram. Zpusob rozsireni, ktery jsem myslel, by ale fungoval trochu jinak, nez by kazdy predpokladal. Spodnich 256kB pameti sam coupe by zustalo beze zmen a hornich 256kB pameti by bylo nahrazeno tremi bloky po 256kB. Proste by se prepinalo kterych 256kB ram se pripoji nahoru. Kompatibilita se stavajicim software by mohla byt zachovana na 100%, zalezi ale na tom, jaky zpusob prepinani ram by se zvolil.

Moznosti je nekolik:

a) Prepinani pomoci zapisu na nejaky novy port. Tato metoda by ale vyzadovala specialni modul pod(nebo nad) Z80CPU. Procesor u SAMa nebyval v patici, takze by to znamenalo dalsi pajeni. Je to sice cisty zpusob strankovani, ale neprilis snadno realizovatelny.

b) jako druha metoda me napada prepinani pomoci sekvence zapisu nebo cteni nekolika bajtu na urcite adresy v ram. Neco podobneho, co se pouziva pri programovani eeprom pameti. Asi bude jednodussi ukazka:
LD A,(#8AAA)
LD A,(#8555)
LD A,(#8AAx) - x bude cislo bloku 256kB, tedy 1-3 (cislo 0 muze hornich 256kB vypnout a prepnout tak pocitac do rezimu skutecnych 256kB)
Adresy #8AAA a #8555 maji navzajem invertovane adresove bity a nahoda, ze by nejaky software cetl hned po sobe z odpovidajicich adres v ram, je prakticky nulova. U posledni instrukce budou spodni dva adresove bity urcovat cislo bloku ram. Ale neni zadny problem rezervovat i vice bitu a zvetsit ram az na nekolik MB(teoreticky). V dnesni dobe, kdy mame IDE rozhrani a rychla vysokokapacitni flash media nema uz velka ram takovy smysl. Z IDE lze data dohravat temer stejne rychle jako z pameti ram.

Deska pro rozsireni ram az na 1MB by se zasouvala stejne jako modul rozsireni 256kB do stejneho konektoru a nevyzadovala by zadny jiny zasah do pocitace. Na desce by bylo celkem 6 pameti + jedno miniaturni CPLD (10x10mm), ktere by hlidalo pristup do pameti a vcas tak detekovalo prepnuti bloku. A nejspis by se dala udelat i deska jeste mensi, postavena jen z CPLD a jedne SMD rychle sram (1-2mb) pripadne i 4mb. Pameti dram do sama nejsou moc levne, takze by se pouzitim sram nejpsis jeste neco usetrilo.

c) A samozrejme by se to dalo udelat jeste jinak:
Extra rozsirena pamet by se musela aktivovat sekvenci nekolika bajtu zapsanych(nebo prectenych) na urcite adresy. Takze by stacilo jen jednou provest treba:
LD A,(#8AAA)
LD A,(#8555)
LD A,(#85A5)
LD A,(#8A5A)
Timto by se zapnula rozsirena ram a dal uz by se dalo bloky 256kB prepinat treba zapisem bajtu na urcitou adresu v ram. Nevyhodou by bylo, ze tech par bajtu z pameti bylo rezervovano jen pro strankovani, cili nebyly by pouzitelne pro data.

d) pokud by se zadarilo nahradit dram pameti rychlou sramkou a pod CPU by se pripojil mensi modul, klidne by sla interni pamet jednak rozsirit na vic jak 512kB a zaroven by cast pameti mohla byt pouzita jako rychla (jakoby externi) pamet, se kterou SAM take pocita. Veskera interni pamet v sam coupe je totiz pomala, sdilena s ulou, a cela muze byt pouzita jako videoram. Ale neni mozne tuto pamet pouzivat na plnych 6MHz a soucasne mit zapnuty obraz. S rychlou sram by ale bylo mozne veskerou rozsirenou ramku (vse nad 256kB) pouzivat jako videoram v pomalem rezimu, nebo ji prepnout do rezimu fast ram, kdy sice nebude pristupna pro ulu, ale zase k ni CPU muze pristupovat plnou rychlosti. Napriklad si ve fast ram procesor pripravi novou videoram a po dokonceni prepneme fast ram do rezimu videoram/slow ram. Takto by se dalo oddelit liche a sude stranky ram. Tato metoda opet vyzaduje mit CPU v patici.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
PříspěvekNapsal: 15.09.2014, 20:37 
Offline
Pan Štábní

Registrován: 29.06.2013, 16:52
Příspěvky: 1614
Has thanked: 31 times
Been thanked: 357 times
SAM je vlastně takové ZX s větší pamětí a lepší grafikou. Jenže počet barev je omezen jen na 16. Každá z 16ti hodnot se dá nastavit z palety 128 barev. V jeden moment se dá pracovat jen s 16ti barvama a pokud chceme na obrazovce zobrazit více barev, musíme v průběhu vykreslování obrazu měnit průběžně jednotlivé barvy. Existoval interface "Kalidoscope", který dovoloval měnit úrovně R,G a B složek pro celou paletu sama stejně.

Fungovalo to takto:
Zápisem na port #1F7F (DEC 8063) se zapsaná 8bit hodnota rozdělí na 3 díly a každý ovlivňuje úroveň barevné složky R,G nebo B. Zápisem hodnoty 0 se nastaví původní samácké barvy beze změn.

Rozložení dat:
D0-D2 = 8 úrovní ztlumení červené barevné složky
D3-D5 = 8 úrovní ztlumení zelené barevné složky
D6-D7 = 4 úrovně ztlumení modré barevné složky

Hezké na tom je, že se dá každá barevná složka měnit zvlášť, ale bohužel to tlumí danou složku i v celé paletě 128barev. I tak by se s tím dalo trochu pohrát. Zapojení je hodně jednoduché.

Napadá mě i jiné, lepší ale složitější řešení. Externí interface by ze sběrnice sledoval přesné hodnoty RGB výstupu sama, tedy všech 128 barev palety, a uměl by každé z těchto barev přiřadit jinou barvu z obrovské vlastní palety. Dalo by se s tím pracovat jako s paletou 128 barev, kde každá barva má vybranou hodnotu z jiné daleko větší palety. Klidně 24bit true color, kde má každá ze složek R,G,B až 256 úrovní. Software by si mohl například jednorázově vybrat z truecolor palety vlastních 128 barev, které sam bude používat. Furt by se ale dalo pracovat jen s 16ti barvama v jeden moment a průběžně se pak barvy musí měnit, pokud chceme zobrazit více barev než 16.

Další metoda, která byla realizovatelná u originál sam coupe by byla založená na obarvování jednotlivých nebarevných pixelů. Videoram data by musely ležet v ramce externího interface. Každý pixel by mohl mít jednu z 256 barev a to bez palety, tedy co pixel, to 1 bajt a není třeba neustále měnit paletu pro dosažení vyššího počtu barev. Výhodou tohoto režimu by bylo, že by uměl jak rozlišení 256x192, tak i hi-res 512x192 bez omezení počtu barev. Hi-res by měl také každý pixel z 256 barev, ale velikost dat videoram by vzrostla dvojnásobně oproti low-res režimu.
Paměťová náročnost:
originál samácký režim 4, 256x192,pixely 16barev - 24576 bytes = 24 kB
režim 256x192,pixely 256barev - 49152 bytes = 48 kB
režim 512x192,pixely 256barev - 98304 bytes = 96 kB
Výhoda tohoto interface by byla ale v tom, že horizontální rozlišení lze softwarově změnit od 512 a méně, čímž se také zmenší paměťová náročnost. Podobný modul jsem původně plánoval pro ZX Spectrum, ale i zde by si to našlo využití. Pokud by někoho zajímala přesná funkce, mohu to vysvětlit.

_________________
http://velesoft.speccy.cz/


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 2 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 5 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
Založeno na phpBB® Forum Software © phpBB Group
Český překlad – phpBB.cz