home *** CD-ROM | disk | FTP | other *** search
- /* CC.c */
-
- /* Cachebits zeile 189 ff */
-
- #include "sc:source/cc/cc-INCLUDES.h"
-
- /* Version | Revisionscontrol */
-
- #define VERSION 1
- #define REVISION 10
- #define DATE "__Date__"
- #define VERS "CacheControl 1.10"
- #define VSTRING "CacheControl 1.10 ("__DATE__")\n\r"
- #define VERSTAG "\0$VER: CacheControl 1.10 ("__DATE__")"
-
-
- void OpenAll(void);
- void CloseAll(void);
-
- /* Externs */
-
- extern struct ExecBase *SysBase;
-
- /* Globals */
-
- UBYTE VersTag[]=VERSTAG; /* Versionsstring */
- struct IntuitionBase *IntuitionBase=0l;
- struct GfxBase *GfxBase=0l;
- struct Library *UtilityBase=0l,*DiskfontBase=0l;
- struct Screen *scr=0l;
- struct Window *win=0l;
- struct Gadget *GList=0l;
- struct TextAttr *sysfont=0l;
- ULONG oldbits,cachebits,cachemask;
- UBYTE icache,iburst,dcache,dburst,copyback;
-
- struct TagItem wintags[]={
- WA_Left, 50,
- WA_Top, 20,
- WA_InnerWidth, 200,
- WA_InnerHeight, 70,
- WA_IDCMP, IDCMP_CLOSEWINDOW|IDCMP_VANILLAKEY|BUTTONIDCMP,
- WA_Flags, WFLG_SMART_REFRESH|WFLG_ACTIVATE|WFLG_CLOSEGADGET|WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_GIMMEZEROZERO|WFLG_RMBTRAP,
- WA_Title, (ULONG *)"CacheControl V1.10",
- WA_ScreenTitle, (ULONG *)"CacheControl V1.10 (C) 1994 by ENSONIC of TRINOMIC",
- WA_CustomScreen, 0l,
- WA_Gadgets, 0l,
- WA_PubScreenName, 0l,
- WA_PubScreenFallBack, TRUE,
- TAG_DONE
- };
-
- UBYTE *DCLabels[]={"DCache Off","DCache On",0l };
- UBYTE *DBLabels[]={"DBurst Off","DBurst On",0l };
- UBYTE *ICLabels[]={"ICache Off","ICache On",0l };
- UBYTE *IBLabels[]={"IBurst Off","IBurst On",0l };
- UBYTE *CBLabels[]={"CopyBack Off","CopyBack On",0l };
-
- void OpenAll(void)
- {
- WORD winx,winy,fonty,gwidth;
- struct NewGadget ng;
- struct Gadget *g;
- APTR VisualInfo=0l;
- struct RastPort *rp;
- UWORD level,syslevel;
-
- syslevel=0;
- level=SysBase->AttnFlags;
- if(level&(1<<1)) syslevel=1;
- if(level&(1<<2)) syslevel=2;
- if(level&(1<<3)) syslevel=3;
- if(!syslevel) exit(1);
-
- oldbits=CacheControl(0l,0l);
- dcache=dburst=icache=iburst=copyback=0;
- if(oldbits&(1L<< 8)) dcache=1;
- if(oldbits&(1L<<12)) dburst=1;
- if(oldbits&(1L<< 0)) icache=1;
- if(oldbits&(1L<< 4)) iburst=1;
- if(oldbits&(1L<<31)) copyback=1;
-
- if(!(IntuitionBase=OpenLibrary("intuition.library",37))) CloseAll();
- if(!(GfxBase=OpenLibrary("graphics.library",37))) CloseAll();
- if(!(UtilityBase=OpenLibrary("utility.library",37))) CloseAll();
-
- if(!(scr=LockPubScreen(0l))) CloseAll();
- sysfont=scr->Font;
- rp=&scr->RastPort;
- fonty=max(11,(sysfont->ta_YSize+4));
- winy=(syslevel*fonty)+5;
- gwidth=TextLength(rp,CBLabels[0],strlen(CBLabels[0]))+30;
- winx=gwidth+gwidth+10;
-
- if(!(VisualInfo=GetVisualInfo(scr,TAG_DONE))) CloseAll();
-
- if(!(g=CreateContext(&GList))) CloseAll();
-
- if(syslevel>0)
- {
- ng.ng_LeftEdge =4;
- ng.ng_TopEdge =2;
- ng.ng_Width =gwidth;
- ng.ng_Height =fonty;
- ng.ng_GadgetText ="";
- ng.ng_TextAttr =sysfont;
- ng.ng_GadgetID =0;
- ng.ng_Flags =PLACETEXT_LEFT;
- ng.ng_VisualInfo =VisualInfo;
- g=CreateGadget(CYCLE_KIND,g,&ng,GTCY_Labels,&DCLabels,GTCY_Active,dcache,TAG_DONE);
-
- ng.ng_LeftEdge =gwidth+6;
- ng.ng_GadgetID =1;
- g=CreateGadget(CYCLE_KIND,g,&ng,GTCY_Labels,&DBLabels,GTCY_Active,dburst,TAG_DONE);
- }
- if(syslevel>1)
- {
- ng.ng_LeftEdge =4;
- ng.ng_TopEdge =2+(fonty+1);
- ng.ng_GadgetID =2;
- g=CreateGadget(CYCLE_KIND,g,&ng,GTCY_Labels,&ICLabels,GTCY_Active,icache,TAG_DONE);
-
- ng.ng_LeftEdge =gwidth+6;
- ng.ng_GadgetID =3;
- g=CreateGadget(CYCLE_KIND,g,&ng,GTCY_Labels,&IBLabels,GTCY_Active,iburst,TAG_DONE);
- }
- if(syslevel>2)
- {
- ng.ng_LeftEdge =4;
- ng.ng_TopEdge =2+(fonty+1)+(fonty+1);
- ng.ng_GadgetID =4;
- g=CreateGadget(CYCLE_KIND,g,&ng,GTCY_Labels,&CBLabels,GTCY_Active,copyback,TAG_DONE);
- }
-
- wintags[2].ti_Data=winx;
- wintags[3].ti_Data=winy;
- wintags[8].ti_Data=scr;
- wintags[9].ti_Data=GList;
- if(!(win=OpenWindowTagList(0l,wintags))) CloseAll();
-
- UnlockPubScreen(0l,scr);
- }
-
-
- void CloseAll(void)
- {
- if(win) CloseWindow(win);
- if(UtilityBase) CloseLibrary(UtilityBase);
- if(GfxBase) CloseLibrary(GfxBase);
- if(IntuitionBase) CloseLibrary(IntuitionBase);
- exit(1);
- }
-
- void main()
- {
- struct IntuiMessage *imsg;
- ULONG iclass;
- APTR iadr;
- USHORT icode;
- UBYTE quit=0;
-
- OpenAll();
- while(!quit)
- {
- WaitPort(win->UserPort);
- while(imsg=GT_GetIMsg(win->UserPort))
- {
- iclass =imsg->Class;
- iadr =imsg->IAddress;
- icode =imsg->Code;
- GT_ReplyIMsg(imsg);
- switch(iclass)
- {
- case IDCMP_GADGETUP:
- switch((int)(((struct Gadget *)iadr)->GadgetID))
- {
- case 0: /* DCache On/Off */
- if(icode) cachebits=cachemask=(1L<<8);
- else { cachebits=0;cachemask=(1L<<8); }
- CacheControl(cachebits,cachemask);
- break;
- case 1: /* DBurst On/Off */
- if(icode) cachebits=cachemask=(1L<<12);
- else { cachebits=0;cachemask=(1L<<12); }
- CacheControl(cachebits,cachemask);
- break;
- case 2: /* ICache On/Off */
- if(icode) cachebits=cachemask=1L;
- else { cachebits=0;cachemask=1L; }
- CacheControl(cachebits,cachemask);
- break;
- case 3: /* IBurst On/Off */
- if(icode) cachebits=cachemask=(1L<<4);
- else { cachebits=0;cachemask=(1L<<4); }
- CacheControl(cachebits,cachemask);
- break;
- case 4: /* CopyBack On/Off */
- if(icode) cachebits=cachemask=(1L<<31);
- else { cachebits=0;cachemask=(1L<<31); }
- CacheControl(cachebits,cachemask);
- break;
- }
- break;
- case IDCMP_CLOSEWINDOW:
- quit=1;break;
- }
- }
-
- }
- CloseAll();
- }
-