#define VERSION "1.4gmd"


 /**
   ***************************************************************************
   *
   * Datei:
   *      RSys.h
   *
   * Inhalt:
   *
   *             --- Globale Routinen ---
   *
   *
   *             --- Lokale  Routinen ---
   *
   *
   * Bemerkungen:
   *      Die Haupt-Include-Datei von RSys mit allen globalen Vereinbarungen.
   *
   * Erstellungsdatum:
   *      07-Jul-93     Rolf Böhme
   *
   * Änderungen:
   *      07-Jul-93     Rolf Böhme        Erstellung
   *      01-Jul-93     Einige Umstellung der EntryAttr-Struktur und
   *                                            Einführung sogenannter Fields, Standard-Einträge
   *                                            von RSys
   *    25-Jul-93    Erstellung einer Steuerstruktur
   *
   ***************************************************************************
 **/


#include "Inc/RSysPre.h"
#include "Inc/RSysdebug.h"
#include "Inc/RSysEnum.h"

#include "typedefs.h"

#define TOOLTYPE(ttype) (char *)FindToolType((UBYTE **) dop->do_ToolTypes,(UBYTE *) (ttype))


typedef struct SysMessage
  {
    MESSAGE sm_message;
    int sm_newtype;
  }
RSYS_SysMsg;

typedef struct _fmt
  {
    int f_blanks, f_quote;
    int f_noheader;
    int f_noformat;
    char f_prefix[100], f_postfix[100];
    char f_format[MAXWRITESIZE];
  }
RSYS_fmt;


typedef struct diskhunkentry
  {
    NODE denode;
    char *name;
    char *fullname;
    struct diskhunkentry *next;
  }
RSYS_diskhunkentry;



typedef struct _hardwareentry
  {
    char title[TITLELEN];
    char info[MAXSTRLEN];
    struct _hardwareentry *next;
  }
RSYS_hardwareentry;


typedef struct hunkentry
  {
    NODE denode;
    char *name;
    struct hunkentry *next;
  }
RSYS_hunkentry;


typedef struct
  {
    char cr_datafile[MAXFULLNAME];
    char cr_cryptfile[MAXFULLNAME];
    char cr_pwd[20];
  }
RSYS_cryptdata;


typedef struct DisplayNode
  {
    NODE dn_Node;
    DISPLAYINFO dn_dinfo;
    NAMEINFO dn_ninfo;
    struct DimensionInfo dn_diminfo;
  }
RSYS_DisplayNode;


typedef struct winlist
  {
    NODE node;
    WINDOW *win;
    char name[MAXFULLNAME];
  }
RSYS_winlist;


typedef struct
  {
    UWORD jmp;			/* Assembler-Befehl jmp */
    ULONG adr;			/* Sprungadresse */
  }
RSYS_func;

 /* A bitmap header. */

typedef struct
  {
    UWORD w, h;			/* raster width & height in pixels */
    WORD x, y;			/* position for this image */
    UBYTE nPlanes;		/* # source bitplanes */
    UBYTE masking;		/* masking technique */
    UBYTE compression;		/* compression algorithm */
    UBYTE pad1;			/* UNUSED.  For consistency, put 0 here. */
    UWORD transparentColor;	/* transparent "color number" */
    UBYTE xAspect, yAspect;	/* aspect ratio, a rational number x/y */
    WORD pageWidth, pageHeight;	/* source "page" size in pixels */
  }
RSYS_BitMapHeader;

 /* A single 8-bit colour register. */

typedef struct
  {
    UBYTE red;			/* red component, 0..255 */
    UBYTE green;		/* green component, 0..255 */
    UBYTE blue;			/* blue component, 0..255 */
  }
RSYS_ColorRegister;

typedef struct objectid
  {
    char fullname[MAXFULLNAME];
    APTR address;
  }
RSYS_Objid;

typedef struct
  {
    NODE node;
    RSYS_Objid obj;
  }
RSYS_LOCKENTRY;

typedef struct
  {
    BPTR rl_Next;
    LONG rl_UseCount;
    BPTR rl_SegList;
    BSTR rl_SegName;
  }
RSYS_RESIDENTLIST;

typedef struct Suffix
  {
    char *Name;
    UBYTE Type;
  }
RSYS_Suffix;


#define APPEND    1
#define OVERWRITE 2
/*
 * GMD
 */
#define EA_NOTC  0
#define EA_C  1
#define EA_C_HELP  2

typedef struct
  {
    char *ea_type;
    char *ea_header;
    char *ea_dataformat;
    void (*ea_func) (void);
    /*unsigned ea_counted : 1; GMD */
    unsigned ea_counted;
  }
RSYS_EntryAttribute;

typedef struct _RSysFiles
  {
    UBYTE Hardware[MAXFULLNAME], LibOffsets[MAXFULLNAME], Guide[MAXFULLNAME],
      GuideContext[MAXFULLNAME], ActionFile[MAXFULLNAME];
  }
RSYSFILES;



typedef struct SE
  {
    NODE se_Node;
    char se_Entry[BUFSIZE];
    struct objectid se_obj_id;
  }
RSYS_ScrollEntry;


typedef struct _acts
  {
    NODE act_Node;
    int act_filetype;
    char act_listviewheader[20];
    char act_name[30];
    char act_command[255];
  }
RSYS_acts;

typedef struct _flags
  {
    unsigned fastmode:1;
    unsigned sortmode:1;
    unsigned workingbar:1;
    unsigned speakmode:1;
    unsigned autofront:1;
    unsigned mousewindow:1;
    unsigned sysfont:1;
    unsigned saveasking:1;
    unsigned appicon:1;
    unsigned helpmode:1;
    unsigned textformat:1;

/* RSys private */
    unsigned wb_start:1;
    unsigned quit_clip:1;
    unsigned quit_sw:1;
    unsigned quit_crc:1;
    unsigned quit_flag:1;
    unsigned quit_cp:1;
    unsigned quit_action_flag:1;
    unsigned quit_cr:1;
    unsigned quit_ff:1;
    unsigned quit_fd:1;
    unsigned quit_tree:1;
    unsigned quit_hunk:1;
    unsigned quit_iconify:1;
    unsigned nohelp:1;

/* Dummys */
    unsigned dummy0:1;
    unsigned dummy1:1;
    unsigned dummy2:1;
    unsigned dummy3:1;
    unsigned dummy4:1;
  }
RSYS_flags;


typedef struct Manufacturer
  {
    char *name;
    WORD manu_nr;
    WORD prod_nr;
    WORD type_nr;
    int company;
  }
RSYS_Manufacturer;

typedef struct
  {
    NODE l_node;
    char *l_name;
    char *l_base;
    int l_typ;
    struct List l_functions;
  }
RSYS_LIBRARY;

typedef struct
  {
    NODE f_node;
    char *f_name;
    int f_bias;
    char f_public;
  }
RSYS_FUNCTION;

typedef struct
  {
    NODE vm_node;
    ULONG vm_startaddress;
    ULONG vm_endaddress;
    char vm_type;
    char vm_comment[BUFSIZE];
  }
RSYS_ValidMemoryNode;


#define WRITEPROTECT             (1<<0)
#define IsWriteProtect(VMNode)   (((VMNode)->vm_type & WRITEPROTECT)==WRITEPROTECT)

#define CACHEABLE                (1<<1)
#define IsCacheable(VMNode)      (((VMNode)->vm_type & CACHEABLE)==CACHEABLE)

#define VALID                    (1<<2)
#define IsValid(VMNode)          (((VMNode)->vm_type & VALID)==VALID)


/*
 * GMD , ASM protos next (generated by hand)
 */
extern ULONG GetCPUType (void);
extern ULONG GetMMUType (void);
extern ULONG GetFPUType (void);


