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

406 lines
6.6 KiB
Plaintext

;
; S:GREDIT2
;
FZ EPZ $80
;
FGXCOOR EPZ FZ
FGYCOOR EPZ FZ+1
FGHIRES EPZ FZ+2 ; 3
FGBYTE EPZ FZ+4
FGBCOUNT EPZ FZ+5
FGRAMCRD EPZ FZ+6
FGHIRES2 EPZ FZ+8
FGWIDTH EPZ FZ+10
;
; Frame grabber CAPTURE
;
FRAMGRAB JSR FRAMPICT
SEC
ROR SCALING
LDX #96
LDY #70
STX FGXCOOR
STY FGYCOOR
;
; Invert current position and
; set countdown timer
;
FRAMLOOP ASL KEEPTRAK
LDX FGXCOOR
LDY FGYCOOR
JSR DEVICEST
FRAMLOP2 JSR FLSHINIT
JSR DRAWBOX
INC KEEPTRAK
;
^0 LDY #2
JSR DEVICERD
BCS >1
ASL
BMI >1
BCS FRAMDON2
JSR FRAMDEV
;
^1 JSR POLEKEY
BMI >3
;
^2 DEC FLASHLO
BNE <0
DEC FLASHHI
BPL <0
BMI FRAMLOP2
;
FRAMDONE PLA
PLA
FRAMDON2 JSR RESTSCRN
JSR CAPBOX
CLC
RTS
;
^3 PHA
JSR RESTSCRN
PLA
LDX FGXCOOR
LDY FGYCOOR
JSR >1
STX FGXCOOR
STY FGYCOOR
JMP FRAMLOOP
;
^1 JSR PARSE
.DA #'I',FRAMUP
.DA #$0B,FRAMUP
.DA #'M',FRAMDOWN
.DA #$0A,FRAMDOWN
.DA #'J',FRAMLEFT
.DA #$08,FRAMLEFT
.DA #'K',FRAMRITE
.DA #$15,FRAMRITE
;
.DA #'N',FRAMNEG
;
.DA #'D',FRAMDUBL
.DA #'A',FRAM2LFT
.DA #'S',FRAM2RIT
;
.DA #$1B,FRAMESC
.DA #$0D,FRAMDONE
;
BRK
RTS
;
FRAMESC PLA
PLA
SEC
RTS
;
; Invert screen
;
FRAMNEG LDA FRAMIMD0
EOR #$7F
STA FRAMIMD0
STA FRAMIMD1
STA FRAMIMD2
;
; Pop stack, draw screen and return
; to main loop
;
FRAMWERD JSR FRAMPICT
FRAMWRD2 PLA
PLA
JMP FRAMLOOP
;-----------
;
; Toggle double-hires option
;
; If not 128k, then ignore
;
FRAMDUBL LDA HAS128K
BPL FRAMWERD
;
LDA FRAM2FLG
EOR #$80
STA FRAM2FLG
BNE FRAMWERD
;
; Move double hires picture right
;
FRAM2RIT LDX FRAM2POS
DEX
BPL FRAM2ST
;
FRAM2ERR JSR BOOP
JMP FRAMWRD2
;
; Move double hires left
;
FRAM2LFT LDX FRAM2POS
INX
CPX #21
BGE FRAM2ERR
;
FRAM2ST STX FRAM2POS
JMP FRAMWERD
;
FRAM2FLG HEX 01
FRAM2POS HEX 00
;-----------
;
; Up
;
FRAMUP DEY
CPY #$FF
BNE >0
LDY #YSCRNMAX-1
;
; Down
;
FRAMDOWN INY
CPY #YSCRNMAX+1
BLT >0
LDY #0
^0 RTS
;
; Left
;
FRAMLEFT DEX
CPX #$FF
BNE >0
LDX #XSCRNMAX-1
;
; Right
;
FRAMRITE INX
CPX #XSCRNMAX+1
BLT >0
LDX #0
^0 RTS
;------------
;
; Check to see if device moved
;
FRAMDEV CPX FGXCOOR
BNE >0
CPY FGYCOOR
BNE >0
FRAMRTS RTS
;
; Device moved
;
^0 STX >1+1
STY >2+1
JSR RESTSCRN
^1 LDX #00
^2 LDY #00
;
; Device input clamping
;
BIT FRAMRTS
CPX #XSCRNMAX+1
BLT >3
CLV
LDX #XSCRNMAX
^3 CPY #YSCRNMAX+1
BLT >4
CLV
LDY #YSCRNMAX
^4 STX FGXCOOR
STY FGYCOOR
BVS FRAMRTS
JMP DEVICEST
;
KEEPTRAK BRK
;
; Remove box if necessary
;
RESTSCRN LSR KEEPTRAK
ROR
ASL KEEPTRAK
ROL
BCC FRAMRTS
;-----------
;
; Draw box
;
DRAWBOX LDY FGYCOOR
STY TMP1
LDY #0
;
DRAWBOXL JSR YBASCALC
LDX #0
^0 JSR BITCALC
EOR (FGHIRES),Y
STA (FGHIRES),Y
CPX #87
BEQ >2
LDA TMP0
BEQ >1
CMP #51
BEQ >1
LDX #86
^1 INX
BNE <0
;
^2 LDY TMP0
INY
CPY #52
BLT DRAWBOXL
RTS
;
; Capture box into UNDOBUFF
;
CAPBOX LDY #UNDOBUFF
LDA /UNDOBUFF
STY TMP2
STA TMP3
;
LDY FGYCOOR
STY TMP1
LDY #0
STY FGBCOUNT
;
CAPBOXL JSR YBASCALC
LDX #0
^0 JSR BITCALC
AND (FGHIRES),Y
CMP #1
LDA #0
ROL
EOR #1
LSR
ROL FGBYTE
INC FGBCOUNT
LDA FGBCOUNT
EOR #8
BNE >1
;
STA FGBCOUNT
LDA FGBYTE
LDY #0
STA (TMP2),Y
INC TMP2
BNE >1
INC TMP3
;
^1 INX
CPX #88
BLT <0
;
^2 LDY TMP0
INY
CPY #52
BLT CAPBOXL
RTS
;
; Calc Ybase
;
YBASCALC STY TMP0
LDY TMP1
INC TMP1
LDA YBASELO,Y
STA FGHIRES
LDA YBASEHI,Y
STA FGHIRES+1
RTS
;
; Calculate hires X coor
;
BITCALC TXA
CLC
ADC FGXCOOR
TAY
BCC >1
;
LDA XBIT+256,Y
PHA
LDA XBYTE+256,Y
TAY
PLA
BNE >2
;
^1 LDA XBIT,Y
PHA
LDA XBYTE,Y
TAY
PLA
^2 RTS
;-----------
;
; Get picture from RAMcard
;
FRAMPICT LDA #0
FRAMPCT2 PHA
;
; Transfer line
;
TAY
LDA YBASELO,Y
STA FGHIRES
STA FGHIRES2
STA FGRAMCRD
LDA YBASEHI,Y
STA FGHIRES+1
STA FGHIRES2+1
LDY #0
AND #$10
BEQ >0
LDY #8
^0 LDA $C083,Y
LDA $C083,Y
LDA FGHIRES+1
AND #$0F
ORA #$D0
STA FGRAMCRD+1
;
LDA #39
BIT FRAM2FLG
BMI >2
;
; Regular hires
;
TAY
^1 LDA (FGRAMCRD),Y
EOR #00
FRAMIMD0 = *-1
STA (FGHIRES),Y
DEY
BPL <1
BMI >4
;
; Double hires
;
^2 LSR
STA FGWIDTH
LDY FRAM2POS
LDX #0
STA $C001
^3 BIT $C055
LDA (FGHIRES2),Y
BIT $C054
EOR #00
FRAMIMD1 = *-1
STA (FGHIRES,X)
INC FGHIRES
LDA (FGRAMCRD),Y
EOR #00
FRAMIMD2 = *-1
STA (FGHIRES,X)
INC FGHIRES
INY
DEC FGWIDTH
BPL <3
STA $C000
;
; Next line
;
^4 PLA
CLC
ADC #1
CMP #$C0
BLT FRAMPCT2
RTS
;
;
;
ICL "S:GREDIT3"