PrintShopCompanion-Apple-II/PSC Source Disk 2 - Editors.../S_SUPPHEADER.txt

182 lines
2.9 KiB
Plaintext

NLS
TTL "S:SUPPHEADER"
;
ORG = $6300
;
; FIXLOC needs $3C+$1F
; Make sure it doesn't walk over
; the RESET routine at $280
;
SPECLEN = $3C+$1F
FIXLOC = $280-SPECLEN
;
; First time through SUPP file header
;
CLS1 = $B53
;
DATADRIV = $95F4
CHECKPS1 = $7815
CHECKPS2 = $77F9
;
TMP0 EPZ $3A
TMP1 EPZ $3B
TMP2 EPZ $3C
;-----------
ORG ORG
OBJ $800
;-----------
PHA
;
; Move program to RAMcard
;
BIT $C08B
BIT $C08B
LDX #8
LDY #0
^0 LDA PROGRAM,Y
^1 STA $D000,Y
INY
BNE <0
INC <0+2
INC <1+2
DEX
BNE <0
;
; Make patches to Print Shop
;
^2 LDA PATCHES,X
BEQ >5
LDY #0
^3 LDA PATCHES,X
INX
STA TMP0,Y
INY
CPY #3
BLT <3
LDY #0
^4 LDA PATCHES,X
INX
STA (TMP1),Y
INY
DEC TMP0
BNE <4
BEQ <2
;
^5 PLA
JSR $D003
;
; Now reload MENULIB
;
LDY #FIXLEN-1
^6 LDA FIXIT,Y
STA FIXLOC,Y
DEY
BPL <6
JMP FIXLOC
;-----------
PATCHES:
BYT 9
ADR $B8B
BIT $C08B
BIT $C08B
JMP $D003
;
BYT 28
ADR $88D0
SEC
ROR $4E
SEC
SBC #$20
TAX
LDA $6000,X
CMP $4E
BGE *+4
STA $4E
JMP $8C76
LDA $4E
CLC
ADC $8A0A
STA $D9
RTS
;
BYT 2
ADR $8C10
ADR $88D0
;
BYT 2
ADR $8C28
ADR $88D3
;
BYT 4
ADR $8C3F
JSR $88E3
NOP
;
BRK
;-----------
;
; Remember MENULIB variables, then
; reload it and restore the vars.
;
FIXIT:
PHS FIXLOC
;
; Save vars and check for PS disk
;
CLC
JSR SWAP7000
FIXIT1 JSR FIXIT2
;
; Load MENULIB
;
LDX #$27
LDY #$0B
JSR $CD2
BNE FIXIT1
;
; Restore vars and exit
;
SEC
JSR SWAP7000
PLA
PLA
JMP CLS1
;---
;
; Make sure that PS disk in drive.
;
FIXIT2 LDA DATADRIV
CMP #2
BEQ FIXIT3
JMP CHECKPS1
FIXIT3 JMP CHECKPS2
;---
;
; SEC:copy save area to $7000
; CLC:copy $7000 to save area
;
SWAP7000 LDY #$1E
;
SWAP7001 BCS SWAP7002
LDA $7000,Y
STA SWAPSAVE,Y
BCC SWAP7003
;
SWAP7002 LDA SWAPSAVE,Y
STA $7000,Y
;
SWAP7003 DEY
BPL SWAP7001
RTS
SWAPSAVE:
DPH
FIXLEN = *-FIXIT
;-----------
PROGRAM:
;-----------
;
;
;
USR "O:SUPPHEADER",ORG
END