
/*
 ***************************************************************************
 *
 * Datei:
 *    RSysPre.h
 *
 * Inhalt:
 *
 *      --- Globale Routinen ---
 *
 *
 *      --- Lokale  Routinen ---
 *
 *
 * Bemerkungen:
 *    Dise Datei wird vorkompiliert (Zeitgewinn beim Übersetzen
 *    einzelner Module.
 *
 * Erstellungsdatum:
 *    19-Jul-93    Rolf Böhme
 *
 * Änderungen:
 *    19-Jul-93    Rolf Böhme    Erstellung
 *
 ***************************************************************************
 */

 
extern struct DosLibrary*DOSBase;
extern struct ExecBase*SysBase;/*GMD*/

#define WIN_LOCK TRUE  
#define WIN_UNLOCK FALSE  

#define NAME  "RSYS"
#define DATE  __DATE__
#define TIME  __TIME__
#define COPYRIGHT "(c) by Rolf Boehme (GiftWare and PD)"

#define UNSETLVPOS    -1
#define NO_CASE     0
#define CASE      1
#define HOTKEYS     7
#define MAXSHOW     10
#define SYSTEMINFO    12
#define TITLELEN    65
#define PWDLEN      20
#define ENVLEN      20
#define PARTSIZE    20
#define MAXSTRLEN     30
#define BUFSIZE                  60
#define PATTERNLEN    50
#define SEC      50
#define HELPLINESIZE     50
#define PATHPARTWIDTH    80
#define PARSEPATLEN    102
#define MAXFULLNAME    108
#define MAXLINESIZE    150
#define MAXWRITESIZE     200
#define CRCTABSIZE    256
#define MAXLARGEMEM    512
#define FRAC      8192
#define FULL      65536

#define CRC16                 0
#define CRC32                 1

/*
 * Window-Gadgets-Counter
 */
#define ChgPri_CNT            5
#define ShowFont_TNUM         1
#define CRC_CNT               5
#define Crypt_CNT             8
#define Formatter_CNT         8
#define FindFile_CNT          10
#define FormatDisk_CNT        10
#define SaveAWindow_CNT       3
#define MemMonitor_CNT        13
#define SearchStr_CNT         3
#define Sys_CNT               19

#define NOSCREENTITLECHANGE ((UBYTE*)(-1))

#define R13       TRUE
#define CRY       FALSE

#define ESC       '\33'

#define ACTION_TOKEN    "#"

#define COUNT_FLAGS    (GD_HandlerInpGad+1)
#define KEY_RELEASE    0x80
#define KEY_HELP     0x5F
#define KEY_q      0x10
#define KEY_ESC     0x45

#define custom      (*(struct Custom *)0xDFF000)

#define EVT_HOTKEY    1L

#define CNTMASK     LDF_DEVICES
#define MASK      (CNTMASK|LDF_READ)
#define B2C(x)      ((VOID*)(((LONG)(x))<<2))

#define ID_PORT_NAME    (UBYTE*)"RSys.rendezvous"

#define STRINGEND     '\0'

#define KILL      TRUE
#define NO_KILL     FALSE

#define YES       TRUE
#define NO       FALSE

#define SORT      TRUE
#define NO_SORT     FALSE

#define SPEAK      TRUE
#define NO_SPEAK     FALSE

#define ErrorHandle(str,nr1,nr2,kill) ErrorHandleFull(str,nr1,nr2,kill,__FILE__,__FUNC__,__LINE__)

#define CTRLKEYS (AMIGAKEYS | IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT | \
IEQUALIFIER_CAPSLOCK | IEQUALIFIER_CONTROL | IEQUALIFIER_LALT | IEQUALIFIER_RALT |\
IEQUALIFIER_NUMERICPAD)

/*
 * Dieses Template wird von der Funktion ReadArgs()
 * verwendet, um die Argumente auf der Kommandozeile
 * zu parsen. Es erscheint auch, wenn man das
 * Programm RSys mit dem Parameter "?" aufruft
 * Aus RSys.c
 */
#define TEMPLATE \
(UBYTE*)"T=TASKS/S,L=LIBRARIES/S,M=MEMORY/S,P=PORTS/S,V=VOLUMES/S,\
A=ASSIGNS/S,F=FONTS/S,R=RESOURCES/S,I=INTERRUPTS/S,W=WINDOWS/S,\
S=SCREENS/S,H=INPUTHDL/S"

#define CTRL_C_RECEIVED          (mask & SIGBREAKF_CTRL_C)
#define ID_PORT_SIG_RECEIVED     (mask & (1L << SysIdPort->mp_SigBit))
#define BROKER_PORT_SIG_RECEIVED (mask & (1L << broker_mp->mp_SigBit))
#define WINDOW_PORT_SIG_RECEIVED (mask & (1L << SysWnd->UserPort->mp_SigBit))

#define ESC_PRESSED        ((class == IDCMP_VANILLAKEY) && (code==ESC))
#define MENU_PRESSED       ((class == IDCMP_MENUPICK  ) && (MENUNUM(code) == 0) && (ITEMNUM(code) == 0))

#define ICONIFY_REQUESTED  (Flags.wb_start && (ESC_PRESSED || MENU_PRESSED))

/*
 * Aus RSysTreeHunks.c
 */
#define RKEY ((struct Remember**)&dekey)
#define SIZEDE sizeof(struct diskhunkentry)

#define IS_SET(pos) (mask&(1L<<(pos)))
#define SET(pos)  (mask|=(1L<<(pos)))
#define UNSET(pos) (mask&=(~(1L<<(pos))))

#define IDIR   "\303"
#define ILASTDIR  "\300"
#define ISUBDIR  "\304 "
#define ILEVEL   "\263  "

#define ADIR   "+"
#define ALASTDIR  "\\"
#define ASUBDIR  "- "
#define ALEVEL   "|  "

/*
 * Aus RSysCRC.c
 */
/*
 * The width of the cell ring is defined here. A word of warning: never
 * encrypt a file and forget the access password, since it will be
 * extremely hard to break the code (with 30 cells there are 256^30
 * possible values each cell may be initialized to which means that
 * you could have to try more than 1.7e+72 combinations for each single
 * password character before actually finding the matching password).
 * See `Random sequence generation by cellular automata' by Steven
 * Wolfram (Institute for Advanced Study; Advances in Applied
 * Mathematics) for more information.
 */

#define CELL_WIDTH 30

/*
 * Aus RSysClip.c
 */
#define ID_FTXT  MAKE_ID('F','T','X','T')
#define ID_CHRS  MAKE_ID('C','H','R','S')

/*
 * Aus RSysCheckOffsets.c
 */
#define FKEY    ((struct Remember**)&FKey)
#define ALLOCF(size)  AllocRemember(FKEY,(size),MEMF_CLEAR)
#define FREEF(flag)  FreeRemember(FKEY,(flag))

#define MAGIC_ROM_END ((ULONG)0x01000000)
#define MAGIC_ROM_SIZE ((ULONG)(*((ULONG *)0x00FFFFEC)))

#define FUNCOFFS sizeof(struct func)

#define LIBCNT   sizeof(libs)/sizeof(struct _liblist)
#define DEVCNT   sizeof(devs)/sizeof(struct _devlist)

/*
 * Aus RSysFormatFind.c
 */
#define DF 0
#define FI 1
#define DI 2

#define DEVKEY  ((struct Remember**)&DevKey)
#define FILEKEY ((struct Remember**)&FileKey)

#define CMDFMT "%s DRIVE %s NAME \"%s\" %s %s %s %s"

/*
 * Aus RSysSpecialList.c
 */
#define MAX_BROKER_ENTRIES 40

/*
 * Aus RSysSignalTrap.c
 */
#define _NUMSIG    15
#define _FSTSIG    0

/*
 * Aus RSysHunks.c
 */
#define ERKEY ((struct Remember**)&hekey)
#define ESIZEDE sizeof(struct hunkentry)

/*
 * Aus RSysSaveWindow.c
 */

/* Current compression mode. */

#define DUMP  0
#define RUN  1

/* ByteRun compression data. */

#define MINRUN  3
#define MAXRUN  128
#define MAXDAT  128

/* Chunk types. */

#define ID_ILBM  MAKE_ID('I','L','B','M')
#define ID_ANNO  MAKE_ID('A','N','N','O')
#define ID_BMHD  MAKE_ID('B','M','H','D')
#define ID_CMAP  MAKE_ID('C','M','A','P')
#define ID_CAMG  MAKE_ID('C','A','M','G')
#define ID_BODY  MAKE_ID('B','O','D','Y')

/* Masking technique. */

#define mskNone  0

/* Compression techniques. */

#define cmpNone  0
#define cmpByteRun1 1

/*
 * Aus RSysSummaryLists.c
 */
#define MEMTYPELEN 15
#define NONE (WORD)(0xFFFF)

#define CNT_DEVELOPER (sizeof(manu)/sizeof(struct Manufacturer))

#define GFXF_AA_ALICE 4
#define GFXF_AA_LISA  8
#define GFXF_AA_MLISA 16/* internal use only */

/*
 * Aus RSysGfxIntuiLists.c
 */
#define SETFLAG(gad,flag) ((((gad)->GadgetType)&(flag))==(flag))

/*
 * Aus RSysDosLists.c
 */
#define BPTR_TO_C(strtag, var)  ((struct strtag*)(BADDR( (ULONG) var)))
#define C_TO_BPTR(var)     (((ULONG)var)>>2)

/* 
 * Aus RSysInitData.c
 */
#define HWKEY           ((struct Remember**)&HWKey)
#define ALLOCHW(size)   AllocRemember(HWKEY, (size), MEMF_CLEAR)

#define LOKEY           ((struct Remember**)&LOKey)
#define ALLOCLO(size)   AllocRemember(LOKEY, (size), MEMF_CLEAR)

#define VMKEY           ((struct Remember**)&VMKey)
#define ALLOCVM(size)   AllocRemember(VMKEY, (size), MEMF_CLEAR)

/* 
 * Aus RSysMonitor.c
 */
#define LINESIZE        16L
#define LINECOUNT       32L
#define BLOCKSIZE       512L
#define DISPLAYCOUNT    4

#define MONKEY             ((struct Remember**)&MonKey)
#define AllocMonMem(size)  AllocRemember(MONKEY,(size),MEMF_CLEAR);

/* 
 * Aus RSysInit.c
 */
#define GTMN_NewLookMenus    GT_TagBase+67/* ti_Data is boolean */
#define NEWLEN 24

