From d1a05aeb2b9b0f46d2afb3dd611034a92db43c76 Mon Sep 17 00:00:00 2001 From: Max840 Date: Mon, 23 Dec 2013 23:31:51 -0500 Subject: [PATCH] Devices use start/end address --- .../java/com/loomcom/symon/Simulator.java | 8 ++++---- .../java/com/loomcom/symon/devices/Acia.java | 2 +- .../com/loomcom/symon/devices/Device.java | 8 ++++---- .../com/loomcom/symon/devices/Memory.java | 20 +++++++++---------- .../java/com/loomcom/symon/devices/Via.java | 2 +- 5 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/loomcom/symon/Simulator.java b/src/main/java/com/loomcom/symon/Simulator.java index 3f5022d..41e09f1 100644 --- a/src/main/java/com/loomcom/symon/Simulator.java +++ b/src/main/java/com/loomcom/symon/Simulator.java @@ -152,7 +152,7 @@ public class Simulator { this.via = new Via(VIA_BASE); this.bus = new Bus(BUS_BOTTOM, BUS_TOP); this.cpu = new Cpu(); - this.ram = new Memory(MEMORY_BASE, MEMORY_SIZE, false); + this.ram = new Memory(MEMORY_BASE, MEMORY_BASE + MEMORY_SIZE - 1, false); bus.addCpu(cpu); bus.addDevice(ram); @@ -163,11 +163,11 @@ public class Simulator { File romImage = new File("rom.bin"); if (romImage.canRead()) { logger.info("Loading ROM image from file " + romImage); - this.rom = Memory.makeROM(ROM_BASE, ROM_SIZE, romImage); + this.rom = Memory.makeROM(ROM_BASE, ROM_BASE + ROM_SIZE - 1, romImage); } else { logger.info("Default ROM file " + romImage + " not found, loading empty R/W memory image."); - this.rom = Memory.makeRAM(ROM_BASE, ROM_SIZE); + this.rom = Memory.makeRAM(ROM_BASE, ROM_BASE + ROM_SIZE - 1); } bus.addDevice(rom); } @@ -568,7 +568,7 @@ public class Simulator { bus.removeDevice(rom); } // Load the new ROM image - rom = Memory.makeROM(ROM_BASE, ROM_SIZE, romFile); + rom = Memory.makeROM(ROM_BASE, ROM_BASE + ROM_SIZE - 1, romFile); bus.addDevice(rom); // Now, reset diff --git a/src/main/java/com/loomcom/symon/devices/Acia.java b/src/main/java/com/loomcom/symon/devices/Acia.java index c51f43d..95e624a 100644 --- a/src/main/java/com/loomcom/symon/devices/Acia.java +++ b/src/main/java/com/loomcom/symon/devices/Acia.java @@ -75,7 +75,7 @@ public class Acia extends Device { private boolean txEmpty = true; public Acia(int address) throws MemoryRangeException { - super(address, ACIA_SIZE, "ACIA"); + super(address, address + ACIA_SIZE - 1, "ACIA"); this.baseAddress = address; } diff --git a/src/main/java/com/loomcom/symon/devices/Device.java b/src/main/java/com/loomcom/symon/devices/Device.java index 7e995da..7ded396 100644 --- a/src/main/java/com/loomcom/symon/devices/Device.java +++ b/src/main/java/com/loomcom/symon/devices/Device.java @@ -41,14 +41,14 @@ public abstract class Device implements Comparable { /** Reference to the bus where this Device is attached. */ private Bus bus; - public Device(int address, int size, String name) + public Device(int startAddress, int endAddress, String name) throws MemoryRangeException { - this.memoryRange = new MemoryRange(address, address + size - 1); + this.memoryRange = new MemoryRange(startAddress, endAddress); this.name = name; } - public Device(int address, int size) throws MemoryRangeException { - this(address, size, null); + public Device(int startAddress, int endAddress) throws MemoryRangeException { + this(startAddress, endAddress, null); } /* Methods required to be implemented by inheriting classes. */ diff --git a/src/main/java/com/loomcom/symon/devices/Memory.java b/src/main/java/com/loomcom/symon/devices/Memory.java index 8272652..f62b558 100644 --- a/src/main/java/com/loomcom/symon/devices/Memory.java +++ b/src/main/java/com/loomcom/symon/devices/Memory.java @@ -38,26 +38,26 @@ public class Memory extends Device { /* Initialize all locations to 0x00 (BRK) */ private static final int DEFAULT_FILL = 0x00; - public Memory(int address, int size, boolean readOnly) + public Memory(int startAddress, int endAddress, boolean readOnly) throws MemoryRangeException { - super(address, size, (readOnly ? "RO Memory" : "RW Memory")); + super(startAddress, endAddress, (readOnly ? "RO Memory" : "RW Memory")); this.readOnly = readOnly; - this.mem = new int[size]; + this.mem = new int[endAddress - startAddress + 1]; this.fill(DEFAULT_FILL); } - public Memory(int address, int size) throws MemoryRangeException { - this(address, size, false); + public Memory(int startAddress, int endAddress) throws MemoryRangeException { + this(startAddress, endAddress, false); } - public static Memory makeROM(int address, int size, File f) throws MemoryRangeException, IOException { - Memory memory = new Memory(address, size, true); + public static Memory makeROM(int startAddress, int endAddress, File f) throws MemoryRangeException, IOException { + Memory memory = new Memory(startAddress, endAddress, true); memory.loadFromFile(f); return memory; } - public static Memory makeRAM(int address, int size) throws MemoryRangeException { - Memory memory = new Memory(address, size, false); + public static Memory makeRAM(int startAddress, int endAddress) throws MemoryRangeException { + Memory memory = new Memory(startAddress, endAddress, false); return memory; } @@ -109,4 +109,4 @@ public class Memory extends Device { return "Memory: " + getMemoryRange().toString(); } -} \ No newline at end of file +} diff --git a/src/main/java/com/loomcom/symon/devices/Via.java b/src/main/java/com/loomcom/symon/devices/Via.java index b1013cb..7209535 100644 --- a/src/main/java/com/loomcom/symon/devices/Via.java +++ b/src/main/java/com/loomcom/symon/devices/Via.java @@ -47,7 +47,7 @@ public class Via extends Device { private static final int ORA_H = 15; public Via(int address) throws MemoryRangeException { - super(address, VIA_SIZE, "VIA"); + super(address, address + VIA_SIZE - 1, "VIA"); } @Override