#include "/xsb.h" #include struct timerequest *tr; extern struct Custom __far custom; struct GfxBase *GfxBase; struct IntuitionBase *IntuitionBase; struct RastPort *rp; int xs,ys,xb,yb,x1,y1; void srand(int); int rand(void); #define rnd(x) (rand()%(x)) long quitsig; void drawframe(int x,int y) { SetAPen(rp,1); Move(rp,x*xs,y*ys); Draw(rp,x*xs+xs-1,y*ys); Draw(rp,x*xs+xs-1,y*ys+ys-1); Draw(rp,x*xs,y*ys+ys-1); Draw(rp,x*xs,y*ys); } void pause(void) { if(SetSignal(0,0)&quitsig) return; tr->tr_time.tv_secs=0; tr->tr_time.tv_micro=300; DoIO(tr); } void doscroll(int m) { int c; switch(m) { case 0: for(c=0; c4) continue; } else rep=0; if(!m && xb>0) { doscroll(0); xb--; break; } if(m==1 && xb<7) { doscroll(1); xb++; break; } if(m==2 && yb>0) { doscroll(2); yb--; break; } if(m==3 && yb<7) { doscroll(3); yb++; break; } } lastdir=m; } void __saveds XSBBlankScreen(long signum,struct XSBInfo *xi) { struct Screen *front,*scr; int x,y; short cmap[64]; quitsig=signum; tr=xi->tr; GfxBase=OldOpenLibrary("graphics.library"); IntuitionBase=OldOpenLibrary("intuition.library"); front=IntuitionBase->FirstScreen; srand(VBeamPos()); if(!(scr=OpenScreenTags(0, SA_Width,xs=front->Width,SA_Height,ys=front->Height, SA_Behind,TRUE, SA_Depth,front->BitMap.Depth, SA_DisplayID,GetVPModeID(&front->ViewPort), TAG_DONE))) goto xit; rp=&scr->RastPort; BltBitMap(&front->BitMap,0,0,&scr->BitMap,0,0,front->Width,front->Height,0xc0,-1,0); xs/=8; ys/=8; for(x=0; x<8; x++) { for(y=0; y<8; y++) drawframe(x,y); } if(front->ViewPort.ColorMap) { for(x=0; x<(1<<(front->BitMap.Depth));x++) cmap[x]=GetRGB4(front->ViewPort.ColorMap,x); LoadRGB4(&scr->ViewPort,&cmap[0],(1<<(front->BitMap.Depth))); } xb=rnd(8); yb=rnd(8); SetAPen(rp,0); RectFill(rp,xb*xs,yb*ys,xb*xs+xs-1,yb*ys+ys-1); ScreenToFront(scr); custom.dmacon=(1<<5); while(!(SetSignal(0,signum)&signum)) scroll(); xit: if(scr) CloseScreen(scr); CloseLibrary(IntuitionBase); CloseLibrary(GfxBase); } char *XSBGetID(void) { return("XSB Shuffle Blanker\n\nDivert and shuffle the\nfrontmost screen"); } struct XSBParam *XSBGetParams(void) { return(0); }