public final byte addressRead(int addr) {
		//  if (disposed) System.out.println("oh.  dodgy cartridge");

		//  if (cartType == 0) {
		//   return (byte) (rom[addr] & 0x00FF);
		//  } else {
		if ((addr >= 0xA000) && (addr <= 0xBFFF)) {
			switch (cartType) {
			case 0x0F :
			case 0x10 :
			case 0x11 :
			case 0x12 :
			case 0x13 : {	/* MBC3 */
				if (ramBank >= 0x04) {
					//	   System.out.println("Reading RTC reg " + ramBank + " is " + RTCReg[ramBank - 0x08]);
					return (byte) RTCReg[ramBank - 0x08];
				} else {
					return ram[addr - 0xA000 + ramPageStart];
				}
			}

			default : {
				return ram[addr - 0xA000 + ramPageStart];
			}
			}
		} if (addr < 0x4000) {
			return (byte) (rom[addr]);
		} else {
			return (byte) (rom[pageStart + addr - 0x4000]);
		}
		//  }
	}