From a290327a3e9c5f48549bb89df368c9fb3606daaf Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Thu, 4 Mar 2021 09:23:20 +1000 Subject: [PATCH] created HeaderFormatter --- .../applefile/ApplesoftBasicProgram.java | 14 +++------- .../diskbrowser/applefile/BasicFormatter.java | 15 ++--------- .../applefile/DebugBasicFormatter.java | 4 +++ .../applefile/HeaderFormatter.java | 26 +++++++++++++++++++ 4 files changed, 35 insertions(+), 24 deletions(-) create mode 100644 src/com/bytezone/diskbrowser/applefile/HeaderFormatter.java diff --git a/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java b/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java index 75785ae..19fe5e9 100644 --- a/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java +++ b/src/com/bytezone/diskbrowser/applefile/ApplesoftBasicProgram.java @@ -16,6 +16,7 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons private AppleBasicFormatter appleBasicFormatter; private DebugBasicFormatter debugBasicFormatter; private XrefFormatter xrefFormatter; + private HeaderFormatter headerFormatter; // ---------------------------------------------------------------------------------// public ApplesoftBasicProgram (String name, byte[] buffer) @@ -38,6 +39,7 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons appleBasicFormatter = new AppleBasicFormatter (this, basicPreferences); debugBasicFormatter = new DebugBasicFormatter (this, basicPreferences); xrefFormatter = new XrefFormatter (this, basicPreferences); + headerFormatter = new HeaderFormatter (this, basicPreferences); } // ---------------------------------------------------------------------------------// @@ -48,7 +50,7 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons StringBuilder text = new StringBuilder (); if (basicPreferences.showHeader) - addHeader (text); + headerFormatter.format (text); if (showDebugText) { @@ -93,14 +95,4 @@ public class ApplesoftBasicProgram extends BasicProgram implements ApplesoftCons { return endPtr; } - - // ---------------------------------------------------------------------------------// - private void addHeader (StringBuilder pgm) - // ---------------------------------------------------------------------------------// - { - pgm.append ("Name : " + name + "\n"); - pgm.append (String.format ("Length : $%04X (%<,d)%n", buffer.length)); - pgm.append (String.format ("Load at : $%04X (%<,d)%n%n", - BasicFormatter.getLoadAddress (buffer))); - } } \ No newline at end of file diff --git a/src/com/bytezone/diskbrowser/applefile/BasicFormatter.java b/src/com/bytezone/diskbrowser/applefile/BasicFormatter.java index 8a24081..30480be 100644 --- a/src/com/bytezone/diskbrowser/applefile/BasicFormatter.java +++ b/src/com/bytezone/diskbrowser/applefile/BasicFormatter.java @@ -16,7 +16,6 @@ public abstract class BasicFormatter implements ApplesoftConstants BasicPreferences basicPreferences; byte[] buffer; List sourceLines; - int endPtr; // ---------------------------------------------------------------------------------// public BasicFormatter (ApplesoftBasicProgram program, BasicPreferences basicPreferences) @@ -26,7 +25,6 @@ public abstract class BasicFormatter implements ApplesoftConstants this.basicPreferences = basicPreferences; this.buffer = program.getBuffer (); this.sourceLines = program.getSourceLines (); - this.endPtr = program.getEndPtr (); } // ---------------------------------------------------------------------------------// @@ -37,20 +35,11 @@ public abstract class BasicFormatter implements ApplesoftConstants int getLoadAddress () // ---------------------------------------------------------------------------------// { - // return program.getLoadAddress (); - return getLoadAddress (buffer); + return (buffer.length > 1) ? unsignedShort (buffer, 0) - getLineLength (0) : 0; } // ---------------------------------------------------------------------------------// - static int getLoadAddress (byte[] buffer) - // ---------------------------------------------------------------------------------// - { - return (buffer.length > 1) ? unsignedShort (buffer, 0) - getLineLength (buffer, 0) - : 0; - } - - // ---------------------------------------------------------------------------------// - private static int getLineLength (byte[] buffer, int ptr) + private int getLineLength (int ptr) // ---------------------------------------------------------------------------------// { int linkField = unsignedShort (buffer, ptr); diff --git a/src/com/bytezone/diskbrowser/applefile/DebugBasicFormatter.java b/src/com/bytezone/diskbrowser/applefile/DebugBasicFormatter.java index d114f19..bb795f6 100644 --- a/src/com/bytezone/diskbrowser/applefile/DebugBasicFormatter.java +++ b/src/com/bytezone/diskbrowser/applefile/DebugBasicFormatter.java @@ -11,12 +11,16 @@ import com.bytezone.diskbrowser.utilities.HexFormatter; public class DebugBasicFormatter extends BasicFormatter // -----------------------------------------------------------------------------------// { + int endPtr; + // ---------------------------------------------------------------------------------// public DebugBasicFormatter (ApplesoftBasicProgram program, BasicPreferences basicPreferences) // ---------------------------------------------------------------------------------// { super (program, basicPreferences); + + endPtr = program.getEndPtr (); } // ---------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/applefile/HeaderFormatter.java b/src/com/bytezone/diskbrowser/applefile/HeaderFormatter.java new file mode 100644 index 0000000..ff3a084 --- /dev/null +++ b/src/com/bytezone/diskbrowser/applefile/HeaderFormatter.java @@ -0,0 +1,26 @@ +package com.bytezone.diskbrowser.applefile; + +import com.bytezone.diskbrowser.gui.BasicPreferences; + +// -----------------------------------------------------------------------------------// +public class HeaderFormatter extends BasicFormatter +// -----------------------------------------------------------------------------------// +{ + // ---------------------------------------------------------------------------------// + public HeaderFormatter (ApplesoftBasicProgram program, + BasicPreferences basicPreferences) + // ---------------------------------------------------------------------------------// + { + super (program, basicPreferences); + } + + // ---------------------------------------------------------------------------------// + @Override + public void format (StringBuilder fullText) + // ---------------------------------------------------------------------------------// + { + fullText.append ("Name : " + program.name + "\n"); + fullText.append (String.format ("Length : $%04X (%<,d)%n", buffer.length)); + fullText.append (String.format ("Load at : $%04X (%<,d)%n%n", getLoadAddress ())); + } +}