 /**************************************************************************
 * Lattice-C-Compiler-V4.0-Tool Include-File: MyIncludes.h V2.1            *
 * ------------------------------------------------------------            *
 *                                                                         *
 * (c) 1988 by Frank Langbein                                              *
 * Designed and Programed by Frank Langbein                                *
 *                                                                         *
 * Contact: Frank Langbein                                                 *
 *          Neuer Ring 21                                                  *
 *          8643 Kueps 4 (West Germany)                                    *
 *                                                                         *
 ***************************************************************************
 * Modification History:                                                   *
 * ---------------------                                                   *
 *                                                                         *
 * Date       |Author           |Comment                                   *
 *-------------------------------------------------------------------------*
 * 04-05-1988 |Frank Langbein   |Created this File (V1.0)                  *
 * 06-22-1988 |Frank Langbein   |New Definitions for V2.0                  *
 * 12-24-1988 |Frank Langbein   |Debugging (V2.1)                          *
 *-------------------------------------------------------------------------*
 **************************************************************************/

/* Header-Files einlesen */

#include <dos.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <exec/types.h>
#include <exec/memory.h>
#include <graphics/gfxbase.h>
#include <graphics/gfxmacros.h>
#include <intuition/intuition.h>
#include <intuition/intuitionbase.h>
#include <proto/dos.h>
#include <proto/exec.h>
#include <proto/graphics.h>
#include <proto/intuition.h>
#include <workbench/startup.h>

/* #define-Anweisungen um Eingabe zu verkuerzen */

#define ID 0,0,16,10,3
#define SD &UB[0],0,101,0,0,0,0,0,0,0,0,0
#define B1 0,0,6,0,JAM2,5
#define B2 0,0,1,0,JAM2,5
#define I1 3,0,JAM1
#define I2 0,0,JAM1
#define GD 157,20,GADGHCOMP,RELVERIFY,BOOLGADGET,(APTR)&Frame1,0
#define G1 GADGHCOMP,RELVERIFY|STRINGCENTER,STRGADGET
#define S  SHORT
#define CH unsigned char
#define IM struct Image
#define SI struct StringInfo
#define BO struct Border
#define IT struct IntuiText
#define GG struct Gadget

#define LIST_SIZE 50 /* Maximale Groesse der Liste */

/* Deklaration der Funktionen */

BOOL InputG(void),BoolRequest(char *,char *,struct Window *,SHORT,SHORT,
     SHORT,SHORT,SHORT,SHORT,SHORT,SHORT),Copy(char *,char *);
void ShowList(void),Assign(void),WaitMessage(void),Type(char *),
     PrintText(struct RastPort *,char *,USHORT,USHORT,USHORT,USHORT),
     ReqError(int),CallSystem(char *),Init(void),CleanUp(char *,UBYTE),
     PrintFile(char *),Dir(char *),CompStart(void),CompEnd(void),
     StartEditor(char *,struct StringInfo *),Comp(char *,char *),
     SmallInput(void),MakeRasters(long);

extern int _OSERR;      /* Fehlernummer fuer Datenein-/ausgabe */

struct IntuitionBase *IntuitionBase;
struct GfxBase       *GfxBase;
struct IntuiMessage  *message;

int size,lfirst,lnc,List;
BOOL ls,quit,CHIPf = FALSE;
BOOL ASSIGNC = FALSE;      /* Assign ins RAM kopiert? */
UBYTE UB[101],BUEdN[101],BUWpN[101],BULink[101],BUProg[101],BUOpt[101],
      BUFile[101],BUI[101];   /* Buffer für StringGadgets */
USHORT WaitPointer[6] = {0x0000,0x0000,0x8000,0x0000,0x0000,0x0000}; /* Mauszeiger */
/* Farbtabelle */
USHORT colormap[8] = {0x000, /* Hintergrundfarbe             (Schwarz)   */
                      0x00D, /* Farbe fuer Gadgets           (Blau)      */
                      0xFFF, /* Schrift                      (Weiss)     */
                      0xFF0, /* Schriftfarbe fuer Gadgets    (Gelb)      */
                      0x009, /* Farbe fuer Gadgets           (Dunkelblau)*/
                      0x9FC, /* Hintergrund fuer CLI-Befehle (Hellgruen) */
                      0x06F, /* Farbe fuer Gadgets           (Hellblau)  */
                      0xFC9  /* Hintergrund fuer Compiler-B. (Beige)     */};
USHORT GID,*WPointer;
S *DDo,*DUp;
/* Pfeil nach unten */
S DataDo[] = {
 0x0000,0xEFF3,0x2C12,0x2C12,0x2C12,0x2802,0x2C12,0x2E32,0xEFF3,0x0000,
 0xFFF7,0x1004,0x1C14,0x1C14,0x1C14,0x1804,0x1C14,0x1E34,0x1004,0xFFF7,
 0xFFF7,0x1004,0xD3E5,0xD3E5,0xD3E5,0xD7F5,0xD3E5,0xD1C5,0x1004,0xFFF7};
/* Pfeil nach oben */
S DataUp[] = {
 0x0000,0xEFF3,0x2E32,0x2C12,0x2802,0x2C12,0x2C12,0x2C12,0xEFF3,0x0000,
 0xFFF7,0x1004,0x1E34,0x1C14,0x1804,0x1C14,0x1C14,0x1C14,0x1004,0xFFF7,
 0xFFF7,0x1004,0xD3E5,0xD3E5,0xD3E5,0xD7F5,0xD3E5,0xD1C5,0x1004,0xFFF7};
/* Koordinaten fuer die Raender von Gadgets */
S XYReqBorder[10] = {2,1,0,1,0,0,2,0,2,1};
S XYOK[10]        = {0,0,21,0,21,12,0,12,0,0};
S XYYES[10]       = {0,0,29,0,29,12,0,12,0,0};
S XYB[10]      = {-1,-1,632,-1,632,8,-1,8,-1,-1};
S XYBB[10]     = {-1,-1,560,-1,560,8,-1,8,-1,-1};
S XYFrame2[10] = {0,0,156,0,156,19,0,19,0,0};
S XYFrame1[10] = {1,1,155,1,155,18,1,18,1,1};
S XXChOp[10]   = {0,0,64,0,64,13,0,13,0,0};
S XYF2[10]     = {-2,-6,154,-6,154,13,-2,13,-2,-6};
S XYF1[10]     = {-1,-5,153,-5,153,12,-1,12,-1,-5};
S YYLink[10]   = {-3,-3,209,-3,209,10,-3,10,-3,-3};
S XXLink[10]   = {-2,-2,208,-2,208,9,-2,9,-2,-2};
S YYProg[10]   = {-3,-3,250,-3,250,10,-3,10,-3,-3};
S XXProg[10]   = {-2,-2,249,-2,249,9,-2,9,-2,-2};
CH a[FNSIZE],b[FMSIZE],c[FNSIZE],d[31],Buffer[101],comand[101],
   *lname[LIST_SIZE],*lopt[LIST_SIZE],*lprog[LIST_SIZE],As[4][101] = {
{'L','a','t','t','i','c','e','_','C','_','4','.','0','.','2',':',
 'C','o','m','p','a','c','t','H','\0'},{'C',':','\0'},
{'L','a','t','t','i','c','e','_','C','_','4','.','0','.','2',':',
 'l','i','b','\0'},{'R','A','M',':','\0'}}; /* ASSIGN-DEFINITIONEN */
/* CLI-Name */
CH CLIName[101] = {'N','E','W','C','L','I',' ','C','O','N',':','0','/','1',
                   '7','6','/','6','4','0','/','8','0','/','C','L','I','\0'};
/* ASSIGN-DEFINITIONEN */
CH EV[4][9] = {
{'I','N','C','L','U','D','E',':','\0'},{'L','C',':','\0'},
{'L','I','B',':','\0'},{'Q','U','A','D',':','\0'}};
/* Editorname */
CH Editor[101] = {'E','d',' ','\0'};
/* Textverarbeitungssystem */
CH WProcessor[101] = {'N','o','t','e','P','a','d',' ','\0'};
/* Programm, das von LCT aufgerufen werden kann */
CH Pref[101] = {'S','Y','S',':','P','r','e','f','e','r','e','n','c','e',
                's','\0'};
CH Str1[7]   = {'E','R','R','O','R',':','\0'};
CH Str2[4]   = {'O','K','!','\0'};
/* Texte für Gadgets */
CH Str3[5]   = {'T','y','p','e','\0'};
CH Str4[9]   = {'S','e','t',' ','D','a','t','e','\0'};
CH Str5[8]   = {'C','a','t','a','l','o','g','\0'};
CH Str6[6]   = {'P','r','i','n','t','\0'};
CH Str7[12]  = {'P','r','e','f','e','r','e','n','c','e','s','\0'};
CH Str8[8]   = {'E','x','e','c','u','t','e','\0'};
CH Str9[14] = {'S','t','a','r','t',' ','P','r','o','g','r','a','m','\0'};
CH Str10[4]  = {'C','L','I','\0'};
CH Str11[16] = {'W','o','r','d',' ','P','r','o','c','e','s','s','o','r',':','\0'};
CH Str12[6]  = {'E','d','i','t',':','\0'};
CH Str13[10] = {'L','o','a','d',' ','L','i','s','t','\0'};
CH Str14[10] = {'S','a','v','e',' ','L','i','s','t','\0'};
CH Str15[7]  = {'P','a','c','k','e','r','\0'};
CH Str16[5]  = {'Q','u','i','t','\0'};
CH Str17[7]  = {'A','s','s','i','g','n','\0'};
CH Str18[4]  = {'O','M','L','\0'};
CH Str19[14] = {'D','e','l',' ','f','r','o','m',' ','L','i','s','t','\0'};
CH Str20[11] = {'P','r','i','n','t',' ','F','i','l','e','\0'};
CH Str21[13]  = {'C','o','p','y',' ','t','o',' ','R','A','M',':','\0'};
CH Str22[4]  = {'O','M','D','\0'};
CH Str23[12] = {'A','d','d',' ','t','o',' ','L','i','s','t','\0'};
CH Str24[11] = {'E','d','i','t',' ','F','i','l','e','\0'};
CH Str25[15] = {'E','d','i','t',' ','L','i','n','k','-','F','i','l','e','\0'};
CH Str26[11] = {'L','i','n','k',' ','F','i','l','e','s','\0'};
CH Str27[12] = {'C','o','m','p','i','l','e',' ','O','n','e','\0'};
CH Str28[12] = {'C','o','m','p','i','l','e',' ','A','l','l','\0'};
CH Str29[8]  = {'O','u','t','p','u','t','\0'};
IM IDo = {ID,0,7,0};
IM IUp = {ID,0,7,0};
/* SringInfo-Strukturen */
SI StrI  = {&BUI[0],SD};
SI SEdN  = {&BUEdN[0],SD};
SI SWpN  = {&BUWpN[0],SD};
SI SLink = {&BULink[0],SD};
SI SProg = {&BUProg[0],SD};
SI SOpt  = {&BUOpt[0],SD};
SI SFile = {&BUFile[0],SD};
/* Border-Strukturen */
BO BReqBorder = {0,0,0,0,JAM1,5,&XYReqBorder[0],0};
BO BOK        = {0,0,0,0,JAM1,5,&XYOK[0],0};
BO BYES   = {0,0,2,1,JAM1,5,&XYYES[0],0};
BO B      = {0,0,4,0,JAM2,5,&XYB[0],0};
BO BB     = {0,0,4,0,JAM2,5,&XYBB[0],0};
BO Frame2 = {B1,&XYFrame2[0],0};
BO Frame1 = {B2,&XYFrame1[0],&Frame2};
BO BChOp  = {B1,&XXChOp[0],0};
BO F2     = {B1,&XYF2[0],0};
BO F1     = {B2,&XYF1[0],&F2};
BO BBLink = {B2,&YYLink[0],0};
BO BLink  = {B1,&XXLink[0],&BBLink};
BO BBProg = {B2,&YYProg[0],0};
BO BProg  = {B1,&XXProg[0],&BBProg};
/* IntuiText-Strukturen */
IT ITB2Req = {0,0,JAM1,6,10,0,"",0};
IT ITB1Req = {0,0,JAM1,6,27,0,"",&ITB2Req};
IT ITYES   = {0,0,JAM1,3,3,0,"YES",0};
IT ITNO    = {0,0,JAM1,3,3,0,"NO",0};
IT BT4     = {3,1,JAM1,0,20,0,"",0};
IT BT3     = {0,1,JAM1,0,19,0,"",&BT4};
IT BT2     = {3,1,JAM1,297,8,0,&Str1[0],&BT3};
IT BodyText= {0,1,JAM1,296,7,0,&Str1[0],&BT2};
IT RNT2    = {3,1,JAM1,6,3,0,&Str2[0],0};
IT ReqNegativeText = {0,1,JAM1,7,4,0,&Str2[0],&RNT2};
IT TTQuit  = {I1,62,5,0,&Str3[0],0};
IT TQuit   = {I2,63,6,0,&Str3[0],&TTQuit};
IT TTDate  = {I1,46,5,0,&Str4[0],0};
IT TDate   = {I2,47,6,0,&Str4[0],&TTDate};
IT TTCat   = {I1,50,5,0,&Str5[0],0};
IT TCat    = {I2,51,6,0,&Str5[0],&TTCat};
IT TTPrint = {I1,58,5,0,&Str6[0],0};
IT TPrint  = {I2,59,6,0,&Str6[0],&TTPrint};
IT TTPref  = {I1,34,5,0,&Str7[0],0};
IT TPref   = {I2,35,6,0,&Str7[0],&TTPref};
IT TTExec  = {I1,50,5,0,&Str8[0],0};
IT TExec   = {I2,51,6,0,&Str8[0],&TTExec};
IT TTStart = {I1,26,5,0,&Str9[0],0};
IT TStart  = {I2,27,6,0,&Str9[0],&TTStart};
IT TTCLI   = {I1,66,5,0,&Str10[0],0};
IT TCLI    = {I2,67,6,0,&Str10[0],&TTCLI};
IT TTWord  = {I1,18,5,0,&Str11[0],0};
IT TWord   = {I2,19,6,0,&Str11[0],&TTWord};
IT TTEd    = {I1,58,5,0,&Str12[0],0};
IT TEd     = {I2,59,6,0,&Str12[0],&TTEd};
IT TTLoad  = {I1,42,5,0,&Str13[0],0};
IT TLoad   = {I2,43,6,0,&Str13[0],&TTLoad};
IT TTSave  = {I1,42,5,0,&Str14[0],0};
IT TSave   = {I2,43,6,0,&Str14[0],&TTSave};
IT TTPack  = {I1,54,5,0,&Str15[0],0};
IT TPack   = {I2,55,6,0,&Str15[0],&TTPack};
IT TTHelp  = {I1,62,5,0,&Str16[0],0};
IT THelp   = {I2,63,6,0,&Str16[0],&TTHelp};
IT TTAss   = {I1,54,5,0,&Str17[0],0};
IT TAss    = {I2,55,6,0,&Str17[0],&TTAss};
IT TTOML   = {I1,66,5,0,&Str18[0],0};
IT TOML    = {I2,67,6,0,&Str18[0],&TTOML};
IT TTDel   = {I1,26,5,0,&Str19[0],0};
IT TDel    = {I2,27,6,0,&Str19[0],&TTDel};
IT TTGPF   = {I1,38,5,0,&Str20[0],0};
IT TGPF    = {I2,39,6,0,&Str20[0],&TTGPF};
IT TTSProg = {I1,30,5,0,&Str21[0],0};
IT TSProg  = {I2,31,6,0,&Str21[0],&TTSProg};
IT TTGOMD  = {I1,66,5,0,&Str22[0],0};
IT TGOMD   = {I2,67,6,0,&Str22[0],&TTGOMD};
IT TTAdd   = {I1,34,5,0,&Str23[0],0};
IT TAdd    = {I2,35,6,0,&Str23[0],&TTAdd};
IT TTEdit  = {I1,42,5,0,&Str24[0],0};
IT TEdit   = {I2,43,6,0,&Str24[0],&TTEdit};
IT TTELF   = {I1,22,5,0,&Str25[0],0};
IT TELF    = {I2,23,6,0,&Str25[0],&TTELF};
IT TTLin   = {I1,38,5,0,&Str26[0],0};
IT TLin    = {I2,39,6,0,&Str26[0],&TTLin};
IT TTCoOn  = {I1,34,5,0,&Str27[0],0};
IT TCoOn   = {I2,35,6,0,&Str27[0],&TTCoOn};
IT TTCoAl  = {I1,34,5,0,&Str28[0],0};
IT TCoAl   = {I2,35,6,0,&Str28[0],&TTCoAl};
IT TTChOp  = {I1,9,3,0,&Str29[0],0};
IT TChOp   = {I2,8,4,0,&Str29[0],&TTChOp};
/* Gadget-Strukturen */
GG GNO  = {0,223,40,22,13,GADGHCOMP,ENDGADGET|RELVERIFY,BOOLGADGET,
           (APTR)&BOK,0,&ITNO,0,0,2,0};
GG GYES = {&GNO,8,40,30,13,GADGHCOMP,ENDGADGET|RELVERIFY,BOOLGADGET,
           (APTR)&BYES,0,&ITYES,0,0,1,0};
GG GInput = {0,4,244,632,8,G1,(APTR)&B,0,0,0,(APTR)&StrI,99,0};
GG GA     = {0,76,244,560,8,G1,(APTR)&BB,0,0,0,(APTR)&StrI,99,0};
GG GProg  = {0,82,70,252,12,G1,(APTR)&BProg,0,0,0,(APTR)&SProg,3,0};
GG GOpt   = {&GProg,312,55,252,12,G1,(APTR)&BProg,0,0,0,(APTR)&SOpt,2,0};
GG GFile  = {&GOpt,54,55,252,12,G1,(APTR)&BProg,0,0,0,(APTR)&SFile,1,0};
GG GDo    = {&GFile,622,40,15,10,GADGHNONE|GADGIMAGE,RELVERIFY,BOOLGADGET,
             (APTR)&IDo,0,0,0,0,35,0};
GG GUp    = {&GDo,622,12,15,10,GADGHNONE|GADGIMAGE,RELVERIFY,BOOLGADGET,
             (APTR)&IUp,0,0,0,0,34,0};
GG GQuit  = {&GUp,478,222,GD,&TQuit,0,0,33,0};
GG GDate  = {&GQuit,320,222,GD,&TDate,0,0,32,0};
GG GCat   = {&GDate,162,222,GD,&TCat,0,0,31,0};
GG GPrint = {&GCat,4,222,GD,&TPrint,0,0,30,0};
GG GPref  = {&GPrint,478,201,GD,&TPref,0,0,29,0};
GG GExec  = {&GPref,320,201,GD,&TExec,0,0,28,0};
GG GStart = {&GExec,162,201,GD,&TStart,0,0,27,0};
GG GCLI   = {&GStart,4,201,GD,&TCLI,0,0,26,0};
GG GWord  = {&GCLI,320,180,GD,&TWord,0,0,25,0};
GG GEd    = {&GWord,4,180,GD,&TEd,0,0,24,0};
GG GLoad  = {&GEd,4,151,GD,&TLoad,0,0,23,0};
GG GSave  = {&GLoad,162,151,GD,&TSave,0,0,22,0};
GG GPack  = {&GSave,320,151,GD,&TPack,0,0,21,0};
GG GHelp  = {&GPack,478,151,GD,&THelp,0,0,20,0};
GG GAss   = {&GHelp,478,130,GD,&TAss,0,0,19,0};
GG GOML   = {&GAss,320,130,GD,&TOML,0,0,18,0};
GG GDel   = {&GOML,162,130,GD,&TDel,0,0,17,0};
GG GGPF   = {&GDel,4,130,GD,&TGPF,0,0,16,0};
GG GSProg = {&GGPF,478,109,GD,&TSProg,0,0,15,0};
GG GGOMD  = {&GSProg,320,109,GD,&TGOMD,0,0,14,0};
GG GAdd   = {&GGOMD,162,109,GD,&TAdd,0,0,13,0};
GG GEdit  = {&GAdd,4,109,GD,&TEdit,0,0,12,0};
GG GELF   = {&GEdit,478,88,GD,&TELF,0,0,11,0};
GG GLin   = {&GELF,320,88,GD,&TLin,0,0,10,0};
GG GCoOn  = {&GLin,162,88,GD,&TCoOn,0,0,9,0};
GG GCoAl  = {&GCoOn,4,88,GD,&TCoAl,0,0,8,0};
GG GChOp  = {&GCoAl,567,52,65,14,GADGHCOMP,RELVERIFY,BOOLGADGET,(APTR)&BChOp,0,
             &TChOp,0,0,7,0};
GG GEdN   = {&GChOp,164,186,157,8,G1,(APTR)&F1,0,0,0,(APTR)&SEdN,6,0};
GG GWpN   = {&GEdN,480,186,157,8,G1,(APTR)&F1,0,0,0,(APTR)&SWpN,5,0};
GG GLink  = {&GWpN,423,70,210,12,G1,(APTR)&BLink,0,0,0,(APTR)&SLink,4,0};
/* Requester */
struct Requester BoolReqG = {0,193,98,253,60,0,0,&GYES,&BReqBorder,&ITB1Req,
                             0,0,0,{0},0,0,{0}};
/* Schrift */
struct TextAttr Font = {"topaz.font",TOPAZ_EIGHTY,FS_NORMAL,FPF_ROMFONT};
/* Window-Strukturen */
struct NewWindow NewMainWindow = {0,0,640,256,0,1,GADGETUP|MOUSEBUTTONS,
                                  SMART_REFRESH|WINDOWDEPTH|ACTIVATE,
                                  &GLink,0,
          "Lattice-C-Compiler-4.0-Tool V2.1        © 1988 by Frank Langbein",
                                  0,0,0,0,640,256,WBENCHSCREEN};
struct NewWindow NewDirWindow  = {0,0,640,256,0,1,MOUSEBUTTONS,
                                  SMART_REFRESH|ACTIVATE|RMBTRAP,
                                  0,0,"LCT-Window",0,0,0,0,640,256,
                                  WBENCHSCREEN};
struct Window *MainWindow,*DirWindow;
struct Screen *MainScreen; /* Zeiger auf Workbench-Screen */
