From ce5af98d3c419fbbc9ff40ba55dcb80d7c9fcd0b Mon Sep 17 00:00:00 2001 From: apple2geek Date: Sat, 8 Oct 2022 03:17:19 -0600 Subject: [PATCH] Switch to labels instead of absolute addresses for ProDOS globals --- applecorn.po | Bin 818773 -> 819200 bytes applecorn.s | 13 +++++++++++++ mainmem.init.s | 2 +- mainmem.ldr.s | 20 ++++++++++---------- 4 files changed, 24 insertions(+), 11 deletions(-) diff --git a/applecorn.po b/applecorn.po index d5c8188fa363f0fc2bc9534ff79b040b861d26e7..913c992933c1d866aaaf8d358ae57ebe683e5a99 100644 GIT binary patch delta 27670 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

uXABR}d*{n^n`VxvkE;b8e#>Wbb}Q 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Π+d@XqD-P+ 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 WTc0T1_wUi^urFh=ZPnec_&)%lr6p$o diff --git a/applecorn.s b/applecorn.s index e1fcac1..6f71099 100644 --- a/applecorn.s +++ b/applecorn.s @@ -40,8 +40,21 @@ RSTV EQU $3F2 * IRQ vector A2IRQV EQU $3FE +* ProDOS Global Page equates * MLI entry point MLI EQU $BF00 +* Machine ID byte +MACHID EQU $BF98 +* Versioning bytes +IBAKVER EQU $BFFC +IVERSION EQU $BFFD +* System BitMap locations +P8BMAP0007 EQU $BF58 +P8BMAP080F EQU $BF59 +P8BMAP2027 EQU $BF5C +P8BMAP282F EQU $BF5D +P8BMAP3037 EQU $BF5E +P8BMAP383F EQU $BF5F * IO Buffer for reading file (1024 bytes) IOBUF0 EQU $0C00 ; For loading/saving, OSFILE, *. diff --git a/mainmem.init.s b/mainmem.init.s index 93d2ca2..6ea06df 100644 --- a/mainmem.init.s +++ b/mainmem.init.s @@ -55,7 +55,7 @@ RTSINST LDA CMDPATH * Disconnect /RAM ramdrive to avoid aux corruption * Stolen from Beagle Bros Extra K -DISCONN LDA $BF98 +DISCONN LDA MACHID AND #$30 CMP #$30 BNE :S1 diff --git a/mainmem.ldr.s b/mainmem.ldr.s index 7e17d1b..051e0cb 100644 --- a/mainmem.ldr.s +++ b/mainmem.ldr.s @@ -15,9 +15,9 @@ SYSTEM LDX #$FF ; Init stack pointer TXS LDA #$00 - STA $BFFC ; IBAKVER (minimum P8 version) + STA IBAKVER ; Minimum compatible P8 version LDA #$01 - STA $BFFD ; IVERSION (version of me) + STA IVERSION ; Version of .SYSTEM program SED ; Check for 65C02 LDA #$99 @@ -27,21 +27,21 @@ SYSTEM LDX #$FF ; Init stack pointer BPL GOODCPU JMP UNSUPPORTED -GOODCPU LDA $BF98 ; MACHID +GOODCPU LDA MACHID AND #$F2 ; Clear bits 0,2,3 CMP #$B2 ; Are we on a //e or //c w/ 80col and 128K or a IIgs? BEQ SUPPORTED ; Supported machine JMP UNSUPPORTED ; Unsupported machine SUPPORTED LDA #$DF ; Protect pages $0,$1,and $3-$7 - STA $BF58 + STA P8BMAP0007 LDA #$F0 ; Protect pages $8-$B - STA $BF59 + STA P8BMAP080F LDA #$FF ; Protect HGR1 - STA $BF5C - STA $BF5D - STA $BF5E - STA $BF5F + STA P8BMAP2027 + STA P8BMAP282F + STA P8BMAP3037 + STA P8BMAP383F JMP START UNSUPPORTED JSR HOME @@ -61,7 +61,7 @@ UNSUPKEY LDA $C000 DW UNSUPQPARM UNSUPQPARM DB $04,$00,$00,$00,$00,$00,$00 -UNSUPMSG ASC "APPLECORN REQUIRES AN APPLE IIGS, APPLE" +UNSUPMSG ASC "APPLECORN REQUIRES AN APPLE IIGS, APPLE", 8D ASC "//C, OR ENHANCED APPLE //E WITH AN", 8D ASC "80-COLUMN CARD AND AT LEAST 128K", 8D, 8D ASC "PRESS ANY KEY TO QUIT TO PRODOS", 00