From 0b696a23798f85ad919060a4292c7c481db4ddee Mon Sep 17 00:00:00 2001 From: badvision Date: Sat, 19 Nov 2016 22:04:39 -0600 Subject: [PATCH] Added updates to PROG END pointer at $AF to better support save commands --- src/main/java/jace/applesoft/ApplesoftProgram.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/jace/applesoft/ApplesoftProgram.java b/src/main/java/jace/applesoft/ApplesoftProgram.java index 11c042d..041ece3 100755 --- a/src/main/java/jace/applesoft/ApplesoftProgram.java +++ b/src/main/java/jace/applesoft/ApplesoftProgram.java @@ -40,7 +40,8 @@ import java.util.logging.Logger; public class ApplesoftProgram { List lines = new ArrayList<>(); - public static final int startingAddressPointer = 0x067; + public static final int START_OF_PROG_POINTER = 0x067; + public static final int END_OF_PROG_POINTER = 0x0AF; public static final int VARIABLE_TABLE = 0x069; public static final int ARRAY_TABLE = 0x06b; public static final int VARIABLE_TABLE_END = 0x06d; @@ -70,7 +71,7 @@ public class ApplesoftProgram { } public static ApplesoftProgram fromMemory(RAM memory) { - int startAddress = memory.readWordRaw(startingAddressPointer); + int startAddress = memory.readWordRaw(START_OF_PROG_POINTER); int nextCheck = memory.readWordRaw(startAddress); int pos = startAddress; List bytes = new ArrayList<>(); @@ -142,7 +143,7 @@ public class ApplesoftProgram { public void run() { RAM memory = Emulator.computer.memory; Emulator.computer.pause(); - int pos = memory.readWordRaw(startingAddressPointer); + int pos = memory.readWordRaw(START_OF_PROG_POINTER); for (Line line : lines) { int nextPos = pos + line.getLength() + 1; memory.writeWord(pos, nextPos, false, true); @@ -180,5 +181,6 @@ public class ApplesoftProgram { memory.writeWord(ARRAY_TABLE, programEnd, false, true); memory.writeWord(VARIABLE_TABLE, programEnd, false, true); memory.writeWord(VARIABLE_TABLE_END, programEnd, false, true); + memory.writeWord(END_OF_PROG_POINTER, programEnd, false, true); } }