From 760650802f029c3058c2df24b839d7187bec6e45 Mon Sep 17 00:00:00 2001 From: 4am Date: Thu, 17 Aug 2017 15:37:10 -0400 Subject: [PATCH] patch 13-sector DLM disks that call BCF0 from 9D84 --- src/passport.a | 3 ++- src/patchers/dos32dlm.a | 25 +++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/patchers/dos32dlm.a diff --git a/src/passport.a b/src/passport.a index 27a3a0d..e57dff9 100755 --- a/src/passport.a +++ b/src/passport.a @@ -95,7 +95,7 @@ flag = $FF ; byte } ; Application constants (not zero addresses) -RELBASE = $5800 ; address to move Passport code +RELBASE = $5700 ; address to move Passport code ; so that it's out of the way LOWPOINT = $4300 ; lowest available address for code BASEPAGE = $10 ; Special Delivery tracer assumes @@ -710,6 +710,7 @@ _applyToT00 !source "patchers/pascalrwts.a" !source "patchers/micrograms.a" !source "patchers/dos32.a" + !source "patchers/dos32dlm.a" _applyToAll !source "patchers/universale7.a" !source "patchers/a6bc95.a" ; gIsPascal only diff --git a/src/patchers/dos32dlm.a b/src/patchers/dos32dlm.a new file mode 100644 index 0000000..4303a4d --- /dev/null +++ b/src/patchers/dos32dlm.a @@ -0,0 +1,25 @@ +;------------------------------- +; #DOS32DLM +; $9D84 jumps to $BCF0 to set the input vector to trap during boot +; (crashes because we don't include their custom code at $BCF0 when we +; reconstruct the bootloader) +; +; tested on +; Alien Addition (1982, DLM) +; Alligator Mix (1982, DLM) +; Dragon Mix (1982, DLM) +;------------------------------- +!zone { + lda gIsDOS32 + bne .exit + lda #$0b + ldx #$84 + ldy #$03 + jsr compare ; if T00,S0B,$84 == + !byte $4C,$F0,$BC + bcs .exit + ldy #$03 + jsr modify ; then set T00,S0B,$84 = + !byte $AD,$E9,$B7 +.exit +}