home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD2.bin
/
bbs
/
comm
/
casiolink-1.0.lha
/
CasioLink
/
CasioLink.c
< prev
next >
Wrap
C/C++ Source or Header
|
1993-09-24
|
6KB
|
192 lines
extern char Dir[],Datei[],FullName[],ShortCut[];
extern struct Window *Wnd;
extern struct Menu *Menus;
extern struct EasyStruct About,SicherReq2;
long BufferSize=10240;
BOOL done=FALSE,EmuFlagold=FALSE,EmuFlag=FALSE,SerOK=FALSE;
BOOL BufferChange=FALSE,BSChange=FALSE;
struct Library *IntuitionBase = 0;
struct Library *GadToolsBase = 0;
struct Library *GfxBase = 0;
struct Library *AslBase = 0;
struct Library *AmigaGuideBase = 0;
struct RastPort *RastPort;
char *Buffer,*LNStrings;
struct Node *BufferLN;
char Editor[42] = "ED",Shell[41] = "NewShell",Device[41] = "serial.device";
char ParamString[] = "\"COM0:5,N,8,1,N,N,N,B,N\"";
struct Konfig Konf = {2400, 8, 'N', 1, TRUE, -1, 0, 30, 10, Editor, Shell, Device};
struct MsgPort *SerialMP = 0;
struct IOExtSer *SerialIO = 0;
long OpenLib(void)
{
if(!(IntuitionBase = (struct Library*)OpenLibrary("intuition.library",37)))
return(1);
if(!(GfxBase = (struct Library*)OpenLibrary("graphics.library",37)))
return(2);
if(!(GadToolsBase = (struct Library*)OpenLibrary("gadtools.library",37)))
return(3);
if(!(AslBase = (struct Library*)OpenLibrary("asl.library",37)))
return(4);
/* if(!(AmigaGuideBase = (struct Library*)OpenLibrary("amigaguide.library",33)))
return(5);*/
/* 48 bytes werden von der amigaguide.library nicht zurückgegeben */
return(0);
}
void CleanUp()
{
if(SerOK) CloseDevice((struct IORequest *)SerialIO);
DeleteIORequest((struct IORequest *)SerialIO);
DeleteMsgPort(SerialMP);
CloseWind();
CloseDownScreen();
FreeVec(LNStrings);
FreeVec(BufferLN);
FreeVec(Buffer);
CloseLibrary(AmigaGuideBase);
CloseLibrary(AslBase);
CloseLibrary(GadToolsBase);
CloseLibrary(GfxBase);
CloseLibrary(IntuitionBase);
}
BOOL MenuAction(long select)
{
long menu,item,subit;
char command[160];
struct NewAmigaGuide nag = {NULL};
struct stat stat1,stat2;
menu = MENUNUM(select);
item = ITEMNUM(select);
subit = SUBNUM(select);
switch(menu)
{
case 0:
switch(item)
{
case 0: PrintGadStr(GD_Status, "Editor aktiv.");
if(!Datei[0]) Speichern();
if(!Datei[0])
{
PrintGadStr(GD_Status, "");
break;
}
stat(FullName, &stat1);
strcpy(command, Konf.Editor);
strcat(command, " ");
strcat(command, FullName);
System((UBYTE*)command, NULL);
stat(FullName, &stat2);
if(stat1.st_mtime != stat2.st_mtime) Retrive();
PrintGadStr(GD_Status, "");
break;
case 1: Drucken();
break;
case 2: System((UBYTE *)Konf.Shell, NULL);
case 4: break;
case 6: return(TRUE);
} break;
case 1:
switch(item)
{
case 0: EasyRequest(Wnd, &About, NULL, NULL);
break;
case 1: Hilfe();
}
}
EmuFlag = ((((struct MenuItem *)ItemAddress(Menus, 0xF880))->Flags) & CHECKED) ? TRUE : FALSE;
if(EmuFlag != EmuFlagold) ChangeState();
return(FALSE);
}
main()
{
long class,code,select,Fehler,gadid,i;
struct IntuiMessage *message;
struct MsgPort *UserPort;
struct Gadget *gad;
/*************** Resourcen öffnen ***************/
if(Fehler = OpenLib()) goto ERROR;
if(Fehler = SetupScreen()) goto ERROR;
if(Fehler = OpenWind()) goto ERROR;
Konf_Laden(KONFNAME);
SerOpen();
if(!(Buffer = AllocVec(BufferSize, MEMF_ANY))) goto ERROR;
UserPort = Wnd->UserPort;
RastPort = Wnd->RPort;
/*************** Benutzereingabe holen **********/
while (!(done))
{
Wait(1L << UserPort->mp_SigBit);
while(message = (struct IntuiMessage *) GT_GetIMsg(UserPort))
{
class = message->Class;
code = message->Code;
gad = message->IAddress;
gadid = gad->GadgetID;
switch(class)
{
case IDCMP_MENUPICK: PrintGadStr(GD_Status, "");
for(select=code;
select != MENUNULL;
select = (ItemAddress(Menus,select))->NextSelect)
done = MenuAction(select);
break;
case IDCMP_VANILLAKEY: for(i=0;ShortCut[i] && (ShortCut[i] != code);i++);
if(i>15) break;
gadid = i/2;
case IDCMP_GADGETUP: PrintGadStr(GD_Status, "");
switch(gadid)
{
case 0 : Speichern();
break;
case 1 : Laden();
break;
case 2 : if(SerOK) Senden();
break;
case 3 : if(SerOK) Empfangen();
break;
case 4 : Loeschen();
break;
case 5 : Konf_RS232();
break;
case 6 : Konf_Sonst();
}
break;
case IDCMP_RAWKEY: if(code == 95) Hilfe(); /* hilfe-taste */
break;
case IDCMP_CLOSEWINDOW: done = TRUE;
}
GT_ReplyIMsg(message);
}
}
if(BufferChange)
if(EasyRequest(Wnd, &SicherReq2, NULL,
"Das Programm wird beendet\nSoll der Buffer gesichert werden?"))
Speichern();
CleanUp();
return(0);
ERROR:
Printf((UBYTE *)"Fehler aufgetreten : %ld\n",Fehler);
CleanUp();
return(10);
}