mirror of
https://github.com/dmolony/DiskBrowser.git
synced 2025-01-14 07:30:01 +00:00
header underlines
This commit is contained in:
parent
2401be0094
commit
7280ead732
@ -1,6 +1,8 @@
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public interface ApplesoftConstants
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
String[] tokens = { //
|
||||
"END ", "FOR ", "NEXT ", "DATA ", // 0x80 - 0x83
|
||||
|
@ -3,9 +3,13 @@ package com.bytezone.diskbrowser.applefile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class AssemblerBlocks
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public AssemblerBlocks (byte[] buffer, int loadAddress)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int ptr = 0;
|
||||
boolean inCode = true;
|
||||
|
@ -1,67 +1,69 @@
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
public interface AssemblerConstants
|
||||
{
|
||||
// 1A = INC A, 3A = DEC A
|
||||
String[] mnemonics = { "BRK", "ORA", "???", "???", "TSB", "ORA", "ASL", "???", // 00
|
||||
"PHP", "ORA", "ASL", "???", "TSB", "ORA", "ASL", "???", // 08
|
||||
"BPL", "ORA", "ORA", "???", "TRB", "ORA", "ASL", "???", // 10
|
||||
"CLC", "ORA", "INC", "???", "TRB", "ORA", "ASL", "???", // 18
|
||||
"JSR", "AND", "???", "???", "BIT", "AND", "ROL", "???", // 20
|
||||
"PLP", "AND", "ROL", "???", "BIT", "AND", "ROL", "???", // 28
|
||||
"BMI", "AND", "AND", "???", "BIT", "AND", "ROL", "???", // 30
|
||||
"SEC", "AND", "DEC", "???", "BIT", "AND", "ROL", "???", // 38
|
||||
"RTI", "EOR", "???", "???", "???", "EOR", "LSR", "???", // 40
|
||||
"PHA", "EOR", "LSR", "???", "JMP", "EOR", "LSR", "???", // 48
|
||||
"BVC", "EOR", "EOR", "???", "???", "EOR", "LSR", "???", // 50
|
||||
"CLI", "EOR", "PHY", "???", "???", "EOR", "LSR", "???", // 58
|
||||
"RTS", "ADC", "???", "???", "STZ", "ADC", "ROR", "???", // 60
|
||||
"PLA", "ADC", "ROR", "???", "JMP", "ADC", "ROR", "???", // 68
|
||||
"BVS", "ADC", "ADC", "???", "STZ", "ADC", "ROR", "???", // 70
|
||||
"SEI", "ADC", "PLY", "???", "JMP", "ADC", "ROR", "???", // 78
|
||||
"BRA", "STA", "???", "???", "STY", "STA", "STX", "???", // 80
|
||||
"DEY", "BIT", "TXA", "???", "STY", "STA", "STX", "???", // 88
|
||||
"BCC", "STA", "STA", "???", "STY", "STA", "STX", "???", // 90
|
||||
"TYA", "STA", "TXS", "???", "STZ", "STA", "STZ", "???", // 98
|
||||
"LDY", "LDA", "LDX", "???", "LDY", "LDA", "LDX", "???", // A0
|
||||
"TAY", "LDA", "TAX", "???", "LDY", "LDA", "LDX", "???", // A8
|
||||
"BCS", "LDA", "LDA", "???", "LDY", "LDA", "LDX", "???", // B0
|
||||
"CLV", "LDA", "TSX", "???", "LDY", "LDA", "LDX", "???", // B8
|
||||
"CPY", "CMP", "???", "???", "CPY", "CMP", "DEC", "???", // C0
|
||||
"INY", "CMP", "DEX", "???", "CPY", "CMP", "DEC", "???", // C8
|
||||
"BNE", "CMP", "CMP", "???", "???", "CMP", "DEC", "???", // D0
|
||||
"CLD", "CMP", "PHX", "???", "???", "CMP", "DEC", "???", // D8
|
||||
"CPX", "SBC", "???", "???", "CPX", "SBC", "INC", "???", // E0
|
||||
"INX", "SBC", "NOP", "???", "CPX", "SBC", "INC", "???", // E8
|
||||
"BEQ", "SBC", "SBC", "???", "???", "SBC", "INC", "???", // F0
|
||||
"SED", "SBC", "PLX", "???", "???", "SBC", "INC", "???" }; // F8
|
||||
|
||||
byte[] sizes2 = { 1, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 00 - 0F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 10 - 1F
|
||||
3, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 20 - 2F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 30 - 3F
|
||||
1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 40 - 4F
|
||||
2, 2, 2, 0, 0, 2, 2, 0, 1, 3, 1, 0, 0, 3, 3, 0, // 50 - 5F
|
||||
1, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 60 - 6F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 70 - 7F
|
||||
2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 80 - 8F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 90 - 9F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // A0 - AF
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // B0 - BF
|
||||
2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // C0 - CF
|
||||
2, 2, 2, 0, 0, 2, 2, 0, 1, 3, 1, 0, 0, 3, 3, 0, // D0 - DF
|
||||
2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // E0 - EF
|
||||
2, 2, 2, 0, 0, 2, 2, 0, 1, 3, 1, 0, 0, 3, 3, 0 }; // F0 - FF
|
||||
|
||||
byte[] sizes = { 1, 1, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2 };
|
||||
|
||||
String[] mode =
|
||||
{ "Implied", "Accumulator", "Immediate", "Absolute", "Absolute, X", "Absolute, Y",
|
||||
"(Absolute, X)", "(Absolute)", "Zero page", "Zero page, X", "Zero page, Y",
|
||||
"(Zero page, X)", "(Zero page), Y", "(Zero page)", "Relative" };
|
||||
|
||||
byte[] chip65c02 =
|
||||
{ 0x04, 0x0C, 0x12, 0x14, 0x1A, 0x1C, 0x32, 0x34, 0x3A, 0x3C, 0x52, 0x5A, 0x64,
|
||||
0x72, 0x74, 0x7A, 0x7C, (byte) 0x80, (byte) 0x89, (byte) 0x92, (byte) 0x9C,
|
||||
(byte) 0x9E, (byte) 0xB2, (byte) 0xD2, (byte) 0xDA, (byte) 0xF2, (byte) 0xFA, };
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public interface AssemblerConstants
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
// 1A = INC A, 3A = DEC A
|
||||
String[] mnemonics = { "BRK", "ORA", "???", "???", "TSB", "ORA", "ASL", "???", // 00
|
||||
"PHP", "ORA", "ASL", "???", "TSB", "ORA", "ASL", "???", // 08
|
||||
"BPL", "ORA", "ORA", "???", "TRB", "ORA", "ASL", "???", // 10
|
||||
"CLC", "ORA", "INC", "???", "TRB", "ORA", "ASL", "???", // 18
|
||||
"JSR", "AND", "???", "???", "BIT", "AND", "ROL", "???", // 20
|
||||
"PLP", "AND", "ROL", "???", "BIT", "AND", "ROL", "???", // 28
|
||||
"BMI", "AND", "AND", "???", "BIT", "AND", "ROL", "???", // 30
|
||||
"SEC", "AND", "DEC", "???", "BIT", "AND", "ROL", "???", // 38
|
||||
"RTI", "EOR", "???", "???", "???", "EOR", "LSR", "???", // 40
|
||||
"PHA", "EOR", "LSR", "???", "JMP", "EOR", "LSR", "???", // 48
|
||||
"BVC", "EOR", "EOR", "???", "???", "EOR", "LSR", "???", // 50
|
||||
"CLI", "EOR", "PHY", "???", "???", "EOR", "LSR", "???", // 58
|
||||
"RTS", "ADC", "???", "???", "STZ", "ADC", "ROR", "???", // 60
|
||||
"PLA", "ADC", "ROR", "???", "JMP", "ADC", "ROR", "???", // 68
|
||||
"BVS", "ADC", "ADC", "???", "STZ", "ADC", "ROR", "???", // 70
|
||||
"SEI", "ADC", "PLY", "???", "JMP", "ADC", "ROR", "???", // 78
|
||||
"BRA", "STA", "???", "???", "STY", "STA", "STX", "???", // 80
|
||||
"DEY", "BIT", "TXA", "???", "STY", "STA", "STX", "???", // 88
|
||||
"BCC", "STA", "STA", "???", "STY", "STA", "STX", "???", // 90
|
||||
"TYA", "STA", "TXS", "???", "STZ", "STA", "STZ", "???", // 98
|
||||
"LDY", "LDA", "LDX", "???", "LDY", "LDA", "LDX", "???", // A0
|
||||
"TAY", "LDA", "TAX", "???", "LDY", "LDA", "LDX", "???", // A8
|
||||
"BCS", "LDA", "LDA", "???", "LDY", "LDA", "LDX", "???", // B0
|
||||
"CLV", "LDA", "TSX", "???", "LDY", "LDA", "LDX", "???", // B8
|
||||
"CPY", "CMP", "???", "???", "CPY", "CMP", "DEC", "???", // C0
|
||||
"INY", "CMP", "DEX", "???", "CPY", "CMP", "DEC", "???", // C8
|
||||
"BNE", "CMP", "CMP", "???", "???", "CMP", "DEC", "???", // D0
|
||||
"CLD", "CMP", "PHX", "???", "???", "CMP", "DEC", "???", // D8
|
||||
"CPX", "SBC", "???", "???", "CPX", "SBC", "INC", "???", // E0
|
||||
"INX", "SBC", "NOP", "???", "CPX", "SBC", "INC", "???", // E8
|
||||
"BEQ", "SBC", "SBC", "???", "???", "SBC", "INC", "???", // F0
|
||||
"SED", "SBC", "PLX", "???", "???", "SBC", "INC", "???" }; // F8
|
||||
|
||||
byte[] sizes2 = { 1, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 00 - 0F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 10 - 1F
|
||||
3, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 20 - 2F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 30 - 3F
|
||||
1, 2, 0, 0, 0, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 40 - 4F
|
||||
2, 2, 2, 0, 0, 2, 2, 0, 1, 3, 1, 0, 0, 3, 3, 0, // 50 - 5F
|
||||
1, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 60 - 6F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 70 - 7F
|
||||
2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // 80 - 8F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // 90 - 9F
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // A0 - AF
|
||||
2, 2, 2, 0, 2, 2, 2, 0, 1, 3, 1, 0, 3, 3, 3, 0, // B0 - BF
|
||||
2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // C0 - CF
|
||||
2, 2, 2, 0, 0, 2, 2, 0, 1, 3, 1, 0, 0, 3, 3, 0, // D0 - DF
|
||||
2, 2, 0, 0, 2, 2, 2, 0, 1, 2, 1, 0, 3, 3, 3, 0, // E0 - EF
|
||||
2, 2, 2, 0, 0, 2, 2, 0, 1, 3, 1, 0, 0, 3, 3, 0 }; // F0 - FF
|
||||
|
||||
byte[] sizes = { 1, 1, 2, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 2, 2 };
|
||||
|
||||
String[] mode =
|
||||
{ "Implied", "Accumulator", "Immediate", "Absolute", "Absolute, X", "Absolute, Y",
|
||||
"(Absolute, X)", "(Absolute)", "Zero page", "Zero page, X", "Zero page, Y",
|
||||
"(Zero page, X)", "(Zero page), Y", "(Zero page)", "Relative" };
|
||||
|
||||
byte[] chip65c02 =
|
||||
{ 0x04, 0x0C, 0x12, 0x14, 0x1A, 0x1C, 0x32, 0x34, 0x3A, 0x3C, 0x52, 0x5A, 0x64,
|
||||
0x72, 0x74, 0x7A, 0x7C, (byte) 0x80, (byte) 0x89, (byte) 0x92, (byte) 0x9C,
|
||||
(byte) 0x9E, (byte) 0xB2, (byte) 0xD2, (byte) 0xDA, (byte) 0xF2, (byte) 0xFA, };
|
||||
}
|
@ -6,7 +6,9 @@ import java.util.Comparator;
|
||||
import com.bytezone.diskbrowser.utilities.HexFormatter;
|
||||
import com.bytezone.diskbrowser.utilities.Utility;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class AssemblerStatement
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
public byte value;
|
||||
public String mnemonic;
|
||||
@ -21,7 +23,9 @@ public class AssemblerStatement
|
||||
public boolean isTarget;
|
||||
public byte operand1, operand2;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public static void print ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
AssemblerStatement[] statements = new AssemblerStatement[256];
|
||||
System.out.println ();
|
||||
@ -67,7 +71,9 @@ public class AssemblerStatement
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public AssemblerStatement (byte opcode)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
this.value = opcode;
|
||||
this.opcode = opcode & 0xFF;
|
||||
@ -76,7 +82,9 @@ public class AssemblerStatement
|
||||
this.operand = "";
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
String getChar (byte val)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int c = val & 0xFF;
|
||||
if (c > 127)
|
||||
@ -92,7 +100,9 @@ public class AssemblerStatement
|
||||
return (char) c + "";
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addData ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
switch (opcode)
|
||||
{
|
||||
@ -142,7 +152,9 @@ public class AssemblerStatement
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addData (byte b)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
operand1 = b;
|
||||
String address = "$" + HexFormatter.format2 (b);
|
||||
@ -277,7 +289,9 @@ public class AssemblerStatement
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void addData (byte b1, byte b2)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
operand1 = b1;
|
||||
operand2 = b2;
|
||||
@ -365,8 +379,10 @@ public class AssemblerStatement
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String toString ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (offset == 0)
|
||||
return String.format ("%06X %d %3s %-10s %02X", address, size, mnemonic, operand,
|
||||
|
@ -5,7 +5,9 @@ import com.bytezone.diskbrowser.disk.Disk;
|
||||
import com.bytezone.diskbrowser.disk.DiskAddress;
|
||||
import com.bytezone.diskbrowser.utilities.HexFormatter;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class BootSector extends AbstractSector
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private static final byte[] skew = { 0x00, 0x0D, 0x0B, 0x09, 0x07, 0x05, 0x03, 0x01,
|
||||
0x0E, 0x0C, 0x0A, 0x08, 0x06, 0x04, 0x02, 0x0F };
|
||||
@ -16,20 +18,26 @@ public class BootSector extends AbstractSector
|
||||
AssemblerProgram assembler2;
|
||||
String name; // DOS or Prodos
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public BootSector (Disk disk, byte[] buffer, String name, DiskAddress diskAddress)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (disk, buffer, diskAddress);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public BootSector (Disk disk, byte[] buffer, String name)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (disk, buffer);
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String createText ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder text = new StringBuilder ();
|
||||
|
||||
@ -80,7 +88,9 @@ public class BootSector extends AbstractSector
|
||||
return text.toString ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private boolean matches (byte[] buffer, int offset, byte[] test)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (test.length == 0 || test.length > buffer.length - offset)
|
||||
return false;
|
||||
|
@ -1,24 +1,33 @@
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class ErrorMessageFile extends AbstractFile
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
String text;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public ErrorMessageFile (String name, byte[] buffer, Exception e)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (name, buffer);
|
||||
|
||||
StringBuilder text = new StringBuilder ();
|
||||
text.append ("Oops! : " + e.toString () + "\n\n");
|
||||
|
||||
for (StackTraceElement ste : e.getStackTrace ())
|
||||
text.append (ste + "\n");
|
||||
|
||||
if (text.length () > 0)
|
||||
text.deleteCharAt (text.length () - 1);
|
||||
|
||||
this.text = text.toString ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String getText ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return text;
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class ExoBufferC
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private static int PBIT_BITS_ORDER_BE = 0;
|
||||
private static int PBIT_BITS_COPY_GT_7 = 1;
|
||||
|
@ -1,11 +1,15 @@
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class FaddenHiResImage extends OriginalHiResImage
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
// https://github.com/fadden/fhpack/blob/master/fhpack.cpp
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public FaddenHiResImage (String name, byte[] buffer, int fileType, int auxType,
|
||||
int endOfFile)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (name, buffer, fileType, auxType, endOfFile);
|
||||
|
||||
|
@ -6,7 +6,9 @@ import java.util.List;
|
||||
import com.bytezone.diskbrowser.utilities.HexFormatter;
|
||||
import com.bytezone.diskbrowser.utilities.Utility;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class FileTypeDescriptorTable extends AbstractFile
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
int versionMajor;
|
||||
int versionMinor;
|
||||
@ -18,7 +20,9 @@ public class FileTypeDescriptorTable extends AbstractFile
|
||||
|
||||
private final List<IndexRecord> indexRecords = new ArrayList<> ();
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public FileTypeDescriptorTable (String name, byte[] buffer)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (name, buffer);
|
||||
|
||||
@ -38,8 +42,10 @@ public class FileTypeDescriptorTable extends AbstractFile
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String getText ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder text = new StringBuilder ("Name : " + name + "\n\n");
|
||||
text.append ("File Type Descriptor Table\n\n");
|
||||
@ -62,7 +68,9 @@ public class FileTypeDescriptorTable extends AbstractFile
|
||||
return text.toString ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
class IndexRecord
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int fileType;
|
||||
int auxType;
|
||||
|
@ -3,7 +3,9 @@ package com.bytezone.diskbrowser.applefile;
|
||||
import com.bytezone.diskbrowser.utilities.HexFormatter;
|
||||
import com.bytezone.diskbrowser.utilities.Utility;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class IntegerBasicProgram extends BasicProgram
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private static String[] tokens =
|
||||
{ "?", "?", "?", " : ", "?", "?", "?", "?", "?", "?", "?", "?", "CLR", "?", "?",
|
||||
@ -19,13 +21,17 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
"LIST ", ",", "LIST ", "POP ", "NODSP ", "NODSP ", "NOTRACE ", "DSP ", "DSP ",
|
||||
"TRACE ", "PR#", "IN#", };
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public IntegerBasicProgram (String name, byte[] buffer)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (name, buffer);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String getText ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder pgm = new StringBuilder ();
|
||||
pgm.append ("Name : " + name + "\n");
|
||||
@ -77,7 +83,9 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
return pgm.toString ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void appendAssembler (StringBuilder pgm, int ptr, int lineLength)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
for (int i = ptr + 3; i < ptr + lineLength - 1; i++)
|
||||
{
|
||||
@ -93,7 +101,9 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private boolean checkForAssembler ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int ptr = 0;
|
||||
|
||||
@ -117,7 +127,9 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
return false;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private boolean checkForSCAssembler ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (buffer.length == 0)
|
||||
{
|
||||
@ -130,7 +142,9 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
return buffer[lineLength - 1] == 0;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void appendSCAssembler (StringBuilder text, int ptr)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int lineNumber = (buffer[ptr + 2] & 0xFF) * 256 + (buffer[ptr + 1] & 0xFF);
|
||||
text.append (String.format ("%4d: ", lineNumber));
|
||||
@ -156,7 +170,9 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private void appendInteger (StringBuilder text, int ptr, int lineLength)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int lineNumber = Utility.intValue (buffer[ptr + 1], buffer[ptr + 2]);
|
||||
|
||||
@ -208,8 +224,10 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String getHexDump ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
if (false)
|
||||
return super.getHexDump ();
|
||||
@ -247,6 +265,7 @@ public class IntegerBasicProgram extends BasicProgram
|
||||
|
||||
return pgm.toString ();
|
||||
}
|
||||
|
||||
/*
|
||||
* To find integer basic in memory:
|
||||
* $CA $CB contain the starting address ($9464)
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class MerlinSource extends AbstractFile
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
int ptr;
|
||||
private static int[] tabs = { 12, 19, 35 };
|
||||
@ -10,7 +12,9 @@ public class MerlinSource extends AbstractFile
|
||||
private boolean prodosFile;
|
||||
|
||||
// Source : Prodos text file
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public MerlinSource (String name, byte[] buffer, int recordLength, int eof)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (name, buffer);
|
||||
this.eof = eof;
|
||||
@ -19,7 +23,9 @@ public class MerlinSource extends AbstractFile
|
||||
}
|
||||
|
||||
// Source : Dos binary file
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public MerlinSource (String name, byte[] buffer, int loadAddress)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
super (name, buffer);
|
||||
this.eof = 0;
|
||||
@ -27,8 +33,10 @@ public class MerlinSource extends AbstractFile
|
||||
this.loadAddress = loadAddress;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String getText ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder text = new StringBuilder ();
|
||||
|
||||
@ -53,7 +61,9 @@ public class MerlinSource extends AbstractFile
|
||||
return text.toString ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private String getLine ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
StringBuilder line = new StringBuilder ();
|
||||
boolean comment = false;
|
||||
@ -85,7 +95,9 @@ public class MerlinSource extends AbstractFile
|
||||
return line.toString ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private StringBuilder tab (StringBuilder text)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int nextTab = 0;
|
||||
for (int tab : tabs)
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.bytezone.diskbrowser.applefile;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class Palette
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
/*-
|
||||
* Michael Pohoreski - The Apple II Forever Anthology
|
||||
@ -32,24 +34,32 @@ public class Palette
|
||||
private final String name;
|
||||
private final int[] colours;
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public Palette (String name, int[] colours)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
this.name = name;
|
||||
this.colours = colours;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public String getName ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public int[] getColours ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return colours;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
@Override
|
||||
public String toString ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return String.format ("Palette: %s", name);
|
||||
}
|
||||
|
@ -3,7 +3,9 @@ package com.bytezone.diskbrowser.applefile;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
// -----------------------------------------------------------------------------------//
|
||||
public class PaletteFactory
|
||||
// -----------------------------------------------------------------------------------//
|
||||
{
|
||||
private final List<Palette> palettes = new ArrayList<> ();
|
||||
private int currentPalette;
|
||||
@ -13,7 +15,9 @@ public class PaletteFactory
|
||||
FORWARDS, BACKWARDS
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public PaletteFactory ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
palettes.add (//
|
||||
new Palette ("Virtual II", new int[] { 0x000000, // 0 black
|
||||
@ -168,7 +172,9 @@ public class PaletteFactory
|
||||
}));
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public Palette cyclePalette (CycleDirection direction)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
@ -187,28 +193,38 @@ public class PaletteFactory
|
||||
return getCurrentPalette ();
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public List<Palette> getPalettes ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return palettes;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public Palette getCurrentPalette ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return palettes.get (currentPalette);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public int getCurrentPaletteIndex ()
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return currentPalette;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setCurrentPalette (int index)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
assert index >= 0 && index < palettes.size ();
|
||||
currentPalette = index;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public void setCurrentPalette (Palette palette)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
int count = 0;
|
||||
for (Palette p : palettes)
|
||||
@ -222,12 +238,16 @@ public class PaletteFactory
|
||||
}
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
public Palette get (int index)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return palettes.get (index);
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------------//
|
||||
private int rgb (int red, int green, int blue)
|
||||
// ---------------------------------------------------------------------------------//
|
||||
{
|
||||
return red << 16 | green << 8 | blue;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user