/* 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")