pascal hd

This commit is contained in:
Denis Molony 2019-11-09 23:23:30 +10:00
parent bca4858087
commit 85717fac5e
14 changed files with 115 additions and 283 deletions

View File

@ -1,7 +1,6 @@
package com.bytezone.diskbrowser.applefile; package com.bytezone.diskbrowser.applefile;
import java.awt.AlphaComposite; import java.awt.AlphaComposite;
import java.awt.Color;
import java.awt.Graphics2D; import java.awt.Graphics2D;
import java.awt.image.BufferedImage; import java.awt.image.BufferedImage;
import java.awt.image.DataBuffer; import java.awt.image.DataBuffer;
@ -25,44 +24,33 @@ abstract class CharacterList extends AbstractFile
List<Character> characters = new ArrayList<> (); List<Character> characters = new ArrayList<> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public CharacterList (String name, byte[] buffer, int charsX, int charsY) public CharacterList (String name, byte[] buffer)
// ---------------------------------------------------------------------------------//
{
this (name, buffer, charsX, charsY, 0);
}
// ---------------------------------------------------------------------------------//
public CharacterList (String name, byte[] buffer, int charsX, int charsY, int offset)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
super (name, buffer); super (name, buffer);
}
image = new BufferedImage ( // // ---------------------------------------------------------------------------------//
Utility.dimension (charsX, borderX, sizeX, gapX), // void buildImage (int borderX, int borderY, int gapX, int gapY, int sizeX, int sizeY,
Utility.dimension (charsY, borderY, sizeY, gapY), // int charsX)
// ---------------------------------------------------------------------------------//
{
int charsY = (characters.size () - 1) / charsX + 1;
image = new BufferedImage ( //
Utility.dimension (charsX, borderX, sizeX, gapX), //
Utility.dimension (charsY, borderY, sizeY, gapY), //
BufferedImage.TYPE_BYTE_GRAY); BufferedImage.TYPE_BYTE_GRAY);
Graphics2D g2d = image.createGraphics (); Graphics2D g2d = image.createGraphics ();
g2d.setComposite (AlphaComposite.getInstance (AlphaComposite.SRC_OVER, (float) 1.0)); g2d.setComposite (AlphaComposite.getInstance (AlphaComposite.SRC_OVER, (float) 1.0));
if (false) // show gaps around the glyphs int count = 0;
{
g2d.setColor (new Color (245, 245, 245)); // match background
g2d.fillRect (0, 0, image.getWidth (), image.getHeight ());
}
int x = borderX; int x = borderX;
int y = borderY; int y = borderY;
int count = 0;
int ptr = offset;
while (ptr < buffer.length) for (Character character : characters)
{ {
Character c = createCharacter (buffer, ptr); g2d.drawImage (character.image, x, y, null);
characters.add (c);
ptr += sizeY;
g2d.drawImage (c.image, x, y, null);
if (++count % charsX == 0) if (++count % charsX == 0)
{ {
x = borderX; x = borderX;
@ -75,10 +63,6 @@ abstract class CharacterList extends AbstractFile
g2d.dispose (); g2d.dispose ();
} }
// ---------------------------------------------------------------------------------//
abstract Character createCharacter (byte[] buffer, int ptr);
// ---------------------------------------------------------------------------------//
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@Override @Override
public String getText () public String getText ()
@ -99,7 +83,14 @@ abstract class CharacterList extends AbstractFile
class Character class Character
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
BufferedImage image = new BufferedImage (sizeX, sizeY, BufferedImage.TYPE_BYTE_GRAY); BufferedImage image;
// -------------------------------------------------------------------------------//
public Character (int sizeX, int sizeY)
// -------------------------------------------------------------------------------//
{
image = new BufferedImage (sizeX, sizeY, BufferedImage.TYPE_BYTE_GRAY);
}
// -------------------------------------------------------------------------------// // -------------------------------------------------------------------------------//
@Override @Override

View File

@ -1,8 +1,6 @@
package com.bytezone.diskbrowser.applefile; package com.bytezone.diskbrowser.applefile;
import java.awt.image.DataBuffer; import java.awt.image.DataBuffer;
import java.util.ArrayList;
import java.util.List;
import com.bytezone.diskbrowser.utilities.HexFormatter; import com.bytezone.diskbrowser.utilities.HexFormatter;
@ -12,19 +10,26 @@ public class CharacterRom extends CharacterList
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
private static final int charsX = 16; private static final int charsX = 16;
private static final int charsY = 6;
private static final int HEADER_LENGTH = 0x100; private static final int HEADER_LENGTH = 0x100;
String description; String description;
List<Character> characters = new ArrayList<> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public CharacterRom (String name, byte[] buffer) public CharacterRom (String name, byte[] buffer)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
super (name, buffer, charsX, charsY, HEADER_LENGTH); super (name, buffer);
description = HexFormatter.getCString (buffer, 16); description = HexFormatter.getCString (buffer, 16);
int ptr = HEADER_LENGTH;
while (ptr < buffer.length)
{
characters.add (new CharacterRomCharacter (buffer, ptr));
ptr += sizeY;
}
buildImage (borderX, borderY, gapX, gapY, sizeX, sizeY, charsX);
} }
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@ -41,14 +46,6 @@ public class CharacterRom extends CharacterList
&& buffer[5] == (byte) 0x07 && buffer[6] == (byte) 0x08; && buffer[5] == (byte) 0x07 && buffer[6] == (byte) 0x08;
} }
// ---------------------------------------------------------------------------------//
@Override
Character createCharacter (byte[] buffer, int ptr)
// ---------------------------------------------------------------------------------//
{
return new CharacterRomCharacter (buffer, ptr);
}
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
class CharacterRomCharacter extends Character class CharacterRomCharacter extends Character
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@ -57,6 +54,8 @@ public class CharacterRom extends CharacterList
public CharacterRomCharacter (byte[] buffer, int ptr) public CharacterRomCharacter (byte[] buffer, int ptr)
// -------------------------------------------------------------------------------// // -------------------------------------------------------------------------------//
{ {
super (sizeX, sizeY);
DataBuffer dataBuffer = image.getRaster ().getDataBuffer (); DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
int element = 0; int element = 0;

View File

@ -1,8 +1,6 @@
package com.bytezone.diskbrowser.applefile; package com.bytezone.diskbrowser.applefile;
import java.awt.image.DataBuffer; import java.awt.image.DataBuffer;
import java.util.ArrayList;
import java.util.List;
// Found on Pascal disks // Found on Pascal disks
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
@ -10,23 +8,22 @@ public class Charset extends CharacterList
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
private static final int charsX = 16; private static final int charsX = 16;
private static final int charsY = 8;
List<Character> characters = new ArrayList<> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public Charset (String name, byte[] buffer) public Charset (String name, byte[] buffer)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
super (name, buffer, charsX, charsY); super (name, buffer);
}
// ---------------------------------------------------------------------------------// int ptr = 0;
@Override
Character createCharacter (byte[] buffer, int ptr) while (ptr < buffer.length)
// ---------------------------------------------------------------------------------// {
{ characters.add (new CharsetCharacter (buffer, ptr));
return new CharsetCharacter (buffer, ptr); ptr += sizeY;
}
buildImage (borderX, borderY, gapX, gapY, sizeX, sizeY, charsX);
} }
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@ -37,6 +34,8 @@ public class Charset extends CharacterList
public CharsetCharacter (byte[] buffer, int ptr) public CharsetCharacter (byte[] buffer, int ptr)
// -------------------------------------------------------------------------------// // -------------------------------------------------------------------------------//
{ {
super (sizeX, sizeY);
DataBuffer dataBuffer = image.getRaster ().getDataBuffer (); DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
int element = 0; int element = 0;
ptr += sizeY; // start at the end and move backwards ptr += sizeY; // start at the end and move backwards

View File

@ -1,180 +0,0 @@
package com.bytezone.diskbrowser.applefile;
import java.util.ArrayList;
import java.util.List;
// Brendan Robert's code from JACE
public class Command
{
public static enum TOKEN
{
END ((byte) 0x080, "END"),
FOR ((byte) 0x081, "FOR"),
NEXT ((byte) 0x082, "NEXT"),
DATA ((byte) 0x083, "DATA"),
INPUT ((byte) 0x084, "INPUT"),
DEL ((byte) 0x085, "DEL"),
DIM ((byte) 0x086, "DIM"),
READ ((byte) 0x087, "READ"),
GR ((byte) 0x088, "GR"),
TEXT ((byte) 0x089, "TEXT"),
PR ((byte) 0x08A, "PR#"),
IN ((byte) 0x08B, "IN#"),
CALL ((byte) 0x08C, "CALL"),
PLOT ((byte) 0x08D, "PLOT"),
HLIN ((byte) 0x08E, "HLIN"),
VLIN ((byte) 0x08F, "VLIN"),
HGR2 ((byte) 0x090, "HGR2"),
HGR ((byte) 0x091, "HGR"),
HCOLOR ((byte) 0x092, "HCOLOR="),
HPLOT ((byte) 0x093, "HPLOT"),
DRAW ((byte) 0x094, "DRAW"),
XDRAW ((byte) 0x095, "XDRAW"),
HTAB ((byte) 0x096, "HTAB"),
HOME ((byte) 0x097, "HOME"),
ROT ((byte) 0x098, "ROT="),
SCALE ((byte) 0x099, "SCALE="),
SHLOAD ((byte) 0x09A, "SHLOAD"),
TRACE ((byte) 0x09B, "TRACE"),
NOTRACE ((byte) 0x09C, "NOTRACE"),
NORMAL ((byte) 0x09D, "NORMAL"),
INVERSE ((byte) 0x09E, "INVERSE"),
FLASH ((byte) 0x09F, "FLASH"),
COLOR ((byte) 0x0A0, "COLOR="),
POP ((byte) 0x0A1, "POP"),
VTAB ((byte) 0x0A2, "VTAB"),
HIMEM ((byte) 0x0A3, "HIMEM:"),
LOMEM ((byte) 0x0A4, "LOMEM:"),
ONERR ((byte) 0x0A5, "ONERR"),
RESUME ((byte) 0x0A6, "RESUME"),
RECALL ((byte) 0x0A7, "RECALL"),
STORE ((byte) 0x0A8, "STORE"),
SPEED ((byte) 0x0A9, "SPEED="),
LET ((byte) 0x0AA, "LET"),
GOTO ((byte) 0x0AB, "GOTO"),
RUN ((byte) 0x0AC, "RUN"),
IF ((byte) 0x0AD, "IF"),
RESTORE ((byte) 0x0AE, "RESTORE"),
AMPERSAND ((byte) 0x0AF, "&"),
GOSUB ((byte) 0x0B0, "GOSUB"),
RETURN ((byte) 0x0B1, "RETURN"),
REM ((byte) 0x0B2, "REM"),
STOP ((byte) 0x0B3, "STOP"),
ONGOTO ((byte) 0x0B4, "ON"),
WAIT ((byte) 0x0B5, "WAIT"),
LOAD ((byte) 0x0B6, "LOAD"),
SAVE ((byte) 0x0B7, "SAVE"),
DEF ((byte) 0x0B8, "DEF"),
POKE ((byte) 0x0B9, "POKE"),
PRINT ((byte) 0x0BA, "PRINT"),
CONT ((byte) 0x0BB, "CONT"),
LIST ((byte) 0x0BC, "LIST"),
CLEAR ((byte) 0x0BD, "CLEAR"),
GET ((byte) 0x0BE, "GET"),
NEW ((byte) 0x0BF, "NEW"),
TAB ((byte) 0x0C0, "TAB("),
TO ((byte) 0x0C1, "TO"),
FN ((byte) 0x0C2, "FN"),
SPC ((byte) 0x0c3, "SPC"),
THEN ((byte) 0x0c4, "THEN"),
AT ((byte) 0x0c5, "AT"),
NOT ((byte) 0x0c6, "NOT"),
STEP ((byte) 0x0c7, "STEP"),
PLUS ((byte) 0x0c8, "+"),
MINUS ((byte) 0x0c9, "-"),
MULTIPLY ((byte) 0x0Ca, "*"),
DIVIDE ((byte) 0x0Cb, "/"),
POWER ((byte) 0x0Cc, "^"),
AND ((byte) 0x0Cd, "AND"),
OR ((byte) 0x0Ce, "OR"),
GREATER ((byte) 0x0CF, ">"),
EQUAL ((byte) 0x0d0, "="),
LESS ((byte) 0x0d1, "<"),
SGN ((byte) 0x0D2, "SGN"),
INT ((byte) 0x0D3, "INT"),
ABS ((byte) 0x0D4, "ABS"),
USR ((byte) 0x0D5, "USR"),
FRE ((byte) 0x0D6, "FRE"),
SCREEN ((byte) 0x0D7, "SCRN("),
PDL ((byte) 0x0D8, "PDL"),
POS ((byte) 0x0D9, "POS"),
SQR ((byte) 0x0DA, "SQR"),
RND ((byte) 0x0DB, "RND"),
LOG ((byte) 0x0DC, "LOG"),
EXP ((byte) 0x0DD, "EXP"),
COS ((byte) 0x0DE, "COS"),
SIN ((byte) 0x0DF, "SIN"),
TAN ((byte) 0x0E0, "TAN"),
ATN ((byte) 0x0E1, "ATN"),
PEEK ((byte) 0x0E2, "PEEK"),
LEN ((byte) 0x0E3, "LEN"),
STR ((byte) 0x0E4, "STR$"),
VAL ((byte) 0x0E5, "VAL"),
ASC ((byte) 0x0E6, "ASC"),
CHR ((byte) 0x0E7, "CHR$"),
LEFT ((byte) 0x0E8, "LEFT$"),
RIGHT ((byte) 0x0E9, "RIGHT$"),
MID ((byte) 0x0EA, "MID$");
private final String str;
private final byte b;
TOKEN (byte b, String str)
{
this.b = b;
this.str = str;
}
@Override
public String toString ()
{
return str;
}
public static TOKEN fromByte (byte b)
{
for (TOKEN t : values ())
if (t.b == b)
return t;
return null;
}
}
public static class ByteOrToken
{
byte b;
TOKEN t;
boolean isToken = false;
public ByteOrToken (byte b)
{
TOKEN t = TOKEN.fromByte (b);
if (t != null)
{
isToken = true;
this.t = t;
}
else
{
isToken = false;
this.b = b;
}
}
@Override
public String toString ()
{
return isToken ? " " + t.toString () + " " : String.valueOf ((char) b);
}
}
List<ByteOrToken> parts = new ArrayList<ByteOrToken> ();
@Override
public String toString ()
{
String out = "";
for (ByteOrToken p : parts)
out += p.toString ();
return out;
}
}

View File

@ -1,25 +1,29 @@
package com.bytezone.diskbrowser.applefile; package com.bytezone.diskbrowser.applefile;
import java.awt.image.DataBuffer; import java.awt.image.DataBuffer;
import java.util.ArrayList;
import java.util.List;
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
public class FontFile extends CharacterList public class FontFile extends CharacterList
// -----------------------------------------------------------------------------------// // -----------------------------------------------------------------------------------//
{ {
private static final int charsX = 16; private static final int charsX = 16;
private static final int charsY = 6;
List<Character> characters = new ArrayList<Character> ();
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
public FontFile (String name, byte[] buffer, int address) public FontFile (String name, byte[] buffer, int address)
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
{ {
super (name, buffer, charsX, charsY); super (name, buffer);
loadAddress = address; loadAddress = address;
int ptr = 0;
while (ptr < buffer.length)
{
characters.add (new FontFileCharacter (buffer, ptr));
ptr += sizeY;
}
buildImage (borderX, borderY, gapX, gapY, sizeX, sizeY, charsX);
} }
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@ -34,14 +38,6 @@ public class FontFile extends CharacterList
return true; return true;
} }
// ---------------------------------------------------------------------------------//
@Override
Character createCharacter (byte[] buffer, int ptr)
// ---------------------------------------------------------------------------------//
{
return new FontFileCharacter (buffer, ptr);
}
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
class FontFileCharacter extends Character class FontFileCharacter extends Character
// ---------------------------------------------------------------------------------// // ---------------------------------------------------------------------------------//
@ -50,6 +46,8 @@ public class FontFile extends CharacterList
public FontFileCharacter (byte[] buffer, int ptr) public FontFileCharacter (byte[] buffer, int ptr)
// -------------------------------------------------------------------------------// // -------------------------------------------------------------------------------//
{ {
super (sizeX, sizeY);
DataBuffer dataBuffer = image.getRaster ().getDataBuffer (); DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
int element = 0; int element = 0;

View File

@ -5,7 +5,7 @@ import java.util.List;
public class PaletteFactory public class PaletteFactory
{ {
private final List<Palette> palettes = new ArrayList<Palette> (); private final List<Palette> palettes = new ArrayList<> ();
private int currentPalette; private int currentPalette;
public enum CycleDirection public enum CycleDirection

View File

@ -22,7 +22,7 @@ public class PascalProcedure
int codeEnd; int codeEnd;
int parmSize; int parmSize;
int dataSize; int dataSize;
List<PascalCodeStatement> statements = new ArrayList<PascalCodeStatement> (); List<PascalCodeStatement> statements = new ArrayList<> ();
AssemblerProgram assembler; AssemblerProgram assembler;
int jumpTable = -8; int jumpTable = -8;
@ -121,7 +121,7 @@ public class PascalProcedure
public List<PascalCodeStatement> extractStrings () public List<PascalCodeStatement> extractStrings ()
{ {
decode (); decode ();
List<PascalCodeStatement> strings = new ArrayList<PascalCodeStatement> (); List<PascalCodeStatement> strings = new ArrayList<> ();
for (PascalCodeStatement cs : statements) for (PascalCodeStatement cs : statements)
if (cs.val == 166) if (cs.val == 166)
strings.add (cs); strings.add (cs);

View File

@ -116,7 +116,7 @@ public class PascalSegment extends AbstractFile implements PascalConstants
private void buildProcedureList () private void buildProcedureList ()
{ {
procedures = new ArrayList<PascalProcedure> (totalProcedures); procedures = new ArrayList<> (totalProcedures);
for (int i = 1; i <= totalProcedures; i++) for (int i = 1; i <= totalProcedures; i++)
procedures.add (new PascalProcedure (buffer, i)); procedures.add (new PascalProcedure (buffer, i));

View File

@ -32,6 +32,9 @@ public class PascalText extends AbstractFile
ptr += line.length () + 1; ptr += line.length () + 1;
} }
if (text.length () > 0)
text.deleteCharAt (text.length () - 1);
return text.toString (); return text.toString ();
} }

View File

@ -11,10 +11,12 @@ import java.util.Map;
import com.bytezone.diskbrowser.prodos.ProdosConstants; import com.bytezone.diskbrowser.prodos.ProdosConstants;
import com.bytezone.diskbrowser.utilities.HexFormatter; import com.bytezone.diskbrowser.utilities.HexFormatter;
// see big red computer club folder // see IIGS System 6.0.1 - Disk 5 Fonts.po
public class QuickDrawFont extends AbstractFile // -----------------------------------------------------------------------------------//
public class QuickDrawFont extends CharacterList
// -----------------------------------------------------------------------------------//
{ {
Map<Integer, Character> characters = new HashMap<Integer, Character> (); Map<Integer, QuickDrawCharacter> qdCharacters = new HashMap<> ();
private boolean corrupt; private boolean corrupt;
private final int fileType; private final int fileType;
@ -51,7 +53,9 @@ public class QuickDrawFont extends AbstractFile
private BitSet[] strike; // bit image of all characters private BitSet[] strike; // bit image of all characters
// ---------------------------------------------------------------------------------//
public QuickDrawFont (String name, byte[] buffer, int fileType, int auxType) public QuickDrawFont (String name, byte[] buffer, int fileType, int auxType)
// ---------------------------------------------------------------------------------//
{ {
super (name, buffer); super (name, buffer);
@ -113,11 +117,14 @@ public class QuickDrawFont extends AbstractFile
createStrike (); createStrike ();
createCharacters (); createCharacters ();
if (!corrupt) // buildDisplay ();
buildDisplay (); buildImage (10, 10, 5, 5, widMax, fRectHeight,
(int) (Math.sqrt (totalCharacters) + .5));
} }
// ---------------------------------------------------------------------------------//
private void createStrike () private void createStrike ()
// ---------------------------------------------------------------------------------//
{ {
// create bitset for each row // create bitset for each row
strike = new BitSet[fRectHeight]; strike = new BitSet[fRectHeight];
@ -136,35 +143,35 @@ public class QuickDrawFont extends AbstractFile
} }
} }
// ---------------------------------------------------------------------------------//
private void createCharacters () private void createCharacters ()
// ---------------------------------------------------------------------------------//
{ {
// System.out.printf ("Total chars: %d%n", totalCharacters);
for (int i = 0, max = totalCharacters + 1; i < max; i++) for (int i = 0, max = totalCharacters + 1; i < max; i++)
{ {
// index into the strike // index into the strike
int location = HexFormatter.unsignedShort (buffer, locationTableOffset + i * 2); int location = HexFormatter.unsignedShort (buffer, locationTableOffset + i * 2);
// System.out.printf ("%3d %04X %n", i, location);
int j = i + 1; // next character int j = i + 1; // next character
if (j < max) if (j < max)
{ {
int nextLocation = int nextLocation =
HexFormatter.unsignedShort (buffer, locationTableOffset + j * 2); HexFormatter.unsignedShort (buffer, locationTableOffset + j * 2);
int pixelWidth = nextLocation - location; int pixelWidth = nextLocation - location;
// if (pixelWidth < 0)
// {
// System.out.println ("*********** Bad pixelWidth");
// corrupt = true;
// return;
// }
if (pixelWidth > 0) if (pixelWidth > 0)
characters.put (i, new Character (location, pixelWidth)); {
QuickDrawCharacter c = new QuickDrawCharacter (location, pixelWidth);
qdCharacters.put (i, c);
characters.add (c);
}
} }
} }
} }
// ---------------------------------------------------------------------------------//
private void buildDisplay () private void buildDisplay ()
// ---------------------------------------------------------------------------------//
{ {
int inset = 10; int inset = 10;
int spacing = 5; int spacing = 5;
@ -184,10 +191,10 @@ public class QuickDrawFont extends AbstractFile
for (int i = 0; i < totalCharacters + 1; i++) for (int i = 0; i < totalCharacters + 1; i++)
{ {
int pos = characters.containsKey (i) ? i : lastChar + 1; int pos = qdCharacters.containsKey (i) ? i : lastChar + 1;
Character character = characters.get (pos); QuickDrawCharacter character = qdCharacters.get (pos);
// how the character image to be drawn should be positioned with // how the character image to be drawn should be positioned with
// respect to the current pen location // respect to the current pen location
// int offset = buffer[offsetWidthTableOffset + i * 2 + 1]; // int offset = buffer[offsetWidthTableOffset + i * 2 + 1];
// how far the pen should be advanced after the character is drawn // how far the pen should be advanced after the character is drawn
@ -206,8 +213,10 @@ public class QuickDrawFont extends AbstractFile
g2d.dispose (); g2d.dispose ();
} }
// ---------------------------------------------------------------------------------//
@Override @Override
public String getText () public String getText ()
// ---------------------------------------------------------------------------------//
{ {
StringBuilder text = new StringBuilder ("Name : " + name + "\n\n"); StringBuilder text = new StringBuilder ("Name : " + name + "\n\n");
text.append ("File type : Font\n"); text.append ("File type : Font\n");
@ -260,16 +269,21 @@ public class QuickDrawFont extends AbstractFile
location, pixelWidth, offset, width)); location, pixelWidth, offset, width));
} }
// text.append (super.getText ());
return text.toString (); return text.toString ();
} }
class Character // ---------------------------------------------------------------------------------//
class QuickDrawCharacter extends Character
// ---------------------------------------------------------------------------------//
{ {
private final BufferedImage image; // -------------------------------------------------------------------------------//
public QuickDrawCharacter (int strikeOffset, int strikeWidth)
public Character (int strikeOffset, int strikeWidth) // -------------------------------------------------------------------------------//
{ {
image = new BufferedImage (strikeWidth, fRectHeight, BufferedImage.TYPE_BYTE_GRAY); super (strikeWidth, fRectHeight);
DataBuffer dataBuffer = image.getRaster ().getDataBuffer (); DataBuffer dataBuffer = image.getRaster ().getDataBuffer ();
int element = 0; int element = 0;

View File

@ -20,7 +20,7 @@ public class SHRPictureFile2 extends HiResImage
switch (fileType) switch (fileType)
{ {
case ProdosConstants.FILE_TYPE_PNT: // packed images case ProdosConstants.FILE_TYPE_PNT: // packed images
doPnt (buffer); doPnt ();
break; break;
case ProdosConstants.FILE_TYPE_PIC: // unpacked images case ProdosConstants.FILE_TYPE_PIC: // unpacked images
@ -35,7 +35,7 @@ public class SHRPictureFile2 extends HiResImage
createImage (); createImage ();
} }
private void doPnt (byte[] buffer) private void doPnt ()
{ {
switch (auxType) switch (auxType)
{ {

View File

@ -23,7 +23,7 @@ import com.bytezone.diskbrowser.utilities.HexFormatter;
public class ShapeTable extends AbstractFile public class ShapeTable extends AbstractFile
{ {
private final List<Shape> shapes = new ArrayList<Shape> (); private final List<Shape> shapes = new ArrayList<> ();
private static final int SIZE = 400; private static final int SIZE = 400;
int maxWidth = 0; int maxWidth = 0;
int maxHeight = 0; int maxHeight = 0;
@ -326,7 +326,7 @@ public class ShapeTable extends AbstractFile
private List<String> split (String line) private List<String> split (String line)
{ {
List<String> list = new ArrayList<String> (); List<String> list = new ArrayList<> ();
while (line.length () > 48) while (line.length () > 48)
{ {
list.add (line.substring (0, 47)); list.add (line.substring (0, 47));

View File

@ -159,7 +159,7 @@ public class DiskFactory
{ {
if (debug) if (debug)
System.out.println (" ** hdv **"); System.out.println (" ** hdv **");
ProdosDisk prodosDisk = checkHardDisk (file); FormattedDisk prodosDisk = checkHardDisk (file);
if (prodosDisk != null) if (prodosDisk != null)
return prodosDisk; return prodosDisk;
@ -520,7 +520,7 @@ public class DiskFactory
return null; return null;
} }
private static ProdosDisk checkHardDisk (File file) private static FormattedDisk checkHardDisk (File file)
{ {
if (debug) if (debug)
{ {
@ -555,6 +555,12 @@ public class DiskFactory
System.out.println (" --> PRODOS hard disk"); System.out.println (" --> PRODOS hard disk");
return new ProdosDisk (disk); return new ProdosDisk (disk);
} }
if (PascalDisk.isCorrectFormat (disk, debug))
{
if (debug)
System.out.println (" --> Pascal hard disk");
return new PascalDisk (disk);
}
} }
catch (Exception e) catch (Exception e)
{ {

View File

@ -382,6 +382,8 @@ class FileEntry extends CatalogEntry implements ProdosConstants
case FILE_TYPE_PNT: case FILE_TYPE_PNT:
if (auxType == 2) if (auxType == 2)
file = new SHRPictureFile1 (name, exactBuffer, fileType, auxType, endOfFile); file = new SHRPictureFile1 (name, exactBuffer, fileType, auxType, endOfFile);
else if (endOfFile < 0x222)
file = new DefaultAppleFile (name, exactBuffer);
else else
file = new SHRPictureFile2 (name, exactBuffer, fileType, auxType, endOfFile); file = new SHRPictureFile2 (name, exactBuffer, fileType, auxType, endOfFile);
break; break;