[Contents] [Index] [Help] [Retrace] [Browse <] [Browse >]

#ifndef RESOURCES_CARD_H
#define RESOURCES_CARD_H 1

/*
**      $VER: card.h 1.11 (14.12.1992)
**      Includes Release 44.1
**
**      card.resource include file
**
**      (C) Copyright 1991-1999 Amiga, Inc.
**          All Rights Reserved
**
*/
#ifndef EXEC_TYPES_H
#include <exec/types.h>
#endif

#ifndef EXEC_NODES_H
#include <exec/nodes.h>
#endif

#ifndef EXEC_INTERRUPTS_H
#include <exec/interrupts.h>
#endif

#define CARDRESNAME     "card.resource"

/* Structures used by the card.resource                         */

struct  CardHandle {
        struct Node cah_CardNode;
        struct Interrupt *cah_CardRemoved;
        struct Interrupt *cah_CardInserted;
        struct Interrupt *cah_CardStatus;
        UBYTE   cah_CardFlags;
};

struct  DeviceTData {
        ULONG   dtd_DTsize;     /* Size in bytes                */
        ULONG   dtd_DTspeed;    /* Speed in nanoseconds         */
        UBYTE   dtd_DTtype;     /* Type of card                 */
        UBYTE   dtd_DTflags;    /* Other flags                  */
};

struct  CardMemoryMap {
        UBYTE   *cmm_CommonMemory;
        UBYTE   *cmm_AttributeMemory;
        UBYTE   *cmm_IOMemory;

/* Extended for V39 - These are the size of the memory spaces above */

        ULONG   cmm_CommonMemSize;
        ULONG   cmm_AttributeMemSize;
        ULONG   cmm_IOMemSize;

};

/* CardHandle.cah_CardFlags for OwnCard() function              */

#define CARDB_RESETREMOVE       0
#define CARDF_RESETREMOVE       (1<<CARDB_RESETREMOVE)

#define CARDB_IFAVAILABLE       1
#define CARDF_IFAVAILABLE       (1<<CARDB_IFAVAILABLE)

#define CARDB_DELAYOWNERSHIP    2
#define CARDF_DELAYOWNERSHIP    (1<<CARDB_DELAYOWNERSHIP)

#define CARDB_POSTSTATUS        3
#define CARDF_POSTSTATUS        (1<<CARDB_POSTSTATUS)

/* ReleaseCreditCard() function flags                           */

#define CARDB_REMOVEHANDLE      0
#define CARDF_REMOVEHANDLE      (1<<CARDB_REMOVEHANDLE)

/* ReadStatus() return flags                                    */

#define CARD_STATUSB_CCDET              6
#define CARD_STATUSF_CCDET              (1<<CARD_STATUSB_CCDET)

#define CARD_STATUSB_BVD1               5
#define CARD_STATUSF_BVD1               (1<<CARD_STATUSB_BVD1)

#define CARD_STATUSB_SC                 5
#define CARD_STATUSF_SC                 (1<<CARD_STATUSB_SC)

#define CARD_STATUSB_BVD2               4
#define CARD_STATUSF_BVD2               (1<<CARD_STATUSB_BVD2)

#define CARD_STATUSB_DA                 4
#define CARD_STATUSF_DA                 (1<<CARD_STATUSB_DA)

#define CARD_STATUSB_WR                 3
#define CARD_STATUSF_WR                 (1<<CARD_STATUSB_WR)

#define CARD_STATUSB_BSY                2
#define CARD_STATUSF_BSY                (1<<CARD_STATUSB_BSY)

#define CARD_STATUSB_IRQ                2
#define CARD_STATUSF_IRQ                (1<<CARD_STATUSB_IRQ)

/* CardProgramVoltage() defines */

#define CARD_VOLTAGE_0V         0       /* Set to default; may be the same as 5V */
#define CARD_VOLTAGE_5V         1
#define CARD_VOLTAGE_12V        2

/* CardMiscControl() defines */

#define CARD_ENABLEB_DIGAUDIO   1
#define CARD_ENABLEF_DIGAUDIO   (1<<CARD_ENABLEB_DIGAUDIO)

#define CARD_DISABLEB_WP        3
#define CARD_DISABLEF_WP        (1<<CARD_DISABLEB_WP)

/*
 * New CardMiscControl() bits for V39 card.resource.  Use these bits to set,
 * or clear status change interrupts for BVD1/SC, BVD2/DA, and BSY/IRQ.
 * Write-enable/protect change interrupts are always enabled.  The defaults
 * are unchanged (BVD1/SC is enabled, BVD2/DA is disabled, and BSY/IRQ is enabled).
 *
 * IMPORTANT -- Only set these bits for V39 card.resource or greater (check
 * resource base VERSION)
 *
 */

#define CARD_INTB_SETCLR        7
#define CARD_INTF_SETCLR        (1<<CARD_INTB_SETCLR)

#define CARD_INTB_BVD1          5
#define CARD_INTF_BVD1          (1<<CARD_INTB_BVD1)

#define CARD_INTB_SC            5
#define CARD_INTF_SC            (1<<CARD_INTB_SC)

#define CARD_INTB_BVD2          4
#define CARD_INTF_BVD2          (1<<CARD_INTB_BVD2)

#define CARD_INTB_DA            4
#define CARD_INTF_DA            (1<<CARD_INTB_DA)

#define CARD_INTB_BSY           2
#define CARD_INTF_BSY           (1<<CARD_INTB_BSY)

#define CARD_INTB_IRQ           2
#define CARD_INTF_IRQ           (1<<CARD_INTB_IRQ)


/* CardInterface() defines */

#define CARD_INTERFACE_AMIGA_0  0

/*
 * Tuple for Amiga execute-in-place software (e.g., games, or other
 * such software which wants to use execute-in-place software stored
 * on a credit-card, such as a ROM card).
 *
 * See documentatin for IfAmigaXIP().
 */

#define CISTPL_AMIGAXIP 0x91

struct  TP_AmigaXIP {
        UBYTE   TPL_CODE;
        UBYTE   TPL_LINK;
        UBYTE   TP_XIPLOC[4];
        UBYTE   TP_XIPFLAGS;
        UBYTE   TP_XIPRESRV;
        };
/*

        ; The XIPFLAGB_AUTORUN bit means that you want the machine
        ; to perform a reset if the execute-in-place card is inserted
        ; after DOS has been started.  The machine will then reset,
        ; and execute your execute-in-place code the next time around.
        ;
        ; NOTE -- this flag may be ignored on some machines, in which
        ; case the user will have to manually reset the machine in the
        ; usual way.

*/

#define XIPFLAGSB_AUTORUN       0
#define XIPFLAGSF_AUTORUN       (1<<XIPFLAGSB_AUTORUN)

#endif  /* RESOURCES_CARD_H */