/* The following 2 macros are converted from the Azur runtime by Thibaut Barthélémy (with his permission). */ #define GX_clrscr(Plane) asm("\ /* code optimized by Julien Monville (Pen^2) */\ movem.l %%d0-%%d7/%%a0-%%a7,GXSvgReg;\ lea 3840(%0),%%a7;\ moveq #0,%%d0;\ moveq #0,%%d1;\ moveq #0,%%d2;\ moveq #0,%%d3;\ moveq #0,%%d4;\ moveq #0,%%d5;\ moveq #0,%%d6;\ move.w %%d0,%%a0;\ move.w %%d0,%%a1;\ move.w %%d0,%%a2;\ move.w %%d0,%%a3;\ move.w %%d0,%%a4;\ move.w %%d0,%%a5;\ move.w %%d0,%%a6;\ moveq #10,%%d7;\ GXCS_loop:;\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ dbf %%d7,GXCS_loop;\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0-%%a6,-(%%a7);\ movem.l %%d0-%%d6/%%a0,-(%%a7);\ movem.l GXSvgReg(%%pc),%%d0-%%d7/%%a0-%%a7"::"a"(Plane)); #define GX_CopyBuffer(Dest,Src): asm("\ movem.l %%d0-%%d7/%%a0-%%a7,GXSvgReg;\ move.l %1,%%a7;\ move.l %0,%%a6;\ /* échange ces 2 lignes si tu utilises -fomit-frame-pointer !!! */ moveq #11,%%d7;\ CB_loop:;\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,(%%a6);\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,52(%%a6);\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,104(%%a6);\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,156(%%a6);\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,208(%%a6);\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,260(%%a6);\ lea 312(%%a6),%%a6;\ dbf %%d7,CB_loop;\ movem.l (%%a7)+,%%d0-%%d6/%%a0-%%a5;\ movem.l %%d0-%%d6/%%a0-%%a5,(%%a6);\ movem.l (%%a7),%%d0-%%d6/%%a0-%%a3;\ movem.l %%d0-%%d6/%%a0-%%a3,52(%%a6);\ movem.l GXSvgReg(%%pc),%%d0-%%d7/%%a0-%%a7"::"g"(Dest),"g"(Src)); asm("GXSvgReg: ds.l 16")