The article describing this program appears on a separate page.
AVALNCH.ASM is available in ATASCII format.
*****************************
* *
* 'AVALANCHE' *
* written by: TOMMY BENNETT *
* *
*****************************
;
;OS SYMBOLS !!!
;
COLPM0 = $02C0 ;P/M COLORS
COLPM1 = $02C1
COLPM2 = $02C2
COLPM3 = $02C3
COLPF0 = $02C4 ;PLAYFIELD COLORS
COLPF1 = $02C5
COLPF2 = $02C6
COLPF3 = $02C7
COLBK = $02C8
CHBASE = $02F4 ;CHAR. SET ADDRESS
HPOSP0 = $D000 ;P/M HORIZONTAL
HPOSP1 = $D001 ;REGISTERS
HPOSP2 = $D002
HPOSP3 = $D003
P0PF = $D004 ;COLLISION
P1PF = $D005 ;REGISTERS
P2PF = $D006
P3PF = $D007
P0PL = $D00C
P3PL = $D00F
GRACTL = $D01D ;GRAPHICS CONTROL
HITCLR = $D01E ;COLLISION CLEAR
WSYNC = $D40A ;WAIT FOR SYNC
NMIEN = $D40E ;INTERRUPT ENABLE
PRIOR = $026F ;PRIORITY
DMACTL = $022F ;DMA CONTROL
AUDF1 = $D200 ;AUDIO
AUDC1 = $D201 ;REGISTERS
AUDF2 = $D202
AUDC2 = $D203
AUDF3 = $D204
AUDC3 = $D205
AUDF4 = $D206
AUDC4 = $D207
AUDCTL = $D208
SETVBV = $E45C ;VBLANK SET
XITVBV = $E462 ;VBLANK EXIT
SIOINV = $E465 ;SIO INIT
CONSOL = $D01F ;CONSOLE KEYS
PCOLR2 = $02C2 ;P/M COLOR
PCOLR3 = $02C3 ;
STICK0 = $0278 ;STICK
STRIG = $0284 ;STICK TRIGGER
RANDOM = $D20A ;RANDOM #
ATRACT = $4D ;ATTRACT MODE FLAG
PMBASE = $D407 ;P/M ADDRESS
DLISTL = $0230 ;DISPLAY...
DLISTH = $0231 ;LIST ADDR
PMAREA = $3800 ;P/M MEMORY
PLAY0 = PMAREA+$0400
PLAY1 = PMAREA+$0500
PLAY2 = PMAREA+$0600
PLAY3 = PMAREA+$0700
DISP = $3600 ;DISPLAY MEMORY
DISP1 = DISP+20
DISP2 = DISP+40
DISP3 = DISP+60
DISP4 = DISP+80
DISP5 = DISP+100
DISP7 = DISP+140
DISP22 = DISP+440
CHSET = $3800 ;CHAR. SET ADDR
;
;PAGE 0 VARIABLES
;
*= $80
LO *= *+1 ;2-BYTE...
HI *= *+1 ;WORK ADDRESS
TIMER *= *+1 ;EVENT TIMER
LVL *= *+1 ;LEVEL #
OPT *= *+1 ;OPTION KEY FLAG
TOG *= *+1 ;EASY/HARD VALUE
PADCT *= *+1 ;JUMPING PAD INDEX
COLR *= *+1 ;COLOR WORK REG.
PNT *= *+1
TOM *= *+1 ;LIVES
FILE *= *+2 ;PAD COLOR POINTER
TIMES4 *= *+1 ;PLOT WORK AREA
;
;USER SYMBOLS !!!
;
*= $0600
PCOL *= *+1 ;PL COL #
PROW *= *+1 ;PL ROW #
NUMSQ *= *+1 ;# OF SQ'S
TIME *= *+1 ;DELAY TIM
SCOL *= *+1 ;SNK COL #
SROW *= *+1 ;SNK ROW #
PXPOS *= *+1 ;PL XPOS
PYPOS *= *+1 ;POSITIONS
XPOSP1 *= *+1 ;OF
XPOSP2 *= *+1 ;PLAYERS...
XPOSP3 *= *+1 ;
YPOSP1 *= *+1 ;
YPOSP2 *= *+1 ;
YPOSP3 *= *+1 ;
COUNT1 *= *+1 ;
COUNT2 *= *+1 ;
COUNT3 *= *+1 ;
COUNT4 *= *+1 ;
LEVEL *= *+1 ;
ROUND *= *+1 ;
START *= *+1 ;
LENGTH *= *+1 ;
LENGTH3 *= *+1
ADDNUM3 *= *+1
PLAYER *= *+2
SCORE *= *+6 ;SCORE DIGITS
BACK *= *+1 ;PLAY END REASON
ADDNUM *= *+1
ADD *= *+1
SUM *= *+1 ;SCORE ADD VALUE
FALOFF *= *+1 ;FALL FLAG
DIRFLG *= *+1 ;DIRECTION FLAG
SO1FLG *= *+1 ;SOUND FLAGS
SO2FLG *= *+1
SO3FLG *= *+1
SO4FLG *= *+1
MOVFLG *= *+1 ;MOVE FLAG
WARN *= *+1
WARN1 *= *+1
PITCH1 *= *+1 ;PITCH FLAG
PITCH2 *= *+1 ;
PITCH3 *= *+1 ;
PITCH4 *= *+1 ;
DIRECT *= *+1 ;DIRECTION SAVE
DRP1 *= *+1 ;DROP FLAGS
DRP2 *= *+1
BAL1FLG *= *+1 ;ROCK FLAGS
BAL2FLG *= *+1
B1MOV *= *+1 ;ROCK MOV
B2MOV *= *+1 ;FLAG'S...
B3MOV *= *+1
B1DRP *= *+1
B2DRP *= *+1
B3DRP *= *+1
B1DIR *= *+1
B2DIR *= *+1
B3DIR *= *+1
B1DRW *= *+1
B2DRW *= *+1
B3DRW *= *+1
FNB1DRP *= *+1
FNB2DRP *= *+1
FNB3DRP *= *+1
MAN *= *+1 ;GREEN MAN
GRNFLG *= *+1 ;GREEN MAN PRESENT
OUTFLG2 *= *+1
GRNDIR *= *+1 ;GREEN DIRECTION
GCOL *= *+1 ;GREEN MAN COLUMN
GROW *= *+1 ;GREEN MAN ROW
GRNDRP *= *+1 ;GREEN DROP FLAG
GRNMOV *= *+1 ;GREEN MOVE FLAG
GRNFNDRP *= *+1 ;GREEN DROP FINISH
OUTFLG *= *+1
GRDIR *= *+1 ;GEORGE DIRECTION
GRGFLG *= *+1 ;GEORGE PRESENT
GRGDRP *= *+1 ;GEORGE DROP
FNGRDRP *= *+1 ;GEORGE DROP FINISH
GRGMOV *= *+1 ;GEORGE MOVE FLAG
HPOS *= *+3 ;TMP LOC...
TEMP *= *+1
TEMP1 *= *+1
COL *= *+1 ;PLOT COLUMN
ROW *= *+1 ;PLOT ROW
;
;AVALANCHE CONTROL CODE
;
*= $2000
STRTIT JSR SIOINV ;INIT SOUNDS
LDA #0 ;SET AUDIO CONTROL
STA AUDCTL
LDA #1 ;SET EASY MODE
STA OPT
LDA #174
STA TOG
JSR PMCLR
JSR SETCHR ;SET UP CHARSET
JSR INILVL ;SET LEVEL INFO
JSR SCREEN ;INIT SCREEN
JSR SHOLIV ;SHOW LIVES
JSR SNDOFF ;NO SOUNDS
JSR ZEROSC ;ZERO SCORE
LDX #15 ;DISPLAY...
SETAUTH LDA TITLE,X ;TITLE,
STA DISP3+2,X
LDA AUTHOR,X ;AUTHOR,
STA DISP22+2,X
LDA MAGMSG,X ;MAGAZINE
STA DISP22+22,X
DEX
BPL SETAUTH
CKSTRG LDA STRIG ;TRIG PRESSED?
BNE NOSTRG ;NO!
JSR INILVL ;INIT LEVEL
JSR SCREEN ;INIT SCREEN
JSR SHOLIV ;SHOW LIVES
JSR ZEROSC ;ZERO SCORE
LDA #0 ;NO ATTRACT MODE
STA ATRACT
JMP READY ;GO TO IT!
NOSTRG LDA CONSOL ;GET CONSOLE
CMP #3 ;OPTION PRESSED?
BNE SHODIF ;NO!
LDA TOG ;GET DIFFICULTY
CMP #174 ;NORMAL?
BNE NORMAL ;NO, SET NORMAL
LDA #168 ;SET HARD
STA TOG
LDA #1
BNE SETDIF
NORMAL LDA #174 ;NORMAL DIFFICULTY
STA TOG
LDA #0
SETDIF STA OPT ;SAVE DIFF
JSR STODIF ;AND INITIALIZE
SHODIF LDA TOG ;GET DIFF CHAR
STA DISP+9 ;SHOW ON SCREEN
LDA #20 ;WAIT 20 JIFFIES
JSR WAIT
JMP CKSTRG ;LOOP BACK
READY JSR CLINE3 ;CLEAR SCREEN LINE 3
JSR CLINE22 ;AND LINE 22
LDA LEVEL ;GET LEVEL
ORA #$10
STA DISP+18 ;SHOW ON SCREEN
LDA ROUND ;GET ROUND
ORA #$10
STA DISP1+18 ;SHOW ON SCREEN
LDX #7 ;SHOW READY!
SHORDY LDA RDYMSG,X
STA DISP3+6,X
DEX
BPL SHORDY
LDA #120 ;WAIT 120 JIFFIES
JSR WAIT
JSR CLINE3 ;ERASE LINE 3
LDA #20
STA TIME
LDX ROUND ;SET ROUND 0
LDA R1SET,X ;AND SET COLORS
STA DLI4C1+1
LDA R2SET,X
STA DLI4C2+1
LDA R3SET,X
STA DLI4C3+1
LDA R4SET,X
STA DLI4C4+1
JSR SETLD ;INIT DIFF FACTORS
JSR GAME ;GO TO MAIN GAME
LDA #1 ;RESET START FLAG
STA START
JSR SNDOFF ;TURN OFF SOUND
LDA BACK ;GET PLAY END REASON
CMP #1 ;SCREEN COMPLETED?
BEQ LVLEND ;YES!
JMP CKDED2 ;NO, CHECK DEATH
LVLEND INC ROUND ;NEXT ROUND
JSR BONUS ;DO BONUS
JSR BONLIF ;CHECK BONUS LIFE
LDA #0 ;NO ATTRACT MODE
STA ATRACT
LDA ROUND ;GET ROUND #
CMP #5 ;ROUND 5
BNE NOTR5 ;NO!
INC LEVEL ;NEXT LEVEL!
LDA #1 ;RESET ROUND #
STA ROUND
LDA LEVEL ;SAVE LEVEL #
STA LVL
JSR SCREEN ;SET SCREEN
JMP NEWLVL ;NEW LEVEL
NOTR5 LDA #0 ;0 # OF SQUARES
STA NUMSQ
JSR SCREEN ;SET SCREEN
JMP READY ;WE'RE READY!
NEWLVL JSR CLINE22 ;CLEAR LINE 22
LDX #4 ;NEW LEVEL MESSAGE
SHOLVL LDA LVMSG,X
STA DISP22+7,X
DEX
BPL SHOLVL
LDA LEVEL ;SHOW LEVEL #
ORA #$10
STA DISP22+13
LDX #11 ;MAKE LEVEL SOUND
NLSND LDA #150 ;SET SOUND,
STA AUDF1
LDA #168
STA AUDC1
LDA #28 ;SET COLORS
STA DLI4C1+1
LDA #136
STA DLI4C2+1
LDA #6 ;WAIT 6 JIFFIES
JSR WAIT
LDA #50 ;CHANGE SOUND
STA AUDF1
LDA #136 ;AND COLORS
STA DLI4C1+1
LDA #28
STA DLI4C2+1
LDA #6 ;WAIT AGAIN
JSR WAIT
DEX ;MORE SOUNDS?
BPL NLSND ;YES!
LDA #0 ;TURN OFF SOUND
STA AUDC1
JSR CLINE22 ;ERASE LINE 22
LDA LEVEL ;GET LEVEL #
CMP #7 ;LEVEL 7?
BNE NOT7 ;NO!
LDA #6 ;MAKE IT 6 AGAIN
STA LVL
NOT7 LDA #0 ;RESET PLAY FLAG
STA BACK
STA NUMSQ ;AND # SQUARES
JMP READY ;GO PLAY!
CKDED2 CMP #2 ;HIT BY ROCK?
BEQ DEAD2 ;YES!
JMP CKDED3 ;NO, WE FELL.
DEAD2 DEC TOM ;1 LESS LIFE
LDX #15 ;DO DEATH SOUND
DEDSND LDA #120 ;SET SOUND
STA AUDF1
TXA
ORA #$10
STA AUDC1
LDA #5 ;WAIT 5 JIFFIES
JSR WAIT
DEX ;NEXT SOUND
BPL DEDSND
JMP CHKEND ;CHECK END OF GAME
CKDED3 DEC TOM ;1 LESS LIFE
LDA #1 ;RESET PRIORITY
STA PRIOR
CHKEND JSR BONLIF ;BONUS LIFE CHECK
LDA TOM ;MORE LIVES?
BNE NOTEND ;YES!
LDX #8 ;NO, SHOW END MESSAGE
SHOEND LDA ENDMSG,X
STA DISP3+6,X
DEX
BPL SHOEND
JMP CKSTRG ;GO CHECK RESTART
NOTEND JSR SHOLIV ;SHOW LIVES LEFT
JMP READY ;AND PLAY!
CLINE3 LDX #19 ;ERASE 3RD SCREEN LINE
LDA #0
CL3LP STA DISP3,X
DEX
BPL CL3LP
RTS
CLINE22 LDX #39 ;ERASE LAST 2...
LDA #0 ;SCREEN LINES
CL22LP STA DISP22,X
DEX
BPL CL22LP
RTS
WAIT STA TIMER ;SET TIMER
WAITLP LDA TIMER ;GET TIMER
BNE WAITLP ;NOT ZERO YET
RTS ;TIME'S UP!
SETCHR LDX #0 ;COPY CHAR SET
MOVCHR LDA $E000,X
STA CHSET,X
LDA $E100,X
STA CHSET+$0100,X
DEX
BNE MOVCHR
LDX #47 ;AND CHANGE...
CHGCHR LDA NEWCHR,X ;THE CHARACTERS...
STA CHSET+24,X ;WE'RE USING!
DEX
BPL CHGCHR
LDA # >CHSET ;TURN ON...
STA CHBASE ;OUT CHAR SET
LDA #62 ;TURN ON DMA
STA DMACTL
LDA # >DLIST ;POINT TO...
STA DLISTH ;OUR
LDA # <DLIST ;DISPLAY...
STA DLISTL ;LIST!
LDA #3 ;TURN ON GRAPHICS
STA GRACTL
LDA # >PMAREA ;SET P/M AREA
STA PMBASE
LDA #38 ;SET COLORS
STA COLPM0
LDA #52
STA COLPM1
STA COLPM2
STA COLPM3
LDA #124 ;SET P/M POSITIONS
STA HPOSP0
LDA #116
STA HPOSP1
STA HPOSP2
STA HPOSP3
LDA #1 ;SET PRIORITY
STA PRIOR
LDA #15 ;SET MISC. COLORS
STA COLPF0
LDA #40
STA COLPF1
LDA #136
STA COLPF2
LDA #214
STA COLPF3
LDA # >DLI1 ;POINT TO DLI
STA $0201
LDA # <DLI1
STA $0200
LDX # >VBLANK ;SET VBLANK
LDY # <VBLANK
LDA #7
JSR SETVBV
LDA #0 ;CLEAR SCREEN
TAX
CLSCRN STA DISP,X
STA DISP+240,X
INX
CPX #240
BNE CLSCRN
LDA #192 ;TURN ON DLI,
STA NMIEN ;VBLANK!
RTS
VBLANK LDA TIMER ;GET TIMER
BEQ NOTIM ;IT'S ZERO!
DEC TIMER ;DECREMENT TIMER
NOTIM JMP XITVBV ;ALL DONE!
DLI1 PHA
LDA #$44 ;SET COLPF0
STA WSYNC
STA $D016
LDA # >DLI2 ;POINT TO DLI #2
STA $0201
LDA # <DLI2
STA $0200
PLA
RTI
DLI2 PHA
DLI2C1 LDA #$58 ;SET COLPF1
STA WSYNC
STA $D017
LDA # >DLI3 ;POINT TO DLI #3
STA $0201
LDA # <DLI3
STA $0200
PLA
RTI
DLI3 PHA
LDA $CB ;TOGGLE...
STA WSYNC ;FLASHING...
CMP #$28 ;ARROW...
BNE DLI3B ;COLORS
LDA #0
STA $CB
LDA $CC
BPL DLI3A
LDA #0
STA $CC
BEQ DLI3B
DLI3A LDA #$8E
STA $CC
DLI3B LDA $CC
STA $D016 ;PF 0
INC $CB
LDA # >DLI4 ;POINT TO DLI #4
STA $0201
LDA # <DLI4
STA $0200
PLA
RTI
DLI4 PHA
DLI4C1 LDA #$0E ;SET COLPF0
STA WSYNC
STA $D016
DLI4C2 LDA #$FC ;COLPF1
STA $D017
DLI4C3 LDA #$92 ;COLPF2
STA $D018
DLI4C4 LDA #$42 ;COLPF3
STA $D019
LDA # >DLI1 ;POINT TO DLI #1
STA $0201
LDA # <DLI1
STA $0200
PLA
RTI
SHOLIV LDA #70 ;MAN CHAR
STA DISP2
LDA #93 ;EQUAL SIGN
STA DISP2+1
LDA TOM ;GET # LIVES,
SEC ;PUT ON SCREEN
SBC #1
ORA #$10
STA DISP2+2
RTS
SCREEN LDA # >[DISP+169] ;POINT TO...
STA HI ;PAD AREA...
LDA # <[DISP+169] ;ON SCREEN
STA LO
LDA #1 ;AND SET UP PADS!
STA PADCT
SETPAD LDY PADCT
SPADLP LDA PADATA,Y
STA (LO),Y
DEY
BPL SPADLP
LDA PADCT
CLC
ADC #2
CMP #15
BEQ PADEND
STA PADCT
LDA LO
CLC
ADC #39
STA LO
LDA HI
ADC #0
STA HI
JMP SETPAD
PADEND JSR STODIF
LDA #0 ;ERASE...
STA DISP+18 ;LEVEL #
STA DISP+38 ;ROUND #
LDX #5 ;SHOW LVL/RND MESSAGES
SETLR LDA LVLMSG,X
STA DISP+12,X
LDA RNDMSG,X
STA DISP1+12,X
DEX
BPL SETLR
RTS
ZEROSC LDX #5 ;ZERO SCORE
ZSCLP LDA #16
STA DISP,X
LDA CHGMSG,X ;SET CHANGE TO MSG
STA DISP4,X
DEX
BPL ZSCLP
LDA #52 ;SET UP ARROWS...
STA DISP5+2 ;AND COLOR INDICATOR
LDA #47
STA DISP5+3
LDA #7
STA DISP7+1
LDA #67
STA DISP7+2
LDA #68
STA DISP7+3
LDA #8
STA DISP7+4
RTS
INILVL LDA #1 ;START AT...
STA LEVEL ;LEVEL 1,
STA LVL
STA ROUND ;ROUND 1
LDA #4 ;4 LIVES!
STA TOM
LDA #0 ;SET START FLAG
STA START
LDA #2 ;SET MISC VARIABLES
STA ROW
LDA #96
STA COLR
LDA #16
STA PNT
RTS
SNDOFF LDA #0 ;TURN OFF...
STA AUDC1 ;SOUND CHANNEL 1
STA AUDC2 ;SOUND CHANNEL 2
STA AUDC3 ;SOUND CHANNEL 3
STA AUDC4 ;SOUND CHANNEL 4
RTS
SETLD LDA LVL ;GET LEVEL
CMP #1 ;LEVEL 1?
BEQ L14 ;YES!
CMP #4 ;LEVEL 4?
BNE CL25 ;NO! CHECK 2/5
L14 LDA DLI4C2+1 ;SET COLOR
STA DLI2C1+1
RTS
CL25 CMP #2 ;LEVEL 2?
BEQ L25 ;YES!
CMP #5 ;LEVEL 5?
BNE L36 ;NO!
L25 LDA DLI4C3+1 ;SET COLOR
STA DLI2C1+1
RTS
L36 LDA DLI4C4+1 ;SET COLOR
STA DLI2C1+1
RTS
BONUS LDX #20 ;PLAY MUSIC
MUSLP LDA NOTE,X ;SET NOTE
STA AUDF1
LDA #$AA
STA AUDC1
LDA DUR,X ;SET DURATION
JSR WAIT ;WAIT,
JSR COLCYC ;CYCLE COLORS
DEX ;MORE NOTES?
BPL MUSLP ;YES!
LDX #60 ;DO DOWN-SLUR
MDOWN STX AUDF1
JSR COLCYC
LDA #2
JSR WAIT
INX
INX
INX
CPX #81
BCC MDOWN
MUP STX AUDF1 ;NOW UP-SLUR
JSR COLCYC
LDA #2
JSR WAIT
DEX
DEX
DEX
CPX #57
BNE MUP
LDA #0 ;RESET BACKGND COLOR
STA COLBK
LDA #96
STA COLR
LDX #10 ;AND FADE OUT...
FADE TXA ;LAST NOTE
ORA #$A0
STA AUDC1
LDA #4
JSR WAIT
DEX
BPL FADE
LDA #0 ;SHUT OFF SOUND
STA AUDC1
LDX #9 ;SHOW BONUS MESSAGE
SHOBMS LDA BONMSG,X
STA DISP22+5,X
DEX
BPL SHOBMS
LDA SCORE+2 ;ADD 1000 POINTS
CLC ;TO SCORE
ADC #1
CMP #26
BNE SHOSP2
LDA SCORE+1
CLC
ADC #1
CMP #26
BNE SHOSP2
LDA SCORE+1
CLC
ADC #1
STA SCORE+1
STA DISP+1
LDA #16
SHOSP2 STA SCORE+2
STA DISP+2
LDA #200 ;WAIT 200 JIFFIES
JSR WAIT
RTS
BONLIF LDA DISP+1 ;GET SCORE
CMP PNT ;> BONUS AMT?
BEQ BRRET ;NO!
BCS BONUSL ;YES!
BRRET RTS
BONUSL INC PNT ;INC BONUS LEVEL
INC TOM ;1 MORE LIFE
JSR SHOLIV ;SHOW LIVES
LDX #2 ;3 BONUS SOUNDS
LDA #32 ;PITCH = 32
STA AUDF1
BLS1 LDY #15 ;VOLUME 15
BLS2 TYA
ORA #$A0
STA AUDC1
LDA #3 ;LEAVE ON 3 JIFFIES
JSR WAIT
DEY ;NEXT VOLUME
BPL BLS2
DEX ;NEXT SOUND
BPL BLS1
LDA #0 ;TURN OFF SOUND
STA AUDC1
RTS
STODIF LDA OPT ;GET DIFF FLAG
STA OPTN1+1 ;STORE IN...
STA OPTN2+1 ;PROGRAM
LDA LEVEL ;GET LEVEL
CMP #3 ;LEVEL 3?
BNE NOTL3 ;NO!
LDA ROUND ;GET ROUND
CMP #1 ;ROUND 1?
BEQ SET1 ;YES!
CMP #3 ;ROUND 3?
BNE NOTL3 ;NO!
SET1 LDA #0 ;SET DIFFICULTY
STA OPTN2+1
DIFRTS RTS
NOTL3 LDA LEVEL ;GET LEVEL #
CMP #7 ;LEVEL 7?
BNE NOTL7 ;NO!
LDA #0 ;SET DIFF
STA OPTN1+1
RTS
NOTL7 CMP #8 ;LEVEL 8?
BEQ SET1 ;YES!
CMP #9 ;LEVEL 9?
BCC DIFRTS ;NO!
LDA #0 ;SET DIFF
STA OPTN1+1
BEQ SET1
COLCYC LDA COLR ;GET COLOR FLAG
CLC ;ADD 2
ADC #2
STA COLR ;SAVE IT
STA COLBK ;AND SET BACKGND
RTS
;
;----------------
;START OF PROGRAM
;----------------
;
GAME JSR SETUP ;INIT.....
JSR FIG1
;
;---------
;MAIN LOOP
;---------
;
MAIN LDA BACK ;BACK TO
CMP #$00
BEQ CHKSTK ;CONTROLLER?
RTS ;YES...
CHKSTK LDA MOVFLG ;ALREADY
CMP #1 ;MOVIN...
BNE A1 ;NO!
JSR MOVE.MAN ;YES, MOVE MAN
JMP A2
A1 LDA STICK0 ;CHK STICK
STA DIRECT ;SAVE STICK POS
JSR MOVE.MAN ;MOVE MAN
A2 JSR ROCK2 ;HANDLE ROCK 2
LDA TEMP ;GET ADVANCE FLAG
OPTN1 CMP #1 ;0/1 SETS DIFFICULTY
BNE A6 ;NO ADVANCE!
LDA #0 ;RESET ADV FLAG
STA TEMP
JSR ROCK3 ;HANDLE ROCK 3
JMP A5 ;SKIP NEXT CODE
A6 LDA #1 ;SET ADV FLAG
STA TEMP
A5 LDA TEMP1 ;GET ADV FLAG 2
OPTN2 CMP #1 ;0/1 SETS DIFFICULTY
BNE A3 ;NO ADVANCE!
LDA #0 ;RESET ADV FLAG 2
STA TEMP1
JSR ROCK1 ;HANDLE ROCK 1
JMP A4
A3 LDA #1 ;SET ADVANCE FLAG
STA TEMP1
A4 JSR SOUND ;DO SOUNDS
JSR CHECK ;CHECK SQUARES HIT
JSR CLEAR ;RESET P/M COLLISION
JSR DELAY ;DELAY...
JSR PL.PL ;CHECK PLR-PLR COLL.
JMP MAIN ;GO AGAIN
;
;-------------------
;MOVE MAN SUBROUTINE
;-------------------
;
MOVE.MAN LDA SO1FLG ;CHK SOUND
CMP #1 ;FLG
BNE CHECKDIR
RTS
;
CHECKDIR LDA DIRECT ;GET STICK...
CMP #9 ;DIRECTION
BNE B1
JMP DNLEFT0 ;DOWN & LEFT
B1 CMP #5
BNE B2
JMP DNRIGHT0 ;DOWN & RIGHT
B2 CMP #6
BNE B3
JMP UPRIGHT0 ;UP & RIGHT
B3 CMP #10
BNE B4
JMP UPLEFT0 ;UP & LEFT
B4 RTS
;
;---------
;ROCK1 SUB
;---------
ROCK1 LDA SO2FLG ;SOUND ON?
CMP #1
BNE C1 ;NO!
RTS
C1 LDA DRP1 ;DROPPING?
CMP #80
BEQ C11 ;NO!
INC DRP1 ;NEXT DROP
RTS
C11 LDA B1MOV ;MOVING...
CMP #1
BNE C2
JMP MOVE1 ;YES...
C2 LDA B1DRP ;DROPPED?
CMP #1
BEQ C3 ;YES...
LDA RANDOM ;NOT YET..
BMI C4
RTS ;DON'T DROP
C4 LDA #1 ;SET DRP..
STA B1DRP
JSR BAL1DRW ;DRAW ROCK
C3 LDA FNB1DRP ;FINISHED..
CMP #1
BNE DROP1 ;NO...
JMP GETDIR1
;
DROP1 JSR DOWN1 ;DROP...
JSR DOWN1
JSR DOWN1
JSR DOWN1
LDA YPOSP1 ;FINISHED..
CMP #109
BCS D1 ;YES...
RTS ;NO....
D1 LDA #1
STA FNB1DRP ;SET FLG..
STA SO2FLG ;SOUND FLG
LDA #$AF
STA PITCH2 ;PITCH...
RTS ;RETURN...
;
GETDIR1 LDA #1 ;GET DIRECT
STA B1MOV
LDA RANDOM
BMI E1
LDA #0 ;0=DNRIGHT
STA B1DIR
JMP MOVE1
E1 LDA #1 ;1=DNLEFT
STA B1DIR
;
MOVE1 LDA B1DIR ;WHICH WAY?
CMP #1 ;DNLEFT??
BNE F1 ;NO....
JMP DNLEFT1 ;YES...
F1 JMP DNRIGHT1
;
;----------
;ROCK 2 SUB
;----------
ROCK2 LDA SO3FLG ;SOUND ON?
CMP #1
BNE G1 ;NO!
RTS
;
G1 LDA DRP2 ;DROPPING?
CMP #40
BEQ G11 ;NO!
INC DRP2 ;INC DROP COUNT
RTS
G11 LDA GRNFLG ;GRN MAN
CMP #1 ;OUT....
BNE G2
JMP GREEN ;YES...
G2 LDA BAL1FLG ;ROCK OUT??
CMP #1
BNE G3
JMP MOVBAL2 ;YES...
G3 LDA ROUND ;CAN GREEN
CMP #2 ;COME OUT??
BNE G4 ;NO...
JMP GRNCAN ;YES...
G4 CMP #4
BEQ GRNCAN
JMP MOVBAL2 ;NO....
;
GRNCAN LDA MAN
CMP #50
BEQ MOVBAL2
LDA OUTFLG2 ;ROCK COME
CMP #2 ;TWICE....
BCC MOVBAL2
LDA RANDOM ;GREEN OR
BMI MOVBAL2 ;ROCK....
INC MAN ;IT'S GREEN MAN!
JMP GREEN
;
MOVBAL2 LDA B2MOV ;MOVING...
CMP #1
BNE H2 ;NO...
JMP MOVE2 ;YES...
H2 LDA B2DRP ;DROPPED??
CMP #1
BEQ H3 ;YES...
LDA RANDOM ;NOT ET...
BMI H4
RTS
H4 LDA #1 ;SET DRP..
STA B2DRP
STA BAL1FLG
INC OUTFLG2
JSR BAL2DRW ;DRAW ROCK
H3 LDA FNB2DRP ;FINISHED..
CMP #1
BNE DROP2 ;NO...
JMP GETDIR2
;
DROP2 JSR DOWN2 ;ADVANCE...
JSR DOWN2 ;FOUR...
JSR DOWN2 ;TIMES
JSR DOWN2
LDA YPOSP2 ;DONE DROPPING?
CMP #109
BCS I1 ;YES!
RTS
I1 LDA #1 ;FINISHED!
STA FNB2DRP
STA SO3FLG
LDA #$AF ;SET SOUND 3
STA PITCH3
RTS
;
GETDIR2 LDA #1 ;ROCK 2 MOVING
STA B2MOV
LDA RANDOM ;GET RANDOM DIR
BMI J1
LDA #0 ;IT'S DOWN & RIGHT!
STA B2DIR
JMP MOVE2 ;GO MOVE IT!
J1 LDA #1 ;IT'S DOWN & LEFT!
STA B2DIR
;
MOVE2 LDA B2DIR ;WHICH DIR
CMP #1 ;DN & LEFT?
BNE K1 ;NO!
JMP DNLEFT2
K1 JMP DNRIGHT2
;
GREEN LDA #1 ;GET GRNFLG
STA GRNFLG
LDA #0
STA OUTFLG2
LDA GRNMOV ;MOVING?
CMP #1
BNE L1 ;NO!
JMP MOVEGRN ;YES, MOVE IT!
L1 LDA GRNDRP ;DROP YET?
CMP #1
BEQ L2 ;NO!
LDA #1 ;SET FLG...
STA GRNDRP ;FOR DROP
JSR GRN0 ;DRAW
L2 LDA GRNFNDRP ;DROP DONE?
CMP #1
BNE DROPGRN ;NO!
JMP GEDIRGRN ;YES, GET DIRECTION
DROPGRN JSR DOWN2 ;MOVE...
JSR DOWN2 ;DOWN...
JSR DOWN2 ;FOUR...
JSR DOWN2 ;TIMES!
LDA YPOSP2 ;DROP DONE?
CMP #104
BCS M1 ;YES!
RTS
M1 LDA #1 ;SET DROP DONE FLAG
STA GRNFNDRP
STA SO3FLG
LDA #$AF ;AND SOUND!
STA PITCH3
RTS
;
GEDIRGRN LDA #1 ;SET GREEN MOVE FLAG
STA GRNMOV
INC GROW ;INC GREEN ROW
INC GROW
LDA RANDOM ;GET RANDOM COL MOVE
BMI N1
LDA #0 ;DOWN & RIGHT
STA GRNDIR
INC GCOL ;INCREMENT COLUMN
JSR GRN0 ;DRAW FACING RIGHT
JMP MOVEGRN ;AND MOVE HIM!
N1 LDA #1 ;DOWN & LEFT
STA GRNDIR
DEC GCOL ;DEC COLUMN
JSR GRN1 ;DRAW FACING LEFT
;
MOVEGRN LDA GRNDIR ;GET DIRECTION
CMP #1 ;DOWN & LEFT?
BNE O1 ;NO!
JMP DNLEFT2 ;MOVE IT!
O1 JMP DNRIGHT2 ;DITTO!
;
;----------
;ROCK 3 SUB
;----------
ROCK3 LDA SO4FLG ;SOUND ON?
CMP #1
BNE P1 ;NO!
RTS
P1 LDA GRGFLG ;GEORGE ON?
CMP #1
BNE P2 ;NO!
JMP GEORGE ;HANDLE GEORGE
P2 LDA BAL2FLG ;ROCK 2 OUT?
CMP #1
BNE P3 ;NO!
JMP MOVBAL3 ;MOVE ROCK 3
P3 LDA ROUND ;GET ROUND
CMP #3 ;ROUND 3/4?
BCS GRGCAN ;YES, BRING OUT GEORGE
JMP MOVBAL3 ;MOVE ROCK 3!
;
GRGCAN LDA OUTFLG ;CAN GEORGE...
CMP #2 ;COME OUT?
BCC MOVBAL3 ;NO, DO ROCK 3
LDA RANDOM ;GET RANDOM CHANCE...
BMI MOVBAL3 ;NO, HE CAN'T
JMP GEORGE ;COME ON, GEORGE!
;
MOVBAL3 LDA B3MOV ;ROCK 3 MOVING?
CMP #1
BNE Q2 ;NO!
JMP MOVE3 ;MOVE IT!
Q2 LDA B3DRP ;ROCK 3 DROPPING?
CMP #1
BEQ Q3 ;YES!
LDA RANDOM ;READY TO DROP?
BMI Q4 ;YES!
RTS
Q4 LDA #1 ;SET DROP FLAG
STA B3DRP
STA BAL2FLG
INC OUTFLG ;IN GEORGE CHANCE
JSR BAL3DRW ;DRAW ROCK 3
Q3 LDA FNB3DRP ;IS ROCK 3...
CMP #1 ;DROP COMPLETE?
BNE DROP3 ;NO!
JMP GETDIR3 ;YES, GET DIRECTION
;
DROP3 JSR DOWN3 ;MOVE...
JSR DOWN3 ;DOWN...
JSR DOWN3 ;FOUR...
JSR DOWN3 ;TIMES
LDA YPOSP3 ;DROP DONE?
CMP #109
BCS R1 ;YES!
RTS
R1 LDA #1 ;SET DROP...
STA FNB3DRP ;FINISH FLAG
STA SO4FLG
LDA #$AF ;AND SOUND!
STA PITCH4
RTS
;
GETDIR3 LDA #1 ;SET ROCK 3 MOVE FLAG
STA B3MOV
LDA RANDOM ;GET RANDOM CHANCE
BMI S1
LDA #0 ;DOWN & RIGHT!
STA B3DIR
JMP MOVE3 ;MOVE IT
S1 LDA #1 ;DOWN & LEFT!
STA B3DIR
;
MOVE3 LDA B3DIR ;GET ROCK 3 DIRECTION
CMP #1 ;DOWN & LEFT?
BNE T1 ;NO!
JMP DNLEFT3 ;MOVE IT!
T1 JMP DNRIGHT3 ;DITTO!
;
GEORGE LDA #1 ;SET...
STA GRGFLG ;GEORGE FLAG
LDA GRGMOV ;GEORGE MOVING?
CMP #1
BNE U1 ;NO!
JMP MOVGRG ;GO MOVE HIM!
U1 LDA GRGDRP ;GEORGE DROPPING?
CMP #1
BEQ U2 ;YES!
LDA #1 ;OK, START...
STA GRGDRP ;GEORGE DROP
JSR GEORGE0 ;GEORGE FACING LEFT
U2 LDA FNGRDRP ;GEORGE DROP DONE?
CMP #1
BNE DROPGRG ;NO, DROP HIM!
JMP GETDRGRG ;GET GEORGE DIRECTION
;
DROPGRG JSR DOWN3 ;MOVE GEORGE...
JSR DOWN3 ;DOWN...
JSR DOWN3 ;FOUR...
JSR DOWN3 ;TIMES!
LDA YPOSP3 ;DROP DONE?
CMP #98
BCS V1 ;YES!
RTS
V1 LDA #1 ;SET GEORGE'S DROP...
STA FNGRDRP ;DONE FLAG
STA SO4FLG
LDA #$AF ;SET SOUND
STA PITCH4
RTS
;
GETDRGRG LDA #1 ;SET GEORGE...
STA GRGMOV ;MOVING FLAG
LDA PCOL ;GET DIRECTION...
CMP SCOL ;BASED ON PLAYER POS.
BCS RIGHT ;GO RIGHT!
LDA PROW ;GET UP/DOWN
CMP SROW
BEQ W1 ;UP!
BCC W1 ;UP!
JSR GEORGE0 ;FACING LEFT & DOWN
DEC SCOL ;MOVE LEFT
INC SROW ;MOVE DOWN...
INC SROW ;2 TIMES
LDA #0 ;0 = DOWN & LEFT
STA GRDIR
JMP MOVGRG ;MOVE GEORGE!
W1 JSR GEORGE2 ;FACING LEFT & UP
DEC SCOL ;MOVE LEFT
DEC SROW ;MOVE UP...
DEC SROW ;2 TIMES
LDA #2 ;2 = UP & LEFT
STA GRDIR
JMP MOVGRG ;MOVE GEORGE!
RIGHT LDA PROW ;GET UP/DOWN
CMP SROW
BEQ X1 ;UP!
BCC X1 ;UP!
JSR GEORGE1 ;FACING RIGHT & DOWN
INC SCOL ;MOVE RIGHT
INC SROW ;MOVE DOWN...
INC SROW ;2 TIMES
LDA #1 ;1 = RIGHT & DOWN
STA GRDIR
JMP MOVGRG ;MOVE GEORGE!
X1 JSR GEORGE3 ;FACING RIGHT & UP
INC SCOL ;MOVE RIGHT
DEC SROW ;MOVE UP...
DEC SROW ;2 TIMES
LDA #3 ;3 = RIGHT & UP
STA GRDIR
;
MOVGRG LDA GRDIR ;GET GEORGE DIRECTION
CMP #0 ;DOWN & LEFT?
BNE Y1 ;NO!
JMP DNLEFT3
Y1 CMP #1 ;DOWN & RIGHT?
BNE Y2 ;NO!
JMP DNRIGHT3
Y2 CMP #2 ;UP & LEFT?
BNE Y3 ;NO!
JMP UPLEFT3
Y3 JMP UPRIGHT3
;
;----------------
;SOUND SUBROUTINE
;----------------
;
SOUND LDA SO1FLG ;SOUND 1 ON?
CMP #1
BEQ Z1 ;YES!
JMP SO2 ;NO, DO SOUND 2
Z1 LDA PITCH1 ;GET SOUND 1 PITCH
STA AUDC1
DEC PITCH1 ;NEXT PITCH
LDA PITCH1 ;GET PITCH
CMP #$A0 ;ALL DONE?
BEQ Z2 ;YES!
JMP SO2
Z2 LDA #0 ;TURN OFF...
STA AUDC1 ;SOUND 1,
STA SO1FLG ;SOUND 1 FLAG,
STA MOVFLG ;MOVEMENT FLAG
LDA #8
STA COUNT1
LDA P0PF ;MAN ON SQUARE?
CMP #0
BNE GETLEVEL ;YES!
JSR FALL ;UH-OH, HE FELL!
RTS ;HE'S OK
;
GETLEVEL JSR UPDATMAN ;MOVE MAN
LDA LEVEL ;GO TO...
CMP #1 ;APPROPRIATE...
BNE AA1 ;LEVEL HANDLER!
JMP LEVEL1
AA1 CMP #2
BNE AA2
JMP LEVEL2
AA2 CMP #3
BNE AA4
JMP LEVEL3
AA4 CMP #4
BNE AA5
JMP LEVEL4
AA5 CMP #5
BNE AA6
JMP LEVEL5
AA6 CMP #6
BNE AA7
JMP LEVEL6
AA7 CMP #7
BNE AA8
JMP LEVEL3
AA8 JMP LEVEL6
;
LEVEL1 LDA P0PF ;HIT
CMP #1 ;PLAYFIELD 0?
BNE BB1 ;NO...
INC NUMSQ ;YES-INCREMENT SQUARES
JSR PLAYFLD1 ;CHANGE IT TO PF1
BB1 JMP SO2
;
LEVEL2 LDA P0PF ;HIT
CMP #1 ;PLAYFIELD 0?
BNE CC1 ;NO...
JSR PLAYFLD1 ;CHANGE IT TO PF1
JMP SO2 ;AND PROCEED
CC1 CMP #2 ;PLAYFIELD 1?
BNE CC2 ;NO...
INC NUMSQ ;1 MORE SQUARE
JSR PLAYFLD2 ;CHANGE IT TO PF2!
CC2 JMP SO2 ;AND PROCEED
;
LEVEL4 LDA P0PF ;HIT PLAYFIELD 0?
CMP #1
BNE DD1 ;NO...
INC NUMSQ ;1 MORE SQUARE!
JSR PLAYFLD1 ;CHANGE TO PF1
JMP SO2 ;PROCEED!
DD1 DEC NUMSQ ;DEDUCT SQUARE!
JSR PLAYFLD0 ;BACK TO PF0
JMP SO2 ;AND GO ON.
;
LEVEL3 LDA P0PF ;HIT PLAYFIELD 0?
CMP #1
BNE EE1 ;NO...
JSR PLAYFLD1 ;CHANGE TO PF1
JMP SO2 ;AND PROCEED
EE1 CMP #2 ;HIT PLAYFIELD 2?
BNE EE2 ;NO...
JSR PLAYFLD2 ;CHANGE TO PF2
JMP SO2 ;AND PROCEED
EE2 CMP #4 ;HIT PLAYFIELD 2?
BNE SO2 ;NO...
INC NUMSQ ;1 MORE SQUARE
JSR PLAYFLD3 ;CHANGE PF3
JMP SO2 ;AND PROCEED
;
LEVEL5 LDA P0PF ;HIT PLAYFIELD 0?
CMP #1
BNE FF1 ;NO...
JSR PLAYFLD1 ;CHANGE TO PF1
JMP SO2 ;PROCEED
FF1 CMP #2 ;HIT PLAYFIELD 1?
BNE FF2 ;NO...
INC NUMSQ ;1 MORE SQUARE
JSR PLAYFLD2 ;CHANGE TO PF2
JMP SO2 ;PROCEED
FF2 DEC NUMSQ ;1 LESS SQUARE
JSR PLAYFLD1 ;CHANGE TO PF1
JMP SO2 ;PROCEED
;
LEVEL6 LDA P0PF ;HIT PLAYFIELD 0?
CMP #1
BNE GG1 ;NO...
JSR PLAYFLD1 ;CHANGE TO PF1
JMP SO2 ;PROCEED
GG1 CMP #2 ;HIT PLAYFIELD 1?
BNE GG2 ;NO...
JSR PLAYFLD2 ;CHANGE TO PF2
JMP SO2 ;PROCEED
GG2 CMP #4 ;HIT PLAYFIELD 2?
BNE GG3 ;NO...
INC NUMSQ ;1 MORE SQUARE
JSR PLAYFLD3 ;CHANGE TO PF3
JMP SO2 ;PROCEED
GG3 DEC NUMSQ ;1 LESS SQUARE
JSR PLAYFLD2 ;CHANGE TO PF2
;
SO2 LDX #0 ;ROCK 1
LDY #0
JSR BALCHK ;SEE IF IT FELL
LDA FALOFF ;DID IT FALL?
CMP #1
BEQ HH1 ;YES!
JMP SO3 ;NO, PROCEED
HH1 LDY YPOSP1 ;ERASE ROCK 1
LDX #0
TXA
HH2 STA PLAY1,Y
INX
INY
CPX #10
BNE HH2
LDA #0 ;RESET DROP FLAG
STA DRP1
LDX #0 ;CLR OTHER FLAGS
JSR CLRFLG
;
SO3 LDA GRNFLG ;GREEN MAN ACTIVE?
CMP #1
BNE II99 ;NO!
JMP GRNCHK ;SEE IF HE FELL
II99 LDX #1 ;ROCK 2
LDY #2
JSR BALCHK ;SEE IF IT FELL
LDA FALOFF ;DID ROCK 2 FALL?
CMP #1
BEQ II1 ;YES!
JMP SO4 ;NO, PROCEED
II1 LDY YPOSP2 ;ERASE ROCK 2
LDX #0
TXA
II2 STA PLAY2,Y
INX
INY
CPX #10
BNE II2
LDA #0 ;RESET DROP FLAG
STA DRP2
STA BAL1FLG
LDX #1 ;AND OTHER FLAGS
JSR CLRFLG
;
SO4 LDA GRGFLG ;GEORGE ACTIVE?
CMP #1
BEQ GRGCHK ;YES!
LDX #2 ;CHECK ROCK 3
LDY #4
JSR BALCHK ;SEE IF IT FELL
LDA FALOFF ;DID IT FALL?
CMP #1
BEQ JJ1 ;YES!
RTS
JJ1 LDY YPOSP3 ;ERASE ROCK 3
LDX #0
TXA
JJ2 STA PLAY3,Y
INY
INX
CPX #10
BNE JJ2
LDA #0 ;CLEAR ROCK 3 FLAG
STA BAL2FLG
LDX #2 ;AND OTHER FLAGS
JSR CLRFLG
RTS
;
GRGCHK LDA SO4FLG ;SOUND ON?
CMP #1
BEQ KK1 ;YES!
RTS
KK1 LDA PITCH4 ;SET VOLUME
STA AUDC4
DEC PITCH4 ;NEXT VOLUME
LDA PITCH4 ;SOUND DONE?
CMP #$A0
BEQ KK2 ;YES!
RTS
KK2 LDA P3PF ;DID GEORGE...
CMP #0 ;HIT PF?
BNE KK3 ;YES!
LDA #5 ;ADD 500 POINTS...
STA SUM ;TO SCORE
JSR ADD200
JSR RESET ;RESET GEORGE
RTS
KK3 LDA #0 ;ZERO...
STA AUDC4 ;SOUND 4,
STA SO4FLG ;SOUND 4 FLAG
STA GRGMOV ;GEORGE MOVE FLAG
LDA #8
STA COUNT4
RTS
;
GRNCHK LDA SO3FLG ;SOUND 3 ON?
CMP #1
BEQ LL1 ;YES!
JMP SO4 ;NO, DO SOUND 4
LL1 LDA PITCH3 ;SET SOUND 3 VOLUME
STA AUDC3
DEC PITCH3 ;NEXT VOLUME
LDA PITCH3 ;SOUND 3 DONE?
CMP #$A0
BEQ LL2 ;YES!
JMP SO4 ;NO, DO SOUND 4
LL2 LDA #0 ;TURN OFF SOUND 3
STA AUDC3
LDA P2PF ;DID GREEN MAN...
CMP #0 ;HIT PLAYFIELD?
BNE GOBACK ;YES!
HITGRN JSR ERASEGRN ;GREEN MAN GONE
LDA #0 ;RESET GREEN MAN
STA GRNDRP
STA GRNFNDRP
STA GRNFLG
STA GRNMOV
STA SO3FLG
STA DRP2
LDA #10 ;RESET ROW
STA GROW
LDA #8 ;RESET COLUMN
STA GCOL
STA COUNT3
LDA #45
STA YPOSP2
LDA #116
STA HPOSP2
STA XPOSP2
RTS
GOBACK LDA #0 ;RESET SOUND 3
STA SO3FLG
STA GRNMOV
LDA #8
STA COUNT3
LDA P2PF ;DID GREEN HIT PF0?
CMP #1
BNE MM4 ;NO!
RTS
MM4 JSR DECNUM ;DEC # SQUARES
LDA # <PF0 ;CHANGE TO PF0
STA FILE
LDA # >PF0
STA FILE+1
LDA GCOL ;SET COLUMN
STA COL
LDA GROW ;AND ROW
STA ROW
JSR CHANGE ;CHANGE IT!
RTS
DECNUM LDA LEVEL ;GET LEVEL
CMP #1
BEQ NN1 ;LEVEL 1
CMP #2
BEQ NN2 ;LEVEL 2
CMP #3
BEQ NN4 ;LEVEL 3
CMP #4
BEQ NN1 ;LEVEL 4
CMP #5
BEQ NN2 ;LEVEL 5
JMP NN4 ;LEVEL 6
;
NN1 LDA P2PF ;HIT PF1?
CMP #2
BEQ DECR ;YES!
RTS
NN2 LDA P2PF ;HIT PF2?
CMP #4
BEQ DECR ;YES!
RTS
NN4 LDA P2PF ;HIT PF3?
CMP #8
BEQ DECR ;YES!
RTS
DECR DEC NUMSQ ;1 LESS SQUARE
RTS
BALCHK LDA SO2FLG,X ;SOUND 2 ON?
CMP #1
BEQ OO1 ;YES!
RTS
OO1 LDA PITCH2,X ;SET VOLUME
STA AUDC2,Y
DEC PITCH2,X ;NEXT VOLUME
LDA PITCH2,X ;ALL DONE?
CMP #$A0
BEQ OO2 ;YES!
RTS
OO2 LDA #0 ;TURN OFF...
STA AUDC2,Y ;SOUND 2
LDA P1PF,X ;DID ROCK...
CMP #0 ;HIT PF?
BNE OO3 ;YES!
LDA #1 ;UH-OH! IT FELL!
STA FALOFF ;SET FALL FLAG
RTS
OO3 LDA #0 ;RESET SOUND FLAG
STA SO2FLG,X
STA B1MOV,X
LDA #8
STA COUNT2,X
RTS
;
CLRFLG LDA #0 ;RESET MISC FLAGS
STA B1MOV,X
STA SO2FLG,X
STA B1DRP,X
STA FNB1DRP,X
STA FALOFF
LDA #8
STA COUNT2,X
LDA #45
STA YPOSP1,X
LDA HPOS,X
STA HPOSP1,X
STA XPOSP1,X
RTS
;
UPDATMAN LDA DIRECT ;GET DIR...
CMP #9
BEQ PP1 ;DOWN & LEFT
CMP #5
BEQ PP2 ;DOWN & RIGHT
CMP #6
BEQ PP4 ;UP & RIGHT
CMP #10
BEQ PP3 ;UP & LEFT
RTS
;
PP1 DEC PCOL ;MOVE LEFT
INC PROW ;MOVE DOWN...
INC PROW ;2 TIMES
RTS
PP2 INC PCOL ;MOVE RIGHT
INC PROW ;MOVE DOWN...
INC PROW ;2 TIMES
RTS
PP3 DEC PCOL ;MOVE LEFT
DEC PROW ;MOVE UP...
DEC PROW ;2 TIMES
RTS
PP4 INC PCOL ;MOVE RIGHT
DEC PROW ;MOVE UP...
DEC PROW ;2 TIMES
RTS
;
PCUBPOS LDA PCOL ;SAVE SQUARE POS.
STA COL
LDA PROW
STA ROW
RTS
;
;-----
;DELAY
;-----
DELAY LDX #$FF ;TIME DELAY
QQ1 LDY TIME
QQ2 DEY
BNE QQ2
DEX
BNE QQ1
RTS
;
;-------------
;SETUP ROUTINE
;-------------
;
SETUP LDA START ;INIT ALL?
CMP #$00
BNE PART ;NO...
LDA #$00 ;YES...
STA NUMSQ
LDA #$10 ;RESET
LDX #0 ;SCORE...
RESET1 STA SCORE,X
INX
CPX #$06
BNE RESET1
;
PART LDA #$00 ;SET FLG'S
LDX #0 ;TO ZERO..
SETZERO STA BACK,X
INX
CPX #100
BNE SETZERO
LDA #$08 ;SET COUNT
STA COUNT1
STA COUNT2
STA COUNT3
STA COUNT4
;
LDA #9 ;SET PLAYER
STA PCOL ;COLUMN &
LDA #8 ;ROW...
STA PROW
;
LDA #10 ;SET GEORGE
STA SCOL ;& GREEN
STA SROW ;COLUMN...
STA GROW
LDA #8
STA GCOL
;
LDA #124 ;PM DATA..
STA PXPOS
STA HPOSP0
LDA #85
STA PYPOS
LDA #116
STA XPOSP1
STA XPOSP2
STA HPOSP1
STA HPOSP2
STA HPOS
STA HPOS+1
LDA #132
STA XPOSP3
STA HPOS+2
STA HPOSP3
LDA #45
STA YPOSP1
STA YPOSP2
STA YPOSP3
;
CLC ;SET UP...
LDA #170 ;SOUND...
STA AUDF1 ;FREQUENCIES
ADC #10
STA AUDF2
ADC #10
STA AUDF3
ADC #10
STA AUDF4
;
LDA #$01 ;CLR COLLISIONS
STA HITCLR
;
PMCLR LDA #$00 ;ERASE P/M
LDX #$FF ;MEMORY
ERASEMEM STA PLAY0,X
STA PLAY1,X
STA PLAY2,X
STA PLAY3,X
DEX
BNE ERASEMEM
RTS ;RETURN...
;
;---------------
;FIGURES FOR MAN
;---------------
;
FIG1 LDA DIRFLG ;GET MOVE DIRECTION
CMP #9 ;DOWN & LEFT?
BEQ RR2 ;YES!
LDY PYPOS ;DRAW FIGURE 1
LDX #0
RR1 LDA FIG1DAT,X
STA PLAY0,Y
INY
INX
CPX #16
BNE RR1
RR2 RTS
;
FIG2 LDA DIRFLG ;GET MOVE DIRECTION
CMP #5 ;DOWN & RIGHT?
BEQ SS2 ;YES!
JSR ERASEMAN ;ERASE MAN
LDY PYPOS ;DRAW FIGURE 2
LDX #0
SS1 LDA FIG2DAT,X
STA PLAY0,Y
INY
INX
CPX #16
BNE SS1
SS2 RTS
;
FIG3 LDA DIRFLG ;GET DIRECTION
CMP #10 ;UP & LEFT?
BEQ TT2 ;YES!
JSR ERASEMAN ;ERASE MAN
LDY PYPOS ;DRAW FIGURE 3
LDX #0
TT1 LDA FIG3DAT,X
STA PLAY0,Y
INY
INX
CPX #15
BNE TT1
TT2 RTS
;
FIG4 LDA DIRFLG ;GET DIRECTION
CMP #6 ;UP & RIGHT?
BEQ UU2 ;YES!
JSR ERASEMAN ;ERASE MAN
LDY PYPOS ;DRAW FIGURE 4
LDX #0
UU1 LDA FIG4DAT,X
STA PLAY0,Y
INY
INX
CPX #15
BNE UU1
UU2 RTS
GRN0 JSR ERASEGRN ;ERASE GREEN MAN
LDY YPOSP2 ;DRAW GREEN MAN...
LDX #$00 ;FACING RIGHT!
VV1 LDA GRN1DAT,X
STA PLAY2,Y
INX
INY
CPX #13
BNE VV1
JSR SETGRN ;SET GREEN PARAMETERS
RTS
;
GRN1 JSR ERASEGRN ;ERASE GREEN MAN
LDY YPOSP2 ;DRAW GREEN MAN...
LDX #0 ;FACING LEFT
WW1 LDA GRN2DAT,X
STA PLAY2,Y
INY
INX
CPX #13
BNE WW1
JSR SETGRN ;SET GREEN PARAMETERS
RTS
;
ERASEGRN LDY YPOSP2 ;ERASE GREEN MAN
LDX #0
TXA
XX1 STA PLAY2,Y
INX
INY
CPX #15
BNE XX1
RTS
;
SETGRN LDA #13 ;GREEN 13 LINES TALL
STA LENGTH
LDA #11
STA ADDNUM
LDA #198 ;AND HE'S GREEN!
STA PCOLR2
RTS
;
;
;ERASE MAN SUB
;
ERASEMAN LDY PYPOS
LDX #$00
LDA #$00
YY1 STA PLAY0,Y
INY
INX
CPX #20
BNE YY1
RTS
;
;FIGURES FOR GEORGE !!
;
GEORGE0 JSR ERASEGRG ;ERASE GEORGE
LDY YPOSP3 ;DRAW GEORGE...
LDX #0 ;IN POSITION 0
ZZ1 LDA GRG0DAT,X
STA PLAY3,Y
INY
INX
CPX #18
BNE ZZ1
JSR SETGRG ;SET GEORGE PARAMETERS
RTS
;
GEORGE1 JSR ERASEGRG ;ERASE GEORGE
LDY YPOSP3 ;DRAW GEORGE...
LDX #0 ;IN POSITION 1
AAA1 LDA GRG1DAT,X
STA PLAY3,Y
INY
INX
CPX #18
BNE AAA1
RTS
;
GEORGE2 JSR ERASEGRG ;ERASE GEORGE
LDY YPOSP3 ;DRAW GEORGE...
LDX #0 ;IN POSITION 2
BBB1 LDA GRG2DAT,X
STA PLAY3,Y
INY
INX
CPX #18
BNE BBB1
RTS
;
GEORGE3 JSR ERASEGRG ;ERASE GEORGE
LDY YPOSP3 ;DRAW GEORGE...
LDX #0 ;IN POSITION 3
CCC1 LDA GRG3DAT,X
STA PLAY3,Y
INY
INX
CPX #18
BNE CCC1
RTS
;
SETGRG LDA #19 ;GEORGE 19 LINES TALL
STA LENGTH3
LDA #16
STA ADDNUM3
LDA #86 ;GEORGE PURPLE!
STA PCOLR3
RTS
;
ERASEGRG LDY YPOSP3 ;ERASE GEORGE
LDX #0
TXA
DDD1 STA PLAY3,Y
INY
INX
CPX #20
BNE DDD1
RTS
;
;-----------------
;CHANGE SQUARE SUB
;-----------------
;
CHANGE LDA ROW ;GET ROW,
STA LO ;SAVE IN...
LDA #0 ;MULT AREA
STA HI
ASL LO ;*2
ASL LO ;*4
LDA LO ;SAVE *4 VALUE
STA TIMES4
ASL LO ;*8
ASL LO ;*16
ROL HI
LDA LO ;+*4 = *20
CLC
ADC TIMES4
STA LO
LDA HI
ADC #0
STA HI
LDA LO ;NOW ADD COLUMN
CLC
ADC COL
STA LO
LDA HI
ADC #0
STA HI
LDA LO ;NOW DISPLAY START
CLC
ADC # <DISP
STA LO
LDA HI
ADC # >DISP
STA HI
LDY #1
LDA (FILE),Y ;GET RIGHT OF SQUARE
STA (LO),Y ;PUT ON SCREEN
DEY
LDA (FILE),Y ;GET LEFT OF SQUARE
STA (LO),Y ;PUT ON SCREEN
RTS ;ALL DONE!
;
;-------------
;FALL OFF SUB
;-------------
FALL LDA #$04 ;SET PRIOR
STA PRIOR
LDA #2
STA TIME
JSR TURNOFF
LDA #$AA
STA AUDC1
EEE1 LDA PYPOS ;GET YPOS
STA AUDF1 ;MAKE SO...
CMP #240 ;OFF SCR...
BEQ ENDLP ;YES...
JSR DOWN0 ;NO...
JSR DELAY ;DELAY...
JMP EEE1 ;DO AGAIN
ENDLP LDA #$6F
STA AUDC1
CLC
LDA #130
FFF1 STA AUDF1
ADC #1
JSR DELAY
CMP #210
BNE FFF1
LDA #$00
STA AUDF1
STA AUDC1
LDA #3 ;3=FALL
STA BACK
RTS
;---------
;DRAW ROCK
;---------
BAL1DRW LDY YPOSP1 ;DRAW ROCK 1
LDX #$00
GGG1 LDA BALDAT,X
STA PLAY1,Y
INY
INX
CPX #10
BNE GGG1
RTS
;
BAL2DRW LDY YPOSP2 ;DRAW ROCK 2
LDX #0
HHH1 LDA BALDAT,X
STA PLAY2,Y
INX
INY
CPX #10
BNE HHH1
LDA #10 ;SET ROCK PARAMS
STA LENGTH ;(INSTEAD OF...
LDA #8 ;GREEN MAN)
STA ADDNUM
LDA #52
STA PCOLR2
RTS
;
BAL3DRW LDY YPOSP3 ;DRAW ROCK 3
LDX #0
III1 LDA BALDAT,X
STA PLAY3,Y
INY
INX
CPX #10
BNE III1
LDA #10 ;SET ROCK PARAMS
STA LENGTH3 ;(INSTEAD OF...
LDA #8 ;GEORGE!)
STA ADDNUM3
LDA #52
STA PCOLR3
RTS
;
;-------------
;MOVEMENT SUBS
;-------------
;
DNLEFT0 JSR FIG1 ;SHAPE...
LDA #1
STA MOVFLG
JSR LEFT0 ;MOVE...
JSR DOWN0
JSR DOWN0
DEC COUNT1
BNE JJJ1
JSR SETFLG0 ;RETURN
JJJ1 RTS
;
DNRIGHT0 JSR FIG2 ;SHAPE...
LDA #1
STA MOVFLG
JSR RIGHT0 ;MOVE...
JSR DOWN0
JSR DOWN0
DEC COUNT1 ;DONE...
BNE KKK1
JSR SETFLG0 ;RETURN
KKK1 RTS
;
UPLEFT0 JSR FIG3 ;SHAPE...
LDA #1
STA MOVFLG
JSR LEFT0 ;MOVE...
JSR UP0
JSR UP0
DEC COUNT1 ;DONE???
BNE LLL1
JSR SETFLG0 ;SETFLG...
LLL1 RTS
;
UPRIGHT0 JSR FIG4 ;SHAPE...
LDA #1
STA MOVFLG
JSR RIGHT0 ;MOVE...
JSR UP0
JSR UP0
DEC COUNT1 ;DONE???
BNE MMM1
JSR SETFLG0
MMM1 RTS
;
LEFT0 DEC PXPOS ;MOVE MAN LEFT
LDA PXPOS
STA HPOSP0
RTS
;
RIGHT0 INC PXPOS ;MOVE MAN RIGHT
LDA PXPOS
STA HPOSP0
RTS
;
UP0 LDY PYPOS ;MOVE MAN UP
LDX #$00
NNN1 LDA PLAY0,Y
STA PLAY0-1,Y
INX
INY
CPX #17
BNE NNN1
DEC PYPOS
RTS
;
DOWN0 LDX #0 ;MOVE MAN DOWN
CLC
LDA PYPOS
ADC #14
TAY
OOO1 LDA PLAY0,Y
STA PLAY0+1,Y
DEY
INX
CPX #17
BNE OOO1
INC PYPOS
RTS
;
;ROCK 1 MOVEMENT
;
DNLEFT1 JSR LEFT1 ;MOVE LEFT,
JSR DOWN1 ;MOVE DOWN...
JSR DOWN1 ;2 TIMES
DEC COUNT2
BNE PPP1
LDX #0
JSR SETFLG ;SET UP SOUND
PPP1 RTS
;
DNRIGHT1 JSR RIGHT1 ;MOVE RIGHT,
JSR DOWN1 ;MOVE DOWN...
JSR DOWN1 ;2 TIMES
DEC COUNT2
BNE QQQ1
LDX #0
JSR SETFLG ;SET UP SOUND
QQQ1 RTS
;
LEFT1 DEC XPOSP1 ;MOVE ROCK 1 LEFT
LDA XPOSP1
STA HPOSP1
RTS
;
RIGHT1 INC XPOSP1 ;MOVE ROCK 1 RIGHT
LDA XPOSP1
STA HPOSP1
RTS
;
;
DOWN1 LDX #0 ;MOVE PLAYER 1 DOWN
CLC
LDA YPOSP1
ADC #8
TAY
RRR1 LDA PLAY1,Y
STA PLAY1+1,Y
DEY
INX
CPX #10
BNE RRR1
INC YPOSP1
RTS
;
;
;ROCK 2 MOVEMENT
;
;SAME AS ROCK 1, BUT FOR ROCK 2
;
DNLEFT2 JSR LEFT2
JSR DOWN2
JSR DOWN2
DEC COUNT3
BNE SSS1
LDX #1
JSR SETFLG
SSS1 RTS
;
DNRIGHT2 JSR RIGHT2
JSR DOWN2
JSR DOWN2
DEC COUNT3
BNE TTT1
LDX #1
JSR SETFLG
TTT1 RTS
;
LEFT2 DEC XPOSP2
LDA XPOSP2
STA HPOSP2
RTS
;
RIGHT2 INC XPOSP2
LDA XPOSP2
STA HPOSP2
RTS
;
DOWN2 LDX #0
CLC
LDA YPOSP2
ADC ADDNUM
TAY
UUU1 LDA PLAY2,Y
STA PLAY2+1,Y
DEY
INX
CPX LENGTH
BNE UUU1
INC YPOSP2
RTS
;
;ROCK 3 MOVEMENT
;
;SAME AS ROCK 1, BUT FOR ROCK 3
;
DNLEFT3 JSR LEFT3
JSR DOWN3
JSR DOWN3
DEC COUNT4
BNE VVV1
LDX #2
JSR SETFLG
VVV1 RTS
;
DNRIGHT3 JSR RIGHT3
JSR DOWN3
JSR DOWN3
DEC COUNT4
BNE WWW1
LDX #2
JSR SETFLG
WWW1 RTS
;
UPLEFT3 JSR LEFT3
JSR UP3
JSR UP3
DEC COUNT4
BNE XXX1
LDX #2
JSR SETFLG
XXX1 RTS
;
UPRIGHT3 JSR RIGHT3
JSR UP3
JSR UP3
DEC COUNT4
BNE YYY1
LDX #2
JSR SETFLG
YYY1 RTS
;
LEFT3 DEC XPOSP3
LDA XPOSP3
STA HPOSP3
RTS
;
RIGHT3 INC XPOSP3
LDA XPOSP3
STA HPOSP3
RTS
;
UP3 LDY YPOSP3
LDX #0
ZZZ1 LDA PLAY3,Y
STA PLAY3-1,Y
INY
INX
CPX LENGTH3
BNE ZZZ1
DEC YPOSP3
RTS
;
DOWN3 LDX #0
CLC
LDA YPOSP3
ADC ADDNUM3
TAY
AAAA1 LDA PLAY3,Y
STA PLAY3+1,Y
DEY
INX
CPX LENGTH3
BNE AAAA1
INC YPOSP3
RTS
;
SETFLG0 LDA #1 ;SET FLG
STA SO1FLG
STA MOVFLG
LDA #$AF
STA PITCH1 ;PITCH...
LDA DIRECT
STA DIRFLG
RTS
;
SETFLG LDA #1
STA SO2FLG,X
LDA #$AF
STA PITCH2,X ;PITCH...
RTS
;
PLAYFLD0 LDA # <PF0 ;POINT TO...
STA FILE ;COLOR 0 SQUARE
LDA # >PF0
DOSQUARE STA FILE+1
JSR ADD25 ;ADD 25 POINTS
JSR PCUBPOS ;GET CUBE POS
JSR CHANGE ;CHANGE COLOR
RTS
;
PLAYFLD1 LDA # <PF1 ;POINT TO...
STA FILE ;COLOR 1 SQUARE
LDA # >PF1
JMP DOSQUARE ;DO MISC STUFF
;
PLAYFLD2 LDA # <PF2 ;POINT TO...
STA FILE ;COLOR 2 SQUARE
LDA # >PF2
JMP DOSQUARE ;DO MISC STUFF
;
PLAYFLD3 LDA # <PF3 ;POINT TO...
STA FILE ;COLOR 3 SQUARE
LDA # >PF3
JMP DOSQUARE ;ETC.
;
CLEAR LDA #$01 ;RESET COLLISIONS
STA HITCLR
RTS
;
TURNOFF LDA #$00 ;NO AUDIO...
STA AUDC2 ;ON CHANNELS...
STA AUDF2 ;2, 3, 4!
STA AUDC3
STA AUDF3
STA AUDC4
STA AUDF4
RTS
;
PL.PL LDA P0PL ;DID MAN...
CMP #1 ;HIT PLAYER 0?
BCC BBBB1 ;NO!
CMP #4 ;HIT PLAYER 2?
BNE BBBB2 ;NO!
LDA GRNFLG ;GREEN MAN ACTIVE?
CMP #1
BNE BBBB2 ;NO!
JSR HITGRN ;CLOBBER GREEN MAN!
LDA #2 ;AWARD 200 POINTS!
STA SUM
JSR ADD200
JMP BBBB1
BBBB2 LDA P0PL ;DID MAN HIT...
CMP #8 ;PLAYER 3?
BNE BBBB8 ;NO!
LDA GRGFLG ;GEORGE ACTIVE?
CMP #1
BEQ BBBB1 ;YES!
BBBB8 LDA WARN1
CMP #4
BEQ BBBB7
INC WARN1
RTS
BBBB7 LDA #2 ;DEATH DUE TO...
STA BACK ;GEORGE!
RTS
BBBB1 LDA #0
STA WARN1
LDA GRGFLG
CMP #1
BNE RET
LDA P3PL
CMP #1
BNE BBBB5
LDA WARN
CMP #4
BEQ BBBB6
INC WARN
RTS
BBBB6 LDA #2
STA BACK
RTS
BBBB5 LDA #0
STA WARN
LDA P3PL
CMP #2
BCC RET
CMP #4
BNE RESET
LDA GRNFLG
CMP #1
BEQ RET
RESET JSR ERASEGRG ;ERASE GEORGE
LDA #0 ;CLEAR GEORGE...
STA GRGFLG ;VARIABLES
STA SO4FLG
STA FNGRDRP
STA GRGDRP
STA OUTFLG
STA GRGMOV
LDA #10
STA SCOL
STA SROW
LDA #8
STA COUNT4
LDA #45
STA YPOSP3
LDA #132
STA XPOSP3
STA HPOSP3
RET RTS
;
;
CHECK LDA NUMSQ ;GET SQUARES HIT
CMP #28 ;ALL DONE?
BNE CCCC1 ;NO!
LDA #1 ;ROUND COMPLETED!
STA BACK
CCCC1 RTS
;
;---------------
;SCORE ROUTINES
;---------------
ADD25 LDY #5 ;ADD 25 POINTS
CLC ;TO SCORE
LDA SCORE,Y
ADC #5
CMP #$1A
BNE DDDD1
LDA #$10
STA DISP,Y
STA SCORE,Y
DEY
LDA SCORE,Y
CLC
ADC #1
STA SCORE,Y
JMP DDDD2
DDDD1 LDA #$15
STA DISP,Y
STA SCORE,Y
DEY
DDDD2 LDA SCORE,Y
CLC
ADC #2
CMP #$1A
BEQ DDDD3
STA DISP,Y
STA SCORE,Y
RTS
DDDD3 LDA #$10
STA DISP,Y
STA SCORE,Y
DEY
LDA SCORE,Y
CLC
ADC #1
CMP #$1A
BEQ DDDD3
STA DISP,Y
STA SCORE,Y
RTS
;
ADD200 LDY #3 ;ADD SUM * 100...
CLC ;TO SCORE
LDA SCORE,Y
ADC SUM
CMP #$1A
BCC EEEE1
EEEE2 SEC
SBC #$1A
STA ADD
EEEE3 CLC
LDA #$10
ADC ADD
STA DISP,Y
STA SCORE,Y
LDA #0
STA ADD
DEY
CLC
LDA SCORE,Y
ADC #1
CMP #$1A
BEQ EEEE3
EEEE1 STA DISP,Y
STA SCORE,Y
RTS
;
;CHARACTER IMAGES
;(MAN, GREEN MAN, GEORGE, ROCKS)
;
FIG1DAT .BYTE 12,30,63,43,43,63
.BYTE 43,55,30,30,18,18,27
.BYTE 54,108,72
FIG2DAT .BYTE 48,120,252,212,212
.BYTE 252,212,236,120,120,72
.BYTE 72,216,108,54,18
FIG3DAT .BYTE 14,31,55,55,31,15
.BYTE 31,31,14,10,46,62,27
.BYTE 13,4
FIG4DAT .BYTE 112,248,236,236,248
.BYTE 240,248,248,112,80,116
.BYTE 124,216,176,32
GRN1DAT .BYTE 160,80,40,60,126,106
.BYTE 126,118,60,60,36,54
GRN2DAT .BYTE 5,10,20,60,126,86
.BYTE 126,110,60,60,36,108
GRG0DAT .BYTE 12,30,30,255,43
.BYTE 43,255,255,45,51,63
.BYTE 30,18,18,27,54,108,0
GRG1DAT .BYTE 48,120,120,255,212,212
.BYTE 255,255,180,204,252,120
.BYTE 72,72,216,108,54,0
GRG2DAT .BYTE 12,30,30,255,47
.BYTE 47,255,127,47,31,63
.BYTE 30,18,18,126,54,27,0
GRG3DAT .BYTE 48,120,120,255,244
.BYTE 244,255,254,244,248,252
.BYTE 120,72,72,126,108,216,0
BALDAT .BYTE 24,60,126,255,255
.BYTE 255,126,60,24,0
;
;SQUARES !!!
;
PF0 .BYTE $03,$04
PF1 .BYTE $43,$44
PF2 .BYTE $83,$84
PF3 .BYTE $C3,$C4
;
;DISPLAY LIST
;
DLIST .BYTE $70,$70,$70,$46
.WORD DISP
.BYTE 6,6,$86,6,$86,$86,$86,6,6,6
.BYTE 6,6,6,6,6,6,6,6,6,6
.BYTE 6,6,6,$41
.WORD DLIST
RDYMSG .SBYTE +$80,"READY %%"
LVMSG .SBYTE "LeVeL"
ENDMSG .SBYTE +$80,"GAME OVER"
CHGMSG .SBYTE "CHANGE"
LVLMSG .SBYTE +$80,"level:"
RNDMSG .SBYTE +$80,"round:"
BONMSG .SBYTE +$80,"BONUS"
.SBYTE " 1000"
TITLE .SBYTE " AVALANCHE "
AUTHOR .SBYTE "BY TOMMY BENNETT"
MAGMSG .SBYTE +$80,"ANALOG COMPUTING"
;
;MISC. DATA
;
R1SET .BYTE 0,15,90,4,156
R2SET .BYTE 0,134,246,12,146
R3SET .BYTE 0,26,164,118,84
R4SET .BYTE 0,196,66,34,102
;
;CHAR SET DATA
;
NEWCHR .BYTE 3,15,63,127,63,15,3,0
.BYTE 192,240,252,254,252,240,192,0
.BYTE 0,6,12,24,48,0,96,0
.BYTE 12,30,63,43,63,30,18,54
.BYTE 8,12,126,127,126,12,8,0
.BYTE 16,48,126,254,126,48,16,0
;
;JUMPING PADS
;
PADATA .BYTE 3,4,3,4,3,4,3,4
.BYTE 3,4,3,4,3,4
;
;MUSIC DATA
;
NOTE .BYTE 60,47,0,47,60,72,60,0
.BYTE 72,64,72,64,72,64,0,81
.BYTE 72,81,72,81,72
DUR .BYTE 11,14,7,11,7,7,7,7
.BYTE 7,7,7,7,7,7,7,7
.BYTE 7,7,7,7,7