Ya un truc que je comprends pas avec ce ROM_CALL :
SymDel
;short SymDel (SYM_STR SymName);
SymDel:
clr.w -(a7)
move.l 4+2(a7),-(a7) ; Push SYM_STR
jsr SymFindPtr ; Find SYM_ENTRY to delete
addq.l #6,a7
;short SymDel_SymEntry(SYM_ENTRY *name);
SymDel_SymEntry_reg:
move.l a0,d0
beq.s \End
move.w SYM_ENTRY.flags(a0),d0
andi.w #SF_FOLDER|SF_LOCKED|SF_HIDDEN|SF_INVIEW|SF_ARCHIVED,d0
bne.s \End2
move.w SYM_ENTRY.hVal(a0),-(a7) ; Push Handle to delete
jsr DeleteItem ; Delete SYM_ENTRY
tst.w (a7) ; Delete Handle ?
beq.s \NoFree
jsr HeapFree ; Free Handle
\NoFree addq.l #2,a7
moveq #1,d0 ; TRUE
\End: rts
\End2 moveq #0,d0
rts
Pourquoi le flag SF_LOCKED est vérifié, alors que la doc dit :
Note that this routine will delete symbols even if they are locked or in use!
Et la doc ne précise pas que le handle associé doit être détruit. C'est comme ça que fait AMS ? Pour moi, c'est une surprise, et à priori EExec est bogué à ce niveau...
Et est-ce que techniquement, ça serait possible d'effacer un fichier archivé ? ie sans avoir à le rebalancer en RAM, ce qui est quand même vachement contraignant, et parfois impossible => on se retrouve avec la situation super intelligente où l'on ne peut pas effacaer un fichier en flash car la RAM est pleine.
