From 4767c317d07e1b464392e8076a3c47f4a5b6311f Mon Sep 17 00:00:00 2001 From: Denis Molony Date: Fri, 30 Jul 2021 19:33:03 +1000 Subject: [PATCH] fixed bad prodos date --- src/com/bytezone/diskbrowser/applefile/CPMTextFile.java | 9 ++++++--- src/com/bytezone/diskbrowser/cpm/DirectoryEntry.java | 5 +++-- src/com/bytezone/diskbrowser/utilities/Utility.java | 5 +++++ 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/com/bytezone/diskbrowser/applefile/CPMTextFile.java b/src/com/bytezone/diskbrowser/applefile/CPMTextFile.java index 2155df0..696d96c 100644 --- a/src/com/bytezone/diskbrowser/applefile/CPMTextFile.java +++ b/src/com/bytezone/diskbrowser/applefile/CPMTextFile.java @@ -26,7 +26,10 @@ public class CPMTextFile extends TextFile { String line = getLine (ptr); 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) ++ptr; } @@ -43,8 +46,8 @@ public class CPMTextFile extends TextFile { StringBuilder line = new StringBuilder (); - int max = buffer.length - 1; - while (ptr < max && buffer[ptr] != 0x0D && buffer[ptr + 1] != 0x0A) +// int max = buffer.length - 1; + while (ptr < buffer.length && buffer[ptr] != 0x0D && buffer[ptr] != 0x0A) line.append ((char) (buffer[ptr++] & 0x7F)); return line.toString (); diff --git a/src/com/bytezone/diskbrowser/cpm/DirectoryEntry.java b/src/com/bytezone/diskbrowser/cpm/DirectoryEntry.java index 4c77c1b..a0d1634 100644 --- a/src/com/bytezone/diskbrowser/cpm/DirectoryEntry.java +++ b/src/com/bytezone/diskbrowser/cpm/DirectoryEntry.java @@ -217,8 +217,9 @@ class DirectoryEntry implements AppleFileSource appleFile = new DefaultAppleFile (name, exactBuffer, "COM File"); else if ("DVR".equals (type)) appleFile = new DefaultAppleFile (name, exactBuffer, "DVR File"); - else if ("ASM".equals (type) || "DOC".equals (type) || "TXT".equals (type) - || "LET".equals (type) || "ALX".equals (type) || "SRC".equals (type) + else if ("ASM".equals (type) || "DOC".equals (type) || "COB".equals (type) + || "HLP".equals (type) || "TXT".equals (type) || "LET".equals (type) + || "ALX".equals (type) || "SRC".equals (type) || "H".equals (type) || exactBuffer[len - 1] == 0x1A) appleFile = new CPMTextFile (name, exactBuffer); else if ("BAS".equals (type)) diff --git a/src/com/bytezone/diskbrowser/utilities/Utility.java b/src/com/bytezone/diskbrowser/utilities/Utility.java index 7d64306..b239f86 100644 --- a/src/com/bytezone/diskbrowser/utilities/Utility.java +++ b/src/com/bytezone/diskbrowser/utilities/Utility.java @@ -231,6 +231,11 @@ public final class Utility int minute = buffer[offset + 2] & 0x3F; int hour = buffer[offset + 3] & 0x1F; + if (hour > 23) + hour = 0; + if (minute > 59) + minute = 0; + if (year < 70) year += 2000; else