|
|
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);
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.