public static ReadHandlerPtr spunchout_prot_r = new ReadHandlerPtr() { public int handler(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!=null )
			fprintf( errorlog, "Read from unknown protection? port %02x ( selector = %02x )\n", offset, prot_mode_sel );
	
		return prot_mem[offset];
	}}