PrintShopCompanion-Apple-II/PSC Source Disk 4 - Fastloa.../S_MAKETITLEPIC.txt

134 lines
2.2 KiB
Plaintext

NLS
TTL "S:MAKETITLEPIC"
ORG = $1000
;
; Vertical hires screen compacter
; by Roland Gustafsson
;
DAT EPZ $00
;
DESTLO EPZ DAT
DESTHI EPZ DAT+1
XCOOR EPZ DAT+2
YCOOR EPZ DAT+3
LAST EPZ DAT+4
REPT EPZ DAT+5
HIRES EPZ DAT+6
;
YLO = $1E00
YHI = $1F00
;
DATA = $4000
;
ORG ORG
OBJ $0800
;
; First make Ybase table
;
LDA #$20
STA $E6
LDA $C081
LDY #0
^0 STY DAT
TYA
JSR $F417
LDY DAT
LDA $26
STA YLO,Y
LDA $27
STA YHI,Y
INY
CPY #$C0
BLT <0
;
LDA #DATA
CLC
ADC $AA60
STA DESTLO
LDA /DATA
ADC $AA61
STA DESTHI
;
LDA #0
STA XCOOR
STA YCOOR
JSR GETBYTE
COMPLOOP STA LAST
;
JSR GETBYTE
BCS ITSOVER
CMP LAST
BEQ REPEAT
PHA
LDA LAST
JSR STORBYTE
PLA
JMP COMPLOOP
;
; Count number of repeats
;
REPEAT ORA #$80
JSR STORBYTE
LDA #2
STA REPT
^0 JSR GETBYTE
BCS >2
CMP LAST
BNE >1
INC REPT
BNE <0
DEC REPT
;
^1 CLC
^2 PHA
LDA REPT
JSR STORBYTE
PLA
BCC COMPLOOP
BCS STORBYTE
;
; Last byte, so wrap up
;
ITSOVER PHA
LDA LAST
JSR STORBYTE
PLA
;
; Store byte to destination buffer
;
STORBYTE LDY #0
STA (DESTLO),Y
INC DESTLO
BNE *+4
INC DESTHI
RTS
;
; Get byte from hires page
; If SEC then this is last byte
;
GETBYTE LDX YCOOR
LDA YLO,X
STA HIRES
LDA YHI,X
STA HIRES+1
LDY XCOOR
LDA (HIRES),Y
EOR #$7F
STA (HIRES),Y
EOR #$7F
AND #$7F
INX
CPX #$C0
BLT >1
LDX #0
INY
CPY #$28
^1 STY XCOOR
STX YCOOR
RTS
;
;
;
USR "O:MAKETITLEPIC",ORG
END