/**
 * Instances of this class are file registers of PICs.
 * <BR>You can read the source of this class <A HREF="./FileRegisters.java.html"> here</A>.
 */
public class FileRegisters {

	/**
	 * Creates RAM and SystemRegisters included into the FileRegisters.
	 */
	public FileRegisters() {
		PicRam = new RAM();
		PicSyst = new SystemRegisters();
	}

	/**
	 * Returns byte at address address.
	 * @param address Address to read byte from.
	 */
	public int Read(int address) {
		if(address >= 0x0C)
			return PicRam.Read(address - 0x0C);
		else
			return PicSyst.Read(address);
	}

	/**
	 * Writes byte n at address address.
	 * @param address Address to write byte to.
	 * @param n Byte to write.
	 */
	public void Write(int address, int n) {
		if(address >= 0x0C)
			PicRam.Write(address - 0x0C, n);
		else
			PicSyst.Write(address, n);
	}

	/**
	 * Returns byte at address address in banl Bank.
	 * @param address Address to read byte from.
	 * @param Bank Bank to read byte from.
	 */
	public int Read(int address, int Bank) {
		if(address >= 0x0C)
			return PicRam.Read(address - 0x0C);
		else
			return PicSyst.Read(address, Bank);
	}

	/**
	 * Writes byte n at address address in bank Bank.
	 * @param address Address to write byte to.
	 * @param n Byte to write.
	 * @param Bank Bank to write to.
	 */
	public void Write(int address, int n, int Bank) {
		if(address >= 0x0C)
			PicRam.Write(address - 0x0C, n);
		else
			PicSyst.Write(address, n, Bank);
	}

	protected RAM PicRam;
	protected SystemRegisters PicSyst;
}