Cari amici, e' da un po' di tempo che cerco di rendere quanto piu'
compatibile il famigerato clone con lo spectrum reale ed ora vorrei rendervi
partecipi del punto al quale sono giunto..
Parto col dire che il chrome non e' compatibile al 100%, lo so, qualcuno
storcera' il naso ma e' cosi', la buona notizia e' che almeno rispetto allo
speccybob al quale mi sono ispirato e' leggermente piu' vicino allo speccy..
e vi spiego perche':
il problema piu' grosso di emulare la ula e', come avrete capito, il
floating bus, nato per risparmiare e sfruttato dai coders per sincronizzarsi
alla perfezione con il segnale video, ora la ula quando legge la ram video,
legge consecutivamente 4 byte cioe' dato video, attributo, dato +1 attributo
+1, poi 4 byte a $ff e di nuovo altri 4 byte. All'inizio non capivo il
perche' di questa storia poi studiando bene il funzionamento di un altro
clone (il mistrum) mi sono reso conto che la ula pre-memorizza quello che
sara' il prossimo byte (dato video + attributo) per evitare "contaminazioni"
di colore nel caso l'attributo cambi tra un byte e l'altro.
Veniamo allo speccybob, questo invece di memorizzare 4 byte consecutivi,
prende prima l'attributo e poi il byte video, cosi' facendo si evita il
mescolamento di colore di cui sopra.. tutto cio' genera una incompatibilita'
con le demo che cercano prima il byte e poi l'attributo perche' i due sono
scambiati..
Il chrome attualmente memorizza prima il byte video e poi l'attributo e
riesce a far girare demo che sullo speccybob di fatto non andrebbero (senza
considerare che lo speccybob non ha il floating bus).
riepilogando questo e' il risultato:
ula originale Chrome
dato dato
attributo attributo
dato+1 $ff
attributo+1 $ff
$ff $ff
$ff $ff
$ff $ff
$ff $ff
dato+2 dato+1
attributo+2 attributo+1
dato+3 $ff
attributo+3 $ff e cosi' via
Ho provato ad implementare la stessa storia sul chrome ma lo spazio nel cpld
video e' finito, ormai scoppia.. Morale della favola, al momento il chrome
*non* e' compatibile con lo spectrum, almeno con le applicazioni che
sfruttano al 100% le possibilita' della ula, nella maggior parte delle
applicazioni e dei giochi per fortuna questo non avviene.. alcune demo pero'
non partono affatto, altre hanno un funzionamento non perfetto.. forse in
futuro, trovando un dispositivo programmabile piu' capiente (i prezzi pero'
sono da capogiro) riusciro' a fare qualcosa in piu'.
Tutto questo per rispondere alle innumerevoli domande sull'argomento e per
non deludere chi potra' provare dal vivo il risultato di circa un anno di
lavoro.
Con questo e' tutto, scusate la lunghezza (storica credo) del post :) ciaoo