opt a+,o+,p+,o1+,o2+ i: equr d0 j: equr d1 bas: equr d2 haut: equr d3 SauveH: equr d6 GadrB: equr a0 GadrH: equr a1 adrH: equr a2 adrB: equr a3 Section Text Move.L 4(Sp),GadrB Add.L #999,GadrB ; 1Ko, on part du bas ; de de bas en haut et de droite … gauche ; |01| ; |23| ; |45| haut ; |==| ; |01| bas ; |23| <------ {on commence par la} ; |45| (effac‚) ; |--| bas de page ; au d‚but GadrB pointe sur le dernier octet du bloc graphique plus UN move.l GadrB,GadrH Sub.l #40,GadrH ; calcul adr paquet plus haut Move.W #40-1,j ; boucle droite->gauche loop1: Ext.L j move.l GadrH,adrH ; d‚part en bas move.l GadrB,adrB subq.l #1,GadrH ; 1 bloc vers la gauche subq.l #1,GadrB Move.W #24-1,i ; boucle bas->haut (pas 25-1!!) Move.b (adrB),bas ; sauver ligne du bas Move.b -39(adrB),haut ; sauver ligne du haut bclr #0,haut btst #4,bas beq.s PNoset1 bset #0,haut Pnoset1: bclr #1,haut btst #5,bas beq.s PNoset2 bset #1,haut PNoset2: bclr #4,bas btst #2,bas beq.s PNoset3 bset #4,bas PNoset3: bclr #5,bas btst #3,bas beq.s PNoset4 bset #5,bas PNoset4: bclr #2,bas btst #0,bas beq.s PNoset5 bset #2,bas PNoset5: bclr #3,bas btst #1,bas beq.s PNoset6 bset #3,bas PNoset6: move.b haut,sauveH ; sauver ligne extrŠme move.b bas,(adrB) loop2: Ext.L i move.b (adrH),haut ; XX haut move.b (adrB),bas ; XX bas ; on d‚cale les pixels sur les registres, ca va + vite! ; haut->bas NoSet0: bclr #0,bas btst #4,haut beq.s noSet1 bset #0,bas NoSet1: bclr #1,bas btst #5,haut beq.s noSet2 bset #1,bas NoSet2: bclr #4,haut btst #2,haut beq.s noSet3 bset #4,haut noSet3: bclr #5,haut btst #3,haut beq.s noSet4 bset #5,haut NoSet4: bclr #2,haut btst #0,haut beq.s noSet5 bset #2,haut noSet5: bclr #3,haut btst #1,haut beq.s noSet6 bset #3,haut NoSet6: bclr #0,haut ; + propre bclr #1,haut ; idem ; on sauve move.b haut,(adrH) move.b bas,(adrB) sub.l #40,adrH ; 1 ligne + haut (40c) sub.l #40,adrB dbra i,loop2 add.l #40,adrH and.b #%000011,sauveH and.b #%111100,haut or.b sauveH,haut move.b haut,(adrH) dbra j,loop1 ; voilu ch‚ fini RTS