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

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