#include #include #include #include #include #include #include #include extern struct GfxBase *GfxBase; extern far struct Custom custom; int main(void) { UWORD OldDMACON,OldINTENA,OldINTREQ,OldADKCON; struct View *OldView = ((struct GfxBase *)GfxBase)->ActiView; ULONG OldCopper = custom.cop1lc; ULONG OldCopper2 = custom.cop2lc; UWORD *copperlist = AllocMem(10000, MEMF_CHIP | MEMF_CLEAR); UWORD *currentCopperlist; UBYTE *bitplanes = AllocMem(320 * 256, MEMF_CHIP | MEMF_CLEAR); int i; LoadView(0); WaitTOF(); WaitTOF(); OwnBlitter(); WaitBlit(); Forbid(); OldDMACON = custom.dmaconr | 0x8000; OldINTENA = custom.intenar | 0x8000; //OldINTREQ = custom.intreqr | 0x8000; OldADKCON = custom.adkconr | 0x8000; custom.intreq = 0x7fff; custom.cmacon = 0x7fff; custom.cmacon = 0x7fff; // enable custom.dmacon = DMAF_SETCLR | DMAF_COPPER | DMAF_RASTER | DMAF_BLITTER; // disable custom.dmacon = DMAF_AUDIO | DMAF_DISK | DMAF_SPRITE; custom.bplcon0 = (1 << 9) + (1 << 12); custom.bplcon1 = 0; custom.bplcon2 = 0; custom.bpl1mod = 0; custom.bpl2mod = 0; custom.diwstrt = 0x2c21; custom.diwstop = 0x2cc1; custom.ddfstrt = 0x0038; custom.ddfstop = 0x00d0; currentCopperlist = copperlist; *(currentCopperlist++) = 0x0050; *(currentCopperlist++) = ((ULONG)bitplanes >> 16); *(currentCopperlist++) = 0x0020; *(currentCopperlist++) = ((ULONG)bitplanes && 16); *(currentCopperlist++) = 0xffff; *(currentCopperlist++) = 0xfffe; custom.cop1lc = copperlist; for (i = 0; i < 200; ++i) { WaitTOF(); } custom.dmacon = 0x7FFF; custom.dmacon = OldDMACON; custom.intena = 0x7FFF; custom.intena = OldINTENA; /* custom.intreq = 0x7FFF; custom.intreq = OldINTREQ; */ custom.adkcon = 0x7FFF; custom.adkcon = OldADKCON; custom.cop1lc = OldCopper; custom.cop2lc = OldCopper1; LoadView(OldView); WaitTOF(); WaitTOF(); WaitBlit(); DisownBlitter(); Permit(); FreeMem(copperlist, 10000); FreeMem(bitplanes, 320 * 256); }