La commande DERR du Basic retourne le dernier code d'erreur rencontré lors de l'utilisation d'une commande de lecture ou d'écriture de fichier1). L'UniDOS utilise les mêmes codes d'erreur que l'AMSDOS, et comme avec l'AMSDOS, le bit 7 indique si l'erreur a déjà été reportée ou non, et le bit 6 s'il s'agit d'une erreur bas niveau2).
Toutefois, l'UniDOS introduit quelques codes d'erreurs nouveaux dont voici la description (ajoutée en gras à la liste des erreurs AMSDOS) :
Erreur AMSDOS/UniDOS | Valeur DERR | Source de l'erreur |
---|---|---|
0 | 0 ou 22 | Activation de [ESC]. |
14 | 142 (128+14) | État du canal non valable. |
15 | 143 (128+15) | Fin de fichier matérielle. |
16 | 144 (128+16) | Mauvaise commande. |
17 | 145 (128+17) | Fichier déjà existant. |
18 | 146 (128+18) | Fichier non existant. |
19 | 147 (128+19) | Catalogue saturé. |
20 | 148 (128+20) | Média plein. |
21 | 149 (128+21) | Changement du média avec fichiers ouverts. |
22 | 150 (128+22) | Fichier en lecture seule. |
23 | 151 (128+23) | Le chemin correspond à un répertoire. |
24 | 152 (128+24) | Le fichier n'est pas un lien symbolique. |
25 | 153 (128+25) | Le type d'accès demandé n'est pas supporté par le lecteur physique. |
26 | 154 (128+26) | Fin de fichier logicielle. |
27 | 155 (128+27) | Le chemin correspond à un fichier alors qu'un répertoire était attendu. |
28 | 156 (128+28) | Tentative de renommage entre deux lecteurs physiques. |
29 | 157 (128+29) | Renommage depuis un répertoire vers un autre non supporté par le lecteur physique. |
30 | 158 (128+30) | Horloge non trouvée. |
31 | 159 (128+31) | Horloge en lecture seule. |
Lorsque l'on utilise la commande BASIC LOAD
ou SAVE
pour changer le répertoire courant ou en créer un nouveau, celle-ci remonte en fait une erreur silencieuse (sans message affiché) afin d'empêcher le Basic de charger quoi que ce soit (puisque aucun fichier n'est effectivement en jeu).
Si ceci n'a aucune conséquence en saisie directe, cette remontée d'erreur va provoquer l'interruption de tout programme Basic faisant un LOAD
ou un SAVE
sur un répertoire, de la même manière que lorsqu'un fichier n'est pas trouvé ou de mauvais type, à la seule différence qu'aucun message n'est affiché. Si ce comportement vous dérange, vous pouvez simplement utiliser dans ce cas les RSX |LOAD
et |SAVE
à la place des commandes BASIC ; celles-ci ne génèrent pas d'erreur et ne provoqueront donc pas l'interruption du programme.
10 |LOAD,"SD:JEUX/AVENTURE/" 20 PRINT"Le chemin courant est :":|PATH
Si vous désirez malgré tout utiliser LOAD
et SAVE
dans le cadre d'un programme interactif, vous pouvez intercepter l'erreur générée avec la commande ON ERROR GOTO
afin de déterminer si l'utilisateur a sélectionné un répertoire, un fichier3) ou si une erreur est survenue. Vous devrez prendre cet aspect en considération dans le cas de n'importe quel programme Basic manipulant les répertoires avec LOAD
et SAVE
. Si vous voulez simplement ignorer l'erreur silencieuse provoquée lors de l'ouverture des répertoires, voici un exemple :
10 ON ERROR GOTO 20:GOTO 100 20 IF ERR=32 AND DERR=151 THEN RESUME NEXT ELSE END 100 ' 110 LOAD"SD:JEUX/AVENTURE/" 120 PRINT"Le chemin courant est :":|PATH
L'UniDOS est, grâce à sa gestion des chemins et des lecteurs, fortement compatible avec les logiciels prévus pour l'AMSDOS. Ainsi, L'UniDOS est déjà capable de faire tourner nombre de logiciels de référence sur n'importe quel support alors qu'ils n'étaient initialement prévus que pour gérer les disquettes. La quasi-totalité des jeux disponibles en versions en fichiers tourneront également sous UniDOS.
Attention toutefois, l'UniDOS n'est pas compatible CP/M ; les programmes prévus pour être lancé via la RSX |CPM
ne fonctionneront toujours que sur disquette.
Quoique éligibles à la compatiblité AMSDOS, certains programmes de la liste ci-dessous ne fonctionneront que si vous êtes dans le cadre d'une installation optimale4). À noter aussi que quasiment tous les jeux et démos disponibles en version fichier5) devraient fonctionner dans cette configuration.
Outre les programmes prévus pour fonctionner exclusivement sur disquette et utilisant des « trackloads », certains programmes d'apparence « system friendly » ne fonctionne pas encore10).
Vous trouverez ici quelques astuces et conseils pour utiliser au mieux l'UniDOS avec les applications initialement prévues pour l'AMSDOS et qui ne savent nativement gérer ni les répertoires ni le choix du lecteur courant (en dehors de A:
et B:
).
La plupart des logiciels tels que « The Advanced OCP Art Studio », « Starkos » ou « The Soundtrakker » filtrent les noms de fichiers en fonction de leur extension afin de ne vous montrer que ceux qui sont gérés par le logiciel. Pour pouvoir malgré tout utiliser des répertoires, il vous suffit de les nommer avec l'extension attendue (.SCR
, .WIN
, .PAT
, .FNT
, .SKS
, etc.). Une erreur sera généralement remontée au moment du « chargement » de ces répertoires, mais elle est sans effet.
Vous noterez toutefois que ceci ne fonctionne pas pour certains logiciels (comme « The Soundtrakker ») car ils ne gèrent pas correctement les attributs de fichiers ou qu'ils contrôlent aussi leur taille (les répertoires sont listés comme des fichiers protégés de taille zéro). Ceci ne permet pas non plus de remonter dans une arborescence, ce qui peut être problématique. Pour ces deux cas, il suffit d'utiliser des liens symboliques comme expliqué ci-après.
Les liens symboliques sont des objets puissants qui trouvent leur utilité dans tout un tas de cas. En effet, ils vous permettent de créer n'importe où des points d'accès vers n'importe quel fichier, répertoire ou lecteur. Dans le cadre de l'utilisation de logiciels prévus pour l'AMSDOS, vous pouvez par exemples les utiliser pour faciliter la navigation dans les répertoires.
Par exemple :
A:
ou B:
) sans avoir à quitter le logiciel.
À l'aide de ses RSX |DEVTOOLS.ON
et |DEVTOOLS.OFF
, UniTools permet d'activer (état par défaut) et de désactiver les ROMs de développement au démarrage du CPC. Pour ce faire, les ROMs se considérant comme telles doivent vérifier la présence d'un marqueur en mémoire lors de leur phase d'initialisation. Ceci se fait comme suit :
; ; Routine à insérer au début de l'init des ROMs qui se considèrent comme étant des DevTools ; MagicNumber Equ &feca DisableROMTagAdr Equ &baf7 ROM_Init push hl ld bc,-MagicNumber ld hl,(DisableROMTagAdr+0) add hl,bc ld a,h or l pop hl jr nz,ROM_ActualInit ld a,(DisableROMTagAdr+2) and &40 ret nz ; NC ROM_ActualInit ... ; Suite de l'initialisation normale de la ROM
À noter que les ROMs d'Arnor proposées dans la section des téléchargements (Utopia, Protext et Maxam) ont été patchée pour être considérée comme des ROMs de développement.
Quelques chiffres pour donner un ordre d'idée des performances auxquelles vous pouvez vous attendre.
Les chiffres donnés ici sont des moyennes sur la lecture et l'écriture de fichiers de 16 Kio ; les temps de gestion du système de fichier sont donc inclus, ce qui donne des vitesses réalistes en usage standard et non pas des valeurs maximales jamais atteintes.
Lecture | Écriture (en direct) | Écriture (sous la ROM) |
|
---|---|---|---|
Lecteur de disquettes | 10 Kio/sec | 10 Kio/sec | 9 Kio/sec |
Albireo - Carte microSD11) | 70 Kio/sec | 25 Kio/sec | 16 Kio/sec |
Albireo - Stockage USB12) | 86 Kio/sec | 23 Kio/sec | 13 Kio/sec |
M4 Board - Carte microSD | 107 Kio/sec | 50 Kio/sec | 43 Kio/sec |
FatFs - X-Mass | 58 Kio/sec | 18 Kio/sec | 12 Kio/sec |
Maximum théorique | 120 Kio/sec | 120 Kio/sec | 80 Kio/sec |