********************************
*   SPRITE DESIGNER TEXT#1     *
********************************
 
 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
 
GRDPOS EQU $080C
GSPPOS EQU $0801
SPRPOS EQU $1201
DMIPOS EQU $1B09
COLPOS EQU $1B07
PTNPOS EQU $1B13
 
 ORG 10000
 PUT *
 
 SETDP $04
 
 LBRA START
 
MOVC LBSR JPOS
 CMPD GX
 BEQ ENDMC
 TST CIFL
 BEQ ENDMC
 PSHS D
 LBSR XORC
 PULS D
 STD GX
 LBRA XORC
ENDMC RTS
 
FLSHC DEC CCFL
 BNE ENDFC
 LBSR XORC
 COM CIFL
 LDA #$50
 STA CCFL
ENDFC RTS
 
RMOVC LDA CIFL
 BEQ ENDRC
 CLR CIFL
 LBRA XORC
ENDRC RTS
 
WFIR LDA $FF00
 ANDA #1
 BEQ WFIR
 RTS
 
DMPNTR LDX #DMIPOS+256
 LEAU PNTR,PCR
 LDB ACODE
 LSLB
 ABX
 LBRA SP8X
 
PTPNTR LDX #PTNPOS+256
 LEAU PNTR,PCR
 LDB PCODE
 ABX
 LBRA SP8X
 
DLINE LDA STENFL
 BNE ENLN
 COM STENFL
 LDD GX
 STD X1
 LBRA WFIR
ENLN CLR STENFL
 LDD GX
 STD X2
 LBSR LINE
 LBRA WFIR
 
FHAND BSR CELL
 LDA $FF00
 BITA #1
 BNE DONF
 LBSR JPOS
 STD GX
 BRA FHAND
DONF RTS
 
INVP LBSR XORC
 LBSR XORP
 LBRA WFIR
 
CELL LDA PTFL
 BEQ SNOP
 BSR PBIT
 PSHS CC
 LDA COLOR
 BNE NINV
 PULS CC
 BEQ WHT
 BRA BLK
NINV PULS CC
 BEQ BLK
 BRA WHT
SNOP LDA COLOR
 BEQ BLK
WHT LBSR SETC
 LBRA SETP
BLK LBSR CLRC
 LBRA CLRP
 
XOR LDA PTFL
 BEQ XNOP
 BSR PBIT
 BNE XNOP
 RTS
XNOP LBSR XORC
 LBRA XORP
 
PBIT LDU PTRN
 LDD GX
 ANDA #7
 ANDB #7
 LDB B,U
 LEAU PIXTAB,PCR
 ANDB A,U
 RTS
 
PCOL LDY #XC
 LDD GX
 STD ,Y
 LDX #GSPPOS
 LBSR CLC2
 LEAU PIXTAB,PCR
 LDA ,X
 EORA COLOR
 ANDA B,U
 RTS
 
PCOL2 LDY #XC
 LDD GX
 STD ,Y
 LDX #GSPPOS
 LBSR CLC2
 LEAU PIXTAB,PCR
 LDA ,X
 ANDA B,U
 RTS
 
HFILL BSR PCOL
 BEQ NOFLL
 LDA GX
 PSHS A
FLP1 INC GX
 LDA GX
 CMPA WD
 BEQ STPF
 BSR PCOL
 BEQ STPF
 BSR XOR
 BRA FLP1
STPF LDA ,S
 STA GX
FLP2 BSR PCOL
 BEQ STPF2
 BSR XOR
 DEC GX
 BPL FLP2
STPF2 PULS A
 STA GX
NOFLL LDA $FF00
 BITA #1
 BNE DONHF
 LBSR JPOS
 STD GX
 BRA HFILL
DONHF RTS
 
VFILL BSR PCOL
 BEQ NVFLL
 LDA GY
 PSHS A
FVLP1 INC GY
 LDA GY
 CMPA HT
 BEQ STPFV
 LBSR PCOL
 BEQ STPFV
 LBSR XOR
 BRA FVLP1
STPFV LDA ,S
 STA GY
FVLP2 LBSR PCOL
 BEQ STPFV2
 LBSR XOR
 DEC GY
 BPL FVLP2
STPFV2 PULS A
 STA GY
NVFLL LDA $FF00
 BITA #1
 BNE DONVF
 LBSR JPOS
 STD GX
 BRA VFILL
DONVF RTS
 
SETUPC LDY #XC
 LDA GX
 LDB SC
 MUL
 STB ,Y
 LDA GY
 LDB SC
 MUL
 INCB
 STB 1,Y
 LDA SZ
 STA CNT1
 LDX #GRDPOS
 LBRA CLC2
 
XORC BSR SETUPC
 LDA CNT1
 LEAU SHPTAB-1,PCR
 LDA A,U
 LEAU MULTAB,PCR
 LDB B,U
 BEQ NMX
 MUL
NMX STD XORLP+1,PCR
XORLP LDD #0
 EORA ,X
 EORB 1,X
 STD ,X
 LEAX 32,X
 DEC CNT1
 BNE XORLP
 RTS
 
SETC BSR SETUPC
 LDA CNT1
 LEAU SHPTAB-1,PCR
 LDA A,U
 LEAU MULTAB,PCR
 LDB B,U
 BEQ NMS
 MUL
NMS STD SETLP+1,PCR
SETLP LDD #0
 ORA ,X
 ORB 1,X
 STD ,X
 LEAX 32,X
 DEC CNT1
 BNE SETLP
 RTS
 
CLRC BSR SETUPC
 LEAU ANDTAB,PCR
 LDA B,U
 STA NMC+1,PCR
 COMA
 STA NMC+2,PCR
 LDA CNT1
 LEAU SHPTAB-1,PCR
 LDA A,U
 COMA
 LEAU MULTAB,PCR
 LDB B,U
 BEQ NMC
 MUL
NMC ADDD #0
 STD CLRLP+1,PCR
CLRLP LDD #0
 ANDA ,X
 ANDB 1,X
 STD ,X
 LEAX 32,X
 DEC CNT1
 BNE CLRLP
 RTS
 
SETP LDY #XC
 LDD GX
 STD ,Y
 LDX #GSPPOS
 LBSR CLC2
 LEAU PIXTAB,PCR
 LDA B,U
 ORA ,X
 STA ,X
 RTS
 
CLRP LDY #XC
 LDD GX
 STD ,Y
 LDX #GSPPOS
 BSR CLC2
 LEAU PIXTAB,PCR
 LDA B,U
 COMA
 ANDA ,X
 STA ,X
 RTS
 
XORP LDY #XC
 LDD GX
 STD ,Y
 LDX #GSPPOS
 BSR CLC2
 LEAU PIXTAB,PCR
 LDA B,U
 EORA ,X
 STA ,X
 RTS
 
CLCSS LDD SW
 LSRA
 LSRA
 LSRA
 MUL
 STD SSIZE
 RTS
 
CALCSC LDA WD
 LSRA
 LSRA
 LSRA
 LEAU WDSTAB-1,PCR
 LDA A,U
 STA SC
 LEAU HTSTAB,PCR
 LDB #8
 LDA HT
SCLP CMPA ,U+
 BLS SCLD
 DECB
 BRA SCLP
SCLD CMPB SC
 BHS DONSC
 STB SC
DONSC LDA SC
 CMPA #2
 BEQ SCL2
 DECA
SCL2 STA SZ
 RTS
 
CALC LDX #$600
CLC2 LDD ,Y
 LSRA
 LSRA
 LSRA
 LEAX A,X
 LDA #32
 MUL
 LEAX D,X
 LDB ,Y
 ANDB #7
 RTS
 
RDKYS LDA #255
 STA $FF02
 LDA $FF00
 ANDA #3
 CMPA #3
 BNE ENDK
 LDX #KTAB
 ORCC #1
 LDA #254
 STA $FF02
KLP LDB $FF00
 STB ,X+
 ROL $FF02
 BCS KLP
ENDK RTS
 
GETKY BSR RDKYS
 LEAX -8,X
 CLRA
 LEAS -1,S
GKLPA LDB #1
 STB ,S
 LDB ,X+
 ORB #128
GKLPB BITB ,S
 BEQ FNDK
 ADDA #8
 LSL ,S
 BPL GKLPB
 SUBA #55
 CMPA #8
 BLO GKLPA
 CLRA
NWKY STA LKEY
 PULS B,PC
FNDK ADDA #48
 CMPA LKEY
 BNE NWKY
 CLRA
 PULS B,PC
 
JPOS LDU #$FF01
 LDA ,U
 ORA #8
 STA ,U
 LDA 2,U
 ANDA #$F7
 STA 2,U
 BSR RDJOY
 LDA HT
 MUL
 LSLB
 ROLA
 LSLB
 ROLA
 PSHS A
 LDA ,U
 ANDA #$F7
 STA ,U
 BSR RDJOY
 LDA WD
 MUL
 LSLB
 ROLA
 LSLB
 ROLA
 PULS B,PC
 
RDJOY LDD #$0680
 PSHS B
RJLP LSR ,S
 STB $FF20
 TST $FF00
 BMI J1
 SUBB ,S
 BRA J2
J1 ADDB ,S
J2 DECA
 BNE RJLP
 LSRB
 LSRB
 PULS A,PC
 
ENLG LDD GX
 PSHS D
 CLRA
 CLRB
 STD GX
ENLP LBSR PCOL2
 BEQ PBLK
 LBSR SETC
 BRA DONW
PBLK LBSR CLRC
DONW INC GX
 LDA GX
 CMPA WD
 BLO ENLP
 CLR GX
 INC GY
 LDA GY
 CMPA HT
 BLO ENLP
 PULS D
 STD GX
 RTS
 
SP8X LDB #8
SPLP LDA ,U+
 EORA ,X
 STA ,X
 LEAX 32,X
 DECB
 BNE SPLP
 RTS
 
SP8 LDB #8
SP8LP LDA ,U+
 STA ,X
 LEAX 32,X
 DECB
 BNE SP8LP
 RTS
 
LDSP BSR SETUP
LDSV CLRB
LDSH LDA ,U+
 STA B,X
 INCB
 CMPB CNT1
 BLO LDSH
 LEAX 32,X
 DEC CNT2
 BNE LDSV
 RTS
 
SVSP BSR SETUP
SVSV CLRB
SVSH LDA B,X
 STA ,U+
 INCB
 CMPB CNT1
 BLO SVSH
 LEAX 32,X
 DEC CNT2
 BNE SVSV
 RTS
 
SETUP LDU SPRAD
 LDX #SPRPOS
SET2 LDA SW
 LSRA
 LSRA
 LSRA
 STA CNT1
 LDA SH
 STA CNT2
 RTS
 
LINE LDB #1
 LDA X2
 SUBA X1
 BPL PDX
 NEGA
 NEGB
PDX STA DX
 STB IX
 LDB #1
 LDA Y2
 SUBA Y1
 BPL PDY
 NEGA
 NEGB
PDY STA DY
 STB IY
 CMPA DX
 BLO LOGR
 
 LDA DY
 LSRA
 STA VAR
HGLP LDD X1
 STD GX
 LBSR CELL
 LDA Y1
 CMPA Y2
 BEQ EXITLN
 ADDA IY
 STA Y1
 LDA VAR
 ADDA DX
 CMPA DY
 BLO TOK1
 SUBA DY
 LDB X1
 ADDB IX
 STB X1
TOK1 STA VAR
 BRA HGLP
 
LOGR LDA DX
 LSRA
 STA VAR
LGLP LDD X1
 STD GX
 LBSR CELL
 LDA X1
 CMPA X2
 BEQ EXITLN
 ADDA IX
 STA X1
 LDA VAR
 ADDA DY
 CMPA DX
 BLO TOK2
 SUBA DX
 LDB Y1
 ADDB IY
 STB Y1
TOK2 STA VAR
 BRA LGLP
EXITLN RTS
 
GMODE LDA #$F8
 STA $FF22
 STA $FFC7
 STA $FFC9
 STA $FFC0
 STA $FFC3
 STA $FFC5
 RTS
 
PCLS CLRA
 CLRB
 LDX #$600
PCLSLP STD ,X++
 CMPX #$1E00
 BLO PCLSLP
 RTS
 
WDSTAB FCB 8,8,5,4,3,3,2,2
HTSTAB FCB 15,18,21,25,32,42,64
 
MULTAB FCB 0,128,64,32,16,8,4,2
ANDTAB FCB 0,128,192,224
       FCB 240,248,252,254
 
PIXTAB FCB 128,64,32,16,8,4,2,1
 
SHPTAB FCB $40,$60,$70,$78
       FCB $7C,$7E,$7F
 
SQRE   FDB $FFFF,$FFFF
       FDB $FFFF,$FFFF
 
PNTR   FCB 16,40,68,238
       FCB 40,40,40,56
 
ICONS  RMB 40
NUMS   RMB 88
PTRNS  RMB 96
 
CU     EQU 91
CD     EQU 92
CL     EQU 93
CR     EQU 94
SPC    EQU 95
RET    EQU 96
FF     EQU 97
BRK    EQU 98
 
FLPTR SYNC
 DEC CCFL
 BPL FPDON
 LBSR PTPNTR
 COM CIFL
 LDA #$10
 STA CCFL
FPDON RTS
 
FLSQ SYNC
 DEC CCFL
 BPL FSDON
 LDX SQAD
 LDU SQGR
 LBSR SP8X
 COM CIFL
 LDA #$10
 STA CCFL
FSDON RTS
 
RMOVS LDA CIFL
 BEQ RSDON
 CLR CIFL
 LDX SQAD
 LDU SQGR
 LBRA SP8X
RSDON RTS
 
GRID LDA SC
 CMPA SZ
 BEQ GRID2
DOGRD LDY #XC
 CLR 1,Y
 LDA HT
 INCA
 STA CNT1
 LEAU PIXTAB,PCR
VLP LDA WD
 INCA
 STA CNT2
 CLR ,Y
HLP LDX #GRDPOS
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 LDA ,Y
 ADDA SC
 STA ,Y
 DEC CNT2
 BNE HLP
 LDA 1,Y
 ADDA SC
 STA 1,Y
 DEC CNT1
 BNE VLP
 RTS
 
GRID2 LDY #XC
 LEAU PIXTAB,PCR
 CLR ,Y
 LDD WD
 ADDD #$0101
 STD CNT1
 LDA SC
 MUL
 DECB
 STB VAR
 LDA CNT1
 LDB SC
 MUL
 DECB
 STB VAR+1
G2HLP LDX #GRDPOS
 CLR 1,Y
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 LDA VAR
 STA 1,Y
 LDX #GRDPOS
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 LDA ,Y
 ADDA SC
 STA ,Y
 DEC CNT1
 BNE G2HLP
 CLR 1,Y
G2VLP LDX #GRDPOS
 CLR ,Y
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 LDA VAR+1
 STA ,Y
 LDX #GRDPOS
 LBSR CLC2
 LDA B,U
 ORA ,X
 STA ,X
 LDA 1,Y
 ADDA SC
 STA 1,Y
 DEC CNT2
 BNE G2VLP
 RTS
 
COPYS LDX #SPRPOS
 LDU #GSPPOS
 BRA COPY
 
COPYG LDX #GSPPOS
 LDU #SPRPOS
 
COPY LBSR SET2
CPSV CLRB
CPSH LDA B,X
 STA B,U
 INCB
 CMPB CNT1
 BLO CPSH
 LEAX 32,X
 LEAU 32,U
 DEC CNT2
 BNE CPSV
 RTS
 
BLNKSP LDX #SPRPOS
 LDD #$0840
 STD CNT1
BLSV CLRB
BLSH CLR B,X
 INCB
 CMPB CNT1
 BLO BLSH
 LEAX 32,X
 DEC CNT2
 BNE BLSV
 RTS
 
BLNKGS LDX #GSPPOS
 LDD #$0840
 STD CNT1
BLGSV CLRB
BLGSH CLR B,X
 INCB
 CMPB CNT1
 BLO BLGSH
 LEAX 32,X
 DEC CNT2
 BNE BLGSV
 RTS
 
BLNKGR LDX #GRDPOS
 LDD #$1390
 STD CNT1
BLGV CLRB
BLGH CLR B,X
 INCB
 CMPB CNT1
 BLO BLGH
 LEAX 32,X
 DEC CNT2
 BNE BLGV
 RTS
 
WSDIM LDX #SPRPOS-384
 LDB SW
 CLRA
 TFR D,Y
 BSR WR2DIG
 LDA #10
 BSR WDIG
 LDB SH
 CLRA
 TFR D,Y
 BRA WR2DIG
 
WGDIM LDX #GSPPOS-384
 LDB WD
 CLRA
 TFR D,Y
 BSR WR2DIG
 LDA #10
 BSR WDIG
 LDB HT
 CLRA
 TFR D,Y
 BRA WR2DIG
 
WSSIZ LDY SSIZE
 LDX #$1C81
 BRA WR3DIG
 
WSPAD LDY SPRAD
 LDX #$1B01
 
WR5DIG LDD #10000
 BSR DIGIT
WR4DIG LDD #1000
 BSR DIGIT
WR3DIG LDD #100
 BSR DIGIT
WR2DIG LDD #10
 BSR DIGIT
WR1DIG LDD #1
 
DIGIT STD VAR
 TFR Y,D
 CLR CNT1
DGLP SUBD VAR
 BCS DDIG
 INC CNT1
 BRA DGLP
DDIG ADDD VAR
 TFR D,Y
 LDA CNT1
 
WDIG LEAU NUMS,PCR
 LSLA
 LSLA
 LSLA
 LEAU A,U
 LBSR SP8
 LEAX -255,X
 RTS
 
DICONS LEAU ICONS,PCR
 LDX #DMIPOS
 LDA #5
 STA CNT1
DILP LBSR SP8
 LEAX -254,X
 DEC CNT1
 BNE DILP
 RTS
 
DPTRNS LEAU PTRNS,PCR
 LDX #PTNPOS
 LDA #12
 STA CNT1
DPLP LBSR SP8
 LEAX -255,X
 DEC CNT1
 BNE DPLP
 RTS
 
ULINE FCB 255,0,0,0,0,0,0,0
 
 
START EQU *
 
 
