#ifndef GMS_MISC_H
#define GMS_MISC_H TRUE

/*
**	$VER: misc.h V0.6B
**
**      (C) Copyright 1996-1997 DreamWorld Productions.
**          All Rights Reserved
*/

/***********************************************************************************
** Object entries.
*/

struct ObjectEntry { /* Entry stucture for GetObjectList() */
  char  *Name;       /* Pointer to the name, may be NULL */
  APTR  Object;      /* Object is returned here */
};

struct DataHeader {  /* Private structure for object headers */
  ULONG Type;        /* Type of object, eg STRC, CODE, DATA */
  ULONG Next;        /* Offset towards next object */
/*char Name[];          The name of the object */
};

/***********************************************************************************
** Choose one of these for calling Set_Interrupt()
*/

#define INTB_INTEN   14   /* Master interrupt (enable only ) */
#define INTB_EXTER   13   /* External interrupt */
#define INTB_DSKSYNC 12   /* Disk re-SYNChronized */
#define INTB_RBF     11   /* serial port Receive Buffer Full */
#define INTB_AUD3    10   /* Audio channel 3 block finished */
#define INTB_AUD2     9   /* Audio channel 2 block finished */
#define INTB_AUD1     8   /* Audio channel 1 block finished */
#define INTB_AUD0     7   /* Audio channel 0 block finished */
#define INTB_BLIT     6   /* Blitter finished */
#define INTB_VERTB    5   /* Start of Vertical Blank */
#define INTB_COPER    4   /* Coprocessor */
#define INTB_PORTS    3   /* I/O Ports and timers */
#define INTB_SOFTINT  2   /* software interrupt rest */
#define INTB_DSKBLK   1   /* Disk Block done */
#define INTB_TBE      0   /* serial port Transmit Buffer Empty */

/***********************************************************************************
** Special Keypresses that can be returned from ReadKey() are listed here.  All
** other keys can be considered to be in ASCII format.
*/

struct Keys {
  WORD  KP_ID;
  BYTE  KP_Key1;
  BYTE  KP_Key2;
  BYTE  KP_Key3;
  BYTE  KP_Key4;
};

#define K_SCS     0x80       /* Screen switch (LEFTAMIGA + M) */
#define K_DEL     0x81
#define K_HELP    0x82

#define K_LSHIFT  0x83
#define K_RSHIFT  0x84
#define K_CAPS    0x85
#define K_CTRL    0x86
#define K_LALT    0x87
#define K_RALT    0x88
#define K_LAMIGA  0x89
#define K_RAMIGA  0x8a

#define K_F1      0x8b
#define K_F2      0x8c
#define K_F3      0x8d
#define K_F4      0x8e
#define K_F5      0x8f
#define K_F6      0x90
#define K_F7      0x91
#define K_F8      0x92
#define K_F9      0x93
#define K_F10     0x94
#define K_F11     0x95
#define K_F12     0x96
#define K_F13     0x97
#define K_F14     0x98
#define K_F15     0x99
#define K_F16     0x9a
#define K_F17     0x9b
#define K_F18     0x9c
#define K_F19     0x9d
#define K_F20     0x9e

#define C_UP      0x9f
#define C_DOWN    0xa0
#define C_RIGHT   0xa1
#define C_LEFT    0xa2

#define K_SRIGHT  0xa3       /* Special key on right */
#define K_SLEFT   0xa4       /* Special key on left */

/* --- Special keys that are recognised under ASCII (here for convenience)*/

#define K_BAKSPC 08
#define K_TAB    09
#define K_ENTER  10
#define K_RETURN 10
#define K_ESC    0x1b

#endif
