********************************
*           TEXT 2             *
********************************
 
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
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
 
 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
 
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
 
 ORG $2E82
 PUT *
 
 SETDP $04
 
CHCOL COM COLOR
 LDX #COLPOS
 LEAU SQRE,PCR
 LBRA SP8X
 
CHDM1 LBSR DMPNTR
 INC ACODE
 LDA ACODE
 CMPA #5
 BLO ACTOK
 CLR ACODE
ACTOK CMPA #4
 BNE DCH1
 CLR STENFL
DCH1 LBRA DMPNTR
 
CHDM2 LBSR DMPNTR
 DEC ACODE
 BPL ACTOK2
 LDA #4
 STA ACODE
 CLR STENFL
ACTOK2 LBRA DMPNTR
 
RELSIZ CLRA
 LDB WD
 CMPB SW
 BEQ RELS1
 BLO RELS2
 LDB HT
 CMPB SH
 BLO IRREG
 BRA GGTS
RELS1 LDB HT
 CMPB SH
 BEQ GSSS
 BLO GLTS
 BRA GGTS
RELS2 LDB HT
 CMPB SH
 BLS GLTS
IRREG INCA
GLTS  INCA
GGTS  INCA
GSSS  RTS
 
CCOPY LBSR RMOVC
 CLR ABORT
 LBSR GETKY
 CMPA #CU
 BEQ STOGW
 CMPA #CD
 LBEQ GTOSW
 CMPA #'Q
 LBEQ STOGP
 CMPA #'A
 LBEQ GTOSP
 CMPA #BRK
 BNE CCOPY
 RTS
 
STOGW BSR RELSIZ
 TSTA
 BEQ STOG1
 DECA
 BEQ STOG2
 DECA
 BEQ STOG3
 BRA STOGP
 
STOG1 LBSR COPYS
 LBRA ENLG
 
STOG2 LDX #SPRPOS
 STX GBASE
 LDX #GSPPOS
 STX PBASE
 LDD #0
 STD GX0
 STD PX0
 LDD SW
 SUBD #$0101
 STD GX1
 STD PX1
 LDD WD
 SUBD #$0101
 STD PX2
 LBSR PUTA
 LDA ABORT
 BEQ NA1
 RTS
NA1 LBSR PIXCPY
 LBRA ENLG
 
STOG3 LDX #SPRPOS
 STX PBASE
 STX GBASE
 LDD #0
 STD PX0
 LDD WD
 SUBD #$0101
 STD PX1
 LDD SW
 SUBD #$0101
 STD PX2
 LBSR PUTA
 LDA ABORT
 BEQ NA2
 RTS
NA2 LDX #GSPPOS
 STX PBASE
 LDD PX0
 STD GX0
 LDD PX1
 STD GX1
 LDD #0
 STD PX0
 LDD WD
 SUBD #$0101
 STD PX1
 LBSR PIXCPY
 LBRA ENLG
 
STOGP LDX #SPRPOS
 STX GBASE
 LDX #GSPPOS
 STX PBASE
 LDD #0
 STD GX0
 STD PX0
 LDD #$0708
 CMPB HT
 BLS SGN1
 LDB HT
SGN1 CMPB SH
 BLS SGN2
 LDB SH
SGN2 DECB
 STD GX1
 LDD SW
 SUBD #$0101
 STD GX2
 LDD WD
 SUBD #$0101
 STD MAXW
 STD PX2
 LBSR GETA
 LDA ABORT
 BEQ NA3
 RTS
NA3 LDD GX1
 SUBD GX0
 STD PX1
 LBSR PUTA
 LDA ABORT
 BEQ NA4
 RTS
NA4 LBSR PIXCPY
 LBRA ENLG
 
GTOSW LBSR RELSIZ
 TSTA
 BEQ GTOS1
 DECA
 BEQ GTOS2
 DECA
 BEQ GTOS3
 BRA GTOSP
 
GTOS1 LBSR COPYG
 LBRA SVSP
 
GTOS2 LDX #GSPPOS
 STX GBASE
 STX PBASE
 LDD #0
 STD PX0
 LDD SW
 SUBD #$0101
 STD PX1
 LDD WD
 SUBD #$0101
 STD PX2
 LBSR PUTA
 LDA ABORT
 BEQ NA5
 RTS
NA5 LDX #SPRPOS
 STX PBASE
 LDD PX0
 STD GX0
 LDD PX1
 STD GX1
 LDD #0
 STD PX0
 LDD SW
 SUBD #$0101
 STD PX1
 LBSR PIXCPY
 LBRA SVSP
 
GTOS3 LDX #GSPPOS
 STX GBASE
 LDX #SPRPOS
 STX PBASE
 LDD #0
 STD GX0
 STD PX0
 LDD WD
 SUBD #$0101
 STD GX1
 STD PX1
 LDD SW
 SUBD #$0101
 STD PX2
 LBSR PUTA
 LDA ABORT
 BEQ NA6
 RTS
NA6 LBSR PIXCPY
 LBRA SVSP
 
GTOSP LDX #GSPPOS
 STX GBASE
 LDX #SPRPOS
 STX PBASE
 LDD #0
 STD GX0
 STD PX0
 LDD #$0708
 CMPB HT
 BLS GSN1
 LDB HT
GSN1 CMPB SH
 BLS GSN2
 LDB SH
GSN2 DECB
 STD GX1
 LDD WD
 SUBD #$0101
 STD GX2
 LDD SW
 SUBD #$0101
 STD MAXW
 STD PX2
 LBSR GETA
 LDA ABORT
 BEQ NA7
 RTS
NA7 LDD GX1
 SUBD GX0
 STD PX1
 LBSR PUTA
 LDA ABORT
 BEQ NA8
 RTS
NA8 LBSR PIXCPY
 LBRA SVSP
 
TOGP COM PTFL
 LBRA PTPNTR
 
GETSP LBSR RMOVC
 LDX #$1B00
 LEAU SQRE,PCR
 STX SQAD
 STU SQGR
 CLR CCFL
GSLP LBSR FLSQ
 LBSR GETKY
 CMPA #CL
 BEQ MDEC
 CMPA #CR
 BEQ MINC
 CMPA #CU
 BEQ MDEC1
 CMPA #CD
 BEQ MINC1
 CMPA #BRK
 BEQ GDON
 CMPA #RET
 BEQ GDON
 LDA KTAB+7
 BITA #64
 BNE GSLP
 CLR LKEY
 BRA GSLP
MDEC LDD SPRAD
 SUBD SSIZE
 STD SPRAD
 BRA GNXT
MINC LDD SPRAD
 ADDD SSIZE
 STD SPRAD
 BRA GNXT
MDEC1 LDX SPRAD
 LEAX -1,X
 STX SPRAD
 BRA GNXT
MINC1 LDX SPRAD
 LEAX 1,X
 STX SPRAD
GNXT LBSR LDSP
 LBSR WSPAD
 BRA GSLP
GDON LBRA RMOVS
 
SELPTN LBSR RMOVC
 LDA #$10
 STA CCFL
 LDA PTFL
 BNE SPTLP
 BSR TOGP
SPTLP LBSR FLPTR
 LBSR GETKY
 CMPA #CL
 BEQ PTLFT
 CMPA #CR
 BEQ PTRGT
 CMPA #RET
 BEQ DONSP
 CMPA #BRK
 BNE SPTLP
DONSP LEAX PTRNS,PCR
 LDB PCODE
 LSLB
 LSLB
 LSLB
 ABX
 STX PTRN
 LDA CIFL
 BEQ EXTSP
 CLR CIFL
 LBSR PTPNTR
EXTSP RTS
 
PTRGT LDA CIFL
 BNE NPR
 LBSR PTPNTR
 COM CIFL
NPR INC PCODE
 LDA PCODE
 CMPA #12
 BLO SPTLP
 CLR PCODE
 BRA SPTLP
 
PTLFT LDA CIFL
 BNE NPL
 LBSR PTPNTR
 COM CIFL
NPL DEC PCODE
 BPL SPTLP
 LDA #11
 STA PCODE
 BRA SPTLP
 
RESIZE LBSR RMOVC
GORSLP LBSR GETKY
 CMPA #'G
 LBEQ RSGRID
 CMPA #'S
 BEQ RSSPRT
 CMPA #BRK
 BNE GORSLP
 RTS
 
RSSPRT LDD SW
 LDX SSIZE
 PSHS D,X
 LDX #SPRPOS-379
 STX SQAD
 LEAU SQRE,PCR
 STU SQGR
 CLR CCFL
RSSPLP LBSR FLSQ
 LBSR GETKY
 LDB #8
 STB IY
 LDB KTAB+7
 BITB #64
 BNE RSNXT
 LDB #1
 STB IY
RSNXT CMPA #CL
 BEQ HDEC
 CMPA #CR
 BEQ HINC
 CMPA #CU
 BEQ VDEC
 CMPA #CD
 BEQ VINC
 CMPA #BRK
 BEQ RSABRT
 CMPA #RET
 BNE RSSPLP
 PULS D,X
 LBRA RMOVS
RSABRT PULS D,X
 STD SW
 STX SSIZE
 LBSR WSDIM
 LBSR WSSIZ
 LBSR RMOVS
 LBSR BLNKSP
 LBRA LDSP
HDEC LDA SW
 SUBA #8
 BEQ SINFO
 STA SW
 BRA SINFO
HINC LDA SW
 ADDA #8
 CMPA #64
 BHI SINFO
 STA SW
 BRA SINFO
VDEC LDA SH
 SUBA IY
 CMPA #2
 BGE SOK1
 LDA #2
SOK1 STA SH
 BRA SINFO
VINC LDA SH
 ADDA IY
 CMPA #64
 BLE SOK2
 LDA #64
SOK2 STA SH
SINFO LBSR CLCSS
 LBSR WSDIM
 LBSR WSSIZ
 LBSR BLNKSP
 LBSR LDSP
 LBRA RSSPLP
 
RSGRID LDD WD
 PSHS D
 LDX #$686
 STX SQAD
 LEAU SQRE,PCR
 STU SQGR
 CLR CCFL
RSGRLP LBSR FLSQ
 LBSR GETKY
 LDB #8
 STB IY
 LDB KTAB+7
 BITB #64
 BNE RGNXT
 LDB #1
 STB IY
RGNXT CMPA #CL
 BEQ HDECG
 CMPA #CR
 BEQ HINCG
 CMPA #CU
 BEQ VDECG
 CMPA #CD
 BEQ VINCG
 CMPA #BRK
 BEQ RGABRT
 CMPA #RET
 BNE RSGRLP
 PULS D
 LBSR RMOVS
 LBSR CALCSC
 LBSR BLNKGS
 LBSR BLNKGR
 LBRA GRID
RGABRT PULS D
 STD WD
 LBSR RMOVS
 LBRA WGDIM
HDECG LDA WD
 SUBA #8
 BEQ GINFO
 STA WD
 BRA GINFO
HINCG LDA WD
 ADDA #8
 CMPA #64
 BHI GINFO
 STA WD
 BRA GINFO
VDECG LDA HT
 SUBA IY
 CMPA #2
 BGE GOK1
 LDA #2
GOK1 STA HT
 BRA GINFO
VINCG LDA HT
 ADDA IY
 CMPA #64
 BLE GOK2
 LDA #64
GOK2 STA HT
GINFO LBSR WGDIM
 LBRA RSGRLP
 
MAGTAB FDB 1,10,100,1000,10000
 
ENTAD LBSR RMOVC
 LEAU ULINE,PCR
 STU SQGR
 LDX #$1C01
 STX SQAD
 CLR CCFL
 LDA #4
 STA CNT2
 LDD #0
 STD VAR2
 TFR D,Y
 LDX #$1B01
 LBSR WR5DIG
EALP LBSR FLSQ
 LBSR GETKY
 CMPA #BRK
 BEQ ABRTEA
 CMPA #48
 BLO EALP
 CMPA #57
 BHI EALP
 SUBA #48
 STA CNT1
 LBSR RMOVS
 LDB CNT2
 LSLB
 LEAU MAGTAB,PCR
 LEAU B,U
 LDD VAR2
MALP TST CNT1
 BEQ DONMA
 ADDD ,U
 BCS EALP
 DEC CNT1
 BRA MALP
DONMA STD VAR2
 TFR D,Y
 LDX #$1B01
 LBSR WR5DIG
 INC SQAD+1
 DEC CNT2
 BPL EALP
 LDD VAR2
 STD SPRAD
 LBRA LDSP
ABRTEA LBSR RMOVS
 LBRA WSPAD
 
BOX LEAU PIXTAB,PCR
 LDY #XC
 LDA BX0
 STA ,Y
BHLP LDA BY0
 STA 1,Y
 LDX BBASE
 LBSR CLC2
 LDA B,U
 EORA ,X
 STA ,X
 LDA BY1
 STA 1,Y
 INC ,Y
 LDX BBASE
 LBSR CLC2
 LDA B,U
 EORA ,X
 STA ,X
 LDA ,Y
 CMPA BX1
 BLO BHLP
 LDA BY0
 STA 1,Y
BVLP LDA BX1
 STA ,Y
 LDX BBASE
 LBSR CLC2
 LDA B,U
 EORA ,X
 STA ,X
 LDA BX0
 STA ,Y
 INC 1,Y
 LDX BBASE
 LBSR CLC2
 LDA B,U
 EORA ,X
 STA ,X
 LDA 1,Y
 CMPA BY1
 BLO BVLP
 RTS
 
ABGET COM ABORT
DNGET RTS
 
GETA LDX GBASE
 STX BBASE
 CLR CRNRFL
MOVB LDD GX0
 STD BX0
 LDD GX1
 STD BX1
GETLP SYNC
 BSR BOX
 SYNC
 BSR BOX
 LBSR GETKY
 CMPA #BRK
 BEQ ABGET
 CMPA #SPC
 BNE GNX1
 COM CRNRFL
 BRA GETLP
GNX1 CMPA #RET
 BEQ DNGET
 LDB KTAB+7
 BITB #64
 BNE GNX2
 CLR LKEY
GNX2 LDB CRNRFL
 BNE GETBR
 CMPA #CU
 BEQ GET1
 CMPA #CD
 BEQ GET2
 CMPA #CL
 BEQ GET3
 CMPA #CR
 BEQ GET4
 BRA GETLP
GETBR CMPA #CU
 BEQ GET5
 CMPA #CD
 BEQ GET6
 CMPA #CL
 BEQ GET7
 CMPA #CR
 BEQ GET8
 BRA GETLP
 
GET1 LDA GY0
 BEQ GETLP
 DEC GY0
 DEC GY1
 BRA MOVB
GET2 LDA GY1
 CMPA GY2
 BEQ GETLP
 INC GY0
 INC GY1
 BRA MOVB
GET3 LDA GX0
 BEQ GETLP
 DEC GX0
 DEC GX1
 BRA MOVB
GET4 LDA GX1
 CMPA GX2
 BEQ GETLP
 INC GX0
 INC GX1
 BRA MOVB
GET5 LDA GY1
 SUBA GY0
 CMPA #1
 BLS GETLP
 DEC GY1
 LBRA MOVB
GET6 LDA GY1
 CMPA GY2
 LBEQ GETLP
 SUBA GY0
 CMPA MAXH
 LBEQ GETLP
 INC GY1
 LBRA MOVB
GET7 LDA GX1
 SUBA GX0
 CMPA #1
 LBLS GETLP
 DEC GX1
 LBRA MOVB
GET8 LDA GX1
 CMPA GX2
 LBEQ GETLP
 SUBA GX0
 CMPA MAXW
 LBEQ GETLP
 INC GX1
 LBRA MOVB
 
ABPUT COM ABORT
DNPUT RTS
 
PUTA LDX PBASE
 STX BBASE
MOVPB LDD PX0
 STD BX0
 LDD PX1
 STD BX1
PUTLP SYNC
 LBSR BOX
 SYNC
 LBSR BOX
 LBSR GETKY
 CMPA #BRK
 BEQ ABPUT
 CMPA #RET
 BEQ DNPUT
 LDB KTAB+7
 BITB #64
 BNE PNX1
 CLR LKEY
PNX1 CMPA #CU
 BEQ PUT1
 CMPA #CD
 BEQ PUT2
 CMPA #CL
 BEQ PUT3
 CMPA #CR
 BEQ PUT4
 BRA PUTLP
PUT1 LDA PY0
 BEQ PUTLP
 DEC PY0
 DEC PY1
 BRA MOVPB
PUT2 LDA PY1
 CMPA PY2
 BEQ PUTLP
 INC PY0
 INC PY1
 BRA MOVPB
PUT3 LDA PX0
 BEQ PUTLP
 DEC PX0
 DEC PX1
 BRA MOVPB
PUT4 LDA PX1
 CMPA PX2
 BEQ PUTLP
 INC PX0
 INC PX1
 BRA MOVPB
 
PIXCPY LEAU PIXTAB,PCR
 LDA GY0
 STA GY2
 LDA PY0
 STA PY2
CPVLP LDA GX0
 STA GX2
 LDA PX0
 STA PX2
CPHLP LDY #GX2
 LDX GBASE
 LBSR CLC2
 LDY #PX2
 LDA B,U
 ANDA ,X
 BEQ CPIX
 LDX PBASE
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 BRA PCNXT
CPIX LDX PBASE
 LBSR CLC2
 LDA B,U
 COMA
 ANDA ,X
 STA ,X
PCNXT INC GX2
 INC PX2
 LDA GX2
 CMPA GX1
 BLS CPHLP
 INC GY2
 INC PY2
 LDA GY2
 CMPA GY1
 BLS CPVLP
 RTS
 
 
 
