La commande RISC OS Unset pour effacer les variables d'environnement est très utile. Malheusement, elle reste inopérante pour effacer les variables d'environnement de type code que vous avez préalablement rajoutées. Le but de la commande DelVcod est de palier à cet inconvénient en permettant de supprimer de telles variables, libérant ainsi la mémoire occupée (Sys$CSD décrite dans ce numéro est une telle variable).
Attention: n'utilisez cette commande que pour des variables par vous rajoutées et évitez son emploi pour supprimer des variables standard du système (elles aussi de type code) telle Sys$Time.
Le fichier DelVcod étant dans un répertoire spécifié dans la variable Run$Path ou dans le répertoire courant. Le seul paramètre utile ici est le nom de la variable système à supprimer: pas de possibilité ici de mentionner un canevas wild regroupant plusieurs variables (ex. Sys$*)
*DelVcod Sys$CSD
OS_GetEnv * &10 XOS_GetEnv * OS_GetEnv :OR: Xbit SWI XOS_GetEnv ;R0= Adresse ligne MOVVS PC, R14
; Saute les blancs avant le nom de la ; commande SUB R0, R0, #1 01 LDRB R1, [R0, #1]! TEQ R1, #32 ;<espace> TEQNE R1, #9 ;<tabulation> BEQ %B01 TEQ R1, #0 ;Sort si commande MOVEQ PC, R14 ; inexistante ; Recherche le "blanc" séparateur 02 LDRB R1, [R0, #1]! TEQ R1, #0 MOVEQ PC, R14 TEQ R1, #32 TEQNE R1, #9 BNE %B02 ; Recherche du 1er caractère de l'argument 03 LDRB R1, [R0, #1]! TEQ R1, #0 MOVEQ PC, R14 TEQ R1, #32 TEQNE R1, #9 BEQ %B03
OS_SetVarVal * &24 XOS_SetVarVal * OS_SetVarVal :OR: Xbit ... MOV R2, #-1 MOV R3, #0 MOV R4, #&10 SWI XOS_SetVarVal MOV PC, R14 END