Annotation of previous/src/ioMemTabNEXT.c, revision 1.1

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"
        !            20: 
        !            21: #define IO_SEG_MASK    0x1FFFF
        !            22: /*
        !            23:  *
        !            24:  */
        !            25: static Uint8 scr2_0=0;
        !            26: static Uint8 scr2_1=0;
        !            27: static Uint8 scr2_2=0;
        !            28: static Uint8 scr2_3=0;
        !            29: 
        !            30: static Uint32 intStat=0x04;
        !            31: static Uint32 intMask=0x00000000;
        !            32: 
        !            33: void SCR2_Write0(void)
        !            34: {      
        !            35: //     Log_Printf(LOG_WARN,"SCR2 write at $%08x val=$%02x PC=$%08x\n", IoAccessCurrentAddress,IoMem[IoAccessCurrentAddress & IO_SEG_MASK],m68k_getpc());
        !            36:        scr2_0=IoMem[IoAccessCurrentAddress & 0x1FFFF];
        !            37: }
        !            38: 
        !            39: void SCR2_Read0(void)
        !            40: {
        !            41: //     Log_Printf(LOG_WARN,"SCR2 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !            42:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=scr2_0;
        !            43: }
        !            44: 
        !            45: void SCR2_Write1(void)
        !            46: {      
        !            47: //     Log_Printf(LOG_WARN,"SCR2 write at $%08x val=$%02x PC=$%08x\n", IoAccessCurrentAddress,IoMem[IoAccessCurrentAddress & IO_SEG_MASK],m68k_getpc());
        !            48:        scr2_1=IoMem[IoAccessCurrentAddress & 0x1FFFF];
        !            49: }
        !            50: 
        !            51: void SCR2_Read1(void)
        !            52: {
        !            53: //     Log_Printf(LOG_WARN,"SCR2 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !            54:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=scr2_1;
        !            55: }
        !            56: 
        !            57: 
        !            58: #define SCR2_RTDATA            0x04
        !            59: #define SCR2_RTCLK             0x02
        !            60: #define SCR2_RTCE              0x01
        !            61: 
        !            62: #define SCR2_LED               0x01
        !            63: #define SCR2_ROM               0x80
        !            64: 
        !            65: 
        !            66: // file mon/nvram.h
        !            67: // struct nvram_info {
        !            68: // #define     NI_RESET        9
        !            69: //     u_int   ni_reset : 4,
        !            70: // #define     SCC_ALT_CONS    0x08000000
        !            71: //             ni_alt_cons : 1,
        !            72: // #define     ALLOW_EJECT     0x04000000
        !            73: //             ni_allow_eject : 1,
        !            74: //             ni_vol_r : 6,
        !            75: //             ni_brightness : 6,
        !            76: // #define     HW_PWD  0x6
        !            77: //             ni_hw_pwd : 4,
        !            78: //             ni_vol_l : 6,
        !            79: //             ni_spkren : 1,
        !            80: //             ni_lowpass : 1,
        !            81: // #define     BOOT_ANY        0x00000002
        !            82: //             ni_boot_any : 1,
        !            83: // #define     ANY_CMD         0x00000001
        !            84: //             ni_any_cmd : 1;
        !            85: // #define     NVRAM_HW_PASSWD 6
        !            86: //     u_char ni_ep[NVRAM_HW_PASSWD];
        !            87: // #define     ni_enetaddr     ni_ep
        !            88: // #define     ni_hw_passwd    ni_ep
        !            89: //     u_short ni_simm;                /* 4 SIMMs, 4 bits per SIMM */
        !            90: //     char ni_adobe[2];
        !            91: //     u_char ni_pot[3];
        !            92: //     u_char  ni_new_clock_chip : 1,
        !            93: //             ni_auto_poweron : 1,
        !            94: //             ni_use_console_slot : 1,        /* Console slot was set by user. */
        !            95: //             ni_console_slot : 2,            /* Preferred console dev slot>>1 */
        !            96: //             ni_use_parity_mem : 1,  /* Use parity RAM if available? */
        !            97: //             : 2;
        !            98: // #define     NVRAM_BOOTCMD   12
        !            99: //     char ni_bootcmd[NVRAM_BOOTCMD];
        !           100: //     u_short ni_cksum;
        !           101: // };
        !           102: 
        !           103: // #define     N_brightness    0
        !           104: // #define     N_volume_l      1
        !           105: // #define     N_volume_r      2
        !           106: 
        !           107: /* nominal values during self test */
        !           108: // #define     BRIGHT_NOM      20
        !           109: // #define     VOL_NOM         0
        !           110: 
        !           111: /* bits in ni_pot[0] */
        !           112: // #define POT_ON                      0x01
        !           113: // #define EXTENDED_POT                0x02
        !           114: // #define LOOP_POT            0x04
        !           115: // #define     VERBOSE_POT             0x08
        !           116: // #define     TEST_DRAM_POT           0x10
        !           117: // #define     BOOT_POT                0x20
        !           118: // #define     TEST_MONITOR_POT        0x40
        !           119: 
        !           120: // Uint8 rtc_ram[32];
        !           121: 
        !           122: Uint8 rtc_ram[32]={
        !           123: 0x94,0x0f,0x40,0x00,0x00,0x00,0x00,0x00,
        !           124: 0x00,0x00,0xfb,0x6d,0x00,0x00,0x7B,0x00,
        !           125: 0x00,0x00,0x65,0x6e,0x00,0x00,0x00,0x00,
        !           126: 0x00,0x00,0x00,0x00,0x00,0x00,0x50,0x13
        !           127: };
        !           128: 
        !           129: static char rtc_ram_info[1024];
        !           130: char * get_rtc_ram_info(void) {
        !           131:        char buf[256];
        !           132:        int sum;
        !           133:        int i;
        !           134:        int ni_vol_l,ni_vol_r,ni_brightness;
        !           135:        int ni_hw_pwd,ni_spkren,ni_lowpass;
        !           136:        sprintf(buf,"Rtc info:\n");
        !           137:        strcpy(rtc_ram_info,buf);
        !           138: 
        !           139: // struct nvram_info {
        !           140: // #define     NI_RESET        9
        !           141: //     u_int   ni_reset : 4,
        !           142: 
        !           143:        sprintf(buf,"RTC RESET:x%1X ",rtc_ram[0]>>4);
        !           144:        strcat(rtc_ram_info,buf);       
        !           145: 
        !           146: // #define     SCC_ALT_CONS    0x08000000
        !           147: //             ni_alt_cons : 1,
        !           148:        if (rtc_ram[0]&0x08) strcat(rtc_ram_info,"ALT_CONS ");
        !           149: // #define     ALLOW_EJECT     0x04000000
        !           150: //             ni_allow_eject : 1,
        !           151:        if (rtc_ram[0]&0x04) strcat(rtc_ram_info,"ALLOW_EJECT ");
        !           152: //             ni_vol_r : 6,
        !           153: //             ni_brightness : 6,
        !           154: // #define     HW_PWD  0x6
        !           155: //             ni_hw_pwd : 4,
        !           156: //             ni_vol_l : 6,
        !           157: //             ni_spkren : 1,
        !           158: //             ni_lowpass : 1,
        !           159: // #define     BOOT_ANY        0x00000002
        !           160: //             ni_boot_any : 1,
        !           161: // #define     ANY_CMD         0x00000001      
        !           162: //             ni_any_cmd : 1;
        !           163: 
        !           164:        ni_vol_r=(((rtc_ram[0]&0x3)<<4)|((rtc_ram[1]&0xF0)>>4));
        !           165:        ni_brightness=(((rtc_ram[1]&0xF)<<2)|((rtc_ram[2]&0xC0)>>6));
        !           166:        ni_vol_l=((rtc_ram[2]&0x3F)<<2);
        !           167:        ni_hw_pwd=(rtc_ram[3]&0xF0)>>4;
        !           168:        sprintf(buf,"VOL_R:x%1X BRIGHT:x%1X HWPWD:x%1X VOL_L:x%1X",ni_vol_r,ni_brightness,ni_vol_l,ni_hw_pwd);
        !           169:        strcat(rtc_ram_info,buf);       
        !           170: 
        !           171:        if (rtc_ram[3]&0x08) strcat(rtc_ram_info,"SPK_ENABLE ");
        !           172:        if (rtc_ram[3]&0x04) strcat(rtc_ram_info,"LOW_PASS ");
        !           173:        if (rtc_ram[3]&0x02) strcat(rtc_ram_info,"BOOT_ANY ");
        !           174:        if (rtc_ram[3]&0x01) strcat(rtc_ram_info,"ANY_CMD ");
        !           175:        
        !           176:        
        !           177: 
        !           178: // #define     NVRAM_HW_PASSWD 6
        !           179: //     u_char ni_ep[NVRAM_HW_PASSWD];
        !           180: 
        !           181:        sprintf(buf,"NVRAM_HW_PASSWD:%2X %2X %2X %2X %2X %2X ",rtc_ram[4],rtc_ram[5],rtc_ram[6],rtc_ram[7],rtc_ram[8],rtc_ram[9]);
        !           182:        strcat(rtc_ram_info,buf);       
        !           183: // #define     ni_enetaddr     ni_ep
        !           184: // #define     ni_hw_passwd    ni_ep
        !           185: //     u_short ni_simm;                /* 4 SIMMs, 4 bits per SIMM */
        !           186:        sprintf(buf,"SIMM:%1X %1X %1X %1X ",rtc_ram[10]>>4,rtc_ram[10]&0x0F,rtc_ram[11]>>4,rtc_ram[11]&0x0F);
        !           187:        strcat(rtc_ram_info,buf);
        !           188: 
        !           189: 
        !           190: //     char ni_adobe[2];
        !           191:        sprintf(buf,"ADOBE:%2X %2X ",rtc_ram[12],rtc_ram[13]);
        !           192:        strcat(rtc_ram_info,buf);
        !           193: 
        !           194: //     u_char ni_pot[3];
        !           195:        sprintf(buf,"POT:%2X %2X %2X ",rtc_ram[14],rtc_ram[15],rtc_ram[16]);
        !           196:        strcat(rtc_ram_info,buf);
        !           197: 
        !           198: //     u_char  ni_new_clock_chip : 1,
        !           199: //             ni_auto_poweron : 1,
        !           200: //             ni_use_console_slot : 1,        /* Console slot was set by user. */
        !           201: //             ni_console_slot : 2,            /* Preferred console dev slot>>1 */
        !           202: //             ni_use_parity_mem : 1,  /* Use parity RAM if available? */
        !           203: //             : 2;
        !           204:        if (rtc_ram[17]&0x80) strcat(rtc_ram_info,"NEW_CLOCK_CHIP ");
        !           205:        if (rtc_ram[17]&0x40) strcat(rtc_ram_info,"AUTO_POWERON ");
        !           206:        if (rtc_ram[17]&0x20) strcat(rtc_ram_info,"CONSOLE_SLOT ");
        !           207: 
        !           208:        sprintf(buf,"console_slot:%X ",(rtc_ram[17]&0x18)>>3);
        !           209:        strcat(rtc_ram_info,buf);
        !           210: 
        !           211:        if (rtc_ram[17]&0x04) strcat(rtc_ram_info,"USE_PARITY ");
        !           212: 
        !           213: 
        !           214:        strcat(rtc_ram_info,"boot_command:");
        !           215:        for (i=0;i<12;i++) {
        !           216:                if ((rtc_ram[18+i]>=0x20) && (rtc_ram[18+i]<=0x7F)) {
        !           217:                        sprintf(buf,"%c",rtc_ram[18+i]);
        !           218:                        strcat(rtc_ram_info,buf);
        !           219:                }
        !           220:        }
        !           221: 
        !           222:        strcat(rtc_ram_info," ");
        !           223:        sprintf(buf,"CKSUM:%2X %2X ",rtc_ram[30],rtc_ram[31]);
        !           224:        strcat(rtc_ram_info,buf);
        !           225: 
        !           226: 
        !           227:        sum=0;
        !           228:        for (i=0;i<30;i+=2) {
        !           229:                sum+=(rtc_ram[i]<<8)|(rtc_ram[i+1]);
        !           230:                if (sum>=0x10000) { sum-=0x10000;
        !           231:                        sum+=1;
        !           232:                }
        !           233:        }
        !           234: 
        !           235:        sum=0xFFFF-sum;
        !           236: 
        !           237:        sprintf(buf,"CALC_CKSUM:%04X ",sum&0xFFFF);
        !           238:        strcat(rtc_ram_info,buf);
        !           239: 
        !           240: // #define     NVRAM_BOOTCMD   12
        !           241: //     char ni_bootcmd[NVRAM_BOOTCMD];
        !           242: //     u_short ni_cksum;
        !           243: // };
        !           244: 
        !           245:        return rtc_ram_info;
        !           246: }
        !           247: 
        !           248: void SCR2_Write2(void)
        !           249: {      
        !           250:        static int phase=0;
        !           251:        static Uint8 rtc_command=0;
        !           252:        static Uint8 rtc_value=0;
        !           253:        static Uint8 rtc_return=0;
        !           254:        static Uint8 rtc_status=0x90;   // FTU at startup 0x90 for MCS1850
        !           255: 
        !           256:        Uint8 old_scr2_2=scr2_2;
        !           257: //     Log_Printf(LOG_WARN,"SCR2 write at $%08x val=$%02x PC=$%08x\n", IoAccessCurrentAddress,IoMem[IoAccessCurrentAddress & IO_SEG_MASK],m68k_getpc());
        !           258:        scr2_2=IoMem[IoAccessCurrentAddress & 0x1FFFF];
        !           259: 
        !           260: /*
        !           261:        if ((old_scr2_2&SCR2_RTCE)!=(scr2_2&SCR2_RTCE))
        !           262:                Log_Printf(LOG_WARN,"SCR2 RTCE change at $%08x val=%x PC=$%08x\n",
        !           263:                           IoAccessCurrentAddress,scr2_2&SCR2_RTCE,m68k_getpc());
        !           264: 
        !           265:        if ((old_scr2_2&SCR2_RTCLK)!=(scr2_2&SCR2_RTCLK))
        !           266:                Log_Printf(LOG_WARN,"SCR2 RTCLK change at $%08x val=%x PC=$%08x\n",
        !           267:                           IoAccessCurrentAddress,scr2_2&SCR2_RTCLK,m68k_getpc());
        !           268: 
        !           269:        if ((old_scr2_2&SCR2_RTDATA)!=(scr2_2&SCR2_RTDATA))
        !           270:                Log_Printf(LOG_WARN,"SCR2 RTDATA change at $%08x val=%x PC=$%08x\n",
        !           271:                           IoAccessCurrentAddress,scr2_2&SCR2_RTDATA,m68k_getpc());
        !           272: */
        !           273: 
        !           274: // and now some primitive handling
        !           275: // treat only if CE is set to 1
        !           276:        if (scr2_2&SCR2_RTCE) {
        !           277:                        if (phase==-1) phase=0;
        !           278:                        // if we are in going down clock... do something
        !           279:                        if (((old_scr2_2&SCR2_RTCLK)!=(scr2_2&SCR2_RTCLK)) && ((scr2_2&SCR2_RTCLK)==0) ) {
        !           280:                                if (phase<8)
        !           281:                                        rtc_command=(rtc_command<<1)|((scr2_2&SCR2_RTDATA)?1:0);
        !           282:                                if ((phase>=8) && (phase<16)) {
        !           283:                                        rtc_value=(rtc_value<<1)|((scr2_2&SCR2_RTDATA)?1:0);
        !           284: 
        !           285:                                        // if we read RAM register, output RT_DATA bit
        !           286:                                        if (rtc_command<=0x1F) {
        !           287:                                                scr2_2=scr2_2&(~SCR2_RTDATA);
        !           288:                                                if (rtc_ram[rtc_command]&(0x80>>(phase-8)))
        !           289:                                                        scr2_2|=SCR2_RTDATA;
        !           290:                                                rtc_return=(rtc_return<<1)|((scr2_2&SCR2_RTDATA)?1:0);
        !           291:                                        }
        !           292:                                        // read the status 0x30
        !           293:                                        if (rtc_command==0x30) {
        !           294:                                                scr2_2=scr2_2&(~SCR2_RTDATA);
        !           295:                                                // for now status = 0x98 (new rtc + FTU)
        !           296:                                                if (rtc_status&(0x80>>(phase-8)))
        !           297:                                                        scr2_2|=SCR2_RTDATA;
        !           298:                                                rtc_return=(rtc_return<<1)|((scr2_2&SCR2_RTDATA)?1:0);
        !           299:                                        }
        !           300:                                        // read the status 0x31
        !           301:                                        if (rtc_command==0x31) {
        !           302:                                                scr2_2=scr2_2&(~SCR2_RTDATA);
        !           303:                                                // for now 0x00
        !           304:                                                if (0x00&(0x80>>(phase-8)))
        !           305:                                                        scr2_2|=SCR2_RTDATA;
        !           306:                                                rtc_return=(rtc_return<<1)|((scr2_2&SCR2_RTDATA)?1:0);
        !           307:                                        }
        !           308:                                        if ((rtc_command>=0x20) && (rtc_command<=0x2F)) {
        !           309:                                                scr2_2=scr2_2&(~SCR2_RTDATA);
        !           310:                                                // for now 0x00
        !           311:                                                if (0x00&(0x80>>(phase-8)))
        !           312:                                                        scr2_2|=SCR2_RTDATA;
        !           313:                                                rtc_return=(rtc_return<<1)|((scr2_2&SCR2_RTDATA)?1:0);
        !           314:                                        }
        !           315: 
        !           316:                                }
        !           317: 
        !           318:                                phase++;
        !           319:                                if (phase==16) {
        !           320:                                        Log_Printf(LOG_WARN,"SCR2 RTC command complete %x %x %x at PC=$%08x\n",
        !           321:                                                        rtc_command,rtc_value,rtc_return,m68k_getpc());
        !           322:                                        if ((rtc_command>=0x80) && (rtc_command<=0x9F))
        !           323:                                                rtc_ram[rtc_command-0x80]=rtc_value;
        !           324: 
        !           325:                                        // write to x30 register
        !           326:                                        if (rtc_command==0xB1) {
        !           327:                                                // clear FTU
        !           328:                                                if (rtc_value & 0x04) {
        !           329:                                                        rtc_status=rtc_status&(~0x18);
        !           330:                                                        intStat=intStat&(~0x04);
        !           331:                                                }
        !           332:                                        }
        !           333:                                }
        !           334:                        }
        !           335:        } else {
        !           336: // else end or abort
        !           337:                phase=-1;
        !           338:                rtc_command=0;
        !           339:                rtc_value=0;
        !           340:        }       
        !           341: 
        !           342: }
        !           343: 
        !           344: void SCR2_Read2(void)
        !           345: {
        !           346: //     Log_Printf(LOG_WARN,"SCR2 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !           347: //     IoMem[IoAccessCurrentAddress & 0x1FFFF]=scr2_2 & (SCR2_RTDATA|SCR2_RTCLK|SCR2_RTCE)); // + data
        !           348:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=scr2_2;
        !           349: }
        !           350: 
        !           351: void SCR2_Write3(void)
        !           352: {      
        !           353:        Uint8 old_scr2_3=scr2_3;
        !           354: //     Log_Printf(LOG_WARN,"SCR2 write at $%08x val=$%02x PC=$%08x\n", IoAccessCurrentAddress,IoMem[IoAccessCurrentAddress & IO_SEG_MASK],m68k_getpc());
        !           355:        scr2_3=IoMem[IoAccessCurrentAddress & 0x1FFFF];
        !           356:        if ((old_scr2_3&SCR2_ROM)!=(scr2_3&SCR2_ROM))
        !           357:                Log_Printf(LOG_WARN,"SCR2 ROM change at $%08x val=%x PC=$%08x\n",
        !           358:                           IoAccessCurrentAddress,scr2_3&SCR2_ROM,m68k_getpc());
        !           359:        if ((old_scr2_3&SCR2_LED)!=(scr2_3&SCR2_LED))
        !           360:                Log_Printf(LOG_WARN,"SCR2 LED change at $%08x val=%x PC=$%08x\n",
        !           361:                           IoAccessCurrentAddress,scr2_3&SCR2_LED,m68k_getpc());
        !           362: }
        !           363: 
        !           364: 
        !           365: void SCR2_Read3(void)
        !           366: {
        !           367: //     Log_Printf(LOG_WARN,"SCR2 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !           368:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=scr2_3;
        !           369: }
        !           370: 
        !           371: /*
        !           372: *
        !           373: bits 0:2 cpu speed 02 25MHz
        !           374: bits 3:4 mem speed 0 120ns
        !           375: bits 5:6 video mem speed 0 120ns
        !           376: bits 8:11 board revision 0
        !           377: bits 12:15 cpu type 30 : station non turbo rev 0
        !           378: bits 16:23 dma type 01
        !           379: bits 24:27 reserved 0
        !           380: bits 28:31 slot id 0
        !           381: 
        !           382:                        
        !           383: 0000 xxxxxxxxxx 0001  0001 xx 10 011
        !           384: 
        !           385: 00 00 11 2E
        !           386: */
        !           387: 
        !           388: 
        !           389: void SCR1_Read0(void)
        !           390: {
        !           391:        Log_Printf(LOG_WARN,"SCR1 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !           392:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=0x00; 
        !           393: }
        !           394: void SCR1_Read1(void)
        !           395: {
        !           396:        Log_Printf(LOG_WARN,"SCR1 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !           397:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=0x01; // dma rev
        !           398: }
        !           399: void SCR1_Read2(void)
        !           400: {
        !           401:        Log_Printf(LOG_WARN,"SCR1 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !           402:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=0x20; // cpu type + rev
        !           403: }
        !           404: void SCR1_Read3(void)
        !           405: {
        !           406:        Log_Printf(LOG_WARN,"SCR1 read at $%08x PC=$%08x\n", IoAccessCurrentAddress,m68k_getpc());
        !           407:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=0x02; // speed + memory
        !           408: }
        !           409: 
        !           410: void IntRegStatRead(void) {
        !           411:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=intStat;
        !           412: }
        !           413: 
        !           414: void IntRegStatWrite(void) {
        !           415:        intStat=IoMem[IoAccessCurrentAddress & 0x1FFFF];
        !           416: }
        !           417: 
        !           418: void IntRegMaskRead(void) {
        !           419:        IoMem[IoAccessCurrentAddress & 0x1FFFF]=intMask;
        !           420: }
        !           421: 
        !           422: void IntRegMaskWrite(void) {
        !           423:        intMask=IoMem[IoAccessCurrentAddress & 0x1FFFF];
        !           424: }
        !           425: 
        !           426: 
        !           427: /*-----------------------------------------------------------------------*/
        !           428: /*
        !           429:   List of functions to handle read/write hardware interceptions.
        !           430: */
        !           431: const INTERCEPT_ACCESS_FUNC IoMemTable_NEXT[] =
        !           432: {
        !           433:        { 0x02000150, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterceptionButTrace },
        !           434:        { 0x02004150, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           435:        { 0x02004154, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           436:        { 0x02004158, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           437:        { 0x0200415c, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           438:        { 0x02004188, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           439:        { 0x02006000, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           440:        { 0x02006001, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           441:        { 0x02006002, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           442:        { 0x02006003, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           443:        { 0x02006004, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           444:        { 0x02006005, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           445:        { 0x02006006, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           446:        { 0x02006008, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           447:        { 0x02006009, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           448:        { 0x0200600a, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           449:        { 0x0200600b, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           450:        { 0x0200600a, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           451:        { 0x0200600b, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           452:        { 0x0200600c, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           453:        { 0x0200600d, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           454:        { 0x0200600e, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           455:        { 0x0200600f, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           456:        { 0x02006010, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           457:        { 0x02006011, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           458:        { 0x02006012, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           459:        { 0x02006013, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           460:        { 0x02006014, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           461:        { 0x02007000, SIZE_LONG, IntRegStatRead, IntRegStatWrite },
        !           462:        { 0x02007800, SIZE_BYTE, IntRegMaskRead, IntRegMaskWrite },
        !           463:        { 0x0200c000, SIZE_BYTE, SCR1_Read0, IoMem_WriteWithoutInterceptionButTrace },
        !           464:        { 0x0200c001, SIZE_BYTE, SCR1_Read1, IoMem_WriteWithoutInterceptionButTrace },
        !           465:        { 0x0200c002, SIZE_BYTE, SCR1_Read2, IoMem_WriteWithoutInterceptionButTrace },
        !           466:        { 0x0200c003, SIZE_BYTE, SCR1_Read3, IoMem_WriteWithoutInterceptionButTrace },
        !           467:        { 0x0200c800, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           468:        { 0x0200d000, SIZE_BYTE, SCR2_Read0, SCR2_Write0 },
        !           469:        { 0x0200d001, SIZE_BYTE, SCR2_Read1, SCR2_Write1 },
        !           470:        { 0x0200d002, SIZE_BYTE, SCR2_Read2, SCR2_Write2 },
        !           471:        { 0x0200d003, SIZE_BYTE, SCR2_Read3, SCR2_Write3 },
        !           472:        { 0x0200e001, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           473:        { 0x0200e002, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           474:        { 0x0200e003, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           475:        { 0x0200e004, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           476:        { 0x0200e005, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           477:        { 0x0200e006, SIZE_BYTE, IoMem_ReadWithoutInterception, IoMem_WriteWithoutInterception },
        !           478:        { 0x02010000, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           479:        { 0x02012004, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           480:        { 0x02012005, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           481:        { 0x02012007, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           482:        { 0x02014003, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           483:        { 0x02018000, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           484:        { 0x02018001, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           485:        { 0x02018004, SIZE_BYTE, IoMem_ReadWithoutInterceptionButTrace, IoMem_WriteWithoutInterceptionButTrace },
        !           486:        { 0, 0, NULL, NULL }
        !           487: };

unix.superglobalmegacorp.com

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