; clear - optimis‚ ; 'RX 96 opt a+,o+,p+,o1+,o2+ move.l 4(sp),a0 move.l 8(sp),d0 beq.s exit ; pas de donn‚es cmp.l #256,d0 ; >256 blo.s clr ; pas d'optimisation move.l d0,d1 lsr.l #8,d0 lsl.l #8,d0 ; d1=partie en 256 (ex: 600 => 512) move.l d0,d2 ; effacer en partant de la fin sub.l d0,d1 ; reste (ex: 600 => 88) lsr.l #8,d0 ; bloc /256 (ex: 600 => 2) add.l d2,a0 ; de la fin movem.l d1-d7/a0-a6,-(sp) ; sauver pile Y COMPRIS A0 movem.l vide(pc),d1-d7/a1-a6 ; effacer registres clr256: REPT 4 movem.l d1-d7/a1-a6,-(a0) ENDR movem.l d2-d7/a1-a6,-(a0) subq.l #1,d0 bne.s clr256 movem.l (sp)+,d1-d7/a0-a6 ; restaurer pile exg.l d0,d1 ; ‚changer d0,d1 tst.l d0 beq.s exit clr: clr.b (a0)+ subq.l #1,d0 bne.s clr exit: RTS vide: ds.l 13