/* SCRAMmermod.c ** ** SCRAMmer V37.3 - 27th Aug 1992 ** ------------------------------ ** ** Copyright (c) Giuliano C. Peritore ** Via Amaseno, 6 ** 04100 Latina ** ITALY ** ** Phone: (+39) 773 491692 Voice Only ** EMAIL mc6040@mclink.it */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "SCRAMmer.h" /*------------------------------------------------------------------*/ IMPORT struct ExecBase *SysBase; IMPORT struct DosLibrary *DOSBase; IMPORT struct IntuitionBase *IntuitionBase; IMPORT struct GfxBase *GfxBase; IMPORT struct Library *GadToolsBase, *AslBase; IMPORT struct Screen *def_pub_scr; IMPORT struct MsgPort *userport; IMPORT struct TextFont *tf; IMPORT struct Window *main_window, *about_win, *system_ram_win, *scsi_win, *ramgar_win, *battmem_win, *cpu_win; IMPORT struct TextAttr ta; IMPORT APTR vi; IMPORT UWORD xfnt,yfnt,bfnt; /*------------------------------------------------------------------*/ VOID ShadowText(UWORD x,UWORD y,struct RastPort *rport,char *msg) { SetDrMd(rport,JAM1); SetAPen(rport,1); Move(rport,x,y); Text(rport,msg,strlen(msg)); SetAPen(rport,2); Move(rport,x-1,y-1); Text(rport,msg,strlen(msg)); } VOID NormalText(UWORD x,UWORD y,struct RastPort *rport,char *msg) { SetDrMd(rport,JAM2); SetAPen(rport,1); Move(rport,x,y); Text(rport,msg,strlen(msg)); } /*--- RKM functions to close windows with shared IDCMPs ------------*/ VOID StripIntuiMessages(struct MsgPort *mp,struct Window *win) { struct IntuiMessage *msg; struct Node *succ; msg=(struct IntuiMessage*)mp->mp_MsgList.lh_Head; while(succ=msg->ExecMessage.mn_Node.ln_Succ) { if(msg->IDCMPWindow==win) { Remove(msg); ReplyMsg(msg); } msg=(struct IntuiMessage*)succ; } } VOID CloseWindowSafely(struct Window *win) { Forbid(); StripIntuiMessages(win->UserPort,win); win->UserPort=NULL; ModifyIDCMP(win,NULL); Permit(); CloseWindow(win); } /*------------------------------------------------------------------*/ static UWORD chip WaitPointer[] = { 0x0000, 0x0000, 0x0400, 0x07C0, 0x0000, 0x07C0, 0x0100, 0x0380, 0x0000, 0x07E0, 0x07C0, 0x1FF8, 0x1FF0, 0x3FEC, 0x3FF8, 0x7FDE, 0x3FF8, 0x7FBE, 0x7FFC, 0xFF7F, 0x7EFC, 0xFFFF, 0x7FFC, 0xFFFF, 0x3FF8, 0x7FFE, 0x3FF8, 0x7FFE, 0x1FF0, 0x3FFC, 0x07C0, 0x1FF8, 0x0000, 0x07E0, 0x0000, 0x0000, }; VOID set_wait_pointer (struct Window *w) { if(w) SetPointer(w,WaitPointer,16,16,-6,0); } VOID set_default_pointer (struct Window *w) { if(w) ClearPointer(w); } /*------------------------------------------------------------------*/ static struct Requester *req; VOID sleep_window(struct Window *w) { if(w) { if(req=AllocMem(sizeof(struct Requester),MEMF_PUBLIC|MEMF_CLEAR)) { req->LeftEdge=w->Width; req->TopEdge =w->Height; Request(req,w); } set_wait_pointer(w); } } VOID wake_window(struct Window *w) { if(w) { ClearPointer(w); if(req) { EndRequest(req,w); FreeMem(req,sizeof(struct Requester)); } } } /*------------------------------------------------------------------*/ LONG request_user(struct Window *w,char *tit, char *msg, char *but) { LONG result; struct EasyStruct warnES={sizeof(struct EasyStruct),0,NULL,"%s",NULL}; warnES.es_Title=tit; warnES.es_GadgetFormat=but; sleep_window(w); result=EasyRequest(w,&warnES,NULL,msg); wake_window(w); return(result); } /*------------------------------------------------------------------*/ STRPTR GetString(LONG id) { UWORD i; STRPTR local=NULL; i=0; while(!local) { if(AppStrings[i].as_ID==id) local=AppStrings[i].as_Str; i++; } if(LocaleBase) if(catalog) return(GetCatalogStr(catalog,id,local)); return(local); }