le code fautif
userlib@000D getfreearchive: movem.l d1-d7/a0-a6,-(a7) subq.l #8,a7 ; Stack Frame move.l a7,a2 ; Get ptr to stack frame clr.l -(a7) ; &allExceptBaseCode clr.l -(a7) ; &badSectors clr.l -(a7) ; &unusedSectors pea (a2) ; &free pea 4(a2) ; &freeAfterGC clr.l -(a7) ; &inUse jsr tios::EM_survey lea 8*4(a7),a7 move.l (a2),d0 ; free add.l (a2)+,d0 ; free+freeAfterGc movem.l (a7)+,d1-d7/a0-a6 rts
le code corrigé par lui
movem.l d1-d7/a0-a2,-(a7) subq.l #12,a7 ; Stack Frame move.l a7,a2 ; Get ptr to stack frame clr.l -(a7) ; &allExceptBaseCode clr.l -(a7) ; &badSectors pea (a2) ; &unusedSectors pea 4(a2) ; &free pea 8(a2) ; &freeAfterGC clr.l -(a7) ; &inUse jsr tios::EM_survey lea 9*4(a7),a7 move.l (a2)+,d0 ; unusedSectors add.l (a2)+,d0 ; free add.l (a2),d0 ; free+freeAfterGc (a7)+,d1-d7/a0-a2 rts
mais à quoi correspond exactement unusedSectors ?
un secteur pour les app flash (même si pas d'installées) et un pour le garbage memory ?
pour les registres sauvés, y en a pas un peu trop ? j'aurai mis a0-a2/d1-d2 perso