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