From 93186f2b6d4e30e9a29126300ff38cb684cd0aa7 Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Mon, 4 Nov 2019 18:30:13 +1000 Subject: [PATCH] c string reader --- .../diskbrowser/applefile/CharacterRom.java | 9 ++++++--- src/com/bytezone/diskbrowser/gui/DiskBrowser.java | 14 +++++++------- .../diskbrowser/utilities/HexFormatter.java | 11 +++++++++++ 3 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/com/bytezone/diskbrowser/applefile/CharacterRom.java b/src/com/bytezone/diskbrowser/applefile/CharacterRom.java index 49deae3..1e39475 100644 --- a/src/com/bytezone/diskbrowser/applefile/CharacterRom.java +++ b/src/com/bytezone/diskbrowser/applefile/CharacterRom.java @@ -4,6 +4,8 @@ import java.awt.image.DataBuffer; import java.util.ArrayList; import java.util.List; +import com.bytezone.diskbrowser.utilities.HexFormatter; + // see graffidisk.v1.0.2mg // -----------------------------------------------------------------------------------// public class CharacterRom extends CharacterList @@ -22,7 +24,7 @@ public class CharacterRom extends CharacterList { super (name, buffer, charsX, charsY, HEADER_LENGTH); - description = new String (buffer, 16, 16); + description = HexFormatter.getCString (buffer, 16); assert sizeX == (buffer[5] & 0xFF); assert sizeY == (buffer[6] & 0xFF); @@ -35,10 +37,11 @@ public class CharacterRom extends CharacterList if (buffer.length != 0x400) return false; - // no idea what these mean + // see CHARROM.S on graffidisk // BD 41 53 10 A0 07 08 return buffer[0] == (byte) 0xBD && buffer[1] == (byte) 0x41 - && buffer[2] == (byte) 0x53 && buffer[3] == (byte) 0x10; + && buffer[2] == (byte) 0x53 && buffer[4] == (byte) 0xA0 + && buffer[5] == (byte) 0x07 && buffer[6] == (byte) 0x08; } // ---------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/gui/DiskBrowser.java b/src/com/bytezone/diskbrowser/gui/DiskBrowser.java index dc2dcc8..756570f 100755 --- a/src/com/bytezone/diskbrowser/gui/DiskBrowser.java +++ b/src/com/bytezone/diskbrowser/gui/DiskBrowser.java @@ -18,11 +18,11 @@ import com.bytezone.diskbrowser.duplicates.RootFolderData; public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitListener // -----------------------------------------------------------------------------------// { - static long start; - static - { - start = System.currentTimeMillis (); - } + // static long start; + // static + // { + // start = System.currentTimeMillis (); + // } private static String[] args; private static final String windowTitle = "Apple ][ Disk Browser"; private final Preferences prefs = Preferences.userNodeForPackage (this.getClass ()); @@ -38,7 +38,7 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi // ---------------------------------------------------------------------------------// { super (windowTitle); - System.out.printf ("Start Init: %,5d%n", System.currentTimeMillis () - start); + // System.out.printf ("Start Init: %,5d%n", System.currentTimeMillis () - start); if (args.length > 0 && "-reset".equals (args[0])) new WindowState (prefs).clear (); @@ -185,7 +185,7 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi // activate the highest panel now that the listeners are ready catalogPanel.activate (); - System.out.printf ("End Init : %,5d%n", System.currentTimeMillis () - start); + // System.out.printf ("End Init : %,5d%n", System.currentTimeMillis () - start); } // ---------------------------------------------------------------------------------// diff --git a/src/com/bytezone/diskbrowser/utilities/HexFormatter.java b/src/com/bytezone/diskbrowser/utilities/HexFormatter.java index f39103f..75a2739 100755 --- a/src/com/bytezone/diskbrowser/utilities/HexFormatter.java +++ b/src/com/bytezone/diskbrowser/utilities/HexFormatter.java @@ -528,4 +528,15 @@ public class HexFormatter int length = buffer[offset] & 0xFF; return HexFormatter.getString (buffer, offset + 1, length); } + + // ---------------------------------------------------------------------------------// + public static String getCString (byte[] buffer, int offset) + // ---------------------------------------------------------------------------------// + { + int end = offset; + while (buffer[end] != 0) + end++; + + return HexFormatter.getString (buffer, offset, end - offset); + } }