adnz a écrit:
Donc je dois faire ça en asm !
BANK7:LOADM"DATLEV1.BIN"
Le BANK est super facile en ASM dans les fichiers BIN standards: c'est un ORG + FCB
Code:
ORG $E7E5
FCB <numéro de bank physique>
ORG $A000
... code/data ...
Ensuite pour charger un BIN, tout dépends de ce que tu veux utiliser: Track-loader ou fichier BIN standard ? L'extra-moniteur ou moniteur ?
Pour les binaires standard j'ai le code suivant que j'ai utilisé dans la démo ElvisLives:
Code:
***************************************
* boucle:
* REPEAT
* ....
* WHILE condition
***************************************
REPEAT macro
loop set *
endm
WHILE macro
b\0 loop
endm
***************************************
* charge le fichier 'AUTO.BIN"
* en sortie X contient l'addresse
* de lancement. Les autres registres
* sont trashes.
***************************************
load leau <AUTOBIN,pcr
bsr d7open
bcs error
loadbk bsr getb ; typ bloc log
bsr getw ; long bloc log
coma
beq exec ; fin fichier
coma
bne error ; bloc inconnu
tfr x,y ; charg. donnees
bsr getw ; addr charg.
nop
REPEAT
bsr getb
sta ,x+
leay -1,y
WHILE ne
bra loadbk
exec bsr getw
jmp ,x
AUTOBIN
fcc /0AUTO BIN/
***************************************
* lit un mot en gerant les erreurs.
* x=mot lu
***************************************
getw pshs d
bsr getb
tfr a,b
bsr getb
exg a,b
tfr d,x
puls d,pc
Il utilise 2 primitives:
d7open (retour dans le flag C) qui ouvre en lecture le fichier dont le nom est pointé par le registre U, et
getb (retour dans registre A) qui récupère les octets un à un de ce fichier. La façon de les implémenter dépend du choix de routines sous-jacente: EXTRA-MONITEUR / MONITEUR / Disk-virtuel en ROM / SDStream / etc...
PS: ce code est loin d'être une référence. J'y trouve plein de trucs à revoir.

(exemple: getb devrait retourner l'octet dans B, getw devrait retourner dans Y, il pourrait utiliser la pile pour être plus compact et rapide, le code devrait utiliser des LEA plutôt que des TFR pour transférer des registres de données, etc.) Disons qu'il permet de voir que charger un fichier BIN classique est simple à partir du moment où l'on sait récupérer les octets un à uns.