 
MOVC   EQU $2713
FLSHC  EQU $272C
RMOVC  EQU $273A
WFIR   EQU $2744
DMPNTR EQU $274C
PTPNTR EQU $275A
DLINE  EQU $2767
FHAND  EQU $2780
INVP   EQU $2791
CELL   EQU $279A
XOR    EQU $27C2
PBIT   EQU $27D1
PCOL   EQU $27E2
PCOL2  EQU $27FB
HFILL  EQU $2812
VFILL  EQU $284B
XORC   EQU $28A5
SETC   EQU $28CC
CLRC   EQU $28F3
SETP   EQU $292B
CLRP   EQU $2944
XORP   EQU $295D
CLCSS  EQU $2975
CALCSC EQU $297E
CALC   EQU $29AA
CLC2   EQU $29AD
GETKY  EQU $29E1
JPOS   EQU $2A0E
ENLG   EQU $2A55
SP8X   EQU $2A81
SP8    EQU $2A90
LDSP   EQU $2A9D
SVSP   EQU $2AB1
SET2   EQU $2ACA
GMODE  EQU $2B4B
PCLS   EQU $2B60
MULTAB EQU $2B7C
ANDTAB EQU $2B84
PIXTAB EQU $2B8C
PNTR   EQU $2BA3
SQRE   EQU $2B9B
FLPTR  EQU $2C8B
FLSQ   EQU $2C9A
RMOVS  EQU $2CAD
GRID   EQU $2CBB
GRID2  EQU $2CF8
COPYS  EQU $2D6A
COPYG  EQU $2D72
COPY2  EQU $2D7B
BLNKSP EQU $2D90
BLNKGS EQU $2DA8
BLNKGR EQU $2DC0
WSDIM  EQU $2DD8
WGDIM  EQU $2DED
WSSIZ  EQU $2E02
WSPAD  EQU $2E0A
WR5DIG EQU $2E10
WR4DIG EQU $2E15
WR3DIG EQU $2E1A
WR2DIG EQU $2E1F
WR1DIG EQU $2E24
WDIG   EQU $2E3B
DICONS EQU $2E4C
DPTRNS EQU $2E63
ULINE  EQU $2E7A
CHCOL  EQU $2E82
CHDM1  EQU $2E8E
CHDM2  EQU $2EA4
CCOPY  EQU $2ED9
TOGP   EQU $30A1
GETSP  EQU $30A6
SELPTN EQU $3107
RESIZE EQU $3168
ENTAD  EQU $32B0
 
 ORG $400
 PUT *
 
WD     RMB 1
HT     RMB 1
SC     RMB 1
SZ     RMB 1
SW     RMB 1
SH     RMB 1
SPRAD  RMB 2
SSIZE  RMB 2
XC     RMB 1
YC     RMB 1
GX     RMB 1
GY     RMB 1
CIFL   RMB 1
CCFL   RMB 1
CNT1   RMB 1
CNT2   RMB 1
VAR    RMB 2
KTAB   RMB 8
LKEY   RMB 1
COLOR  RMB 1
ACODE  RMB 1
PTFL   RMB 1
PTRN   RMB 2
PCODE  RMB 1
DONE   RMB 1
STENFL RMB 1
X1     RMB 1
Y1     RMB 1
X2     RMB 1
Y2     RMB 1
DX     RMB 1
DY     RMB 1
IX     RMB 1
IY     RMB 1
SQAD   RMB 2
SQGR   RMB 2
VAR2   RMB 2
 
GBASE  RMB 2
GX0    RMB 1
GY0    RMB 1
GX1    RMB 1
GY1    RMB 1
GX2    RMB 1
GY2    RMB 1
MAXW   RMB 1
MAXH   RMB 1
CRNRFL RMB 1
PBASE  RMB 2
PX0    RMB 1
PY0    RMB 1
PX1    RMB 1
PY1    RMB 1
PX2    RMB 1
PY2    RMB 1
BBASE  RMB 2
BX0    RMB 1
BY0    RMB 1
BX1    RMB 1
BY1    RMB 1
ABORT  RMB 1
TOP    RMB 2
BOTTOM RMB 2
 
GRDPOS EQU $080C
GSPPOS EQU $0801
SPRPOS EQU $1201
DMIPOS EQU $1B09
COLPOS EQU $1B07
PTNPOS EQU $1B13
 
ICONS  EQU $2BAB
NUMS   EQU ICONS+40
PTRNS  EQU NUMS+88
 
CU     EQU 91
CD     EQU 92
CL     EQU 93
CR     EQU 94
SPC    EQU 95
RET    EQU 96
FF     EQU 97
BRK    EQU 98
 
 SETDP $04
 
 ORG $3503
 PUT *
 
 PSHS DP
 LDA #4
 TFR A,DP
 
 LDD #$1010
 STD WD
 STD SW
 LDD #$1E00
 STD SPRAD
 LDD #$0050
 STD CIFL
 STA DONE
 STA COLOR
 STA ACODE
 STA PTFL
 STA PCODE
 STA STENFL
 LEAU PTRNS,PCR
 STU PTRN
 LBSR JPOS
 STD GX
 
 LBSR PCLS
 LBSR CHCOL
 LBSR DICONS
 LBSR DMPNTR
 LBSR DPTRNS
 LBSR CALCSC
 LBSR CLCSS
 LBSR GRID
 LBSR LDSP
 LBSR WSPAD
 LBSR WSSIZ
 LBSR WSDIM
 LBSR WGDIM
 LBSR GMODE
 
LP LBSR CMDS
 LDB DONE
 BNE EXIT
 LBSR MOVC
 LBSR FLSHC
 LDA $FF00
 BITA #1
 BNE LP
 LBSR RMOVC
 LDB ACODE
 LEAX JMPTAB,PCR
 ABX
 LSLB
 JSR B,X
 BRA LP
EXIT PULS DP,PC
 
JMPTAB LBRA FHAND
       LBRA INVP
       LBRA HFILL
       LBRA VFILL
       LBRA DLINE
********************************
QICON  FCB 0,60,66,66
       FCB 66,74,70,63
 
CMDEX LBSR RMOVC
 LEAU QICON,PCR
 STU SQGR
 LDX #$61F
 STX SQAD
 CLR CCFL
 LDY #50
C1 LBSR FLSQ
 LBSR GETKY
 CMPA #BRK
 BEQ C2
 LEAY -1,Y
 BNE C1
 BRA EXTEX
C2 LDY #50
C3 LBSR FLSQ
 LBSR GETKY
 CMPA #BRK
 BEQ C4
 LEAY -1,Y
 BNE C3
 BRA EXTEX
C4 COM DONE
EXTEX LBRA RMOVS
 
CMDS LBSR GETKY
 CMPA #BRK
 BEQ CMDEX
 CMPA #SPC
 LBEQ CHCOL
 CMPA #CR
 LBEQ CHDM1
 CMPA #CL
 LBEQ CHDM2
 CMPA #'C
 LBEQ CCOPY
 CMPA #'S
 LBEQ GETSP
 CMPA #'P
 LBEQ TOGP
 CMPA #'@
 LBEQ SELPTN
 CMPA #':
 LBEQ CPYPTN
 CMPA #'R
 BEQ RESIZ1
 CMPA #'A
 LBEQ ENTAD
 CMPA #'X
 LBEQ FXMENU
 RTS
 
********************************
RESIZ1 LBSR RESIZE
 LBSR JPOS
 STD GX
 CLR STENFL
 RTS
 
CPYPTN LDA PTFL
 BEQ DCPYP
 LDA HT
 CMPA #8
 BLO DCPYP
 LDU PTRN
 LDX #GSPPOS
 LDB #8
CPLP LDA ,X
 STA ,U+
 LEAX 32,X
 DECB
 BNE CPLP
 LBRA DPTRNS
DCPYP RTS
 
FXICON FCB 0,240,128,145
       FCB 202,132,138,145
 
ABRTM RTS
FXMENU LBSR RMOVC
 LEAU FXICON,PCR
 STU SQGR
 LDX #$61F
 STX SQAD
 CLR CCFL
MNLP LBSR FLSQ
 LBSR GETKY
 BEQ MNLP
 PSHS A
 LBSR RMOVS
 PULS A
 CMPA #BRK
 BEQ ABRTM
 CMPA #'I
 LBEQ INVERT
 CMPA #'S
 LBEQ SCROLL
 CMPA #'M
 LBEQ MIRROR
 CMPA #'F
 LBEQ FLIP
 CMPA #'R
 LBEQ ROTATE
 BRA MNLP
********************************
 
INVERT LDD GX
 PSHS D
 LDD #0
 STD GX
INVLP LBSR XORC
 LBSR XORP
 INC GY
 LDA GY
 CMPA HT
 BLO INVLP
 CLR GY
 INC GX
 LDA GX
 CMPA WD
 BLO INVLP
 PULS D
 STD GX
 RTS
 
SCROLL LDX #GSPPOS
 STX TOP
 LDD WD
 LSRA
 LSRA
 LSRA
 STA CNT1
 LDA #32
 MUL
 LEAX D,X
 STX BOTTOM
SCRLP LBSR GETKY
 SYNC
 SYNC
 LDB KTAB+7
 BITB #64
 BNE NSHSC
 CLR LKEY
NSHSC CMPA #BRK
 LBEQ ENLG
 CMPA #RET
 LBEQ ENLG
 CMPA #CU
 BEQ SU
 CMPA #CD
 BEQ SD
 CMPA #CL
 BEQ SL
 CMPA #CR
 LBEQ SR
 BRA SCRLP
 
SU LDY BOTTOM
 CLRA
SU1 LDB HT
 INCB
 LDX TOP
 LDU A,X
 STU A,Y
SU2 ADDA #32
 LDU A,X
 SUBA #32
 STU A,X
 LEAX 32,X
 DECB
 BNE SU2
 ADDA #2
 CMPA CNT1
 BLO SU1
 BRA SCRLP
 
SD LDY TOP
 LEAY -32,Y
 CLRA
SD1 LDB HT
 INCB
 LDX BOTTOM
 LEAX -32,X
 LDU A,X
 STU A,Y
SD2 SUBA #32
 LDU A,X
 ADDA #32
 STU A,X
 LEAX -32,X
 DECB
 BNE SD2
 ADDA #2
 CMPA CNT1
 BLO SD1
 BRA SCRLP
 
SL LDX TOP
 LDA HT
 STA CNT2
SL1 LDB CNT1
 DECB
 LDA ,X
 ROLA
SL2 LDA B,X
 ROLA
 STA B,X
 DECB
 BPL SL2
 LEAX 32,X
 DEC CNT2
 BNE SL1
 LBRA SCRLP
 
SR LDX TOP
 LDA HT
 STA CNT2
SR1 LEAY ,X
 LDB CNT1
 DECB
 LDA B,X
 RORA
SR2 LDA ,Y
 RORA
 STA ,Y+
 DECB
 BPL SR2
 LEAX 32,X
 DEC CNT2
 BNE SR1
 LBRA SCRLP
 
DONMIR PULS D
 STD GX
 RTS
MIRROR LDD GX
 PSHS D
MIRLP LBSR GETKY
 CMPA #BRK
 BEQ DONMIR
 CMPA #CU
 BEQ MIRU
 CMPA #CD
 LBEQ MIRD
 CMPA #CL
 LBEQ MIRL
 CMPA #CR
 BNE MIRLP
 
 CLR GY
MR4 CLR VAR
 LDA WD
 DECA
 STA VAR2
MR3 LDA VAR
 STA GX
 LBSR PCOL2
 BEQ MR1
 LDA VAR2
 STA GX
 LBSR SETC
 LBSR SETP
 BRA MR2
MR1 LDA VAR2
 STA GX
 LBSR CLRC
 LBSR CLRP
MR2 INC VAR
 DEC VAR2
 LDA VAR2
 SUBA VAR
 BPL MR3
 INC GY
 LDA GY
 CMPA HT
 BLO MR4
 BRA DONMIR
 
MIRU CLR GX
MU4 CLR VAR
 LDA HT
 DECA
 STA VAR2
MU3 LDA VAR2
 STA GY
 LBSR PCOL2
 BEQ MU1
 LDA VAR
 STA GY
 LBSR SETC
 LBSR SETP
 BRA MU2
MU1 LDA VAR
 STA GY
 LBSR CLRC
 LBSR CLRP
MU2 INC VAR
 DEC VAR2
 LDA VAR2
 SUBA VAR
 BPL MU3
 INC GX
 LDA GX
 CMPA WD
 BLO MU4
 LBRA DONMIR
 
MIRD CLR GX
MD4 CLR VAR
 LDA HT
 DECA
 STA VAR2
MD3 LDA VAR
 STA GY
 LBSR PCOL2
 BEQ MD1
 LDA VAR2
 STA GY
 LBSR SETC
 LBSR SETP
 BRA MD2
MD1 LDA VAR2
 STA GY
 LBSR CLRC
 LBSR CLRP
MD2 INC VAR
 DEC VAR2
 LDA VAR2
 SUBA VAR
 BPL MD3
 INC GX
 LDA GX
 CMPA WD
 BLO MD4
 LBRA DONMIR
 
MIRL CLR GY
ML4 CLR VAR
 LDA WD
 DECA
 STA VAR2
ML3 LDA VAR2
 STA GX
 LBSR PCOL2
 BEQ ML1
 LDA VAR
 STA GX
 LBSR SETC
 LBSR SETP
 BRA ML2
ML1 LDA VAR
 STA GX
 LBSR CLRC
 LBSR CLRP
ML2 INC VAR
 DEC VAR2
 LDA VAR2
 SUBA VAR
 BPL ML3
 INC GY
 LDA GY
 CMPA HT
 BLO ML4
 LBRA DONMIR
 
DONFLP RTS
FLIP LBSR GETKY
 CMPA #BRK
 BEQ DONFLP
 CMPA #'Y
 BEQ FLIPY
 CMPA #'X
 BNE FLIP
 
 LDD WD
 LSRA
 LSRA
 LSRA
 STA VAR
 STB CNT2
 LDY #GSPPOS
FLX3 LEAX ,Y
 LDB VAR
 STB CNT1
FLX1 LDA ,X+
 PSHS A
 DEC CNT1
 BNE FLX1
 LEAX ,Y
 LDB VAR
 STB CNT1
FLX2 PULS A
 LDB #8
 STB VAR2
FLX4 LSLA
 RORB
 DEC VAR2
 BNE FLX4
 STB ,X+
 DEC CNT1
 BNE FLX2
 LEAY 32,Y
 DEC CNT2
 BNE FLX3
 LBRA ENLG
 
FLIPY LDX #GSPPOS
 LDD WD
 LSRA
 LSRA
 LSRA
 DECA
 STA CNT1
 DECB
 LDA #32
 MUL
 LEAY D,X
 LDA HT
 LSRA
 STA CNT2
FLY2 LDB CNT1
FLY1 LDA B,X
 PSHS A
 LDA B,Y
 STA B,X
 PULS A
 STA B,Y
 DECB
 BPL FLY1
 LEAX 32,X
 LEAY -32,Y
 DEC CNT2
 BNE FLY2
 LBRA ENLG
 
ROTATE LBSR BLNKGR
 CLR GX
 CLR VAR+1
ROT4 LDA HT
 DECA
 STA GY
 CLR VAR
ROT3 LBSR PCOL2
 BEQ ROT1
 LDX #GRDPOS
 LDY #VAR
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 BRA ROT2
ROT1 LDX #GRDPOS
 LDY #VAR
 LBSR CLC2
 LDA B,U
 COMA
 ANDA ,X
 STA ,X
ROT2 INC VAR
 DEC GY
 BPL ROT3
 INC GX
 INC VAR+1
 LDA GX
 CMPA WD
 BLO ROT4
 LDX #GRDPOS
 LDU #GSPPOS
 LDD #$0840
 STD CNT1
 LBSR COPY2
 LDD WD
 EXG A,B
 ADDA #7
 ANDA #$F8
 STD WD
 LBSR WGDIM
 LBSR CALCSC
 LBSR BLNKGR
 LBSR GRID
 LBSR JPOS
 STD GX
 LBRA ENLG
 
 
 
