Afin de gérer les disquettes en mode secteur, Rasm propose un jeu de fonctionnalité en ce sens
Certaines fonctions sont à exécution immédiate comme la création, le chargement et la mise à jour d'un EDSK
Toutes les autres fonctions sont à exécution différée, afin que Rasm ait terminé son assemblage quand ces fonctions seront appelées
Fonctionnalités à exécution immédiate
EDSK CREATE,'filename.dsk:side',DATA|VENDOR|UNFORMATED,nbtracks[,INTERLACED][,OVERWRITE]
EDSK READSECT,'filename.dsk:side','location',<exactsize>
EDSK UPGRADE,'filename.dsk:side','outputfilename.dsk'
Fonctionnalités à exécution différée
EDSK WRITESECT,'filename.dsk:side',<start_addr>,<length>,'location'
EDSK GAPFIX,'filename.dsk:side',TRACK|ALLTRACKS,<track>
EDSK MAP,'filename.dsk'
EDSK DROP,'filename.dsk:side','location'
EDSK ADD,'filename.dsk:side','location',<size>,...
EDSK RESIZE,'filename.dsk:side','location',<size>,...
EDSK MERGE,'filename.dsk:side','filename.dsk:side','outputfilename.dsk'
Comment utiliser le 'filename.dsk:side' ?
Vous pouvez renseigner ce champ avec uniquement le nom du fichier, si l'image disquette contient 2 faces alors la première sera utilisée par défaut. Si vous souhaitez utiliser les faces d'un fichier image, les possibilités sont :A, :B, :0 et :1
Comment définir la "location" ?
La localisation définit une piste ainsi que des secteurs si besoin. Les valeurs peuvent être déclarées dans n'importe quelle base (décimale, hexa, …) et vous pouvez définir plusieurs localisations en utilisant le caractère "espace" en tant que séparateur. Avec le caractère "moins", vous pouvez aussi définir des intervales. Quelques exemples ci-dessous
'5' => piste 5
'5:#C2' => secteur #C2 piste 5
'0-5' => pistes 0 to 5
'0-5:$C2-0xC9' => secteurs #C2 à #C9 sur les pistes 0 à 5
'0:#C1 0:#C3' => secteurs #C1 et #C3 sur la piste 0
EDSK CREATE,'filename.dsk',DATA|VENDOR|UNFORMATED,nbtracks[,INTERLACED][,OVERWRITE]
Création d'une disquette au format DATA, VENDOR ou avec des pistes vides (Utilisation conjointe avec ADD), le nombre de pistes est celui par face.
On peut préciser en option le mot clef INTERLACED pour les disquettes DATA ou VENDOR.
On peut ajouter en option le mot OVERWRITE pour écraser une disquette existante avec le même nom.
EDSK READSECT,'filename.dsk','location',<exactsize>
Lire des secteurs en mémoire. La quantité de données à lire est obligatoire. Si il n'y a pas assez de secteurs pour atteindre la quantité de données, Rasm déclenchera une erreur.
EDSK UPGRADE,'filename.dsk','outputfilename.dsk'
Cette fonction a double usage. Elle permet de convertir un vieux DSK en EDSK ou plus simplement de copier un fichier DSK vers un autre.
EDSK WRITESECT,'filename.dsk',<start_addr>,<length>,'location'
Enregistrer les données assemblées sur une disquette. Les données seront lues depuis la bank où est située le WRITESECT. Si la liste des pistes/secteurs fournie est insuffisante pour enregistrer le total des données, une erreur sera déclenchée.
EDSK GAPFIX,'filename.dsk',TRACK|ALLTRACKS,<track>
Recalcule automatiquement la longueur de GAP pour que le tour de piste soit inférieur ou égal à 6250 octets
EDSK MAP,'filename.dsk'
Affiche une cartographie des secteurs de la disquette ainsi que les informations de piste
EDSK DROP,'filename.dsk','location'
Effacer un ou plusieurs secteurs de la disquette.
EDSK ADD,'filename.dsk','location',<size>,…
Ajouter un ou plusieurs secteurs sur la disquette, de taille <size> correspondant à la taille FDC soit:
0 : 128
1 : 256
2 : 512
3 : 1024
4 : 2048
5 : 4096
6 : 6250 ; taille tronquée
Les tailles supérieures n'ont aucun intérêt à être gérées.
EDSK RESIZE,'filename.dsk','location',<size>,…
Permet de redimensionner un ou plusieurs secteurs, la taille correspond à la taille FDC (voir tableau ci dessus)
EDSK MERGE,'filename.dsk:side','filename.dsk:side','outputfilename.dsk'
Fusionner deux faces d'images simples ou double faces en un fichier double face