fixed bad prodos date

This commit is contained in:
Denis Molony 2021-07-30 19:33:03 +10:00
parent 068f382c87
commit 4767c317d0
3 changed files with 14 additions and 5 deletions

View File

@ -26,7 +26,10 @@ public class CPMTextFile extends TextFile
{ {
String line = getLine (ptr); String line = getLine (ptr);
text.append (line + "\n"); text.append (line + "\n");
ptr += line.length () + 2; ptr += line.length () + 1;
if (ptr < buffer.length && buffer[ptr - 1] == 0x0D && buffer[ptr] == 0x0A)
++ptr;
while (ptr < buffer.length && buffer[ptr] == 0) while (ptr < buffer.length && buffer[ptr] == 0)
++ptr; ++ptr;
} }
@ -43,8 +46,8 @@ public class CPMTextFile extends TextFile
{ {
StringBuilder line = new StringBuilder (); StringBuilder line = new StringBuilder ();
int max = buffer.length - 1; // int max = buffer.length - 1;
while (ptr < max && buffer[ptr] != 0x0D && buffer[ptr + 1] != 0x0A) while (ptr < buffer.length && buffer[ptr] != 0x0D && buffer[ptr] != 0x0A)
line.append ((char) (buffer[ptr++] & 0x7F)); line.append ((char) (buffer[ptr++] & 0x7F));
return line.toString (); return line.toString ();

View File

@ -217,8 +217,9 @@ class DirectoryEntry implements AppleFileSource
appleFile = new DefaultAppleFile (name, exactBuffer, "COM File"); appleFile = new DefaultAppleFile (name, exactBuffer, "COM File");
else if ("DVR".equals (type)) else if ("DVR".equals (type))
appleFile = new DefaultAppleFile (name, exactBuffer, "DVR File"); appleFile = new DefaultAppleFile (name, exactBuffer, "DVR File");
else if ("ASM".equals (type) || "DOC".equals (type) || "TXT".equals (type) else if ("ASM".equals (type) || "DOC".equals (type) || "COB".equals (type)
|| "LET".equals (type) || "ALX".equals (type) || "SRC".equals (type) || "HLP".equals (type) || "TXT".equals (type) || "LET".equals (type)
|| "ALX".equals (type) || "SRC".equals (type) || "H".equals (type)
|| exactBuffer[len - 1] == 0x1A) || exactBuffer[len - 1] == 0x1A)
appleFile = new CPMTextFile (name, exactBuffer); appleFile = new CPMTextFile (name, exactBuffer);
else if ("BAS".equals (type)) else if ("BAS".equals (type))

View File

@ -231,6 +231,11 @@ public final class Utility
int minute = buffer[offset + 2] & 0x3F; int minute = buffer[offset + 2] & 0x3F;
int hour = buffer[offset + 3] & 0x1F; int hour = buffer[offset + 3] & 0x1F;
if (hour > 23)
hour = 0;
if (minute > 59)
minute = 0;
if (year < 70) if (year < 70)
year += 2000; year += 2000;
else else