home *** CD-ROM | disk | FTP | other *** search
- /******************************************************************************
- ********** **********
- ********** THE ELECTRIC SLAVE V1.1a **********
- ********** **********
- ********** This stuff seems to be the ultimate CLI tool... **********
- ********** **********
- *******************************************************************************
- ********** **********
- ********** Designed by Magic Ceee to add ultimate power **********
- ********** **********
- ******************************************************************************/
-
- #include "exec/types.h"
- #include "exec/tasks.h"
- #include "exec/execbase.h"
- #include "intuition/intuition.h"
- #include "intuition/intuitionbase.h"
- #include "graphics/gfxbase.h"
- #include "libraries/dos.h"
-
- /*--------------------------------------------------------------------------*/
-
- #define MAGIX_IDCMP (GADGETUP)
-
- #define NO_INTUI "Intuition won't open!\n"
- #define NO_GFX "Graphics won't open!\n"
- #define NO_WINDOW "Can't open window!\n"
-
- /*--------------------------------------------------------------------------*/
-
- struct ExecBase *SysBase;
- struct IntuitionBase *IntuitionBase;
- struct GfxBase *GfxBase;
- struct Window *MagicWindow,*OutputWindow;
- struct IntuiMessage *MagicMsg;
- struct DateStamp MagicDate;
-
- long magix=0;
-
- char Date[50],Time[50];
-
-
- /*****************************************************************************
- *** The following strings contain the CLI-commands to be executed. ***
- *****************************************************************************/
-
- char *gad_def[] = { "DIR DF0:","DIR DF1:","DIR RAM:","INFO","RUN ED",
- "","" };
-
-
- /****************************************************************************/
-
- USHORT Pairs2[] = { -1,0,-1,10,51,10,51,0 };
-
- struct Border Border1 = { 0,0,1,0,JAM2,4,&Pairs2,NULL };
-
- struct IntuiText TextHELP = { 3,0,JAM2,10,1,NULL,"Help",NULL };
- struct IntuiText TextTIME = { 3,0,JAM2,9,1,NULL,"Time",NULL };
- struct IntuiText TextMAGIC = { 3,0,JAM2,7,1,NULL,"Magic",NULL };
- struct IntuiText TextU0 = { 3,0,JAM2,16,1,NULL,"U0",NULL };
- struct IntuiText TextU1 = { 3,0,JAM2,16,1,NULL,"U1",NULL };
- struct IntuiText TextU2 = { 3,0,JAM2,16,1,NULL,"U2",NULL };
- struct IntuiText TextU3 = { 3,0,JAM2,16,1,NULL,"U3",NULL };
- struct IntuiText TextU4 = { 3,0,JAM2,16,1,NULL,"U4",NULL };
- struct IntuiText TextU5 = { 3,0,JAM2,16,1,NULL,"U5",NULL };
- struct IntuiText TextU6 = { 3,0,JAM2,16,1,NULL,"U6",NULL };
- struct IntuiText TextQUIT = { 3,0,JAM2,9,1,NULL,"Quit",NULL };
-
- struct Gadget GadgetQUIT = {
- NULL,530,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextQUIT,0,NULL,10,NULL };
-
- struct Gadget Gadget6 = {
- &GadgetQUIT,477,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU6,0,NULL,9,NULL };
-
- struct Gadget Gadget5 = {
- &Gadget6,424,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU5,0,NULL,8,NULL };
-
- struct Gadget Gadget4 = {
- &Gadget5,371,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU4,0,NULL,7,NULL };
-
- struct Gadget Gadget3 = {
- &Gadget4,318,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU3,0,NULL,6,NULL };
-
- struct Gadget Gadget2 = {
- &Gadget3,265,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU2,0,NULL,5,NULL };
-
- struct Gadget Gadget1 = {
- &Gadget2,212,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU1,0,NULL,4,NULL };
-
- struct Gadget Gadget0 = {
- &Gadget1,159,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextU0,0,NULL,3,NULL };
-
- struct Gadget GadgetMAGIC = {
- &Gadget0,106,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextMAGIC,0,NULL,2,NULL };
-
- struct Gadget GadgetTIME = {
- &GadgetMAGIC,53,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextTIME,0,NULL,1,NULL };
-
- struct Gadget GadgetHELP = {
- &GadgetTIME,0,0,50,10,GADGHCOMP,GADGIMMEDIATE|RELVERIFY,BOOLGADGET,
- &Border1,NULL,&TextHELP,0,NULL,0,NULL };
-
- /*--------------------------------------------------------------------------*/
-
- struct NewWindow nw = {
- 3,0,583,10,1,1,MAGIX_IDCMP,NULL,&GadgetHELP,NULL,NULL,NULL,NULL,
- 0,0,0,0,WBENCHSCREEN };
-
- /****************************************************************************/
-
- OpenStuff()
- {
- if(!(IntuitionBase=(struct Intuitionbase *)
- OpenLibrary("intuition.library",0)))
- {
- Write(Output(),NO_INTUI,strlen(NO_INTUI));
- exit(0);
- }
-
- if(!(GfxBase=(struct GfxBase *)OpenLibrary("graphics.library",0)))
- {
- Write(Output(),NO_GFX,strlen(NO_GFX));
- CloseLibrary(IntuitionBase);
- exit(0);
- }
-
- OutputWindow=IntuitionBase->FirstScreen->FirstWindow;
-
- if(!(MagicWindow=OpenWindow(&nw)))
- {
- Write(Output(),NO_WINDOW,strlen(NO_WINDOW));
- CloseLibrary(IntuitionBase);
- CloseLibrary(GfxBase);
- exit(0);
- }
-
- }
-
- /*****************************************************************************/
-
- CloseStuff()
- {
- CloseWindow(MagicWindow); /* Bye, folx... */
- CloseLibrary(IntuitionBase);
- CloseLibrary(GfxBase); /* Ceee ya next time! */
- }
-
- /*****************************************************************************/
-
- Update()
- {
- struct MemHeader *MeH;
- struct MemChunk *MeC;
-
- char msg[100];
-
- Forbid(); /* All tasks shut up */
-
- for(MeH=(struct MemHeader *)SysBase->MemList.lh_Head;
- MeH->mh_Node.ln_Succ;
- MeH=(struct MemHeader *)MeH->mh_Node.ln_Succ)
- {
- for(MeC=MeH->mh_First;MeC;MeC=MeC->mc_Next)
- {
- if(MeC->mc_Bytes>sizeof(*MeC))
- setmem((char *)MeC+sizeof(*MeC),
- MeC->mc_Bytes-sizeof(*MeC),0);
-
- magix+=MeC->mc_Bytes-sizeof(*MeC);
- }
- }
-
- Permit(); /* Tasks may talk again */
- ActivateWindow(OutputWindow);
- sprintf(msg,"\nCleared %ld bytes.\n\n",magix);
- Write(Output(),msg,strlen(msg));
- magix=0;
- }
-
- /*****************************************************************************/
-
- GetDate(v)
- long *v;
- {
- int m,d,y;
- long n;
-
- n=v[0]-2251;
- y=(4*n+3)/1461;
- n-=1461*y/4;
- y+=1984;
- m=(5*n+2)/153;
- d=n-(153*m+2)/5+1;
- m+=3;
-
- if(m>12)
- {
- y++;
- m-=12;
- }
-
- sprintf(Date,"%02d.%02d.%d",d,m,y);
- }
-
- /****************************************************************************/
-
- GetTime()
- {
- int h,m;
-
- DateStamp(&MagicDate);
- h=MagicDate.ds_Minute/60;
- m=MagicDate.ds_Minute%60;
- sprintf(Time,"%02d:%02d:%02d",h,m,MagicDate.ds_Tick/TICKS_PER_SECOND);
- }
-
- /****************************************************************************/
-
- Assignment()
- {
- int i;
- char msg[100];
-
- Write(Output(),"\n",1);
-
- for(i=0;i<=6;i++)
- {
- if(strlen(gad_def[i])<1)
- {
- sprintf(msg,"Gadget U%d not assigned\n",i);
- Write(Output(),msg,strlen(msg));
- }
-
- else
- {
- sprintf(msg,"Gadget U%d assigned to <%s>\n",i,gad_def[i]);
- Write(Output(),msg,strlen(msg));
- }
- }
-
- Write(Output(),"\n",1);
- }
-
- /****************************************************************************/
-
- ShowTime()
- {
- long chip,fast,v[3];
- char msg[100];
-
- DateStamp(v);
- GetDate(v);
- GetTime();
- chip=AvailMem(MEMF_CHIP);
- fast=AvailMem(MEMF_FAST);
-
- sprintf(msg,"\nToday is %s, %s. Free memory: %ld bytes.\n\n",Date,Time,fast+chip);
- ActivateWindow(OutputWindow);
- Write(Output(),msg,strlen(msg));
- }
-
- /****************************************************************************/
-
- Action(what)
- int what;
- {
- ActivateWindow(OutputWindow);
- Write(Output(),"\n",1);
- Execute(gad_def[what-3],0,0);
- Write(Output(),"\n",1);
- }
-
- /****************************************************************************/
-
- KickThem()
- {
- if(strlen(gad_def[0])<1) OffGadget(&Gadget0,MagicWindow,NULL);
- if(strlen(gad_def[1])<1) OffGadget(&Gadget1,MagicWindow,NULL);
- if(strlen(gad_def[2])<1) OffGadget(&Gadget2,MagicWindow,NULL);
- if(strlen(gad_def[3])<1) OffGadget(&Gadget3,MagicWindow,NULL);
- if(strlen(gad_def[4])<1) OffGadget(&Gadget4,MagicWindow,NULL);
- if(strlen(gad_def[5])<1) OffGadget(&Gadget5,MagicWindow,NULL);
- if(strlen(gad_def[6])<1) OffGadget(&Gadget6,MagicWindow,NULL);
- }
-
- /****************************************************************************/
-
- main()
- {
- int end=FALSE,gadg;
- long chip,fast,total,Code,Class,v[3];
- unsigned char w_msg;
-
- OpenStuff();
- KickThem();
-
- while(!end)
- {
- Wait(1<<MagicWindow->UserPort->mp_SigBit);
-
- while(MagicMsg=(struct IntuiMessage *)GetMsg(MagicWindow->UserPort))
- {
- Code=MagicMsg->Code;
- Class=MagicMsg->Class;
- gadg=((struct Gadget *)(MagicMsg->IAddress))->GadgetID;
- ReplyMsg(MagicMsg);
-
- if(Class==GADGETUP)
- {
- switch(gadg)
- {
- case 0: Assignment(); break;
- case 1: ShowTime(); break;
- case 2: Update(); break;
-
- case 3:
- case 4:
- case 5:
- case 6:
- case 7:
- case 8:
- case 9: Action(gadg); break;
-
- case 10: end=TRUE; break;
- }
- }
- }
- }
-
- CloseStuff();
- }
-