|
|
1.1 root 1: /*
2: Previous - ioMemTabNEXT.c
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
6:
7: Table with hardware IO handlers for the NEXT.
8: */
9:
10:
11: const char IoMemTabST_fileid[] = "Previous ioMemTabST.c : " __DATE__ " " __TIME__;
12:
13: #include "main.h"
14: #include "ioMem.h"
15: #include "ioMemTables.h"
16: #include "video.h"
17: #include "configuration.h"
18: #include "sysdeps.h"
19: #include "m68000.h"
1.1.1.3 root 20: #include "keymap.h"
1.1.1.4 root 21: #include "esp.h"
22: #include "ethernet.h"
23: #include "sysReg.h"
24: #include "dma.h"
25: #include "scc.h"
26: #include "mo.h"
1.1 root 27:
28:
29:
1.1.1.4 root 30: /* Hack from QEMU-NeXT, Correct this later with the data below */
31:
32: /* system timer */
33: struct timer_reg {
34: unsigned char t_counter_latch[2]; /* counted up at 1 MHz */
35: unsigned char : 8;
36: unsigned char : 8;
37: unsigned char t_enable : 1, /* counter enable */
38: t_update : 1, /* copy latch to counter */
39: : 6;
1.1 root 40: };
41:
1.1.1.4 root 42: /* Functions to be moved to other places */
43: void System_Timer_Read(void);
44: void FDD_Main_Status_Read(void);
45: void DSP_icr_Read(void);
46: void DSP_icr_Write(void);
1.1 root 47:
1.1.1.4 root 48: Uint32 eventcounter; // debugging code
49: Uint32 lasteventc; // debugging code
1.1 root 50:
1.1.1.4 root 51: void System_Timer_Read(void) { // tuned for power-on test
52: // lasteventc = eventcounter; // debugging code
53: if (ConfigureParams.System.nCpuLevel == 3) {
54: // eventcounter = (nCyclesMainCounter/((128/ConfigureParams.System.nCpuFreq)*3))&0xFFFFF; // debugging code
55: IoMem_WriteLong(IoAccessCurrentAddress&0x1FFFF, (nCyclesMainCounter/((128/ConfigureParams.System.nCpuFreq)*3))&0xFFFFF);
56: } else { // System has 68040 CPU
57: // eventcounter = (nCyclesMainCounter/((64/ConfigureParams.System.nCpuFreq)*9))&0xFFFFF; // debugging code
58: IoMem_WriteLong(IoAccessCurrentAddress&0x1FFFF, (nCyclesMainCounter/((64/ConfigureParams.System.nCpuFreq)*9))&0xFFFFF);
59: }
60: // printf("DIFFERENCE = %i\n",eventcounter-lasteventc);
1.1 root 61: }
62:
1.1.1.4 root 63: /* Floppy Disk Drive - Work on this later */
64: void FDD_Main_Status_Read (void) {
65: IoMem[IoAccessCurrentAddress & 0x1FFFF] = 0x00;
1.1 root 66: }
67:
68:
1.1.1.4 root 69: static Uint32 DSP_icr=0;
1.1 root 70:
71:
1.1.1.4 root 72: /* DSP registers - Work on this later */
73: void DSP_icr_Read (void) {
74: Log_Printf(LOG_WARN, "[DSP] read val %d PC=%x %s at %d",DSP_icr,m68k_getpc(),__FILE__,__LINE__);
75: IoMem_WriteLong(IoAccessCurrentAddress & 0x1FFFF,0x7FFFFFFF);
1.1 root 76: }
77:
1.1.1.4 root 78: void DSP_icr_Write (void) {
79: DSP_icr=IoMem_ReadLong(IoAccessCurrentAddress & 0x1FFFF);
80: Log_Printf(LOG_WARN, "[DSP] write val %d PC=%x %s at %d",DSP_icr,m68k_getpc(),__FILE__,__LINE__);
1.1 root 81: }
82:
83:
1.1.1.4 root 84: #define P_VIDEO_CSR (SLOT_ID+0x02000180)
85: #define P_M2R_CSR (SLOT_ID+0x020001d0)
86: #define P_R2M_CSR (SLOT_ID+0x020001c0)
1.1 root 87:
1.1.1.4 root 88: /* DMA scratch pad (writes MUST be 32-bit) */
89: #define P_VIDEO_SPAD (SLOT_ID+0x02004180)
90: #define P_EVENT_SPAD (SLOT_ID+0x0200418c)
91: #define P_M2M_SPAD (SLOT_ID+0x020041e0)
1.1 root 92:
93: /*-----------------------------------------------------------------------*/
94: /*
95: List of functions to handle read/write hardware interceptions.
96: */
97: const INTERCEPT_ACCESS_FUNC IoMemTable_NEXT[] =
98: {
1.1.1.4 root 99: /* These registers are read on turbo machines, they are somehow related to SCR1 */
100: { 0x02000000, SIZE_WORD, TurboSCR1_Read0, IoMem_WriteWithoutInterceptionButTrace },
101: { 0x02000002, SIZE_WORD, TurboSCR1_Read2, IoMem_WriteWithoutInterceptionButTrace },
1.1.1.5 ! root 102:
! 103: { 0x02008008, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 104: { 0x02008009, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 105: { 0x0200800a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 106: { 0x0200800b, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 107:
! 108: { 0x02008018, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 109: { 0x02008019, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 110: { 0x0200801a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 111: { 0x0200801b, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 112:
! 113: { 0x02008020, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 114: { 0x02008021, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 115: { 0x02008022, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 116: { 0x02008023, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 117:
! 118: { 0x02008028, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 119: { 0x02008029, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 120: { 0x0200802a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 121: { 0x0200802b, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 122:
! 123: { 0x02008030, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 124: { 0x02008031, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 125: { 0x02008032, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 126: { 0x02008033, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 127:
! 128: { 0x02008038, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 129: { 0x02008039, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 130: { 0x0200803a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 131: { 0x0200803b, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 132:
! 133: { 0x02000088, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 134: { 0x02000089, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 135: { 0x0200008a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 136: { 0x0200008b, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 137:
! 138: { 0x0200008c, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 139: { 0x0200008d, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 140: { 0x0200008e, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 141: { 0x0200008f, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 142:
1.1.1.4 root 143:
144: /* Brightness */
145: { 0x02010000, SIZE_LONG, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
146:
147: // this is for video DMA channel
1.1 root 148: { 0x02004188, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
1.1.1.4 root 149: { 0x02004189, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
150: { 0x0200418a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
151: { 0x0200418b, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
152:
153:
154: /* DSP (Motorola XSP56001) */
155: { 0x02008000, SIZE_LONG, DSP_icr_Read, DSP_icr_Write },
156:
157: /* Network Adapter (MB8795) */
158: { 0x02006000, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
159: { 0x02006001, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
160: { 0x02006002, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
161: { 0x02006003, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
162: { 0x02006004, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
163: { 0x02006005, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
164: { 0x02006006, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
165: { 0x02006008, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
166: { 0x02006009, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
167: { 0x0200600a, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
168: { 0x0200600b, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
169: { 0x0200600c, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
170: { 0x0200600d, SIZE_BYTE, Ethernet_Read, Ethernet_Write },
171: { 0x0200600e, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
172: { 0x0200600f, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
173:
174: /* Memory Timing */
175: { 0x02006010, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
176: { 0x02006011, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
177: { 0x02006012, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
178: { 0x02006013, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
179: { 0x02006014, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
180:
181: /* Interrupt Status and Mask Registers */
1.1 root 182: { 0x02007000, SIZE_LONG, IntRegStatRead, IntRegStatWrite },
1.1.1.4 root 183: { 0x02007800, SIZE_LONG, IntRegMaskRead, IntRegMaskWrite },
184:
185: /* System Control Register 1 */
1.1 root 186: { 0x0200c000, SIZE_BYTE, SCR1_Read0, IoMem_WriteWithoutInterceptionButTrace },
187: { 0x0200c001, SIZE_BYTE, SCR1_Read1, IoMem_WriteWithoutInterceptionButTrace },
188: { 0x0200c002, SIZE_BYTE, SCR1_Read2, IoMem_WriteWithoutInterceptionButTrace },
189: { 0x0200c003, SIZE_BYTE, SCR1_Read3, IoMem_WriteWithoutInterceptionButTrace },
1.1.1.4 root 190:
191: /* Slot ID (NeXT Cube) */
192: { 0x0200c800, SIZE_BYTE, SID_Read, IoMem_WriteWithoutInterceptionButTrace },
193: { 0x0200c801, SIZE_BYTE, SID_Read, IoMem_WriteWithoutInterceptionButTrace },
194: { 0x0200c802, SIZE_BYTE, SID_Read, IoMem_WriteWithoutInterceptionButTrace },
195: { 0x0200c803, SIZE_BYTE, SID_Read, IoMem_WriteWithoutInterceptionButTrace },
196:
197: /* System Control Register 2 */
1.1 root 198: { 0x0200d000, SIZE_BYTE, SCR2_Read0, SCR2_Write0 },
199: { 0x0200d001, SIZE_BYTE, SCR2_Read1, SCR2_Write1 },
200: { 0x0200d002, SIZE_BYTE, SCR2_Read2, SCR2_Write2 },
201: { 0x0200d003, SIZE_BYTE, SCR2_Read3, SCR2_Write3 },
1.1.1.4 root 202:
203: /* Monitor Registers (Keyboard, Mouse, Sound) */
204: { 0x0200e000, SIZE_BYTE, Monitor_CSR_Read, Monitor_CSR_Write },
205: { 0x0200e001, SIZE_BYTE, Monitor_CSR_Read, Monitor_CSR_Write },
206: { 0x0200e002, SIZE_BYTE, Monitor_CSR_Read, Monitor_CSR_Write },
207: { 0x0200e003, SIZE_BYTE, Monitor_CSR_Read, Monitor_CSR_Write },
1.1 root 208: { 0x0200e004, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
209: { 0x0200e005, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
210: { 0x0200e006, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
1.1.1.4 root 211: { 0x0200e007, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
212: { 0x0200e008, SIZE_LONG, Keycode_Read, IoMem_WriteWithoutInterceptionButTrace },
213:
1.1.1.5 ! root 214: /* Printer Register */
! 215: { 0x0200f000, SIZE_LONG, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 216:
1.1.1.4 root 217: /* Event counter */
218: { 0x0201a000, SIZE_BYTE, System_Timer_Read, IoMem_WriteWithoutInterceptionButTrace },
219: { 0x0201a001, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterceptionButTrace },
220: { 0x0201a002, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterceptionButTrace },
221: { 0x0201a003, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterceptionButTrace },
222:
223: /* Internal Hardclock */
224: { 0x02016000, SIZE_BYTE, HardclockRead0, HardclockWrite0 },
225: { 0x02016001, SIZE_BYTE, HardclockRead1, HardclockWrite1 },
226: { 0x02016004, SIZE_BYTE, HardclockReadCSR, HardclockWriteCSR },
227:
228:
229: /* Magneto-Optical Drive */
1.1.1.5 ! root 230: #if 0 /* temporary disabled */
1.1.1.4 root 231: { 0x02012000, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
232: { 0x02012001, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
233: { 0x02012002, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
234: { 0x02012003, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
235: { 0x02012004, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
236: { 0x02012005, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
237: { 0x02012006, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
238: { 0x02012007, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
239: { 0x02012008, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
240: { 0x02012009, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
241: { 0x0201200a, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
242: { 0x0201200b, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
243: { 0x0201200c, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
244: { 0x0201200d, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
245: { 0x0201200e, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
246: { 0x0201200f, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
247: { 0x02012010, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
248: { 0x02012011, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
249: { 0x02012012, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
250: { 0x02012013, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
251: { 0x02012014, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
252: { 0x02012015, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
253: { 0x02012016, SIZE_BYTE, MOdrive_Read, MOdrive_Write },
1.1.1.5 ! root 254: #else
! 255: { 0x02012000, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 256: { 0x02012001, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 257: { 0x02012002, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 258: { 0x02012003, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 259: { 0x02012004, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 260: { 0x02012005, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 261: { 0x02012006, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 262: { 0x02012007, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 263: { 0x02012008, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 264: { 0x02012009, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 265: { 0x0201200a, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 266: { 0x0201200b, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 267: { 0x0201200c, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 268: { 0x0201200d, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 269: { 0x0201200e, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 270: { 0x0201200f, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 271: { 0x02012010, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 272: { 0x02012011, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 273: { 0x02012012, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 274: { 0x02012013, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 275: { 0x02012014, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 276: { 0x02012015, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 277: { 0x02012016, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
! 278: #endif
1.1.1.4 root 279:
280:
281: /*------------------ DMA ------------------*/
282:
283: /* DMA Control/Status Registers (writes MUST be 32-bit) */
284: { 0x02000010, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
285: { 0x02000040, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
286: { 0x02000050, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
1.1.1.5 ! root 287: { 0x02000080, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
! 288: { 0x02000090, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
1.1.1.4 root 289: { 0x020000c0, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
1.1.1.5 ! root 290: { 0x020000d0, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
1.1.1.4 root 291: { 0x02000110, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
292: { 0x02000150, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
293:
1.1.1.5 ! root 294: { 0x02000180, SIZE_LONG, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
! 295: { 0x020001d0, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
! 296: { 0x020001c0, SIZE_LONG, DMA_CSR_Read, DMA_CSR_Write },
! 297:
! 298: /* Channel R2M */
! 299: { 0x020041c0, SIZE_LONG, DMA_Saved_Next_Read, DMA_Saved_Next_Write },
! 300: { 0x020041c4, SIZE_LONG, DMA_Saved_Limit_Read, DMA_Saved_Limit_Write },
! 301: { 0x020041c8, SIZE_LONG, DMA_Saved_Start_Read, DMA_Saved_Start_Write },
! 302: { 0x020041cc, SIZE_LONG, DMA_Saved_Stop_Read, DMA_Saved_Stop_Write },
! 303: { 0x020043c0, SIZE_LONG, DMA_Init_Read, DMA_Init_Write }, // check this!
! 304: { 0x020043c4, SIZE_LONG, DMA_Size_Read, DMA_Size_Write }, // check this!
! 305:
! 306: /* Channel M2R */
! 307: { 0x020041d0, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
! 308: { 0x020041d4, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
! 309: { 0x020041d8, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
! 310: { 0x020041dc, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
! 311: { 0x020043d0, SIZE_LONG, DMA_Init_Read, DMA_Init_Write },
! 312: { 0x020043d4, SIZE_LONG, DMA_Size_Read, DMA_Size_Write },
1.1.1.4 root 313:
314: /* Channel SCSI */
315: { 0x02004000, SIZE_LONG, DMA_Saved_Next_Read, DMA_Saved_Next_Write },
316: { 0x02004004, SIZE_LONG, DMA_Saved_Limit_Read, DMA_Saved_Limit_Write },
317: { 0x02004008, SIZE_LONG, DMA_Saved_Start_Read, DMA_Saved_Start_Write },
318: { 0x0200400c, SIZE_LONG, DMA_Saved_Stop_Read, DMA_Saved_Stop_Write },
319: { 0x02004010, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
320: { 0x02004014, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
321: { 0x02004018, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
322: { 0x0200401c, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
323: { 0x02004210, SIZE_LONG, DMA_Init_Read, DMA_Init_Write },
324: { 0x02004214, SIZE_LONG, DMA_Size_Read, DMA_Size_Write },
325:
326: /* Channel Sound out */
327: { 0x02004040, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
328: { 0x02004044, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
329: { 0x02004048, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
330: { 0x0200404c, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
331:
332: /* Channel MO Drive */
333: { 0x02004050, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
334: { 0x02004054, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
335: { 0x02004058, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
336: { 0x0200405c, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
337: { 0x02004250, SIZE_LONG, DMA_Init_Read, DMA_Init_Write },
338: { 0x02004254, SIZE_LONG, DMA_Size_Read, DMA_Size_Write },
339:
340: /* Channel SCC */
341: { 0x020040c0, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
342: { 0x020040c4, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
343: // { 0x020040c8, SIZE_LONG, DMA_Saved_Start_Read, DMA_Saved_Start_Write },
344: // { 0x020040cc, SIZE_LONG, DMA_Saved_Stop_Read, DMA_Saved_Stop_Write },
345:
346: // { 0x020040d0, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
347: // { 0x020040d4, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
348: // { 0x020040d8, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
349: // { 0x020040dc, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
350: // { 0x020042d0, SIZE_LONG, DMA_Init_Read, DMA_Init_Write },
351: // { 0x020042d4, SIZE_LONG, DMA_Size_Read, DMA_Size_Write },
352:
353: /* Channel Ethernet Transmit */
354: { 0x02004100, SIZE_LONG, DMA_Saved_Next_Read, DMA_Saved_Next_Write },
355: { 0x02004104, SIZE_LONG, DMA_Saved_Limit_Read, DMA_Saved_Limit_Write },
356: { 0x02004108, SIZE_LONG, DMA_Saved_Start_Read, DMA_Saved_Start_Write },
357: { 0x0200410c, SIZE_LONG, DMA_Saved_Stop_Read, DMA_Saved_Stop_Write },
358: { 0x02004110, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
359: { 0x02004114, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
360: { 0x02004118, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
361: { 0x0200411c, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
362: { 0x02004310, SIZE_LONG, DMA_Init_Read, DMA_Init_Write },
363: { 0x02004314, SIZE_LONG, DMA_Size_Read, DMA_Size_Write },
364:
365: /* Channel Ethernet Receive */
366: { 0x02004140, SIZE_LONG, DMA_Saved_Next_Read, DMA_Saved_Next_Write },
367: { 0x02004144, SIZE_LONG, DMA_Saved_Limit_Read, DMA_Saved_Limit_Write },
368: { 0x02004148, SIZE_LONG, DMA_Saved_Start_Read, DMA_Saved_Start_Write },
369: { 0x0200414c, SIZE_LONG, DMA_Saved_Stop_Read, DMA_Saved_Stop_Write },
370: { 0x02004150, SIZE_LONG, DMA_Next_Read, DMA_Next_Write },
371: { 0x02004154, SIZE_LONG, DMA_Limit_Read, DMA_Limit_Write },
372: { 0x02004158, SIZE_LONG, DMA_Start_Read, DMA_Start_Write },
373: { 0x0200415c, SIZE_LONG, DMA_Stop_Read, DMA_Stop_Write },
374: { 0x02004350, SIZE_LONG, DMA_Init_Read, DMA_Init_Write },
375: { 0x02004354, SIZE_LONG, DMA_Size_Read, DMA_Size_Write },
376: /*-------------------- End of DMA -------------------*/
377:
378:
379: /* SCSI Command/Status Registers */
380: { 0x02014020, SIZE_BYTE, SCSI_CSR0_Read, SCSI_CSR0_Write },
381: { 0x02014021, SIZE_BYTE, SCSI_CSR1_Read, SCSI_CSR1_Write },
382:
383: /* SCSI Controller (NCR53C90) */
384: { 0x02014000, SIZE_BYTE, SCSI_TransCountL_Read, SCSI_TransCountL_Write },
385: { 0x02014001, SIZE_BYTE, SCSI_TransCountH_Read, SCSI_TransCountH_Write },
386: { 0x02014002, SIZE_BYTE, SCSI_FIFO_Read, SCSI_FIFO_Write },
387: { 0x02014003, SIZE_BYTE, SCSI_Command_Read, SCSI_Command_Write },
388: { 0x02014004, SIZE_BYTE, SCSI_Status_Read, SCSI_SelectBusID_Write },
389: { 0x02014005, SIZE_BYTE, SCSI_IntStatus_Read, SCSI_SelectTimeout_Write },
390: { 0x02014006, SIZE_BYTE, SCSI_SeqStep_Read, SCSI_SyncPeriod_Write },
391: { 0x02014007, SIZE_BYTE, SCSI_FIFOflags_Read, SCSI_SyncOffset_Write },
392: { 0x02014008, SIZE_BYTE, SCSI_Configuration_Read, SCSI_Configuration_Write },
393: { 0x02014009, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, SCSI_ClockConv_Write },
394: { 0x0201400a, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, SCSI_Test_Write },
395: /* Additional Register for NCR53C90A (68040) */
396: { 0x0201400b, SIZE_BYTE, SCSI_Conf2_Read, IoMem_WriteWithoutInterceptionButTrace },
397: // { 0x0201400c, SIZE_BYTE, SCSI_CMD_Read, SCSI_CMD_Write },
398: // { 0x0201400d, SIZE_BYTE, SCSI_CMD_Read, SCSI_CMD_Write },
399: // { 0x0201400e, SIZE_BYTE, SCSI_CMD_Read, SCSI_CMD_Write },
400: // { 0x0201400f, SIZE_BYTE, SCSI_CMD_Read, SCSI_CMD_Write },
401:
402: /* Floppy Controller (82077AA) */
403: { 0x02014100, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
404: { 0x02014101, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
405: { 0x02014102, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
406: { 0x02014103, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
407: { 0x02014104, SIZE_BYTE, FDD_Main_Status_Read, IoMem_WriteWithoutInterceptionButTrace },
408: { 0x02014105, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
409: { 0x02014106, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
410: { 0x02014107, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
411:
412: /* Floppy External Control */
413: { 0x02014108, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
414:
415: /* Serial Communication Controller (Z8530) */
416: { 0x02018000, SIZE_BYTE, SCC_Read, SCC_Write },
417: { 0x02018001, SIZE_BYTE, SCC_Read, SCC_Write },
418: { 0x02018002, SIZE_BYTE, SCC_Read, SCC_Write },
419: { 0x02018003, SIZE_BYTE, SCC_Read, SCC_Write },
1.1 root 420: { 0x02018004, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
421: { 0, 0, NULL, NULL }
422: };
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.