home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD2.bin
/
bbs
/
comm
/
casiolink-1.0.lha
/
CasioLink
/
SubRoutine.c
< prev
Wrap
C/C++ Source or Header
|
1993-09-24
|
11KB
|
337 lines
extern long BufferSize;
extern BOOL EmuFlagold,EmuFlag,BSChange,BufferChange;
extern char *LNStrings,ShortCut1[],ShortCut2[],ParamString[],Datei[];
extern struct Library *AmigaGuideBase;
extern struct Node *BufferLN;
extern struct Window *Wnd, *KonfigWnd, *Konf2Wnd;
extern struct RastPort *RastPort;
extern struct Gadget *CasioLinkGadgets[],*KonfigGadgets[],*Konf2Gadgets[];
extern struct Konfig Konf;
struct EasyStruct Help = {sizeof(struct EasyStruct), 0, "Hilfe",
"Leider kann die Hifsfunktion nicht aktiviert werden.\n"
"(AmigaGuide.library vorhanden?)", "OK"};
struct EasyStruct About = {sizeof(struct EasyStruct), 0, "Autor",
"CasioLink V1.0\nFrank Nießen, © 1993", "OK"};
struct EasyStruct SicherReq = {sizeof(struct EasyStruct), 0, NULL,
"%s\nSind sie sicher ?", "Ja|Nein"};
struct EasyStruct SicherReq2 = {sizeof(struct EasyStruct), 0, NULL, "%s", "Ja|Nein"};
struct EasyStruct Error = {sizeof(struct EasyStruct), 0, NULL,
"Fehler beim %s aufgetreten!\n%s", "OK"};
void PrintBytes(long bytes)
{
GT_SetGadgetAttrs(CasioLinkGadgets[GD_bytes], Wnd, NULL, GTNM_Number, bytes, TAG_DONE);
}
void PrintGadStr(long nr,char *Str)
{
GT_SetGadgetAttrs(CasioLinkGadgets[nr], Wnd, NULL, GTTX_Text, Str, TAG_DONE);
}
void BufferLoeschen()
{
PrintBytes(0);
PrintGadStr(GD_Datei, "");
GT_SetGadgetAttrs(CasioLinkGadgets[GD_BufferListe], Wnd, NULL, GTLV_Labels, NULL, TAG_DONE);
FreeVec(LNStrings);
LNStrings = 0;
FreeVec(BufferLN);
BufferLN = 0;
if(Konf.BufferSize*1024 != BufferSize) BSChange = TRUE;
BufferSize = Konf.BufferSize*1024;
BufferChange = FALSE;
}
void Loeschen()
{
if(!EasyRequest(Wnd, &SicherReq, NULL, "Der Buffer wird gelöscht."))
return();
Datei[0] = 0;
BufferLoeschen();
}
void ChangeState()
{
long i;
EmuFlagold = EmuFlag;
if(EmuFlag)
{
PrintGadStr(GD_Status, "Drucker-Emulation ist aktiv.");
for(i=0;i<7;i++)
{
GT_SetGadgetAttrs(CasioLinkGadgets[i], Wnd, NULL, GA_Disabled, TRUE, TAG_END);
}
OffMenu(Wnd, 0xF800);
OffMenu(Wnd, 0xF820);
OffMenu(Wnd, 0xF840);
OffMenu(Wnd, 0xFFE1);
}
else
{
PrintGadStr(GD_Status, "");
for(i=0;i<7;i++)
{
GT_SetGadgetAttrs(CasioLinkGadgets[i], Wnd, NULL, GA_Disabled, FALSE, TAG_END);
}
OnMenu(Wnd, 0xF800);
OnMenu(Wnd, 0xF820);
OnMenu(Wnd, 0xF840);
OnMenu(Wnd, 0xFFE1);
}
}
void Konf_Laden(char *DateiName)
{
BPTR Datei;
if(!(Datei = Open((UBYTE *)DateiName, MODE_OLDFILE)))
{
Konf_Speichern(DateiName);
return;
}
FRead(Datei, &Konf, sizeof(Konf)-12, 1);
FGets(Datei, (UBYTE *)Konf.Editor, 43);
FGets(Datei, (UBYTE *)Konf.Shell, 41);
FGets(Datei, (UBYTE *)Konf.Device, 41);
Close(Datei);
UpdateParameter();
}
void Konf_Speichern(char *DateiName)
{
char Temp;
UBYTE *TempAdr;
BPTR Datei;
TempAdr = PathPart((UBYTE *)DateiName);
Temp = *TempAdr;
*TempAdr = 0;
UnLock(CreateDir((UBYTE *)DateiName));
*TempAdr = Temp;
Datei = Open((UBYTE *)DateiName, MODE_NEWFILE);
FWrite(Datei, &Konf, sizeof(Konf)-12, 1);
FPuts(Datei, (UBYTE *)Konf.Editor);
FPutC(Datei, 0);
FPutC(Datei, 10);
FPuts(Datei, (UBYTE *)Konf.Shell);
FPutC(Datei, 0);
FPutC(Datei, 10);
FPuts(Datei, (UBYTE *)Konf.Device);
Close(Datei);
}
void ShowBaudrate()
{
GT_SetGadgetAttrs(KonfigGadgets[GD_Baud9], KonfigWnd, NULL, GTIN_Number, Konf.Baudrate, TAG_DONE);
}
void UpdateParameter()
{
long i,j;
j = Konf.Baudrate/150;
for(i=1;(j=j/2);i++);
ParamString[6] = i + '0';
ParamString[8] = Konf.Paritaet;
ParamString[10] = Konf.Bytes + '0';
ParamString[12] = Konf.StoppBits + '0';
ParamString[20] = (Konf.XONXOFF) ? 'B' : 'N';
PrintGadStr(GD_Parameter, ParamString);
}
void Konf_RS232()
{
long i,class,code,gadid;
BOOL done=FALSE;
char temp[40];
struct IntuiMessage *message;
struct MsgPort *UserPort;
struct Gadget *gad;
OpenKonfigWindow();
ShowBaudrate();
sprintf(temp, "%5ld, %ld, %lc, %ld",Konf.Baudrate,Konf.Bytes,Konf.Paritaet,Konf.StoppBits);
if(Konf.XONXOFF) sprintf(temp, "%s, XON/XOFF",temp);
GT_SetGadgetAttrs(KonfigGadgets[GD_Text0], KonfigWnd, NULL, GTTX_Text, temp, TAG_DONE);
UserPort = KonfigWnd->UserPort;
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_VANILLAKEY:
for(i=0;ShortCut1[i] && (ShortCut1[i] != code);i++);
if(i>15) break;
i /= 2;
switch(i)
{
case 0 : ActivateGadget(KonfigGadgets[GD_Baud9], KonfigWnd, NULL);
break;
case 1 : Konf.Bytes = (Konf.Bytes == 7) ? 8 : 7;
break;
case 2 : if(Konf.Paritaet == 'N') Konf.Paritaet = 'O';
else Konf.Paritaet = (Konf.Paritaet == 'O') ? 'E' : 'N';
break;
case 3 : Konf.StoppBits = (Konf.StoppBits == 1) ? 2 : 1;
break;
case 4 : Konf.XONXOFF = (Konf.XONXOFF) ? FALSE : TRUE;
}
if(i<5) break;
gadid = i+10;
case IDCMP_GADGETUP:
switch(gadid)
{
case 0 :
case 1 :
case 2 :
case 3 :
case 4 :
case 5 : Konf.Baudrate = (1<<(5-gadid))*150;
ShowBaudrate();
break;
case 6 : Konf.Bytes = 8;
break;
case 7 : Konf.Bytes = 7;
break;
case 8 : Konf.Paritaet = 'N';
break;
case 9 : Konf.Paritaet = 'O';
break;
case 10 : Konf.Paritaet = 'E';
break;
case 11 : Konf.StoppBits = 1;
break;
case 12 : Konf.StoppBits = 2;
break;
case 13 : Konf.XONXOFF = TRUE;
break;
case 14 : Konf.XONXOFF = FALSE;
break;
case 15 : Konf_Speichern(KONFARCNAME);
case 16 : Konf_Speichern(KONFNAME);
case 17 : Konf_Laden(KONFNAME);
done = TRUE;
}
break;
case IDCMP_INACTIVEWINDOW:
WindowToFront(KonfigWnd);
ActivateWindow(KonfigWnd);
}
GT_ReplyIMsg(message);
Konf.Baudrate = ((struct StringInfo *)KonfigGadgets[GD_Baud9]->SpecialInfo)->LongInt;
sprintf(temp, "%5ld, %ld, %lc, %ld",Konf.Baudrate,Konf.Bytes,Konf.Paritaet,Konf.StoppBits);
if(Konf.XONXOFF) sprintf(temp, "%s, XON/XOFF",temp);
GT_SetGadgetAttrs(KonfigGadgets[GD_Text0], KonfigWnd, NULL, GTTX_Text, temp, TAG_DONE);
}
}
CloseKonfigWindow();
WindowToFront(Wnd);
ActivateWindow(Wnd);
}
void Konf_Sonst()
{
long i,class,code,gadid;
BOOL done=FALSE;
struct IntuiMessage *message;
struct MsgPort *UserPort;
struct Gadget *gad;
OpenKonf2Window();
GT_SetGadgetAttrs(Konf2Gadgets[GD_Unit], Konf2Wnd, NULL, GTIN_Number, Konf.Unit, TAG_DONE);
GT_SetGadgetAttrs(Konf2Gadgets[GD_Timeout], Konf2Wnd, NULL, GTIN_Number, Konf.Timeout, TAG_DONE);
GT_SetGadgetAttrs(Konf2Gadgets[GD_Buffer], Konf2Wnd, NULL, GTIN_Number, Konf.BufferSize, TAG_DONE);
GT_SetGadgetAttrs(Konf2Gadgets[GD_Editor], Konf2Wnd, NULL, GTST_String, Konf.Editor, TAG_DONE);
GT_SetGadgetAttrs(Konf2Gadgets[GD_Shell], Konf2Wnd, NULL, GTST_String, Konf.Shell, TAG_DONE);
GT_SetGadgetAttrs(Konf2Gadgets[GD_Device], Konf2Wnd, NULL, GTST_String, Konf.Device, TAG_DONE);
GT_SetGadgetAttrs(Konf2Gadgets[GD_Line_1+Konf.CRLF], Konf2Wnd, NULL, GTCB_Checked, TRUE, TAG_DONE);
UserPort = Konf2Wnd->UserPort;
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_VAN