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

A personal pet patch for DOS 3.3...



This has a very narrow scope of usefulness: it's only of use for the original, pre-'C02 Apple //e.

That //e had a bug in the firmware: if you reset the 80-column firmware without resetting the hardware (the equivalent of pr#0:in#0) it would get desynched, instead of shutting it off itself as the later models do.

Of the 3 versions of DOS 3.3 I have, only the very last of these has a fix for this. That version does not take this patch and this patch should not be used on that version.

The change is 14 bytes.

Before:  BFC8: 20 93 FE AD 81 C0 AD 81 C0 A9 00 8D 00 E0
After:   BFC8: AD B3 FB C9 06 D0 03 8D 0C C0 20 58 FC EA

Before:

BFC8- 20 93 FE  JSR $FE93
BFCB- AD 81 C0  LDA $C081
BFCE- AD 81 C0  LDA $C081
BFD1- A9 00     LDA #$00
BFD3- 8D 00 E0  STA $E000
BFD6- 4C 44 B7  JMP $B744

After:

BFC8- AD B3 FB  LDA $FBB3
BFCB- C9 06     CMP #$06
BFCD- D0 03     BNE $FBD2
BFCF- 8D 0C C0  STA $C00C
BFD2- 20 58 FC  JSR $FC58
BFD5- EA        NOP
BFD6- 4C 44 B7  JMP $B744

The JSR $FE93 is already done at B642 do is redundant. The remaining code steps on the language card. (It prolly would have been better to keep a lda $c081 or bit $c081 instead of the jsr $fc58. Oh well...)

This is a reduced variant of the code in STOS 1.9.3 which does effectively the same thing - a "lda $fbc0, cmp #$ea, bne ..." before the "sta $c00c" was removed for space.

-uso.