Commodore 64 > Programmazione, Grafica e Musica

Kernal load fallisce su 1541 ultimate II plus

(1/2) > >>

marcom_to:
Ciao a tutti,

giorni fa ho aperto un nuovo topic sulla sezione Aiuto e Domande, sperando che qualcuno sapesse il motivo per cui non riesco a caricare il gioco 'Cave of the word wizard' sul mio 1541 ultimate II plus. Detto questo ho deciso di aprire un nuovo topic qui, perché alla fine vorrei entrare un po' più nei dettagli tecnici (codice assembly), sperando che ci sia qualcuno che se ne intende.

Partirò dai dettagli:

Vorrei caricare il suddetto gioco, la versione GB64, sul mio 1541UII+. Il file da caricare è 'cave of word wiz', il primo file che trovo all'interno dell'immagine del primo disco. Questo file tenta di caricarne un secondo, 'boot1', ma secondo me non riesce a trovarlo.
Allora ho disassemblato il codice e sono andato a vedere che tipo di caricamento fa, ed ho visto che si tratta di una classica kernel load (SETLFS, SETNAM, LOAD). Mi sono accorto che il device 8 è cablato dentro il codice, per cui, volessi caricare il gioco da unità 9, otterrei la risposta DEVICE NOT PRESENT. Di seguito la chiamata:

              LDA #$93                         
              JSR $FFD2                         
              LDA #$06                         
              STA $D020                         
              STA $D021                         
              STA $0286                         
              LDA #$08                         
              LDX #$08                         
              LDY #$01                         
              JSR $FFBA                         
              LDA #$08                         
              LDX #$60                         
              LDY #$01                         
              JSR $FFBD                         
              LDA #$00                         
              LDX #$00                         
              LDY #$40                         
              JSR $FFD5                         
              JMP $8408 

Su vice 3.1, se trascino l'immagine D64 su di esso, il gioco carica. Se invece monto l'immagine, faccio LOAD"$",8 e poi LOAD"*",8,1 non funziona, sia abilitando l'opzione true drive emulation, sia disabilitandola.

Facendo il dump della memoria da vice riesco a vedere il file che tenta di caricare 0:BOOT1.

0161: $30 048   '0'
0162: $3A 058   ':'
0163: $42 066   'B'
0164: $4F 079   'O'
0165: $4F 079   'O'
0166: $54 084   'T'
0167: $31 049   '1'
0168: $2A 042   '*'

Ho sostituito il device 8 con il più conveniente $BA e riassemblato il codice, ma la situazione è sempre la stessa. Qualche idea?

clbianco:

--- Citazione da: marcom_to - 20 Marzo 2018, 19:44:29 ---Su vice 3.1, se trascino l'immagine D64 su di esso, il gioco carica. Se invece monto l'immagine, faccio LOAD"$",8 e poi LOAD"*",8,1 non funziona, sia abilitando l'opzione true drive emulation, sia disabilitandola.

--- Termina citazione ---

Ho provato con Vice 3.1 e in effetti il problema è riproducibile. Ma la cosa veramente strana è che se monti l'immagine e poi fai direttamente LOAD"*",8,1 il gioco parte senza problemi! Il problema si verifica solo se prima di avviare il gioco carichi la directory con LOAD"$",8 (cosa che in effetti non serve per avviare il gioco).

Magari stasera provo con la 1541U2 e vedo come si comporta...

Carlo Luciano

marcom_to:
Ciao clbianco,

è come dici tu, su Vice, se prima non leggi la directory, il problema non sussiste. Il mio 1541U II+ comunque fallisce il caricamento anche quando eseguo il run diretto, senza montare l'immagine.
Per ora ho raggirato il problema facendo un backup con la Retro Replay emulata su Vice, salvando il backup nel punto in cui il gioco chiede di scegliere il livello, e poi da li carico dalle immagini D64 regolarmente. Aggiungerei anche che ho provato diverse versioni del gioco, e che tutte si comportano allo stesso modo.

Ciao e grazie.

clbianco:

--- Citazione da: marcom_to - 21 Marzo 2018, 19:02:36 ---Il mio 1541U II+ comunque fallisce il caricamento anche quando eseguo il run diretto, senza montare l'immagine.

--- Termina citazione ---

Ho appena provato. La mia 1541U2 (firmware 3.2) si comporta esattamente come il Vice. Se monto l'immagine e poi faccio LOAD"*",8,1 funziona tutto regolarmente. Se invece carico prima la directory, allora si blocca.

Ovviamente se faccio un "run diretto" del file senza montare l'immagine il caricamento fallisce, visto che non può poi trovare gli altri file (visto che l'immagine non è montata).

Se provo invece a fare direttamente "Run Disk" dal menù della 1541U2 (che penso che sia quello che intendi tu con "run diretto", anche se in realtà in questo modo l'immagine viene effettivamente montata), il caricamento fallisce lo stesso. Ma non so quanto questo sia indicativo, magari può essere un problema di come è implementata questa funzione (mount-reset-run) sulla 1541u2. Non è una funzione che uso molto, quindi non so dirti come si comporti in altri casi.

Quindi mi sa che, per usare quel gioco con la 1541u2, la cosa più semplice che puoi fare è montare l'immagine e poi fare manualmente LOAD"*",8,1.

Facci sapere!
Carlo Luciano

marcom_to:
Ciao Carlo Luciano,

grazie per la risposta. Purtroppo a me non funziona. Anch'io ho aggiornato il firmware all'ultima versione (3.2). Se monto il disco e poi eseguo LOAD "*",8,1 , appare READY e se faccio LIST non ottengo nulla. Riesco comunque ad usare il gioco utilizzando il backup che ho creato con la Retro Replay.

Grazie per l'interesse,

Marco

Navigazione

[0] Indice dei post

[#] Pagina successiva

Vai alla versione completa