99 lines
2.2 KiB
C
99 lines
2.2 KiB
C
#include <clib/exec_protos.h>
|
|
#include <clib/intuition_protos.h>
|
|
#include <clib/graphics_protos.h>
|
|
#include <exec/memory.h>
|
|
#include <graphics/gfxbase.h>
|
|
#include <hardware/custom.h>
|
|
#include <hardware/dmabits.h>
|
|
#include <exec/types.h>
|
|
|
|
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);
|
|
}
|