creare un file prg compresso con Exomizer

 

questa guida e stata creata di Francesco Milione

ECCO COME SI CREANO:

Premessa:
Questa breve guida mostra come ottenere un file .prg nei casi classici; evito tutte le eccezioni per non creare confusione.

Prerequisiti:
TapCleanFE 0.40 o superiore
Vice 3.5 o superiore
Exomizer 3.1.1 o superiore

1. Impostare il VICE:
Prefences > Settings... > Host > Autostart > [v] Autostart PRG mode
Prefences > Settings... > Host > Autostart > [v] Warp on autostart
Prefences > Settings... > Machine > RAM > Impostare tutti i valori a zero.

2. Da TapCleanFE > Open > Selezionare il file .tap > Cliccare su Test
a questo punto i file del nastro .tap si troveranno nella sottocartella PRG di TapCleanFE

a noi interessano solo gli ultimi 2 file, quelli che iniziano da $0801 ovvero il normale inizio dove vengono caricati i programmi.

3. Rinominiamo il penultimo file in 1.prg e l'ultimo file in 2.prg (ci servirà dopo).

A questo punto sappiamo che il nostro programma inizia alla locazione $0801 (non sempre ma questa guida parla solo dei casi classici) ma non sappiamo ancora a che locazione finisce.

4. Apriamo 1.prg col doppio click e resettiamo VICE con File > Reset > Hard reset
Apriamo il monitor con ALT+H
Diciamo al monitor di lavorare solo sulla RAM col comando
bank ram
Riempiamo la memoria con un valore diverso da zero, userò $88, dando il comando
f 0801 ffff 80
Carichiamo in memoria "1.prg" dal monitor col comando
l "1.prg" 0
e usciamo del monitor col comando

facciamo partire il programma col comando
RUN

Rientro nel monitor e cerco la locazione finale del programma dando il comando
m d000 ffff

Mi aiuto dando il comando
d dbc0

e scopro (in questo caso) che il programma finisce a $dbc9 meno uno ovvero $dbc8.
Mi segno il valore $dbc8 che per ora sembrerebbe la locazione finale ma potrebbe non essere così
nel malaugurato caso che gli ultimi bit siano proprio $88 come ho impostato tutta la memoria libera.

5. Chiudiamo tutto e ricominciamo.
Doppio click su "1.prg" per riaprire VICE (adesso tutta la memoria sarà impostata con $00)
digita ALT+H per entrare nel monitor
per indicare al monitor di lavorare solo sulla memoria RAM (comando fondamentale) digito:
bank ram
Per caricare la prima parte del programmi in memoria digito:
l "1.prg" 0
(la prima lettera è una elle minuscola e non una i)
verifico che la locazione finale sia quella esatta digitando
bank ram
e poi digito come prima
d dbc0
esattamente come sopra, ma questa volta verifico che ci siano gli zero nella locazione finale

adesso ho la certezza che la locazione finale sia $dbc8 perchè in $dbc9 c'è uno zero e non 88 come impostato prima.

6. A questo punto non mi resta che caricare la seconda parte del programma col comando:
l "2.prg" 0
e salvare il programma col comando:
s "Nome Programma.prg" 0 0801 dbc8
dove:
s sta per save
"Nome Programma.prg" è il nome del file che salverò
0 indica di salvare sul computer
0801 indica la locazioni iniziale
dbc8 è la locazione finale trovata in questo caso.

Il file .prg è pronto ma si pone un problema: tutti i file che superano la locazione $cfff mandano in crash il commodore 64, pertanto o imposto l'emulatore di caricare il .prg direttamente in RAM, oppure lo comprimo con Exomizer tramite il seguente comando dal Prompt dei Comandi:
Exomizer sfx basic "Nome Sorgente.prg" -o "Nome destinazione.prg" -x1 -s "lda #$0b sta $d011" -f "lda #$1b sta $d011"

in caso il programma occupi tutta la memoria fino alla locazione $FFFF il comando sopra fallisce e bisogna cambiarlo indicandogli la locazione iniziale del programma.
Nell'esempio che segue gli andiamo ad indicare che il programma inizia con SYS2064 sostituendo la voce "basic" con "2064"
Exomizer sfx 2064 %IN% -o %OUT% -x1 -s "lda #$0b sta $d011" -f "lda #$1b sta $d011"

Per trovare la locazione iniziale di un programma puoi caricarlo col monitor di VICE coi comandi
bank ram
l "Nome Programma.prg" 0
m 0801
nella prima riga troverai il numero del comando SYS.
oppure puoi lanciare il .prg e tenere subito premuto il tasto ESC in modo da bloccare il comando RUN e digitare LIST dall'emulatore.

PS: Allego il file che ho usato come esempio preso da SpeclaiPlayGames 31 da aggiungere a quelli che ti ho inviato.

 

Aggiornamento

In linea di massima coi giochi d'edicola ci si può trovare in due condizioni:
Nella prima lanciando il primo file appare la scritta PRESS PLAY ON TAPE e tutto funziona come da guida,
nella seconda, dato che il primo programma non lancia un classico LOAD ma avvia il relativo programma turbo bisogna intervenire in un altro modo che non ho scritto nella guida ma che ti indico qui:
doppio click sul primo file per avviarlo
appena parte VICE e la sua finestra diventa nera premere ALT+H per entrare nel monitor
digitare BANK RAM e poi BK 0400 questa istruzione indica al VICE di stoppare il programma quando arriva alla locazione $0400 e riaprire il monitor.
Esco dal monitor col comando X e aspetto che VICE mi riapra il monitor (attendo meno di un secondo).
A questo punto procedo come da guida caricando il secondo file.
Nel secondo caso bisogna controllare anche la locazione iniziale del programma che potrebbe essere $0800 o anche meno e se il programma non ha l'istruzione basic per avviarsi digito D 0400 e cerco la prima istruzione JMP $xxxx che contiene l'indirizzo di partenza (al posto delle x ovviamente).

File Esempo