From 903ec192e223fa723777323f340becad96992be4 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Tue, 23 Feb 2021 07:56:51 +1000 Subject: [PATCH] wrapping finished --- .../applefile/ApplesoftBasicProgram.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java b/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java index 0159c77..6e5cb47 100644 --- a/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java +++ b/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java @@ -25,9 +25,12 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons private static final String underline = "----------------------------------------------------" + "----------------------------------------------"; - private static Pattern dimPattern = + private static final Pattern dimPattern = Pattern.compile ("[A-Z][A-Z0-9]*[$%]?\\([0-9]+(,[0-9]+)*\\)[,:]?"); - private static String NEWLINE = "\n"; + private static final String NEWLINE = "\n"; + + private static final int LEFT_MARGIN = 5; + private static final int RIGHT_MARGIN = 33; private final List sourceLines = new ArrayList<> (); private final int endPtr; @@ -55,9 +58,6 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons final String formatCall; private final int maxDigits; - private final int lineWrapLeft = 5; - private final int lineWrapRight = 33; - // ---------------------------------------------------------------------------------// public ApplesoftBasicProgram (String name, byte[] buffer) // ---------------------------------------------------------------------------------// @@ -237,11 +237,17 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons private int incrementCursor (StringBuilder currentLine, int cursor, int size) // ---------------------------------------------------------------------------------// { - if ((cursor += size) >= lineWrapRight) + assert size <= 9; // longest token possible (7 plus 2 spaces) + cursor += size; + + if ((cursor) >= RIGHT_MARGIN) { - // seems to be a bug in the ROM - see line 1610 in KEY-CAT on UtilityCity.dsk - cursor = cursor < 40 ? lineWrapLeft : 0; - currentLine.append ("\n ".substring (0, cursor + 1)); + if (cursor >= 40) // already wrapped + cursor -= 40; + else + cursor = LEFT_MARGIN; + + currentLine.append ("\n ".substring (0, cursor + 1)); } return cursor;