static int spunchout_prot_r( int offset ) { switch ( offset ) { case 0x00: if ( prot_mode_sel == 0x0a ) return cpu_readmem16(0xd012); if ( prot_mode_sel == 0x0b || prot_mode_sel == 0x23 ) return cpu_readmem16(0xd7c1); return prot_mem[offset]; break; case 0x01: if ( prot_mode_sel == 0x08 ) /* PC = 0x0b6a */ return 0x00; /* under 6 */ break; case 0x02: if ( prot_mode_sel == 0x0b ) /* PC = 0x0613 */ return 0x09; /* write "JMP (HL)"code to 0d79fh */ if ( prot_mode_sel == 0x09 ) /* PC = 0x20f9, 0x22d9 */ return prot_mem[offset]; /* act as registers */ break; case 0x03: if ( prot_mode_sel == 0x09 ) /* PC = 0x1e4c */ return prot_mem[offset] & 0x07; /* act as registers with mask */ break; case 0x05: if ( prot_mode_sel == 0x09 ) /* PC = 0x29D1 */ return prot_mem[offset] & 0x03; /* AND 0FH -> AND 06H */ break; case 0x06: if ( prot_mode_sel == 0x0b ) /* PC = 0x2dd8 */ return 0x0a; /* E=00, HL=23E6, D = (ret and 0x0f), HL+DE = 2de6 */ if ( prot_mode_sel == 0x09 ) /* PC = 0x2289 */ return prot_mem[offset] & 0x07; /* act as registers with mask */ break; case 0x09: if ( prot_mode_sel == 0x09 ) /* PC = 0x0313 */ return ( prot_mem[15] << 4 ); /* pipe through register 0xf7 << 4 */ /* (ret or 0x10) -> (D7DF),(D7A0) - (D7DF),(D7A0) = 0d0h(ret nc) */ break; case 0x0a: if ( prot_mode_sel == 0x0b ) /* PC = 0x060a */ return 0x05; /* write "JMP (IX)"code to 0d79eh */ if ( prot_mode_sel == 0x09 ) /* PC = 0x1bd7 */ return prot_mem[offset] & 0x01; /* AND 0FH -> AND 01H */ break; case 0x0b: if ( prot_mode_sel == 0x09 ) /* PC = 0x2AA3 */ return prot_mem[11] & 0x03; /* AND 0FH -> AND 03H */ break; case 0x0c: /* PC = 0x2162 */ /* B = 0(return value) */ return 0x00; case 0x0d: return prot_mode_sel; break; } if ( errorlog ) fprintf( errorlog, "Read from unknown protection? port %02x ( selector = %02x )\n", offset, prot_mode_sel ); return prot_mem[offset]; }
static UINT8 RM(UINT32 a) { return cpu_readmem16(a); }
static INLINE UINT8 READ_BYTE(UINT16 adr) { return cpu_readmem16(adr); }