mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2024-11-29 11:49:29 +00:00
separate array xref
This commit is contained in:
parent
dd547ac58b
commit
0ffff61265
@ -22,6 +22,8 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
final Map<Integer, List<Integer>> gosubLines = new TreeMap<> ();
|
final Map<Integer, List<Integer>> gosubLines = new TreeMap<> ();
|
||||||
final Map<String, List<Integer>> callLines = new TreeMap<> ();
|
final Map<String, List<Integer>> callLines = new TreeMap<> ();
|
||||||
private final Map<String, List<Integer>> symbolLines = new TreeMap<> ();
|
private final Map<String, List<Integer>> symbolLines = new TreeMap<> ();
|
||||||
|
private final Map<String, List<Integer>> functionLines = new TreeMap<> ();
|
||||||
|
private final Map<String, List<Integer>> arrayLines = new TreeMap<> ();
|
||||||
private final Map<String, List<String>> uniqueSymbols = new TreeMap<> ();
|
private final Map<String, List<String>> uniqueSymbols = new TreeMap<> ();
|
||||||
|
|
||||||
final List<Integer> stringsLine = new ArrayList<> ();
|
final List<Integer> stringsLine = new ArrayList<> ();
|
||||||
@ -52,6 +54,10 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
{
|
{
|
||||||
for (String symbol : subline.getSymbols ())
|
for (String symbol : subline.getSymbols ())
|
||||||
checkVar (symbol, line.lineNumber);
|
checkVar (symbol, line.lineNumber);
|
||||||
|
for (String symbol : subline.getArrays ())
|
||||||
|
checkArray (symbol, line.lineNumber);
|
||||||
|
for (String symbol : subline.getFunctions ())
|
||||||
|
checkFunction (symbol, line.lineNumber);
|
||||||
for (int targetLine : subline.getGosubLines ())
|
for (int targetLine : subline.getGosubLines ())
|
||||||
addXref (line.lineNumber, targetLine, gosubLines);
|
addXref (line.lineNumber, targetLine, gosubLines);
|
||||||
for (int targetLine : subline.getGotoLines ())
|
for (int targetLine : subline.getGotoLines ())
|
||||||
@ -73,6 +79,7 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
lines = new ArrayList<> ();
|
lines = new ArrayList<> ();
|
||||||
symbolLines.put (var, lines);
|
symbolLines.put (var, lines);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lines.size () == 0)
|
if (lines.size () == 0)
|
||||||
lines.add (lineNumber);
|
lines.add (lineNumber);
|
||||||
else
|
else
|
||||||
@ -81,9 +88,56 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
if (lastLine != lineNumber)
|
if (lastLine != lineNumber)
|
||||||
lines.add (lineNumber);
|
lines.add (lineNumber);
|
||||||
}
|
}
|
||||||
|
|
||||||
checkUniqueName (var);
|
checkUniqueName (var);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
void checkArray (String var, int lineNumber)
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
List<Integer> lines = arrayLines.get (var);
|
||||||
|
if (lines == null)
|
||||||
|
{
|
||||||
|
lines = new ArrayList<> ();
|
||||||
|
arrayLines.put (var, lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lines.size () == 0)
|
||||||
|
lines.add (lineNumber);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int lastLine = lines.get (lines.size () - 1);
|
||||||
|
if (lastLine != lineNumber)
|
||||||
|
lines.add (lineNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
checkUniqueName (var);
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
void checkFunction (String var, int lineNumber)
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
List<Integer> lines = functionLines.get (var);
|
||||||
|
if (lines == null)
|
||||||
|
{
|
||||||
|
lines = new ArrayList<> ();
|
||||||
|
functionLines.put (var, lines);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lines.size () == 0)
|
||||||
|
lines.add (lineNumber);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
int lastLine = lines.get (lines.size () - 1);
|
||||||
|
if (lastLine != lineNumber)
|
||||||
|
lines.add (lineNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
// checkUniqueName (var);
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
private void addXref (int sourceLine, int targetLine, Map<Integer, List<Integer>> map)
|
private void addXref (int sourceLine, int targetLine, Map<Integer, List<Integer>> map)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
@ -290,34 +344,14 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
fullText.append ("\n");
|
fullText.append ("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (basicPreferences.showXref && !gosubLines.isEmpty ())
|
|
||||||
showIntegerLines (fullText, gosubLines, " GOSUB");
|
|
||||||
|
|
||||||
if (basicPreferences.showXref && !gotoLines.isEmpty ())
|
|
||||||
showIntegerLines (fullText, gotoLines, " GOTO");
|
|
||||||
|
|
||||||
if (basicPreferences.showCalls && !callLines.isEmpty ())
|
|
||||||
showStringLines (fullText, callLines, " CALL");
|
|
||||||
|
|
||||||
if (basicPreferences.showSymbols && !symbolLines.isEmpty ())
|
if (basicPreferences.showSymbols && !symbolLines.isEmpty ())
|
||||||
{
|
showSymbols (fullText, symbolLines, "Var ");
|
||||||
heading (fullText, "Symbol ");
|
|
||||||
|
|
||||||
int longestVarName = getLongestVarName ();
|
if (basicPreferences.showSymbols && !arrayLines.isEmpty ())
|
||||||
String format =
|
showSymbols (fullText, arrayLines, "Array ");
|
||||||
longestVarName > 6 ? "%-" + longestVarName + "s %s%n" : "%-6s %s%n";
|
|
||||||
|
|
||||||
for (String symbol : symbolLines.keySet ())
|
if (basicPreferences.showFunctions && !functionLines.isEmpty ())
|
||||||
{
|
showSymbols (fullText, functionLines, "Fnction");
|
||||||
String line = symbolLines.get (symbol).toString ();
|
|
||||||
line = line.substring (1, line.length () - 1);
|
|
||||||
for (String s : splitXref (line, 90, ' '))
|
|
||||||
{
|
|
||||||
fullText.append (String.format (format, symbol, s));
|
|
||||||
symbol = "";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (basicPreferences.showDuplicateSymbols && !uniqueSymbols.isEmpty ())
|
if (basicPreferences.showDuplicateSymbols && !uniqueSymbols.isEmpty ())
|
||||||
{
|
{
|
||||||
@ -347,6 +381,15 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
String.format (" %6s %s%n", stringsLine.get (i), stringsText.get (i)));
|
String.format (" %6s %s%n", stringsLine.get (i), stringsText.get (i)));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (basicPreferences.showXref && !gosubLines.isEmpty ())
|
||||||
|
showIntegerLines (fullText, gosubLines, " GOSUB");
|
||||||
|
|
||||||
|
if (basicPreferences.showXref && !gotoLines.isEmpty ())
|
||||||
|
showIntegerLines (fullText, gotoLines, " GOTO");
|
||||||
|
|
||||||
|
if (basicPreferences.showCalls && !callLines.isEmpty ())
|
||||||
|
showStringLines (fullText, callLines, " CALL");
|
||||||
|
|
||||||
if (fullText.length () > 0)
|
if (fullText.length () > 0)
|
||||||
while (fullText.charAt (fullText.length () - 1) == '\n')
|
while (fullText.charAt (fullText.length () - 1) == '\n')
|
||||||
fullText.deleteCharAt (fullText.length () - 1); // remove trailing newlines
|
fullText.deleteCharAt (fullText.length () - 1); // remove trailing newlines
|
||||||
@ -376,6 +419,7 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
heading (fullText, heading);
|
heading (fullText, heading);
|
||||||
|
|
||||||
for (Integer line : lines.keySet ())
|
for (Integer line : lines.keySet ())
|
||||||
{
|
{
|
||||||
String list = lines.get (line).toString ();
|
String list = lines.get (line).toString ();
|
||||||
@ -390,22 +434,67 @@ public class ApplesoftBasicProgram extends BasicProgram
|
|||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
heading (fullText, heading);
|
heading (fullText, heading);
|
||||||
|
|
||||||
for (String target : lines.keySet ())
|
for (String target : lines.keySet ())
|
||||||
{
|
{
|
||||||
String list = lines.get (target).toString ();
|
String line = lines.get (target).toString ();
|
||||||
list = list.substring (1, list.length () - 1);
|
// String line = numToString (lines.get (target));
|
||||||
fullText.append (String.format (" %6s %s%n", target, list));
|
line = line.substring (1, line.length () - 1);
|
||||||
|
|
||||||
|
for (String s : splitXref (line, 90, ' '))
|
||||||
|
{
|
||||||
|
fullText.append (String.format (" %6s %s%n", target, s));
|
||||||
|
target = "";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
private int getLongestVarName ()
|
private String numToString (List<Integer> numbers)
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
StringBuilder text = new StringBuilder (".");
|
||||||
|
|
||||||
|
for (int number : numbers)
|
||||||
|
text.append (String.format ("%5d, ", number));
|
||||||
|
text.deleteCharAt (text.length () - 1);
|
||||||
|
|
||||||
|
return text.toString ();
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
private void showSymbols (StringBuilder fullText, Map<String, List<Integer>> map,
|
||||||
|
String heading)
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
heading (fullText, heading);
|
||||||
|
|
||||||
|
int longestVarName = getLongestName (map);
|
||||||
|
String format = longestVarName > 7 ? "%-" + longestVarName + "s %s%n" : "%-7s %s%n";
|
||||||
|
|
||||||
|
for (String symbol : map.keySet ())
|
||||||
|
{
|
||||||
|
String line = map.get (symbol).toString ();
|
||||||
|
// String line = numToString (map.get (symbol));
|
||||||
|
line = line.substring (1, line.length () - 1);
|
||||||
|
for (String s : splitXref (line, 90, ' '))
|
||||||
|
{
|
||||||
|
fullText.append (String.format (format, symbol, s));
|
||||||
|
symbol = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
private int getLongestName (Map<String, List<Integer>> map)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
{
|
{
|
||||||
int longestName = 0;
|
int longestName = 0;
|
||||||
for (String symbol : symbolLines.keySet ())
|
|
||||||
|
for (String symbol : map.keySet ())
|
||||||
if (symbol.length () > longestName)
|
if (symbol.length () > longestName)
|
||||||
longestName = symbol.length ();
|
longestName = symbol.length ();
|
||||||
|
|
||||||
return longestName;
|
return longestName;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -54,7 +54,9 @@ public interface ApplesoftConstants
|
|||||||
static final byte TOKEN_RETURN = (byte) 0xB1;
|
static final byte TOKEN_RETURN = (byte) 0xB1;
|
||||||
static final byte TOKEN_REM = (byte) 0xB2;
|
static final byte TOKEN_REM = (byte) 0xB2;
|
||||||
static final byte TOKEN_ON = (byte) 0xB4;
|
static final byte TOKEN_ON = (byte) 0xB4;
|
||||||
|
static final byte TOKEN_DEF = (byte) 0xB8;
|
||||||
static final byte TOKEN_PRINT = (byte) 0xBA;
|
static final byte TOKEN_PRINT = (byte) 0xBA;
|
||||||
|
static final byte TOKEN_FN = (byte) 0xC2;
|
||||||
static final byte TOKEN_THEN = (byte) 0xC4;
|
static final byte TOKEN_THEN = (byte) 0xC4;
|
||||||
static final byte TOKEN_EQUALS = (byte) 0xD0;
|
static final byte TOKEN_EQUALS = (byte) 0xD0;
|
||||||
|
|
||||||
|
@ -17,11 +17,16 @@ public class SubLine
|
|||||||
String callTarget;
|
String callTarget;
|
||||||
String forVariable = "";
|
String forVariable = "";
|
||||||
int equalsPosition; // used for aligning the equals sign
|
int equalsPosition; // used for aligning the equals sign
|
||||||
|
String functionArgument;
|
||||||
|
String functionName;
|
||||||
|
boolean isDefine = false;
|
||||||
byte[] buffer;
|
byte[] buffer;
|
||||||
|
|
||||||
private final List<Integer> gotoLines = new ArrayList<> ();
|
private final List<Integer> gotoLines = new ArrayList<> ();
|
||||||
private final List<Integer> gosubLines = new ArrayList<> ();
|
private final List<Integer> gosubLines = new ArrayList<> ();
|
||||||
private final List<String> symbols = new ArrayList<> ();
|
private final List<String> symbols = new ArrayList<> ();
|
||||||
|
private final List<String> functions = new ArrayList<> ();
|
||||||
|
private final List<String> arrays = new ArrayList<> ();
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
SubLine (SourceLine parent, int startPtr, int length)
|
SubLine (SourceLine parent, int startPtr, int length)
|
||||||
@ -46,22 +51,63 @@ public class SubLine
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
int ptr = startPtr;
|
int ptr = startPtr;
|
||||||
length--;
|
|
||||||
String var = "";
|
String var = "";
|
||||||
boolean inQuote = false;
|
boolean inQuote = false;
|
||||||
|
boolean inFunction = false;
|
||||||
|
boolean inDefine = false;
|
||||||
|
|
||||||
while (length-- > 0)
|
int max = startPtr + length - 1;
|
||||||
|
// System.out.printf ("%02X%n", buffer[max]);
|
||||||
|
if (buffer[max] == 0)
|
||||||
|
--max;
|
||||||
|
// System.out.printf ("%02X%n", buffer[max]);
|
||||||
|
if (buffer[max] == Utility.ASCII_COLON)
|
||||||
|
--max;
|
||||||
|
// System.out.printf ("%02X%n", buffer[max]);
|
||||||
|
|
||||||
|
while (ptr <= max)
|
||||||
{
|
{
|
||||||
|
// System.out.printf ("%02X%n", buffer[ptr]);
|
||||||
byte b = buffer[ptr++];
|
byte b = buffer[ptr++];
|
||||||
|
|
||||||
|
if (b == ApplesoftConstants.TOKEN_DEF)
|
||||||
|
{
|
||||||
|
inDefine = true;
|
||||||
|
isDefine = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (inDefine) // ignore the name and argument
|
||||||
|
{
|
||||||
|
if (b == ApplesoftConstants.TOKEN_EQUALS)
|
||||||
|
inDefine = false;
|
||||||
|
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (inQuote && b != Utility.ASCII_QUOTE)
|
if (inQuote && b != Utility.ASCII_QUOTE)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if (inFunction && b == Utility.ASCII_RIGHT_BRACKET)
|
||||||
|
{
|
||||||
|
inFunction = false;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (b == ApplesoftConstants.TOKEN_FN)
|
||||||
|
{
|
||||||
|
inFunction = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
if (Utility.isPossibleVariable (b))
|
if (Utility.isPossibleVariable (b))
|
||||||
var += (char) b;
|
var += (char) b;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
checkVar (var, b);
|
if (inFunction)
|
||||||
|
checkFunction (var, b);
|
||||||
|
else
|
||||||
|
checkVar (var, b);
|
||||||
var = "";
|
var = "";
|
||||||
|
|
||||||
if (b == Utility.ASCII_QUOTE)
|
if (b == Utility.ASCII_QUOTE)
|
||||||
@ -71,6 +117,16 @@ public class SubLine
|
|||||||
checkVar (var, (byte) 0);
|
checkVar (var, (byte) 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
private void checkFunction (String var, byte terminator)
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
assert terminator == Utility.ASCII_LEFT_BRACKET;
|
||||||
|
// System.out.printf ("checking function: %6d %s%n", parent.lineNumber, var);
|
||||||
|
if (!functions.contains (var))
|
||||||
|
functions.add (var);
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
private void checkVar (String var, byte terminator)
|
private void checkVar (String var, byte terminator)
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
@ -78,10 +134,20 @@ public class SubLine
|
|||||||
if (var.length () == 0)
|
if (var.length () == 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (terminator == Utility.ASCII_LEFT_BRACKET)
|
if (!Utility.isLetter ((byte) var.charAt (0)))
|
||||||
var += "(";
|
return;
|
||||||
|
|
||||||
if (Utility.isLetter ((byte) var.charAt (0)) && !symbols.contains (var))
|
if (isDefine && (var.equals (functionName) || var.equals (functionArgument)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (terminator == Utility.ASCII_LEFT_BRACKET)
|
||||||
|
{
|
||||||
|
// var += "(";
|
||||||
|
if (!arrays.contains (var))
|
||||||
|
arrays.add (var);
|
||||||
|
|
||||||
|
}
|
||||||
|
else if (!symbols.contains (var))
|
||||||
symbols.add (var);
|
symbols.add (var);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -92,6 +158,20 @@ public class SubLine
|
|||||||
return symbols;
|
return symbols;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
List<String> getFunctions ()
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
return functions;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
List<String> getArrays ()
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
return arrays;
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
List<Integer> getGotoLines ()
|
List<Integer> getGotoLines ()
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
@ -175,16 +255,41 @@ public class SubLine
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case ApplesoftConstants.TOKEN_CALL:
|
case ApplesoftConstants.TOKEN_CALL:
|
||||||
byte[] buffer = getBuffer ();
|
byte[] lineBuffer = getBuffer ();
|
||||||
|
|
||||||
if (buffer[0] == (byte) 0xC9) // negative
|
if (lineBuffer[0] == (byte) 0xC9) // negative
|
||||||
callTarget = "-" + new String (buffer, 1, buffer.length - 1);
|
callTarget = "-" + new String (lineBuffer, 1, lineBuffer.length - 1);
|
||||||
else
|
else
|
||||||
callTarget = new String (buffer, 0, buffer.length);
|
callTarget = new String (lineBuffer, 0, lineBuffer.length);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ApplesoftConstants.TOKEN_DEF:
|
||||||
|
lineBuffer = getBuffer ();
|
||||||
|
assert lineBuffer[0] == ApplesoftConstants.TOKEN_FN;
|
||||||
|
|
||||||
|
int leftBracket = getPosition (lineBuffer, 1, Utility.ASCII_LEFT_BRACKET);
|
||||||
|
int rightBracket =
|
||||||
|
getPosition (lineBuffer, leftBracket + 1, Utility.ASCII_RIGHT_BRACKET);
|
||||||
|
|
||||||
|
functionName = new String (lineBuffer, 1, leftBracket - 1);
|
||||||
|
functionArgument =
|
||||||
|
new String (lineBuffer, leftBracket + 1, rightBracket - leftBracket - 1);
|
||||||
|
functions.add (functionName);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
private int getPosition (byte[] buffer, int start, byte value)
|
||||||
|
// ---------------------------------------------------------------------------------//
|
||||||
|
{
|
||||||
|
for (int i = start; i < buffer.length; i++)
|
||||||
|
if (buffer[i] == value)
|
||||||
|
return i;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
private void doDigit ()
|
private void doDigit ()
|
||||||
// ---------------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------------//
|
||||||
|
@ -18,6 +18,7 @@ public class BasicPreferences
|
|||||||
public boolean showXref = false;
|
public boolean showXref = false;
|
||||||
public boolean showCalls = false;
|
public boolean showCalls = false;
|
||||||
public boolean showSymbols = false;
|
public boolean showSymbols = false;
|
||||||
|
public boolean showFunctions = false;
|
||||||
public boolean showDuplicateSymbols = false;
|
public boolean showDuplicateSymbols = false;
|
||||||
public boolean splitDim = false;
|
public boolean splitDim = false;
|
||||||
public int wrapPrintAt = 0;
|
public int wrapPrintAt = 0;
|
||||||
@ -42,6 +43,7 @@ public class BasicPreferences
|
|||||||
text.append (String.format ("Show Xref ................ %s%n", showXref));
|
text.append (String.format ("Show Xref ................ %s%n", showXref));
|
||||||
text.append (String.format ("Show CALL ................ %s%n", showCalls));
|
text.append (String.format ("Show CALL ................ %s%n", showCalls));
|
||||||
text.append (String.format ("Show symbols ............. %s%n", showSymbols));
|
text.append (String.format ("Show symbols ............. %s%n", showSymbols));
|
||||||
|
text.append (String.format ("Show functions ........... %s%n", showFunctions));
|
||||||
text.append (String.format ("Show duplicate symbols ... %s%n", showDuplicateSymbols));
|
text.append (String.format ("Show duplicate symbols ... %s%n", showDuplicateSymbols));
|
||||||
text.append (String.format ("List strings ............. %s%n", listStrings));
|
text.append (String.format ("List strings ............. %s%n", listStrings));
|
||||||
text.append (String.format ("Blank after RETURN ....... %s%n", blankAfterReturn));
|
text.append (String.format ("Blank after RETURN ....... %s%n", blankAfterReturn));
|
||||||
|
@ -161,8 +161,8 @@ public class DiskBrowser extends JFrame implements DiskSelectionListener, QuitLi
|
|||||||
|
|
||||||
if (desktop.isSupported (Desktop.Action.APP_QUIT_HANDLER))
|
if (desktop.isSupported (Desktop.Action.APP_QUIT_HANDLER))
|
||||||
desktop.setQuitHandler ( (e, r) -> fireQuitEvent ());
|
desktop.setQuitHandler ( (e, r) -> fireQuitEvent ());
|
||||||
else
|
// else
|
||||||
setQuitHandler ();
|
setQuitHandler ();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -53,6 +53,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
private static final String PREFS_SHOW_XREF = "showXref";
|
private static final String PREFS_SHOW_XREF = "showXref";
|
||||||
private static final String PREFS_SHOW_CALLS = "showCalls";
|
private static final String PREFS_SHOW_CALLS = "showCalls";
|
||||||
private static final String PREFS_SHOW_SYMBOLS = "showSymbols";
|
private static final String PREFS_SHOW_SYMBOLS = "showSymbols";
|
||||||
|
private static final String PREFS_SHOW_FUNCTIONS = "showFunctions";
|
||||||
private static final String PREFS_SHOW_DUPLICATE_SYMBOLS = "showDuplicateSymbols";
|
private static final String PREFS_SHOW_DUPLICATE_SYMBOLS = "showDuplicateSymbols";
|
||||||
private static final String PREFS_LIST_STRINGS = "listStrings";
|
private static final String PREFS_LIST_STRINGS = "listStrings";
|
||||||
private static final String PREFS_BLANK_AFTER_RETURN = "blankAfterReturn";
|
private static final String PREFS_BLANK_AFTER_RETURN = "blankAfterReturn";
|
||||||
@ -146,6 +147,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
final JMenuItem showXrefItem = new JCheckBoxMenuItem ("List GOSUB/GOTO");
|
final JMenuItem showXrefItem = new JCheckBoxMenuItem ("List GOSUB/GOTO");
|
||||||
final JMenuItem showCallsItem = new JCheckBoxMenuItem ("List CALLs");
|
final JMenuItem showCallsItem = new JCheckBoxMenuItem ("List CALLs");
|
||||||
final JMenuItem showSymbolsItem = new JCheckBoxMenuItem ("List variables");
|
final JMenuItem showSymbolsItem = new JCheckBoxMenuItem ("List variables");
|
||||||
|
final JMenuItem showFunctionsItem = new JCheckBoxMenuItem ("List functions");
|
||||||
final JMenuItem showDuplicateSymbolsItem =
|
final JMenuItem showDuplicateSymbolsItem =
|
||||||
new JCheckBoxMenuItem ("List duplicate variables");
|
new JCheckBoxMenuItem ("List duplicate variables");
|
||||||
final JMenuItem listStringsItem = new JCheckBoxMenuItem ("List strings");
|
final JMenuItem listStringsItem = new JCheckBoxMenuItem ("List strings");
|
||||||
@ -256,6 +258,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
applesoftMenu.add (showXrefItem);
|
applesoftMenu.add (showXrefItem);
|
||||||
applesoftMenu.add (showCallsItem);
|
applesoftMenu.add (showCallsItem);
|
||||||
applesoftMenu.add (showSymbolsItem);
|
applesoftMenu.add (showSymbolsItem);
|
||||||
|
applesoftMenu.add (showFunctionsItem);
|
||||||
applesoftMenu.add (showDuplicateSymbolsItem);
|
applesoftMenu.add (showDuplicateSymbolsItem);
|
||||||
applesoftMenu.add (listStringsItem);
|
applesoftMenu.add (listStringsItem);
|
||||||
|
|
||||||
@ -319,6 +322,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
showXrefItem.addActionListener (basicPreferencesAction);
|
showXrefItem.addActionListener (basicPreferencesAction);
|
||||||
showCallsItem.addActionListener (basicPreferencesAction);
|
showCallsItem.addActionListener (basicPreferencesAction);
|
||||||
showSymbolsItem.addActionListener (basicPreferencesAction);
|
showSymbolsItem.addActionListener (basicPreferencesAction);
|
||||||
|
showFunctionsItem.addActionListener (basicPreferencesAction);
|
||||||
showDuplicateSymbolsItem.addActionListener (basicPreferencesAction);
|
showDuplicateSymbolsItem.addActionListener (basicPreferencesAction);
|
||||||
listStringsItem.addActionListener (basicPreferencesAction);
|
listStringsItem.addActionListener (basicPreferencesAction);
|
||||||
blankAfterReturn.addActionListener (basicPreferencesAction);
|
blankAfterReturn.addActionListener (basicPreferencesAction);
|
||||||
@ -371,6 +375,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
basicPreferences.showXref = showXrefItem.isSelected ();
|
basicPreferences.showXref = showXrefItem.isSelected ();
|
||||||
basicPreferences.showCalls = showCallsItem.isSelected ();
|
basicPreferences.showCalls = showCallsItem.isSelected ();
|
||||||
basicPreferences.showSymbols = showSymbolsItem.isSelected ();
|
basicPreferences.showSymbols = showSymbolsItem.isSelected ();
|
||||||
|
basicPreferences.showFunctions = showFunctionsItem.isSelected ();
|
||||||
basicPreferences.showDuplicateSymbols = showDuplicateSymbolsItem.isSelected ();
|
basicPreferences.showDuplicateSymbols = showDuplicateSymbolsItem.isSelected ();
|
||||||
basicPreferences.listStrings = listStringsItem.isSelected ();
|
basicPreferences.listStrings = listStringsItem.isSelected ();
|
||||||
basicPreferences.blankAfterReturn = blankAfterReturn.isSelected ();
|
basicPreferences.blankAfterReturn = blankAfterReturn.isSelected ();
|
||||||
@ -533,6 +538,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
prefs.putBoolean (PREFS_SHOW_XREF, showXrefItem.isSelected ());
|
prefs.putBoolean (PREFS_SHOW_XREF, showXrefItem.isSelected ());
|
||||||
prefs.putBoolean (PREFS_SHOW_CALLS, showCallsItem.isSelected ());
|
prefs.putBoolean (PREFS_SHOW_CALLS, showCallsItem.isSelected ());
|
||||||
prefs.putBoolean (PREFS_SHOW_SYMBOLS, showSymbolsItem.isSelected ());
|
prefs.putBoolean (PREFS_SHOW_SYMBOLS, showSymbolsItem.isSelected ());
|
||||||
|
prefs.putBoolean (PREFS_SHOW_FUNCTIONS, showFunctionsItem.isSelected ());
|
||||||
prefs.putBoolean (PREFS_SHOW_DUPLICATE_SYMBOLS,
|
prefs.putBoolean (PREFS_SHOW_DUPLICATE_SYMBOLS,
|
||||||
showDuplicateSymbolsItem.isSelected ());
|
showDuplicateSymbolsItem.isSelected ());
|
||||||
prefs.putBoolean (PREFS_LIST_STRINGS, listStringsItem.isSelected ());
|
prefs.putBoolean (PREFS_LIST_STRINGS, listStringsItem.isSelected ());
|
||||||
@ -589,6 +595,7 @@ class MenuHandler implements DiskSelectionListener, FileSelectionListener, QuitL
|
|||||||
showXrefItem.setSelected (prefs.getBoolean (PREFS_SHOW_XREF, false));
|
showXrefItem.setSelected (prefs.getBoolean (PREFS_SHOW_XREF, false));
|
||||||
showCallsItem.setSelected (prefs.getBoolean (PREFS_SHOW_CALLS, false));
|
showCallsItem.setSelected (prefs.getBoolean (PREFS_SHOW_CALLS, false));
|
||||||
showSymbolsItem.setSelected (prefs.getBoolean (PREFS_SHOW_SYMBOLS, false));
|
showSymbolsItem.setSelected (prefs.getBoolean (PREFS_SHOW_SYMBOLS, false));
|
||||||
|
showFunctionsItem.setSelected (prefs.getBoolean (PREFS_SHOW_FUNCTIONS, false));
|
||||||
showDuplicateSymbolsItem
|
showDuplicateSymbolsItem
|
||||||
.setSelected (prefs.getBoolean (PREFS_SHOW_DUPLICATE_SYMBOLS, false));
|
.setSelected (prefs.getBoolean (PREFS_SHOW_DUPLICATE_SYMBOLS, false));
|
||||||
listStringsItem.setSelected (prefs.getBoolean (PREFS_LIST_STRINGS, false));
|
listStringsItem.setSelected (prefs.getBoolean (PREFS_LIST_STRINGS, false));
|
||||||
|
@ -23,8 +23,10 @@ public class Utility
|
|||||||
public static final byte ASCII_DOLLAR = 0x24;
|
public static final byte ASCII_DOLLAR = 0x24;
|
||||||
public static final byte ASCII_PERCENT = 0x25;
|
public static final byte ASCII_PERCENT = 0x25;
|
||||||
public static final byte ASCII_LEFT_BRACKET = 0x28;
|
public static final byte ASCII_LEFT_BRACKET = 0x28;
|
||||||
|
public static final byte ASCII_RIGHT_BRACKET = 0x29;
|
||||||
public static final byte ASCII_COLON = 0x3A;
|
public static final byte ASCII_COLON = 0x3A;
|
||||||
public static final byte ASCII_SEMI_COLON = 0x3B;
|
public static final byte ASCII_SEMI_COLON = 0x3B;
|
||||||
|
public static final byte ASCII_EQUALS = 0x3D;
|
||||||
public static final byte ASCII_CARET = 0x5E;
|
public static final byte ASCII_CARET = 0x5E;
|
||||||
|
|
||||||
public static final List<String> suffixes = Arrays.asList ("po", "dsk", "do", "hdv",
|
public static final List<String> suffixes = Arrays.asList ("po", "dsk", "do", "hdv",
|
||||||
|
Loading…
Reference in New Issue
Block a user