[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ProDOS 1.x - no SYS file, do BYE instead of hang, like 2.x



Here's a set of patches that make ProDOS 1.x (from the October 1 version of 1.0, until 1.9) exit to the Selector like 2.x if they don't find a SYS file. I tested with 1.8, then emended for other versions.

In all cases, the code looks like this before:

nosys:    ldx       #$27
@1:       lda       msgnosys, x
          sta       $07A8, x
          dex
          bpl       @1
@2:       bmi       @2        ; ALWAYS

And now it looks like this:

nosys:    jsr       MLI
          .byte     $65       ; QUIT
          .word     exitparm
exitparm: .byte     $04
          .byte     $00
          .word     $0000
          .byte     $00
          .word     $0000

The new code takes the same exact amount of space as the old. At least 2.0.3 does not need this patch anymore; this is the existing behavior of 2.0.3 backported to these older versions of ProDOS.

This is most potentially useful with SELEXTRA (you'll find it on some of my disks) which is a modified Selector that can also run BIN files.

1.0:   On September 1983 version:
       Don't bother, the selector isn't present.
       On October 1983 version: Patch at $22CD*
       08AD  A2 27 BD E2 08 9D A8 07 CA 10 F7 30 25
  change to  20 00 BF 65 B3 08 04 00 00 00 00 00 00
1.0.1: Same as 1.0, patch at $22E1
1.0.2: Same as 1.0, patch at $22E1
1.1:   Same as 1.0, patch at $22CA
1.1.1: Same as 1.0, patch at $2319
1.2:   New patch at $2430
       0955  A2 27 BD 89 09 9D A8 07 CA 10 F7 30 25
  change to  20 00 BF 65 5B 09 04 00 00 00 00 00 00
1.3:   Same as 1.2, patch at $2430
1.4:   Same as 1.2, patch at $2430
1.5:   New patch at $2431
       0959  A2 27 BD 8D 09 9D A8 07 CA 10 F7 30 25
  change to  20 00 BF 65 5F 09 04 00 00 00 00 00 00
1.6:   Same as 1.5, patch at $2431
1.7:   Same as 1.5, patch at $2431
1.8:   Same as 1.5, patch at $243C
1.9:   New patch at $2464
       0964  A2 27 BD 98 09 9D A8 07 CA 10 F7 30 25
  change to  20 00 BF 65 6A 09 04 00 00 00 00 00 00

* Address assumes file starts at $2000.

WARNING: This isn't tested on all versions of ProDOS!

-uso.