On Saturday, June 09, 2007 7:01 PM [GMT+1], Massimo Raffaele <massimo.raffaele@xxxxxxxxxx> wrote:
solo 8. Immagino di dover fare una cosa del genere anche per la ROM, visto che il registro $7FFD contiene anche un bit che seleziona un banco.Basta disassemblare la ROM della Multiface 128 e scopri il metodo esatto :-D Scherzo, immagino la mole di lavoro... o no?
... Ho finito adesso di scrivere una subroutine che *dovrebbe* rilevare correttamente sia il banco di ram che quello di rom (sia A14 nel registro $7FFD che A15 nel $1FFD).
Non e` in grado di rilevare le modalita` speciali di indirizzamento del $1FFD.
Dato che io ho solo il gommoso, me lo provate su qualche 128 / +2 / +2A / +3 etc etc?
L'ho abbinato ad un header che restituisce il valore in BC, per cui con un PRINT USR 30000 si ottiene il risultato.
Negli 8 bit LSB restituisce il contenuto di $7FFD Negli 8 bit MSB restituisce il contenuto di $1FFDIn un gommoso ottengo 16 (D4 set = ROM1, per compatibilita` con eventuale 128K, in cui la rom1 e` quella del basic 48K).
Riepilogo dei registri in questione (per capire i risultati): $1FFD D2 = high bit rom select (seleziona fra le rom 2/4) tutti gli altri sono ignorati.Se SET, il valore restituito aumenta di 1024 (d2 * 256). Dovrebbe esserlo solo su un +2A / +3 con attiva una delle ultime due rom
$7FFD D4 = low bit rom select (seleziona fra le rom 0/1)Sul 128K dovrebbe essere alto quando e` attiva la rom 1, cioe` praticamente sempre (credo).
D2,D1,D0 = ram bank select Questo e` piu` facile da provare:Selezionate un banco qualsiasi (OUT 32765, #banco) e poi provate a lanciare il PRINT USR 30000.
Occhio: probabilmente il registro 32765 ($7FFD) ha D4 SET per usare la ROM1, che e` quasi sempre attiva, per cui credo che per selezionare il banco (ad esempio) 3 si debba mandare in out 19 (3 + 16, dove 16 e` il D4 SET).
Non so se sono stato abbastanza chiaro... cmq il file lo metto qui: http://www.zxbada.bbk.org/GUESS128.TAP
Prima del caricamento e` opportuno un CLEAR 28000, anche perche` altrimenti cambiando banco si inchioda tutto anche senza bisogno di software addizionale :-)
Ciao e grazie!