369 lines
9.4 KiB
NASM
Executable File
369 lines
9.4 KiB
NASM
Executable File
OPT NOL
|
|
LIB RRF
|
|
OPT LIS
|
|
STTL LINKY MARQUEE EFFECT
|
|
*
|
|
*RAM AREA
|
|
*
|
|
ORG RMRAM
|
|
UPPER RMB 1
|
|
LOWER RMB 1
|
|
LEFT RMB 1
|
|
RIGHT RMB 1
|
|
HFLAV RMB 1
|
|
LFLAV RMB 1
|
|
*
|
|
*VECTORS
|
|
*
|
|
ORG RMORG
|
|
JMP ENDWAV
|
|
|
|
ENDWAV PULS D GET RETURN
|
|
LDU CRPROC
|
|
STD PD,U SAVE PROCESS GUY
|
|
MAKP WCPROC START THE COLOR PROCESS
|
|
|
|
LDA #$EF
|
|
|
|
FR33 LDX #$3B80 UPPER LEFT AT STAT
|
|
LDY #$5A82 LOWER RIGHT AT START
|
|
|
|
FR22 STX PD+2,U
|
|
STY PD+4,U
|
|
STA PD+6,U
|
|
|
|
NAP 1,FR11 THE SLEEPER
|
|
|
|
FR11 LDX PD+2,U
|
|
LDY PD+4,U
|
|
LDA PD+6,U
|
|
|
|
LDB #2 INTERATIONS UNTIL SLEEP
|
|
STB PD+7,U COUNTER
|
|
|
|
FR0 JSR MARQ
|
|
TSTA
|
|
BEQ FR1D IF ZERO...NO CHANGE
|
|
CMPA #$12
|
|
BNE FR1C
|
|
LDA #$EF
|
|
BRA FR1D
|
|
FR1C CMPA #$F1
|
|
BNE FR1B
|
|
LDA #$DE
|
|
BRA FR1D
|
|
FR1B CMPA #$23 STUPID O1
|
|
BNE FR1A
|
|
LDA #$F1
|
|
BRA FR1D
|
|
FR1A SUBA #$22
|
|
FR1D CMPX #$616 DID WE JUST DO CENTER
|
|
BEQ FR2 YEP
|
|
LEAX -$102,X
|
|
LEAY $102,Y
|
|
DEC PD+7,U
|
|
BNE FR0
|
|
BRA FR22 SLEEP TIME
|
|
|
|
* LDB TIMER SEE IF WE ARE WANTED??
|
|
* BNE FR22 TAKE A NAP
|
|
* BRA FR0 GET ANOTHER FRAME IN
|
|
|
|
FR2 TSTA DONE??
|
|
BEQ SUCTIM
|
|
CLRA
|
|
BRA FR33 AND JUST CLEAR 'EM OUT
|
|
|
|
SUCTIM JMP [PD,U] RETURN!
|
|
|
|
TABTAB FDB DECTAB,$1F00 PRIMRIES TO SECONDARIES
|
|
FDB DECT1,$3F00 PRI - SEC - WHITE
|
|
FDB DECT2,$3F00
|
|
FDB BRTTAB,$F00
|
|
FDB DCATAB,$F00
|
|
FDB BPRTAB,$F00
|
|
FDB GYRTAB,$F00
|
|
FDB BFTAB,$1F00
|
|
FDB CLLTAB,$1F00
|
|
FDB LOGTAB,$F00
|
|
FDB BFTAB2,$1F00
|
|
FDB DECTB4,$1F00
|
|
|
|
BRTTAB FCB 1,2,3,4,5,6,7,$F,$17,$1F,$2D,$34
|
|
FCB $3A,$7A,$BA,$FA,$F8,$F0,$E0,$D0,$C0,$C0
|
|
FCB 0,0
|
|
|
|
DCATAB FCB $C0,$C0,$D0,$E0,$F0,$F8,$FA,$BA,$7A,$3A
|
|
FCB $34,$2D,$1F,$17,$F,7,6,5,4,3,2,1,0,0
|
|
|
|
BPRTAB FCB $C0,$C1,$C2,$C3,$C4,$C5,$C6,$C7,$87,$87,$47,$47
|
|
FCB $07,$07,$47,$47,$87,$87,$C7,$C7,$C6,$C5,$C4,$C3
|
|
FCB $C2,$C1,0,0
|
|
|
|
GYRTAB FCB $38,$38,$31,$3A,$3B,$3C,$2D,$2E,$2F,$27
|
|
FCB $1F,$17,$17,$0F,$07,$07,$0F,$17,$17,$1F,$27,$2F
|
|
FCB $2E,$2D,$2C,$3B,$3A,$39,0,0
|
|
|
|
BFTAB2 FCB $38,$39,$3A,$3B,$3C
|
|
FCB $3D,$3E,$3F,$37,$2F,$27,$17,$0F
|
|
FCB $07,$06,$05,$04,$03,$02
|
|
FCB $01,$01,$01,$49,$CA,$DA,$E8,$F8
|
|
FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
|
|
FCB $C0,$C0,$C0,$07,$07,$38,$38,$38
|
|
FCB $07,$C0,$38,$FF,$FF
|
|
FCB 0,0
|
|
|
|
BFTAB FCB $38,$39,$3A,$3B,$3C
|
|
FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17
|
|
FCB $47,$47,$87,$87,$C7,$C7
|
|
FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8
|
|
FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
|
|
FCB $C0,$C0,$C0,$07,$07,$38,$38,$38
|
|
FCB $07,$C0,$38,$FF,$FF
|
|
FCB 0,0
|
|
|
|
CLLTAB FCB $38,$39,$3A,$3B,$3C
|
|
FCB $3D,$3E,$3F,$37,$2F,$27,$1F,$17
|
|
FCB $47,$47,$87,$87,$C7,$C7
|
|
FCB $C6,$C5,$CC,$CB,$CA,$DA,$E8,$F8
|
|
FCB $F9,$FA,$FB,$FD,$FF,$BF,$3F,$3E
|
|
FCB $3C
|
|
FCB 0,0
|
|
|
|
LOGTAB FCB $37,$2F,$27,$1F,$17,$47,$47,$87
|
|
FCB $87,$C7,$C7,$C6,$C5,$CC,$CB,$CA
|
|
FCB $C0,$D0,$98,$38,$33
|
|
FCB 0,0
|
|
|
|
DECT2 FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F
|
|
FCB $3F,$7F,$7F,$BF,$BF,$FF,$FF,$FF,$BF,$BF
|
|
FCB $7F,$7F,$3F,$3F
|
|
FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38
|
|
FCB $30,$28,$20,$08,$08,$49
|
|
FCB $52,$A5,$FB,$FC,$FD,$FE,$FF,$FF
|
|
FCB $FE,$FD,$FC,$FB,$FA,$F9,$F8
|
|
FCB $F0,$E8
|
|
FCB $E0,$D8,$D0,$C8,$C0,$80,$40,$01
|
|
FCB $01,$01,$01,$02,$03
|
|
FCB $04,$05,$06,$4F,$EF,$F7,$FF,$FF
|
|
FCB $F7,$EF,$E7,$DF,$D7,$CF,$C7
|
|
FCB $87,$87,$47
|
|
FCB $47,$7,0,0
|
|
|
|
DECT1 FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F
|
|
FCB $3F,$7F,$7F,$BF,$BF,$FF,$FF,$FF,$BF,$BF
|
|
FCB $7F,$7F,$3F,$3F
|
|
FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38
|
|
FCB $78,$78,$B8,$B8,$F8,$F8
|
|
FCB $F9,$FA,$FB,$FC,$FD,$FE,$FF,$FF
|
|
FCB $FE,$FD,$FC,$FB,$FA,$F9,$F8
|
|
FCB $F0,$E8
|
|
FCB $E0,$D8,$D0,$C8,$C0,$C1,$C2,$C3
|
|
FCB $C4,$C5,$C6,$C7,$C7
|
|
FCB $CF,$D7,$DF,$E7,$EF,$F7,$FF,$FF
|
|
FCB $F7,$EF,$E7,$DF,$D7,$CF,$C7
|
|
FCB $87,$87,$47
|
|
FCB $47,$7,0,0
|
|
|
|
DECTB4 FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F
|
|
FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38
|
|
FCB $78,$78,$B8,$B8,$F8,$F8,$F0,$E8
|
|
FCB $E0,$D8,$D0,$C8,$C0,$80,$41,$01
|
|
FCB $01,$02,$03,$04,$05,$06,$07,$07
|
|
FCB $07,$7,0,0
|
|
|
|
DECTAB FCB $07,$0F,$17,$1F,$27,$2F,$37,$3F
|
|
FCB $3E,$3D,$3C,$3B,$3A,$39,$38,$38
|
|
FCB $78,$78,$B8,$B8,$F8,$F8,$F0,$E8
|
|
FCB $E0,$D8,$D0,$C8,$C0,$C1,$C2,$C3
|
|
FCB $C4,$C5,$C6,$C7,$C7,$87,$87,$47
|
|
FCB $47,$7,0,0
|
|
|
|
WCPROC LDY #TABTAB
|
|
PCCALL JSR RAND GET
|
|
ANDA #$F LOOK AT LOW
|
|
CMPA #12 0-11 PLEASE
|
|
BHS PCCALL
|
|
ASLA
|
|
ASLA 4 PER
|
|
TFR A,B
|
|
LDX B,Y GET THE POINTER
|
|
ADDB #2 POINT AT MASK
|
|
JSR RAND
|
|
ANDA B,Y MASK IT
|
|
STX PD,U SAVE START
|
|
LEAX A,X
|
|
STX PD+2,U SAVE IT
|
|
|
|
PCSUB LDX PD+2,U GET THE POINTER INTO OUR THING
|
|
LEAX 1,X
|
|
TST ,X END OF LIST
|
|
BNE PCCS1
|
|
LDX PD,U START OVER
|
|
PCCS1 STX PD+2,U MOVE TO NEXT
|
|
|
|
RCS1 LDY #PCRAM+1 FOR COLOR MATRIX
|
|
RCS3 LDA ,X+ GET A BYTE
|
|
BNE RCS2
|
|
LDX PD,U START TABLE OVER
|
|
BRA RCS3
|
|
RCS2 STA ,Y+ STORE IT
|
|
CMPY #PCRAM+16
|
|
BLO RCS3 AND LOOP
|
|
|
|
LDB #$00 MOVING BLACK
|
|
LDA PD+4,U
|
|
DECA
|
|
CMPA #$5
|
|
BLO PCS7
|
|
LDA #4
|
|
PCS7 STA PD+4,U OFFSETTER
|
|
LDX #PCRAM+1
|
|
PCS4 STB A,X
|
|
LEAX 5,X
|
|
CMPX #PCRAM+16
|
|
BLO PCS4
|
|
NAP 1,PCSUB
|
|
|
|
* MARQ - DRAW A LINKY MARQUIS. PASS UPPER LEFT IN X.
|
|
* PASS LOWER RIGHT IN Y.
|
|
* RANGES ARE INCLUSIVE. LOWER-UPPER MUST BE EVEN (ODD INCLUSIVE)
|
|
* A CONTAINS THE HIGH AND LOW FLAVOR COLORS (<OUTER><INNER>)
|
|
|
|
MARQ PSHS X,Y,D,U
|
|
ANDA #$F0
|
|
STA HFLAV SAVE FLAVOR COLORS
|
|
LDA ,S
|
|
ANDA #$0F
|
|
STA LFLAV
|
|
TFR X,D
|
|
STA LEFT
|
|
STB UPPER
|
|
TFR Y,D
|
|
STA RIGHT
|
|
STB LOWER
|
|
SUBB UPPER LOWER-UPPER ODD???
|
|
RORB CHECK
|
|
BCC MARQ1 NOPE
|
|
DEC LOWER NOT THAT LOW...OK?
|
|
|
|
MARQ1 JSR GHIGH GET HIGH DUPED BYTE IN B
|
|
LDA UPPER GET THE UPPER
|
|
JSR HHIGH HIGH PART OF TOP DMASIZONTAL LINE
|
|
INCA
|
|
JSR GLOW
|
|
BSR HLOW LOW PART
|
|
*
|
|
LDA LOWER
|
|
JSR GHIGH
|
|
BSR HHIGH 1 LESS FOR GEN PURP
|
|
DECA
|
|
JSR GLOW
|
|
BSR HLOW
|
|
*
|
|
LDA LEFT LEFT BYTE
|
|
JSR GNORM
|
|
BSR VHIGH HIGH FLAVOR STUFF IN A VERT LINE
|
|
*
|
|
LDA RIGHT
|
|
JSR GFLIP
|
|
BSR VHIGH
|
|
|
|
MAR11 PULS U,D,X,Y,PC
|
|
|
|
* VHIGH - PLOT VERTICAL LINE FROM [UPPER TO LOWER]
|
|
* CONSISTING OF EVERY OTHER BYTE GETTING THE HIGH NIBBLE COLOR
|
|
* A HAS THE X TO USE
|
|
|
|
VHIGH PSHS D,X,CC
|
|
BSR SETUPV SETUP X,B
|
|
SEI
|
|
STA DMACON STORE CONSTANT
|
|
LDA #5 1 WIDE, B HIGH
|
|
EORB #4
|
|
STD DMASIZ
|
|
LDD #0
|
|
STD DMAORG FROM NOWHERE
|
|
STX DMADES DESTINATION PEGGED
|
|
LDA #$12 WRITE THE DMACONANT LINES
|
|
STA DMACTL
|
|
PULS CC,D,X,PC
|
|
|
|
SETUPV PSHS B
|
|
LDB UPPER GET UPPER Y
|
|
INCB START 1 AFTER
|
|
TFR D,X THIS IS PONTER
|
|
LDB LOWER
|
|
SUBB UPPER THIS IS GUARANTEED EVEN
|
|
DECB EXCLUSIVE PLEASE
|
|
PULS A,PC
|
|
|
|
* HHIGH - THIS ROUTINE PLOTS HIGH COLOR IN THE HIGH HALF OF
|
|
* CONSECUTIVE DMASIZONTAL PIXELS GOING FROM
|
|
* [LEFT TO RIGHT] AT THE HEIGHT GIVEN IN REGISTER A.
|
|
|
|
HHIGH PSHS X,D,CC
|
|
BSR SETUPH SETUP COUNT IN B, X POINTS AT FIRST BYTE
|
|
INCB ADD 1 TO MAKE IT INCLUSIVE
|
|
HHIGH1 SEI
|
|
STA DMACON STORE THE CONSTANT
|
|
EORB #4
|
|
STB DMASIZ
|
|
LDA #5
|
|
STA DMASIZ+1 1 HIGH
|
|
STD DMAORG GOOD ORIGINATION
|
|
STX DMADES
|
|
LDA #$12
|
|
STA DMACTL
|
|
PULS X,D,PC,CC
|
|
|
|
HLOW PSHS X,D,CC
|
|
BSR SETUPH SETUP
|
|
DECB EXCLUSIVE
|
|
LEAX $100,X MOVE OVER 1
|
|
BRA HHIGH1 AND GO
|
|
|
|
SETUPH PSHS B SAVE COLOR
|
|
TFR A,B MOVE Y OVER
|
|
LDA LEFT GET LEFT X
|
|
TFR D,X MAKE POINTER
|
|
LDB RIGHT
|
|
SUBB LEFT FIND DIFFERENCE (EXCLUSIVE
|
|
PULS A,PC AND RETURN
|
|
|
|
GHIGH LDB HFLAV GET HIGH FLAVOR
|
|
LSRB
|
|
LSRB
|
|
LSRB
|
|
LSRB
|
|
ORAB HFLAV HIGH FLAVOR IN BOTH
|
|
RTS
|
|
|
|
GLOW LDB LFLAV
|
|
ASLB
|
|
ASLB
|
|
ASLB
|
|
ASLB
|
|
ORAB LFLAV
|
|
RTS
|
|
|
|
GNORM LDB HFLAV
|
|
ORAB LFLAV
|
|
RTS
|
|
|
|
GFLIP LDB HFLAV
|
|
LSRB
|
|
LSRB
|
|
LSRB
|
|
LSRB
|
|
PSHS B
|
|
LDB LFLAV
|
|
ASLB
|
|
ASLB
|
|
ASLB
|
|
ASLB
|
|
ORAB ,S+
|
|
RTS
|
|
|
|
END
|