aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--TODO5
-rw-r--r--xexcat.c8
2 files changed, 11 insertions, 2 deletions
diff --git a/TODO b/TODO
index d656b9a..eb90d06 100644
--- a/TODO
+++ b/TODO
@@ -2,8 +2,9 @@ for now:
These may need library (xex.c) changes:
xexcat: handle run/init addresses embedded in a segment longer than
2 bytes.
-xexcat: handle or at least detect DOS 1.0 executables. currently
- xex_fread_seg_header() will warn about them, but that's all.
+xexcat: handle or at least detect DOS 1.0 executables as
+ input. currently xex_fread_seg_header() will warn about them, but that's
+ all.
xexcat: warn if an an init address occurs before the code it
references. or at least if it occurs before *any* code!
diff --git a/xexcat.c b/xexcat.c
index 3ec45c7..1b4ee01 100644
--- a/xexcat.c
+++ b/xexcat.c
@@ -237,6 +237,14 @@ int main(int argc, char **argv) {
/* normalize the $FFFF headers: only the first segment needs one.
though if the output is DOS 1.0, it's $0984 instead. */
if(count == 1) {
+ if(!seg.has_ff_header) {
+ if(seg.start_addr == 0x0984) {
+ fprintf(stderr,
+ SELF ": %s: can't handle DOS 1.0 executables as input\n"
+ " Convert this file to a regular .xex with xex1to2.\n",
+ infile);
+ }
+ }
if(dos1_output) {
seg.has_ff_header = 0;
fputc(0x84, out);