protected void initialise() {
		this.memory = new MemSpace((int) Math.pow(2.0D, this.addrBits));

		for (int i = 0; i < this.addrBits; i++) {
			String name = "A" + i;
			this.pins.add(new InputPin(this.cntlBits + 1 + i, name));
		}

		if (this.dataBits - (this.addrBits + this.cntlBits) == 0) {
			this.pins.add(new PowerPin(this.addrBits + this.cntlBits + 1, "GND"));
			this.pins.add(new PowerPin(this.addrBits + this.cntlBits + 1 + this.dataBits + 1, "VCC"));
		} else if (this.dataBits - (this.addrBits + this.cntlBits) > 0) {
			for (int i = 0; i < this.dataBits - (this.addrBits + this.cntlBits); i++) {
				this.pins.add(new NotConnectedPin(i + this.addrBits + this.cntlBits + 1, "NC"));
			}

			for (int i = 0; i < this.dataBits; i++) {
				String name = "D" + i;
				this.pins.add(new InputOutputPin(this.addrBits + this.dataBits - (this.addrBits + this.cntlBits) + this.cntlBits + 2 + i, name));
			}

			this.pins.add(new PowerPin(this.addrBits + this.dataBits - (this.addrBits + this.cntlBits) + this.cntlBits + 1, "GND"));
			this.pins.add(new PowerPin(this.addrBits + this.dataBits - (this.addrBits + this.cntlBits) + this.cntlBits + 1 + this.dataBits + 1, "VCC"));
		} else {
			for (int i = 0; i < this.dataBits; i++) {
				String name = "D" + i;
				this.pins.add(new InputOutputPin(this.addrBits + this.cntlBits + 2 + i, name));
			}

			for (int i = 0; i < this.addrBits + this.cntlBits - this.dataBits; i++) {
				this.pins.add(new NotConnectedPin(i + this.addrBits + this.dataBits + this.cntlBits + 2, "NC"));
			}

			this.pins.add(new PowerPin(this.addrBits + this.cntlBits + 1, "GND"));
			this.pins.add(new PowerPin(this.addrBits + this.addrBits + this.cntlBits - this.dataBits + this.cntlBits + 1 + this.dataBits + 1, "VCC"));
		}
	}