DelVcod

par
Benoît GILON

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.

Utilisation

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

Implémentation

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