Annotation of hatari/src/includes/intercept.h, revision 1.1.1.2

1.1       root        1: /*
                      2:   Hatari
                      3: */
                      4: 
1.1.1.2 ! root        5: #define  BUS_ERROR_ADDR  0xE00000           /* Address below here causes bus error exception */
1.1       root        6: 
1.1.1.2 ! root        7: #define INTERCEPT_WORKSPACE_SIZE  (8*1024)  /* 8k, size of intercept lists */
1.1       root        8: 
1.1.1.2 ! root        9: /* List of hardware addresses to be intercepted */
        !            10: /* ... do we really need this?  - THH */
1.1       root       11: enum {
                     12:   INTERCEPT_NULL,
1.1.1.2 ! root       13:   INTERCEPT_VIDEOHIGH,       /* 0xff8205 byte */
        !            14:   INTERCEPT_VIDEOMED,        /* 0xff8207 byte */
        !            15:   INTERCEPT_VIDEOLOW,        /* 0xff8209 byte */
        !            16:   INTERCEPT_VIDEOSYNC,       /* 0xff820a byte */
        !            17:   INTERCEPT_VIDEOBASELOW,    /* 0xff820d byte */
        !            18:   INTERCEPT_LINEWIDTH,       /* 0xff820e byte */
        !            19:   INTERCEPT_COLOUR0,         /* 0xff8240 word */
        !            20:   INTERCEPT_COLOUR1,         /* 0xff8242 word */
        !            21:   INTERCEPT_COLOUR2,         /* 0xff8244 word */
        !            22:   INTERCEPT_COLOUR3,         /* 0xff8246 word */
        !            23:   INTERCEPT_COLOUR4,         /* 0xff8248 word */
        !            24:   INTERCEPT_COLOUR5,         /* 0xff824a word */
        !            25:   INTERCEPT_COLOUR6,         /* 0xff824c word */
        !            26:   INTERCEPT_COLOUR7,         /* 0xff824e word */
        !            27:   INTERCEPT_COLOUR8,         /* 0xff8250 word */
        !            28:   INTERCEPT_COLOUR9,         /* 0xff8252 word */
        !            29:   INTERCEPT_COLOUR10,        /* 0xff8254 word */
        !            30:   INTERCEPT_COLOUR11,        /* 0xff8256 word */
        !            31:   INTERCEPT_COLOUR12,        /* 0xff8258 word */
        !            32:   INTERCEPT_COLOUR13,        /* 0xff825a word */
        !            33:   INTERCEPT_COLOUR14,        /* 0xff825c word */
        !            34:   INTERCEPT_COLOUR15,        /* 0xff825e word */
        !            35:   INTERCEPT_SHIFTERMODE,     /* 0xff8260 byte */
        !            36:   INTERCEPT_DISKCONTROL,     /* 0xff8604 word */
        !            37:   INTERCEPT_DMASTATUS,       /* 0xff8606 word */
        !            38:   INTERCEPT_PSG_REGISTER,    /* 0xff8800 byte */
        !            39:   INTERCEPT_PSG_DATA,        /* 0xff8802 byte */
        !            40:   INTERCEPT_MICROWIREDATA,   /* 0xff8922 word */
        !            41:   INTERCEPT_BLITTERENDMASK1, /* 0xff8a28 word */
        !            42:   INTERCEPT_BLITTERENDMASK2, /* 0xff8a2a word */
        !            43:   INTERCEPT_BLITTERENDMASK3, /* 0xff8a2c word */
        !            44:   INTERCEPT_BLITTERDST,      /* 0xff8a32 long */
        !            45:   INTERCEPT_BLITTERWPL,      /* 0xff8a36 word */
        !            46:   INTERCEPT_BLITTERLPB,      /* 0xff8a38 word */
        !            47:   INTERCEPT_BLITTERHT,       /* 0xff8a3a byte */
        !            48:   INTERCEPT_BLITTERLGO,      /* 0xff8a3b byte */
        !            49:   INTERCEPT_BLITTERLNM,      /* 0xff8a3c byte */
        !            50:   INTERCEPT_BLITTERSKEW,     /* 0xff8a3d byte */
        !            51:   INTERCEPT_MONITOR,         /* 0xfffa01 byte */
        !            52:   INTERCEPT_ACTIVE_EDGE,     /* 0xfffa03 byte */
        !            53:   INTERCEPT_DATA_DIRECTION,  /* 0xfffa05 byte */
        !            54:   INTERCEPT_ENABLE_A,        /* 0xfffa07 byte */
        !            55:   INTERCEPT_ENABLE_B,        /* 0xfffa09 byte */
        !            56:   INTERCEPT_PENDING_A,       /* 0xfffa0b byte */
        !            57:   INTERCEPT_PENDING_B,       /* 0xfffa0d byte */
        !            58:   INTERCEPT_INSERVICE_A,     /* 0xfffa0f byte */
        !            59:   INTERCEPT_INSERVICE_B,     /* 0xfffa11 byte */
        !            60:   INTERCEPT_MASK_A,          /* 0xfffa13 byte */
        !            61:   INTERCEPT_MASK_B,          /* 0xfffa15 byte */
        !            62:   INTERCEPT_VECTOR_REG,      /* 0xfffa17 byte */
        !            63:   INTERCEPT_TIMERA_CTRL,     /* 0xfffa19 byte */
        !            64:   INTERCEPT_TIMERB_CTRL,     /* 0xfffa1b byte */
        !            65:   INTERCEPT_TIMERCD_CTRL,    /* 0xfffa1d byte */
        !            66:   INTERCEPT_TIMERA_DATA,     /* 0xfffa1f byte */
        !            67:   INTERCEPT_TIMERB_DATA,     /* 0xfffa21 byte */
        !            68:   INTERCEPT_TIMERC_DATA,     /* 0xfffa23 byte */
        !            69:   INTERCEPT_TIMERD_DATA,     /* 0xfffa25 byte */
        !            70:   INTERCEPT_KEYBOARDCONTROL, /* 0xfffc00 byte */
        !            71:   INTERCEPT_KEYBOARDDATA,    /* 0xfffc02 byte */
        !            72:   INTERCEPT_MIDICONTROL,     /* 0xfffc04 byte */
        !            73:   INTERCEPT_MIDIDATA,        /* 0xfffc06 byte */
1.1       root       74: 
                     75:   INTERCEPT_COUNT
                     76: };
                     77: 
1.1.1.2 ! root       78: 
        !            79: /* Hardware address details */
1.1       root       80: typedef struct {
1.1.1.2 ! root       81:   unsigned int Address;        /* ST hardware address */
        !            82:   int SpanInBytes;             /* SIZE_BYTE, SIZE_WORD or SIZE_LONG */
        !            83:   void *ReadFunc;              /* Read function */
        !            84:   void *WriteFunc;             /* Write function */
1.1       root       85: } INTERCEPT_ACCESS_FUNC;
                     86: 
1.1.1.2 ! root       87: /* List of hardware address which are not documented, ie STe, TT, Falcon locations - should be unconnected on STfm */
1.1       root       88: typedef struct {
                     89:   unsigned int Start_Address;
                     90:   unsigned int End_Address;
                     91: } INTERCEPT_ADDRESSRANGE;
                     92: 
                     93: 
1.1.1.2 ! root       94: extern BOOL bEnableBlitter;
        !            95: 
1.1       root       96: 
                     97: uae_u32 Intercept_ReadByte(uaecptr addr);
                     98: uae_u32 Intercept_ReadWord(uaecptr addr);
                     99: uae_u32 Intercept_ReadLong(uaecptr addr);
                    100: 
                    101: void Intercept_WriteByte(uaecptr addr, uae_u32 val);
                    102: void Intercept_WriteWord(uaecptr addr, uae_u32 val);
                    103: void Intercept_WriteLong(uaecptr addr, uae_u32 val);
                    104: 
                    105: 
                    106: 
1.1.1.2 ! root      107: /* Read intercept functions */
1.1       root      108: extern void Intercept_VideoHigh_ReadByte(void);
                    109: extern void Intercept_VideoMed_ReadByte(void);
                    110: extern void Intercept_VideoLow_ReadByte(void);
                    111: extern void Intercept_VideoSync_ReadByte(void);
                    112: extern void Intercept_VideoBaseLow_ReadByte(void);
                    113: extern void Intercept_LineWidth_ReadByte(void);
                    114: extern void Intercept_Colour0_ReadWord(void);
                    115: extern void Intercept_Colour1_ReadWord(void);
                    116: extern void Intercept_Colour2_ReadWord(void);
                    117: extern void Intercept_Colour3_ReadWord(void);
                    118: extern void Intercept_Colour4_ReadWord(void);
                    119: extern void Intercept_Colour5_ReadWord(void);
                    120: extern void Intercept_Colour6_ReadWord(void);
                    121: extern void Intercept_Colour7_ReadWord(void);
                    122: extern void Intercept_Colour8_ReadWord(void);
                    123: extern void Intercept_Colour9_ReadWord(void);
                    124: extern void Intercept_Colour10_ReadWord(void);
                    125: extern void Intercept_Colour11_ReadWord(void);
                    126: extern void Intercept_Colour12_ReadWord(void);
                    127: extern void Intercept_Colour13_ReadWord(void);
                    128: extern void Intercept_Colour14_ReadWord(void);
                    129: extern void Intercept_Colour15_ReadWord(void);
                    130: extern void Intercept_ShifterMode_ReadByte(void);
                    131: extern void Intercept_DiskControl_ReadWord(void);
                    132: extern void Intercept_DmaStatus_ReadWord(void);
                    133: extern void Intercept_PSGRegister_ReadByte(void);
                    134: extern void Intercept_PSGData_ReadByte(void);
                    135: extern void Intercept_MicrowireData_ReadWord(void);
                    136: extern void Intercept_Monitor_ReadByte(void);
                    137: extern void Intercept_ActiveEdge_ReadByte(void);
                    138: extern void Intercept_DataDirection_ReadByte(void);
                    139: extern void Intercept_EnableA_ReadByte(void);
                    140: extern void Intercept_EnableB_ReadByte(void);
                    141: extern void Intercept_PendingA_ReadByte(void);
                    142: extern void Intercept_PendingB_ReadByte(void);
                    143: extern void Intercept_InServiceA_ReadByte(void);
                    144: extern void Intercept_InServiceB_ReadByte(void);
                    145: extern void Intercept_MaskA_ReadByte(void);
                    146: extern void Intercept_MaskB_ReadByte(void);
                    147: extern void Intercept_VectorReg_ReadByte(void);
                    148: extern void Intercept_TimerACtrl_ReadByte(void);
                    149: extern void Intercept_TimerBCtrl_ReadByte(void);
                    150: extern void Intercept_TimerCDCtrl_ReadByte(void);
                    151: extern void Intercept_TimerAData_ReadByte(void);
                    152: extern void Intercept_TimerBData_ReadByte(void);
                    153: extern void Intercept_TimerCData_ReadByte(void);
                    154: extern void Intercept_TimerDData_ReadByte(void);
                    155: extern void Intercept_KeyboardControl_ReadByte(void);
                    156: extern void Intercept_KeyboardData_ReadByte(void);
                    157: extern void Intercept_MidiControl_ReadByte(void);
                    158: extern void Intercept_MidiData_ReadByte(void);
1.1.1.2 ! root      159: extern void Intercept_BlitterEndmask1_ReadWord(void);
        !           160: extern void Intercept_BlitterEndmask2_ReadWord(void);
        !           161: extern void Intercept_BlitterEndmask3_ReadWord(void);
        !           162: extern void Intercept_BlitterDst_ReadLong(void);
        !           163: extern void Intercept_BlitterWPL_ReadWord(void);
        !           164: extern void Intercept_BlitterLPB_ReadWord(void);
        !           165: extern void Intercept_BlitterHalftoneOp_ReadByte(void);
        !           166: extern void Intercept_BlitterLogOp_ReadByte(void);
        !           167: extern void Intercept_BlitterLineNum_ReadByte(void);
        !           168: extern void Intercept_BlitterSkew_ReadByte(void);
1.1       root      169: 
1.1.1.2 ! root      170: 
        !           171: /* Write intercept functions */
1.1       root      172: extern void Intercept_VideoHigh_WriteByte(void);
                    173: extern void Intercept_VideoMed_WriteByte(void);
                    174: extern void Intercept_VideoLow_WriteByte(void);
                    175: extern void Intercept_VideoSync_WriteByte(void);
                    176: extern void Intercept_VideoBaseLow_WriteByte(void);
                    177: extern void Intercept_LineWidth_WriteByte(void);
                    178: extern void Intercept_Colour0_WriteWord(void);
                    179: extern void Intercept_Colour1_WriteWord(void);
                    180: extern void Intercept_Colour2_WriteWord(void);
                    181: extern void Intercept_Colour3_WriteWord(void);
                    182: extern void Intercept_Colour4_WriteWord(void);
                    183: extern void Intercept_Colour5_WriteWord(void);
                    184: extern void Intercept_Colour6_WriteWord(void);
                    185: extern void Intercept_Colour7_WriteWord(void);
                    186: extern void Intercept_Colour8_WriteWord(void);
                    187: extern void Intercept_Colour9_WriteWord(void);
                    188: extern void Intercept_Colour10_WriteWord(void);
                    189: extern void Intercept_Colour11_WriteWord(void);
                    190: extern void Intercept_Colour12_WriteWord(void);
                    191: extern void Intercept_Colour13_WriteWord(void);
                    192: extern void Intercept_Colour14_WriteWord(void);
                    193: extern void Intercept_Colour15_WriteWord(void);
                    194: extern void Intercept_ShifterMode_WriteByte(void);
                    195: extern void Intercept_DiskControl_WriteWord(void);
                    196: extern void Intercept_DmaStatus_WriteWord(void);
                    197: extern void Intercept_PSGRegister_WriteByte(void);
                    198: extern void Intercept_PSGData_WriteByte(void);
                    199: extern void Intercept_MicrowireData_WriteWord(void);
                    200: extern void Intercept_Monitor_WriteByte(void);
                    201: extern void Intercept_ActiveEdge_WriteByte(void);
                    202: extern void Intercept_DataDirection_WriteByte(void);
                    203: extern void Intercept_EnableA_WriteByte(void);
                    204: extern void Intercept_EnableB_WriteByte(void);
                    205: extern void Intercept_PendingA_WriteByte(void);
                    206: extern void Intercept_PendingB_WriteByte(void);
                    207: extern void Intercept_InServiceA_WriteByte(void);
                    208: extern void Intercept_InServiceB_WriteByte(void);
                    209: extern void Intercept_MaskA_WriteByte(void);
                    210: extern void Intercept_MaskB_WriteByte(void);
                    211: extern void Intercept_VectorReg_WriteByte(void);
                    212: extern void Intercept_TimerACtrl_WriteByte(void);
                    213: extern void Intercept_TimerBCtrl_WriteByte(void);
                    214: extern void Intercept_TimerCDCtrl_WriteByte(void);
                    215: extern void Intercept_TimerAData_WriteByte(void);
                    216: extern void Intercept_TimerBData_WriteByte(void);
                    217: extern void Intercept_TimerCData_WriteByte(void);
                    218: extern void Intercept_TimerDData_WriteByte(void);
                    219: extern void Intercept_KeyboardControl_WriteByte(void);
                    220: extern void Intercept_KeyboardData_WriteByte(void);
                    221: extern void Intercept_MidiControl_WriteByte(void);
                    222: extern void Intercept_MidiData_WriteByte(void);
1.1.1.2 ! root      223: extern void Intercept_BlitterEndmask1_WriteWord(void);
        !           224: extern void Intercept_BlitterEndmask2_WriteWord(void);
        !           225: extern void Intercept_BlitterEndmask3_WriteWord(void);
        !           226: extern void Intercept_BlitterDst_WriteLong(void);
        !           227: extern void Intercept_BlitterWPL_WriteWord(void);
        !           228: extern void Intercept_BlitterLPB_WriteWord(void);
        !           229: extern void Intercept_BlitterHalftoneOp_WriteByte(void);
        !           230: extern void Intercept_BlitterLogOp_WriteByte(void);
        !           231: extern void Intercept_BlitterLineNum_WriteByte(void);
        !           232: extern void Intercept_BlitterSkew_WriteByte(void);
        !           233: 
1.1       root      234: 
                    235: extern void Intercept_Init(void);
                    236: extern void Intercept_UnInit(void);
                    237: extern void Intercept_CreateTable(unsigned long *pInterceptTable[],int Span,int ReadWrite);
1.1.1.2 ! root      238: extern void Intercept_EnableBlitter(BOOL enableFlag);
1.1       root      239: extern void Intercept_ModifyTablesForBusErrors(void);
                    240: extern void Intercept_ModifyTablesForNoMansLand(void);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.