/* WinRamGar.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 "SCRAMmer.h" VOID PageDetectOn(VOID); /* Execute in Disable() */ VOID PageDetectOff(VOID); /* Execute in Disable() */ VOID BurstOn(VOID); /* Execute in Disable() */ VOID BurstOff(VOID); /* Execute in Disable() */ VOID WrapOn(VOID); /* Execute in Disable() */ VOID WrapOff(VOID); /* Execute in Disable() */ VOID TimeoutOn(VOID); VOID TimeoutOff(VOID); VOID SetBERR(VOID); VOID SetDSACK(VOID); ULONG ReadRamsey(VOID); ULONG TOEnabled(VOID); ULONG DetectKBRSTEN(VOID); ULONG GaryID(VOID); /* Execute in Disable() */ VOID SetKBRSTEN(VOID); VOID UnsetKBRSTEN(VOID); VOID ShadowText(UWORD ,UWORD, struct RastPort *,char *msg); VOID NormalText(UWORD ,UWORD, struct RastPort *,char *msg); LONG request_user(struct Window *,char *, char *, char *); VOID CloseWindowSafely(struct Window *); IMPORT struct Library *GadToolsBase; IMPORT struct IntuitionBase *IntuitionBase; IMPORT struct GfxBase *GfxBase; IMPORT ULONG mainberr; IMPORT struct Window *main_window; IMPORT struct Screen *def_pub_scr; IMPORT struct MsgPort *userport; IMPORT struct TextFont *tf; IMPORT struct TextAttr ta; IMPORT UWORD xfnt,yfnt,bfnt; IMPORT APTR vi; struct Window *ramgar_win=0; static struct Gadget *rgglist,*gadpd,*gadbm,*gadwm,*gadto,*gadbd,*gadkb; static struct RastPort *rport; static ULONG beds=0; VOID refresh_ramgar(VOID) { GT_SetGadgetAttrs(gadpd,ramgar_win,0,GTCB_Checked,(ReadRamsey()&0x01)==0x01,TAG_END); GT_SetGadgetAttrs(gadbm,ramgar_win,0,GTCB_Checked,(ReadRamsey()&0x02)==0x02,TAG_END); GT_SetGadgetAttrs(gadwm,ramgar_win,0,GTCB_Checked,(ReadRamsey()&0x04)==0x04,TAG_END); GT_SetGadgetAttrs(gadto,ramgar_win,0,GTCB_Checked,TOEnabled(),TAG_END); GT_SetGadgetAttrs(gadbd,ramgar_win,0,GTCY_Active,beds,TAG_END); if(DetectKBRSTEN()) GT_SetGadgetAttrs(gadkb,ramgar_win,0,GTCB_Checked,FALSE,TAG_END); else GT_SetGadgetAttrs(gadkb,ramgar_win,0,GTCB_Checked,TRUE,TAG_END); ShadowText(X_SEP,Y_SEP+bfnt,rport,GetString(MSG_RAMGAR1)); RefreshGList(rgglist,ramgar_win,NULL,-1); } VOID process_ramgar(struct Gadget *g,struct IntuiMessage *im) { switch(g->GadgetID) { case 1: if(g->Flags&GFLG_SELECTED) {Disable(); PageDetectOn(); Enable();} else {Disable(); PageDetectOff(); Enable();} break; case 2: if(g->Flags&GFLG_SELECTED) {Disable();BurstOn(); Enable();} else {Disable();BurstOff(); Enable();} break; case 3: if(g->Flags&GFLG_SELECTED) {Disable();WrapOn(); Enable();} else {Disable();WrapOff(); Enable();} break; case 4: if(g->Flags&GFLG_SELECTED) TimeoutOn(); else TimeoutOff(); break; case 5: if(im->Code==0) {SetBERR(); beds=0;} else {SetDSACK();beds=1;} break; case 6: if(g->Flags&GFLG_SELECTED) UnsetKBRSTEN(); else SetKBRSTEN(); break; } } VOID open_ramgar(VOID) { static UBYTE *berrdsack[]={"BERR","DSACK",0}; struct Gadget *gad; struct NewGadget ng; ULONG chipid; UWORD w,h; gad=CreateContext(&rgglist); ng.ng_TextAttr=&ta; ng.ng_VisualInfo=vi; ng.ng_Flags= PLACETEXT_RIGHT; ng.ng_Width= xfnt*13; ng.ng_Height= yfnt; ng.ng_LeftEdge= X_SEP; ng.ng_TopEdge=Y_SEP+yfnt; ng.ng_GadgetText="Page Detect"; ng.ng_GadgetID=1; gad=CreateGadget(CHECKBOX_KIND,gad,&ng,TAG_DONE); gadpd=gad; ng.ng_TopEdge=Y_SEP+yfnt*2; ng.ng_GadgetText="Burst Mode"; ng.ng_GadgetID=2; gad=CreateGadget(CHECKBOX_KIND,gad,&ng,TAG_DONE); gadbm=gad; ng.ng_TopEdge=Y_SEP+yfnt*3; ng.ng_GadgetText="Wrap Mode"; ng.ng_GadgetID=3; gad=CreateGadget(CHECKBOX_KIND,gad,&ng,TAG_DONE); gadwm=gad; ng.ng_LeftEdge= X_SEP*2+xfnt*16; ng.ng_TopEdge=Y_SEP+yfnt; ng.ng_GadgetText="Timeout"; ng.ng_GadgetID=4; gad=CreateGadget(CHECKBOX_KIND,gad,&ng,TAG_DONE); gadto=gad; ng.ng_LeftEdge= X_SEP*2+xfnt*16; ng.ng_TopEdge=Y_SEP+yfnt*3; ng.ng_GadgetText="KBRSTEN"; ng.ng_GadgetID=6; gad=CreateGadget(CHECKBOX_KIND,gad,&ng,TAG_DONE); gadkb=gad; ng.ng_TopEdge=Y_SEP+yfnt*2; ng.ng_GadgetText=NULL; ng.ng_GadgetID=5; gad=CreateGadget(CYCLE_KIND,gad,&ng,GTCY_Labels,berrdsack,GTCY_Active,1,TAG_DONE); gadbd=gad; if(gad) { w=(X_SEP*3) + 29*xfnt + (def_pub_scr->WBorLeft) + (def_pub_scr->WBorRight); h=(Y_SEP*2) + 4*yfnt + (def_pub_scr->WBorBottom) + (def_pub_scr->WBorTop) + (def_pub_scr->Font->ta_YSize) + 1; if(ramgar_win=OpenWindowTags(NULL, WA_Left, (def_pub_scr->Width-w)>>2, WA_Top, (def_pub_scr->Height-h)>>2, WA_Width, w, WA_Height, h, WA_Flags, WFLG_DRAGBAR|WFLG_DEPTHGADGET|WFLG_CLOSEGADGET|WFLG_ACTIVATE|WFLG_RMBTRAP|WFLG_GIMMEZEROZERO|WFLG_SIMPLE_REFRESH, WA_AutoAdjust, FALSE, WA_IDCMP, NULL, WA_Title, GetString(MSG_RAMGARWIN), WA_PubScreen, def_pub_scr,TAG_END)) { rport=ramgar_win->RPort; SetFont(rport,tf); ramgar_win->UserPort=userport; AddGList(ramgar_win,rgglist,-1,-1,NULL); RefreshGList(rgglist,ramgar_win,NULL,-1); GT_RefreshWindow(ramgar_win,NULL); Disable(); chipid=GaryID(); Enable(); if(chipid==0x00) OffGadget(gadkb,ramgar_win,0); ModifyIDCMP(ramgar_win,CHECKBOXIDCMP|CYCLEIDCMP|IDCMP_CLOSEWINDOW|IDCMP_REFRESHWINDOW); beds=mainberr-1; refresh_ramgar(); } else request_user(main_window,GetString(MSG_SCRAMMER),GetString(MSG_NOWINDOW),GetString(MSG_CANCEL)); } else request_user(main_window,GetString(MSG_SCRAMMER),GetString(MSG_NOGADGETS),GetString(MSG_CANCEL)); } VOID close_ramgar(VOID) { if(ramgar_win) { CloseWindowSafely(ramgar_win); ramgar_win=0; } FreeGadgets(rgglist); rgglist=0; }