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.