*****************************************
*          Monkeys & Balloons           *
*            by Frank Cohen             *
*      (c) 1988 Regent Software         *
* ------------------------------------- *
* Started December 9, 1986              *
* Last Modified December 11, 1986       *
* ------------------------------------- *
* Started Again May 16, 1988            *
* Revision List                         *
* 042388 My 27th Birthday
* 060288 Beta testing release
* 071688 Final release
* 112488 Happy Turkey Day!
* 112588 Fix Mega ST bombing problem
*****************************************

CXORG EQU 20      ;Horizontal starting position
CYORG EQU 154     ;Vert
CKORG EQU 5       ;Gravity start
CIORG EQU $100    ;Y inc value
CIXORG EQU 50     ;X inc value
TEMPO EQU 2       ;Music Tempo
BAL_PER_ROW EQU 6 ;Balloons per row

START DC $A000
 MOVE.L D0,HOLDA0
 DC $A00A

 MOVE #2,-(A7)  ;GET PHYSICAL ADDRESS OF VIDEO RAM
 TRAP #14
 ADD #2,A7
 MOVE.L D0,SCREEN

 MOVE #4,-(A7) ;GETREZ
 TRAP #14
 ADD #2,A7
 MOVE D0,OLD_REZ

 CLR -(A7)  ;FORCE LOW REZ
 MOVE.L #-1,-(A7)
 MOVE.L #-1,-(A7)
 MOVE #5,-(A7)
 TRAP #14
 ADD #10,A7

 LEA OLD_COLORS,A4
 CLR COUNTER
SAVECLRS CLR -(A7) ;SETCOLOR
 MOVE COUNTER,-(A7)
 MOVE #7,-(A7)
 TRAP #14
 ADD #6,A7
 MOVE D0,(A4)+
 ADD #1,COUNTER
 CMP #16,COUNTER
 BNE SAVECLRS

 MOVE.L #SETUPVB,-(A7)  ;RUN INIT V_BLANK
 MOVE #38,-(A7)
 TRAP #14
 ADD #6,A7

*---------------LOAD DATA FROM FILES---------------*

 LEA FNAME5,A0
 LEA TITLE,A1
 JSR LOADFILE

 LEA FNAME4,A0
 LEA MESSAGES,A1
 JSR LOADFILE

 LEA FNAME3,A0
 LEA MEN,A1
 JSR LOADFILE

 LEA FNAME2,A0
 MOVE.L SCREEN,A1
 JSR LOADFILE

 LEA FNAME1,A0
 LEA BALLOONS,A1
 JSR LOADFILE

 MOVE #7999,D0
 MOVE.L SCREEN,A0
 LEA FLIP1,A1
COPYFLIP2 MOVE.L (A0)+,(A1)+
 DBF D0,COPYFLIP2

 MOVE.L #COLORS,-(A7)  ;SET COLOR PALETTE
 MOVE #6,-(A7)
 TRAP #14
 ADD.L #6,A7

 ADD #4,A7  ;First time stack modify

* The TAO Programmer says:
* When managers hold endless meetings, the programmers write games.
* When accountants talk of quarterly profits, the development budget
* is about to be cut.  When senior scientists talk blue sky,
* the clouds are about to roll in.
* Truly, this is not the Tao of Programming.

*---------------TITLE SCREEN---------------*

DOTITLE SUB #4,A7  ;Even out the stack

 MOVE #1,ATTRACT_MODE
 JSR RMUSIC
 CLR D0
 JSR START_MUSIC

 LEA TITLE,A0
 MOVE.L SCREEN,A1
 MOVE.L #7999,D0
DOTIT1 MOVE.L (A0)+,(A1)+
 DBF D0,DOTIT1

 MOVE #10,COUNT2

TITLE_99 MOVE #60,COUNT

TITLE_100 MOVE VCOUNT,D0
TITLE_SYNC CMP VCOUNT,D0
 BEQ TITLE_SYNC

 JSR MUSIC

 MOVE.L HOLDA0,A0
 MOVE -596(A0),D0
 AND #3,D0
 BNE START_GAME

 SUB #1,COUNT
 TST COUNT
 BNE TITLE_100
 MOVE #60,COUNT
 SUB #1,COUNT2
 TST COUNT2
 BNE TITLE_99
 CLR.L POINTS
 CLR.L BONUS
 JMP PLAYINIT

START_GAME MOVE.L HOLDA0,A0
 MOVE -596(A0),D0
 AND #3,D0
 BNE START_GAME

 JSR RMUSIC
 CLR ATTRACT_MODE
 CLR.L POINTS
 CLR.L BONUS
 MOVE #3,LIVES

*---------------INIT----------------*

PLAYINIT MOVE #20,MEN_TIMER

 CLR PCOUNT
 CLR PCOUNT2

 CLR CLOWNIMAGE
 MOVE #70,IMAGETIME

 MOVE #10,MENXPOS
 MOVE #10,OLDMEN

 MOVE #CIORG,YINC
 MOVE #CIORG,SYINC
 MOVE #CIXORG,XINC
 MOVE #CKORG,KS
 MOVE #CKORG,KAY
 CLR HITS

 MOVE #CXORG,CLOWNX
 MOVE #CXORG,OLDCLOWNX
 MOVE.B #CXORG,HPOS

 MOVE #CYORG,CLOWNY
 MOVE #CYORG,OLDCLOWNY
 MOVE.B #CYORG,VPOS

 MOVE #7999,D0
 LEA FLIP1,A0
 MOVE.L SCREEN,A1
COPYFLIP MOVE.L (A0)+,(A1)+
 DBF D0,COPYFLIP

 JSR START_BALLOONS

 CLR D0
 JSR SCORED

* When managers make commitments, game programs are ignored.
* When accountants make long-range plans, harmony and order are
* about to be restored.  When senior scientists address the
* problems at hand, then the problems will soon be solved.
* Truly, this is the Tao of Programming.

*--------------MAIN LOOP---------------

MAINLOOP TST ATTRACT_MODE
 BEQ MAINNB
 MOVE.L HOLDA0,A0
 MOVE -596(A0),D0
 AND #3,D0
 BNE START_GAME

MAINNB MOVE #11,-(A7)
 TRAP #1
 ADD #2,A7
 TST D0
 BEQ NOKEY

 JSR WAIT_KEY
 MOVE.L D0,D1
 SWAP D1
 CMP.B #97,D1
 BEQ EXIT
 CMP.B #' ',D0
 BEQ EXIT
 CMP.B #27,D0
 BNE NOKEY

PAUSED TST ATTRACT_MODE
 BNE NOKEY
 JSR WAIT_KEY
 CMP.B #27,D0
 BNE PAUSED

NOKEY MOVE VCOUNT,D0
MAIN2 ADD #1,RNDVAL
 CMP VCOUNT,D0
 BEQ MAIN2

 JSR UN_PLOT_CLOWN
 JSR PLOT_BALLOONS

 CMP #100,CLOWNY
 BGT SYNC_LOWER

 JSR PLOT_CLOWN
 JSR PLOT_MEN
 JSR MOVE_CLOWN
 JSR MOVE_MEN
 JSR POP_BALLOONS
 JSR MUSIC
 JSR SOUNDS
 JMP MAINLOOP

SYNC_LOWER JSR PLOT_MEN
 JSR PLOT_CLOWN
 JSR MOVE_CLOWN
 JSR MOVE_MEN
 JSR POP_BALLOONS
 JSR MUSIC
 JSR SOUNDS
 JMP MAINLOOP

*-------MOVE MONKEYS--------

MOVE_MEN TST ATTRACT_MODE
 BEQ MM_NORMAL

 MOVE VCOUNT,D0
 AND #3,D0
 MOVE D0,MEN_TIMER

 MOVE CLOWNX,D0
 LSR #1,D0
 SUB #5,D0
 CMP MENXPOS,D0
 BEQ MM_RTN
 BCS MM_LT

 MOVE MENXPOS,D0
 CMP #58,D0
 BGE MM_RTN
 ADD #1,MENXPOS
 RTS

MM_LT MOVE MENXPOS,D0
 CMP #8,D0
 BLE MM_RTN
 SUB #1,MENXPOS
 RTS

MM_NORMAL MOVE.L HOLDA0,A0
 MOVE -602(A0),D0
 LSR #2,D0
 CMP #7,D0
 BLE MM_RTN2
 CMP #60,D0
 BGE MM_RTN4

MM_RTN3 MOVE D0,MENXPOS
MM_RTN RTS

MM_RTN2 MOVE #8,D0
 JMP MM_RTN3
MM_RTN4 MOVE #59,D0
 JMP MM_RTN3

*--------INIT V_BLANK ROUTINES-----------

SETUPVB MOVE.L $456,A0
RUNRUN TST.L (A0)
 BEQ SET2
 ADD #4,A0
 JMP RUNRUN

SET2 MOVE.L #V_BLANK,(A0)
 MOVE.L A0,HOLDEN
 RTS

*--------DE INIT--------

DEINIT MOVE.L #UNBY,-(A7)  ;RUN INIT V_BLANK
 MOVE #38,-(A7)
 TRAP #14
 ADD #6,A7
 RTS

UNBY MOVE.L HOLDEN,A0  ;CLEAR VBLANK PATCH
 CLR.L (A0)
 RTS

*--------VERTICAL BLANK ROUTINE----------

V_BLANK ADD #1,VCOUNT
 RTS

* There was once a master programmer who wrote unstructured
* programs.  A novice programmer, seeking to imitate him, also
* began to write unstructured code.  When the novice asked the
* master to evaluate his progress, the master criticized him
* for writing unstructured programs, saying: "What is appropriate
* for the master is not appropriate for the novice.  You must
* understand Tao before transcending structure."

*----------BALLOON PLOT-----------

PLOT_BALLOONS ADD #1,PCOUNT2
 CMP #3,PCOUNT2
 BLT PLOT_MAIN
 CLR PCOUNT2

PLOT_MAIN CLR PCOUNT
 TST PCOUNT2
 BEQ PLOT_LOOP

 MOVE #BAL_PER_ROW,PCOUNT
 CMP #1,PCOUNT2
 BEQ PLOT_LOOP

 MOVE #BAL_PER_ROW*2,PCOUNT

PLOT_LOOP CLR.L D7
 MOVE PCOUNT,D7
 LSL #1,D7

 LEA SWITCH,A0
 ADD D7,A0
 TST (A0)
 BEQ PLOT_RCRS

 LEA DELAY,A0
 ADD D7,A0
 TST (A0)
 BEQ PLOT_NODELAY
 SUB #1,(A0)
 JMP PLOT_RCRS

PLOT_NODELAY LEA XPOS,A0
 ADD D7,A0

 CMP #2,PCOUNT2
 BNE PLOT_RIGHT

 SUB #1,(A0)
 TST (A0)
 BNE PLOT_NST
 MOVE #145,(A0)
 JMP PLOT_NST

PLOT_RIGHT ADD #1,(A0)
 CMP #145,(A0)
 BLT PLOT_NST
 CLR (A0)

PLOT_NST CLR.L D6
 CLR.L D5
 MOVE (A0),D5
 MOVE D5,D6
 AND #$0007,D6  ;IMAGE #
 AND #$FFF8,D5

 CLR.L D1
 MOVE D6,D1
 MOVE.L #160*14,D0
 CMP #4,D6
 BLT PAPPAS
 SUB #4,D1
 MOVE #160*48,D0
PAPPAS ADD.L #BALLOONS,D0

 LSL #5,D1
 ADD.L D1,D0
 MOVE.L D0,A0

 MOVE.L SCREEN,D1
 ADD.L #44*160,D1
 TST PCOUNT2
 BEQ DOUG3
 ADD.L #60*160,D1
 CMP #1,PCOUNT2
 BEQ DOUG3
 SUB.L #30*160,D1

DOUG3 ADD.L D5,D1
 MOVE.L D1,A1

 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+

*-------RECURSE-------

PLOT_RCRS ADD #1,PCOUNT

 TST PCOUNT2
 BEQ PLOT_T2
 CMP #1,PCOUNT2
 BEQ PLOT_T1

 CMP #BAL_PER_ROW*3,PCOUNT
 BNE PLOT_LOOP

 LEA FLIP1+11840,A0
 MOVE.L SCREEN,A1
 ADD #11840,A1
 JSR DODOUG

 LEA FLIP1+11984,A0
 MOVE.L SCREEN,A1
 ADD #11984,A1
 JMP DODOUG

PLOT_T1 CMP #BAL_PER_ROW*2,PCOUNT
 BNE PLOT_LOOP

 LEA FLIP1+16640,A0
 MOVE.L SCREEN,A1
 ADD #16640,A1
 JSR DODOUG

 LEA FLIP1+16784,A0
 MOVE.L SCREEN,A1
 ADD #16784,A1
 JMP DODOUG

PLOT_T2 CMP #BAL_PER_ROW,PCOUNT
 BNE PLOT_LOOP

 LEA FLIP1+7040,A0
 MOVE.L SCREEN,A1
 ADD #7040,A1
 JSR DODOUG

 LEA FLIP1+7184,A0
 MOVE.L SCREEN,A1
 ADD #7184,A1

DODOUG MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 RTS

*-----------PLOT RUNNING MEN---------

PLOT_MEN CLR.L D0
 MOVE OLDMEN,D0
 AND #$FFFC,D0
 LSL #1,D0
 MOVE.L SCREEN,A1
 ADD #160*173,A1
 ADD D0,A1

 MOVE #3,D1
CLRMEN CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-32,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-32,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-32,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-32,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-32,A1
 DBF D1,CLRMEN
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+

* A novice asked the master: "Here is a programmer who never
* designs, documents, or tests his programs.  Yet all who know
* him consider him one of the best programmers in the world.
* Why is this?"
* The master replied: "That programmer has mastered the Tao.
* He has gone beyond the need for design;  he does not become
* angry when the system crashes, but accepts the universe without
* concern.  He has gone beyond the need for documentation; he no longer
* cares if anyone sees his code.  He has gone beyond the need for
* testing;  each of his programs are perfect within themselves,
* serene and elegant, their purpose self-evident.
* "Truly, he has entered te mystery of the Tao."

 CLR.L D1
 MOVE MENXPOS,D1
 MOVE D1,OLDMEN
 AND #$0003,D1
 LSL #5,D1
 LEA MEN,A0
 ADD #160*11,A0
 ADD D1,A0

 CLR.L D0
 MOVE MENXPOS,D0
 AND #$FFFC,D0
 LSL #1,D0
 MOVE.L SCREEN,A1
 ADD #160*173,A1
 ADD D0,A1

 MOVE #3,D1
MENPOS MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-32,A0
 ADD #160-32,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-32,A0
 ADD #160-32,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-32,A0
 ADD #160-32,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-32,A0
 ADD #160-32,A1
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-32,A0
 ADD #160-32,A1
 DBF D1,MENPOS
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 RTS

*-----------PLOT CLOWN---------

UN_PLOT_CLOWN CLR.L D1
 MOVE OLDCLOWNX,D1
 AND #$0007,D1
 LSL #4,D1
 LEA MEN,A0
 ADD #160*43,A0
 ADD.L D1,A0
 CLR.L D1
 MOVE OLDIMAGE,D1
 MULU #41*160,D1
 ADD.L D1,A0

 CLR.L D1
 MOVE OLDCLOWNY,D1
 MULU #160,D1
 CLR.L D0
 MOVE OLDCLOWNX,D0
 AND #$FFF8,D0
 ADD.L SCREEN,D0
 ADD.L D1,D0
 MOVE.L D0,A1

 MOVE #29,D3
CLRCLOWN MOVE.L (A0)+,D0
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 MOVE.L D0,(A1)+

 MOVE.L (A0)+,D0
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 MOVE.L D0,(A1)+

 MOVE.L (A0)+,D0
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 MOVE.L D0,(A1)+

 MOVE.L (A0)+,D0
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 MOVE.L D0,(A1)+

 ADD #160-16,A0
 ADD #160-16,A1
 DBF D3,CLRCLOWN
 RTS

PLOT_CLOWN SUB #1,IMAGETIME
 TST IMAGETIME
 BPL NOIMAGE
 MOVE RNDVAL,D0
 AND #$3F,D0
 MOVE D0,IMAGETIME
 AND #3,D0
 MOVE D0,CLOWNIMAGE

NOIMAGE MOVE CLOWNX,OLDCLOWNX
 MOVE CLOWNY,OLDCLOWNY
 MOVE CLOWNIMAGE,OLDIMAGE

 CLR.L D1
 MOVE CLOWNX,D1
 AND #$0007,D1
 LSL #4,D1
 LEA MEN,A0
 ADD #160*43,A0
 ADD D1,A0
 CLR.L D1
 MOVE CLOWNIMAGE,D1
 MULU #41*160,D1
 ADD.L D1,A0

 CLR.L D1
 MOVE CLOWNY,D1
 MULU #160,D1
 CLR.L D0
 MOVE CLOWNX,D0
 AND #$FFF8,D0
 ADD.L SCREEN,D0
 ADD.L D1,D0
 MOVE.L D0,A1

 MOVE #29,D3
CLOWNPOS MOVE.L (A0)+,D0
 MOVE.L D0,D2
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 OR.L D2,D0
 MOVE.L D0,(A1)+

 MOVE.L (A0)+,D0
 MOVE.L D0,D2
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 OR.L D2,D0
 MOVE.L D0,(A1)+

 MOVE.L (A0)+,D0
 MOVE.L D0,D2
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 OR.L D2,D0
 MOVE.L D0,(A1)+

 MOVE.L (A0)+,D0
 MOVE.L D0,D2
 EOR.L #$FFFFFFFF,D0
 MOVE.L (A1),D1
 AND.L D1,D0
 OR.L D2,D0
 MOVE.L D0,(A1)+

 ADD #160-16,A0
 ADD #160-16,A1
 DBF D3,CLOWNPOS
 RTS

*------------CLOWN MOVEMENT------------

MOVE_CLOWN MOVE YINC,D0
 SUB KAY,D0
 MOVE D0,YINC

 CLR.L D2
 MOVE D0,D2
 CLR.L D1
 MOVE VPOS,D1
 SUB D2,D1
 MOVE D1,VPOS

 CLR D1
 MOVE.B VPOS,D1
 CMP #45,D1
 BGT NO_TOP
 MOVE #1,TOP_FLAG

NO_TOP CLR.L D0
 MOVE HPOS,D0
 ADD XINC,D0
 MOVE D0,HPOS

 CMP.B #16,HPOS  ;Hit left wall
 BCC NSS

 ADD.B #1,HPOS
 CLR D0
 SUB XINC,D0
 MOVE D0,XINC

 MOVE #3,IMAGETIME
 JSR HIT_WALL

NSS CMP.B #136,HPOS
 BCS NSSL

 SUB.B #1,HPOS   ;Hit right wall
 CLR D0
 SUB XINC,D0
 MOVE D0,XINC

 MOVE #3,IMAGETIME
 JSR HIT_WALL

NSSL CMP.B #155,VPOS  ;Bounce on trampoline
 BCS MVMAN

 ADD #1,HITS

 TST TOP_FLAG
 BEQ NOTOPED
 CLR TOP_FLAG
 CMP #90,KS
 BGT SKILL2
 ADD #1,KS
 ADD #16,SYINC
 JMP REPLAY
SKILL2 SUB #35,SYINC
 JMP REPLAY

NOTOPED ADD #30,SYINC

REPLAY MOVE SYINC,YINC
 MOVE KS,KAY
 SUB #1,VPOS

 TST ATTRACT_MODE
 BNE NOTRAMPSND
 TST MUSTAT
 BNE NOTRAMPSND
 JSR RMUSIC
 MOVE #10,SOUND_COUNT

 MOVE #236,D0
 MOVE #0,D1
 JSR DOSOUND
 MOVE #5,D0
 MOVE #1,D1
 JSR DOSOUND
 MOVE #230,D0
 MOVE #2,D1
 JSR DOSOUND
 MOVE #5,D0
 MOVE #3,D1
 JSR DOSOUND
 MOVE #252,D0  ;Turn on all tone voices
 MOVE #7,D1
 JSR DOSOUND
 MOVE #10,D0  ;Set volumes
 MOVE #8,D1
 JSR DOSOUND
 MOVE #10,D0
 MOVE #9,D1
 JSR DOSOUND
 MOVE #10,D0
 MOVE #10,D1
 JSR DOSOUND

NOTRAMPSND CLR.L D1
 MOVE MENXPOS,D1
 LSL #1,D1

 CLR.L D0
 MOVE.B HPOS,D0

 CMP D1,D0
 BLT DEAD

 SUB D1,D0
 CMP #17,D0
 BGE DEAD

 TST ATTRACT_MODE
 BEQ MV_NATT
 MOVE #-175,XINC
 MOVE RNDVAL,D0
 AND #1,D0
 BEQ MVMAN
 MOVE #175,XINC
 JMP MVMAN

MV_NATT CLR.L D1
 MOVE D0,D1
 LSL #1,D1
 ADD.L #XTABLE,D1
 MOVE.L D1,A0
 MOVE (A0),XINC

MVMAN CLR D0
 MOVE.B VPOS,D0
 MOVE D0,CLOWNY
 CLR D0
 MOVE.B HPOS,D0
 MOVE D0,CLOWNX
 RTS

*----------DEATH ROUTINE-----------*

DEAD LEA FLIP1,A0
 ADD #153*160,A0
 MOVE.L SCREEN,A1
 ADD #153*160,A1
 MOVE.L #160*42,D0
DEAD2 MOVE.B (A0)+,(A1)+
 DBF D0,DEAD2

 MOVE.L SCREEN,A1
 ADD #160*166,A1
 CLR.L D0
 MOVE CLOWNX,D0
 AND #$FFF8,D0
 ADD.L D0,A1

 LEA MEN,A0
 ADD #160*43,A0
 ADD #128,A0

 MOVE #28,D0
DEAD3 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 MOVE.L (A0)+,(A1)+
 ADD #160-16,A0
 ADD #160-16,A1
 DBF D0,DEAD3

 JSR RMUSIC
 MOVE #2,D0
 JSR START_MUSIC

 TST LIVES
 BNE DEAD4
 MOVE #4,D0
 JSR DOMESSAGE

DEAD4 MOVE VCOUNT,D0
DEAD5 ADD #1,RNDVAL
 CMP VCOUNT,D0
 BEQ DEAD5
 JSR MUSIC
 JSR PLOT_BALLOONS
 TST MUSTAT
 BNE DEAD4

 TST LIVES
 BEQ GAME_OVER
 SUB #1,LIVES
 JMP PLAYINIT
GAME_OVER JMP DOTITLE

XTABLE DC -350,-300,-250,-225,-200,-175,-150,-50
 DC 50,150,175,200,225,250,300,350
 DC 350,350,350,350,350,350,350,350

*-----------LOAD A FILE-------------
* A0 = PTR TO FILE NAME
* A1 = PTR TO LOCATION

LOADFILE MOVE.L A1,LFADR

 CLR -(A7)  ;F_OPEN
 MOVE.L A0,-(A7)
 MOVE #$3D,-(A7)
 TRAP #1
 ADD #8,A7

 TST D0
 BMI EXIT
 MOVE D0,FHANDLE

 MOVE.L #COLORS-2,-(A7)  ;F_READ
 MOVE.L #34,-(A7)
 MOVE FHANDLE,-(A7)
 MOVE #$3F,-(A7)
 TRAP #1
 ADD #12,A7

 MOVE.L #DECODE,-(A7)  ;F_READ
 MOVE.L #32000,-(A7)
 MOVE FHANDLE,-(A7)
 MOVE #$3F,-(A7)
 TRAP #1
 ADD #12,A7
 MOVE.L D0,LFSIZE

 MOVE FHANDLE,-(A7)   ;F_CLOSE
 MOVE #$3E,-(A7)
 TRAP #1
 ADD #4,A7

 MOVE.L LFSIZE,D0
 MOVE.L LFADR,A0
 MOVE.L #DECODE,A1

*****************************************************
* DEGAS COMPRESSED PICTURE DECODER (LOW RESOLUTION) *
* D0 - # OF BYTES TO DECOMPRESS                     *
* A0 - DESTINATION ADDRESS                          *
* A1 - SOURCE ADDRESS                               *
*****************************************************

 CLR D3
 MOVE #200,D6
DEGAS_LINE MOVE #4,D5
 SUB #1,D6
 TST D6
 BEQ DEGAS_DONE

DEGAS_COLOR MOVE #40,D4
DEGAS_LOOP CMP.L #1,D0
 BLT DEGAS_DONE

 SUB.L #1,D0
 CLR.L D1
 MOVE.B (A1)+,D1
 CMP.B #128,D1
 BEQ DEGAS_LOOP

 TST.B D1
 BMI DEGAS_DUPLICATE

DEGAS_COPYLP MOVE.B (A1)+,(A0)
 SUB.L #1,D0
 SUB #1,D4

 TST D3
 BNE DEGAS_COPYLP2
 ADD #1,A0
 MOVE #1,D3
 JMP DEGAS_COPYRCRS
DEGAS_COPYLP2 ADD #7,A0
 CLR D3

DEGAS_COPYRCRS DBF D1,DEGAS_COPYLP
 TST D4
 BNE DEGAS_LOOP
 SUB #158,A0
 SUB #1,D5
 TST D5
 BNE DEGAS_COLOR
 ADD #152,A0
 JMP DEGAS_LINE

* "After three days without programming, life becomes meaningless."

DEGAS_DUPLICATE MULS #-1,D1
 AND #$FF,D1
 MOVE.B (A1)+,D2
 SUB.L #1,D0

DEGAS_DUPLP MOVE.B D2,(A0)

 SUB #1,D4

 TST D3
 BNE DEGAS_DUPLP2
 ADD #1,A0
 MOVE #1,D3
 JMP DEGAS_DUPRCRS
DEGAS_DUPLP2 ADD #7,A0
 CLR D3

DEGAS_DUPRCRS DBF D1,DEGAS_DUPLP

 TST D4
 BNE DEGAS_LOOP
 SUB #158,A0
 SUB #1,D5
 TST D5
 BNE DEGAS_COLOR
 ADD #152,A0
 JMP DEGAS_LINE

DEGAS_DONE RTS

*-------------EXIT-------------

EXIT JSR DEINIT

 MOVE OLD_REZ,-(A7)  ;FORCE LOW REZ
 MOVE.L #-1,-(A7)
 MOVE.L #-1,-(A7)
 MOVE #5,-(A7)
 TRAP #14
 ADD #10,A7

 MOVE.L #OLD_COLORS,-(A7)  ;SET COLOR PALETTE
 MOVE #6,-(A7)
 TRAP #14
 ADD.L #6,A7

 DC $A009

 CLR -(A7)
 TRAP #1

FNAME1 DC.B 'CLOWNS.PC1',0
FNAME2 DC.B 'BACKGRND.PC1',0
FNAME3 DC.B 'MEN.PC1',0
FNAME4 DC.B 'MESSAGES.PC1',0
FNAME5 DC.B 'TITLE.PC1',0
 EVEN

WAIT_KEY MOVE #7,-(A7)
 TRAP #1
 ADD.L #2,A7
 RTS

*---------------BALLOON COLLISSION DETECT--------------*

POP_BALLOONS LEA SWITCH,A2
 LEA XPOS,A3
 MOVE.L #BAL_PER_ROW-1,D5

 CLR.L D6
 CMP #44,CLOWNY
 BLT POP_L2
 CMP #70,CLOWNY
 BLE POP_TEST

POP_L2 ADD #BAL_PER_ROW*2,A2
 ADD #BAL_PER_ROW*2,A3
 MOVE #1,D6

 CMP #104,CLOWNY
 BLT POP_L3
 CMP #130,CLOWNY
 BLE POP_TEST

POP_L3 ADD #BAL_PER_ROW*2,A2
 ADD #BAL_PER_ROW*2,A3
 MOVE #2,D6

 CMP #74,CLOWNY
 BLT POP_DONE
 CMP #100,CLOWNY
 BGT POP_DONE

POP_TEST TST (A2)
 BEQ POP_RCRS

 CMP #16,(A3)
 BLT POP_RCRS
 CMP #135,(A3)
 BGT POP_RCRS

 MOVE CLOWNX,D0
 CMP (A3),D0
 BLT POP_RCRS
 SUB #10,D0
 CMP (A3),D0
 BGT POP_RCRS

 CLR.L D0        ;Clear one popped balloon
 MOVE (A3),D0
 AND #$FFF8,D0
 MOVE.L SCREEN,D1
 ADD.L #44*160,D1
 TST D6
 BEQ POP_CLRIT
 ADD.L #60*160,D1
 CMP #1,D6
 BEQ POP_CLRIT
 SUB.L #30*160,D1
POP_CLRIT ADD.L D1,D0
 MOVE.L D0,A1
 JSR POP_IT
 JSR POP_SOUND

 CLR (A2)
 CLR (A3)

 TST D6
 BNE POP_2NDLVL

 MOVE #25,D0
 JSR SCORED

 SUB #1,POP_COUNT1
 TST POP_COUNT1
 BNE POP_RCRS
 TST POP_COUNT2
 BEQ POP_ENDL1

 LEA FLIP1,A0       ;Refill the first row of balloons
 ADD #7040,A0
 MOVE.L SCREEN,A1
 ADD #7040,A1
 MOVE #1039,D0
POP_FILL1 MOVE.L (A0)+,(A1)+
 DBF D0,POP_FILL1

 MOVE #BAL_PER_ROW,POP_COUNT1
 LEA XPOS,A0
 LEA DELAY,A1
 LEA SWITCH,A2
 MOVE #BAL_PER_ROW-1,D0
 MOVE #18,D1
POP_INT1 CLR (A0)+
 MOVE D1,(A1)+
 MOVE #1,(A2)+
 ADD #22,D1
 DBF D0,POP_INT1
 JMP POP_RCRS

POP_ENDL1 TST ATTRACT_MODE
 BNE DOTITLE
 MOVE #2,D0  ;Bonus of 1000 Points!
 JSR DOMESSAGE
 MOVE #1000,D0
 JSR SCORED
 JSR RMUSIC
 MOVE.L #1,D0
 JSR START_MUSIC
 JSR START_BALLOONS
 JSR UN_PLOT_CLOWN

MAIN4 MOVE VCOUNT,D0
MAIN3 ADD #1,RNDVAL
 CMP VCOUNT,D0
 BEQ MAIN3
 JSR UN_PLOT_CLOWN
 JSR PLOT_MEN
 JSR PLOT_CLOWN
 JSR MOVE_MEN
 JSR MUSIC
 TST MUSTAT
 BNE MAIN4
 MOVE #5,D0
 JSR DOMESSAGE
 JMP POP_DONE

POP_2NDLVL CMP #1,D6
 BEQ POP_3RDLVL

 MOVE #15,D0
 JSR SCORED

 SUB #1,POP_COUNT2
 TST POP_COUNT2
 BNE POP_RCRS
 TST POP_COUNT3
 BEQ POP_ENDL2

 LEA FLIP1,A0       ;Refill the second row of balloons
 ADD #11840,A0
 MOVE.L SCREEN,A1
 ADD #11840,A1
 MOVE #1039,D0
POP_FL3 MOVE.L (A0)+,(A1)+
 DBF D0,POP_FL3

 MOVE #BAL_PER_ROW,POP_COUNT2
 LEA XPOS,A0
 ADD #BAL_PER_ROW*4,A0
 LEA DELAY,A1
 ADD #BAL_PER_ROW*4,A1
 LEA SWITCH,A2
 ADD #BAL_PER_ROW*4,A2
 MOVE #BAL_PER_ROW-1,D0
 MOVE #45,D1
POP_INT2 MOVE #144,(A0)+
 MOVE D1,(A1)+
 MOVE #1,(A2)+
 ADD #24,D1
 DBF D0,POP_INT2
 JMP POP_RCRS

POP_ENDL2 TST ATTRACT_MODE
 BNE POP_DONE
 MOVE #1,D0    ;Bonus of 500 Points
 JSR DOMESSAGE
 MOVE #500,D0
 JSR SCORED
 JSR RMUSIC
 MOVE.L #4,D0
 JSR START_MUSIC
 JMP MAIN4

POP_3RDLVL MOVE #10,D0
 JSR SCORED

 SUB #1,POP_COUNT3
 TST POP_COUNT3
 BNE POP_RCRS

 TST ATTRACT_MODE
 BNE POP_DONE
 CLR D0        ;Bonus of 100 Points
 JSR DOMESSAGE
 MOVE #100,D0
 JSR SCORED
 JSR RMUSIC
 MOVE.L #3,D0
 JSR START_MUSIC
 JMP MAIN4

POP_RCRS ADD #2,A2
 ADD #2,A3
 DBF D5,POP_TEST

POP_DONE RTS

POP_IT CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 ADD #160-16,A1
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 CLR.L (A1)+
 RTS

*--------------Initialize all the balloons-----------------*

START_BALLOONS CLR TIMER
 MOVE #BAL_PER_ROW,D0
 MOVE D0,POP_COUNT1
 MOVE D0,POP_COUNT2
 MOVE D0,POP_COUNT3

 LEA SWITCH,A0
 MOVE #BAL_PER_ROW*3,D0
 SUB #1,D0
INIT0 MOVE #1,(A0)+
 DBF D0,INIT0

 LEA XPOS,A0
 LEA DELAY,A1
 MOVE #BAL_PER_ROW-1,D0
 MOVE #18,D1
INIT1 CLR (A0)+
 MOVE D1,(A1)+
 ADD #22,D1
 DBF D0,INIT1

 MOVE #BAL_PER_ROW-1,D0
 MOVE #30,D1
INIT2 CLR (A0)+
 MOVE D1,(A1)+
 ADD #26,D1
 DBF D0,INIT2

 MOVE #BAL_PER_ROW-1,D0
 MOVE #45,D1
INIT3 MOVE #144,(A0)+
 MOVE D1,(A1)+
 ADD #24,D1
 DBF D0,INIT3
 RTS

*-------------Print a message-------------*

DOMESSAGE AND.L #$FF,D0
 MULU #160*16,D0
 ADD.L #MESSAGES+16,D0
 MOVE.L D0,A0

 MOVE.L SCREEN,A1
 ADD #135*160,A1
 ADD #16,A1

 MOVE.L #16,D0
DOM_100 MOVE #31,D1
DOM_101 MOVE.L (A0)+,(A1)+
 DBF D1,DOM_101
 ADD #160-128,A0
 ADD #160-128,A1
 DBF D0,DOM_100
 RTS

*---------------Scoring--------------*

SCORED AND.L #$FFFF,D0
 MOVE.L D0,D1
 ADD.L POINTS,D0
 MOVE.L D0,POINTS

 ADD.L BONUS,D1
 MOVE.L D1,BONUS
 CMP.L #10000,D1
 BGT BUTUSCREWT

 LEA MESSAGES,A0

 MOVE.L SCREEN,A4
 ADD #160*28,A4

 AND.L #$FFFF,D0
 DIVU #10000,D0
 MOVE.L D0,D1
 AND.L #15,D0
 MULU #1280,D0
 ADD.L #MESSAGES,D0
 MOVE.L D0,A0
 MOVE.L A4,A1
 JSR SCOR_IT

 SWAP D1
 AND.L #$FFFF,D1
 DIVU #1000,D1
 MOVE.L D1,D0
 AND.L #15,D1
 MULU #1280,D1
 ADD.L #MESSAGES,D1
 MOVE.L D1,A0
 MOVE.L A4,A1
 ADD #1,A1
 JSR SCOR_IT

 SWAP D0
 AND.L #$FFFF,D0
 DIVU #100,D0
 MOVE.L D0,D1
 AND.L #15,D0
 MULU #1280,D0
 ADD.L #MESSAGES,D0
 MOVE.L D0,A0
 MOVE.L A4,A1
 ADD #8,A1
 JSR SCOR_IT

 SWAP D1
 AND.L #$FFFF,D1
 DIVU #10,D1
 MOVE.L D1,D0
 AND.L #15,D1
 MULU #1280,D1
 ADD.L #MESSAGES,D1
 MOVE.L D1,A0
 MOVE.L A4,A1
 ADD #9,A1
 JSR SCOR_IT

 SWAP D0
 AND.L #15,D0
 MULU #1280,D0
 ADD.L #MESSAGES,D0
 MOVE.L D0,A0
 MOVE.L A4,A1
 ADD #16,A1
 JSR SCOR_IT

 MOVE.L SCREEN,A4
 ADD #160*28,A4
 ADD #144,A4

 MOVE LIVES,D1
 BEQ SCOREND

 LEA MESSAGES+12800,A0
 MOVE.L A4,A1
 JSR SCOR_IT

 CMP #1,D1
 BEQ SCOREND

 LEA MESSAGES+12800,A0
 MOVE.L A4,A1
 ADD #1,A1
 JSR SCOR_IT

 CMP #2,D1
 BEQ SCOREND

 LEA MESSAGES+12800,A0
 MOVE.L A4,A1
 ADD #8,A1
 JSR SCOR_IT

 CMP #3,D1
 BEQ SCOREND

 LEA MESSAGES+12800,A0
 MOVE.L A4,A1
 ADD #9,A1

SCOR_IT MOVE #7,D2
SCOR_100 MOVE.B (A0),(A1)
 MOVE.B 2(A0),2(A1)
 MOVE.B 4(A0),4(A1)
 MOVE.B 6(A0),6(A1)
 ADD #160,A0
 ADD #160,A1
 DBF D2,SCOR_100

SCOREND RTS

BUTUSCREWT CLR.L BONUS
 JSR RMUSIC
 MOVE #5,D0
 JSR START_MUSIC
 MOVE #3,D0
 JSR DOMESSAGE
 ADD #1,LIVES
 CLR D0
 JSR SCORED

BUTUS1 MOVE VCOUNT,D0
BUTUS2 ADD #1,RNDVAL
 CMP VCOUNT,D0
 BEQ BUTUS2
 JSR UN_PLOT_CLOWN
 JSR PLOT_MEN
 JSR PLOT_CLOWN
 JSR MOVE_MEN
 JSR MUSIC
 TST MUSTAT
 BNE BUTUS1
 MOVE #5,D0
 JMP DOMESSAGE

**********************
* MONKEYS & BALLOONS *
*   MUSIC GENERATOR  *
*        68000       *
*       6/14/88      *
**********************

RMUSIC CLR D0  ;RESET MUSIC GENERATOR
 MOVE #8,D1
 JSR DOSOUND
 CLR D0
 MOVE #9,D1
 JSR DOSOUND
 CLR D0
 MOVE #10,D1
 JSR DOSOUND

 MOVE #$0100,D0
 MOVE D0,MSDLY1
 MOVE D0,MSDLY2
 MOVE D0,MSDLY3
 CLR VOICE1
 CLR VOICE2
 CLR VOICE3
 CLR MUSTAT
 MOVE #TEMPO,MUSDLY
 RTS

*----------Start playing music---------*

START_MUSIC MULU #12,D0
 ADD.L #MUSTBL,D0
 MOVE.L D0,A0
 MOVE.L (A0)+,MSPTR1
 MOVE.L (A0)+,MSPTR2
 MOVE.L (A0)+,MSPTR3

 MOVE #248,D0  ;Turn on all tone voices
 MOVE #7,D1
 JSR DOSOUND
 MOVE #10,D0  ;Set volumes
 MOVE #8,D1
 JSR DOSOUND
 MOVE #10,D0
 MOVE #9,D1
 JSR DOSOUND
 MOVE #10,D0
 MOVE #10,D1
 JSR DOSOUND

 MOVE #1,MUSTAT
 RTS

MUSTBL DC.L MUS1V1,MUS1V2,MUS1V4
 DC.L MUS2V1,MUS2V2,MUS2V4
 DC.L MUS3V1,MUS3V2,MUS3V4
 DC.L MUS4V1,MUS4V2,MUS4V3
 DC.L MUS5V1,MUS5V2,MUS5V4
 DC.L MUS6V1,MUS6V2,MUS6V4

*----------Play some music---------*

MUSIC TST MUSTAT    ;MUSIC BEING PLAYED
 BEQ NOMUSIC

 SUB #1,MUSDLY ;DELAY FINISHED
 TST MUSDLY
 BNE NOMUSIC
 MOVE #TEMPO,MUSDLY

 LEA MSDLY1,A4
 LEA VOICE1,A3
 LEA MSPTR1,A2
 CLR D4

MUS1 CLR.L D0
 MOVE.B (A4),D0
 SUB #1,D0
 TST D0
 BEQ MUS1B
 MOVE.B D0,(A4)
 JMP MUS2

MUS1B CLR (A3)  ;VOICE1
 CLR D0
 MOVE D4,D1
 JSR DOSOUND
 CLR D0
 MOVE D4,D1
 ADD #1,D1
 JSR DOSOUND

 MOVE.B 1(A4),D0
 BEQ MUS1C
 SUB #1,D0
 MOVE.B D0,1(A4)
 JMP MUS2

MUS1C MOVE.L (A2),A0
 CMP #MEOF,(A0)
 BNE MFM1

 JSR RMUSIC
 JMP NOMUSIC

MFM1 MOVE (A0),D0
 MOVE D0,(A3)  ;VOICE1
 AND #$FF,D0
 MOVE D4,D1
 JSR DOSOUND

 MOVE.B (A3),D0
 MOVE D4,D1
 ADD #1,D1
 JSR DOSOUND

 CLR.L D0
 MOVE 2(A0),D0
 MOVE.B D0,1(A4)  ;MSDLY1+1
 LSL #2,D0
 MOVE.B D0,(A4) ;MSDLY1

 ADD.L #4,(A2)

MUS2 ADD #4,A2
 ADD #2,A3
 ADD #2,A4

 ADD #2,D4
 CMP #6,D4
 BNE MUS1
 RTS

DOSOUND MOVEM.L D0-D4/A0-A4,-(A7)
 OR #$80,D1
 MOVE D1,-(A7)  ;Reg #
 MOVE D0,-(A7)         ;Data
 MOVE #28,-(A7)
 TRAP #14
 ADD #6,A7
 MOVEM.L (A7)+,D0-D4/A0-A4

NOMUSIC RTS

MC1 = 955
MDF1 = 901
MD1 = 851
MEF1 = 302
ME1 = 758
MF1 = 715
MGF1 = 675
MG1 = 637
MAF1 = 601
MA1 = 568
MBF1 = 536
MB1 = 506

MC2 = 477
MDF2 = 450
MD2 = 425
MEF2 = 401
ME2 = 379
MF2 = 357
MGF2 = 337
MG2 = 318
MAF2 = 300
MA2 = 284
MBF2 = 268
MB2 = 253

MC3 = 238
MDF3 = 225
MD3 = 212
MEF3 = 200
ME3 = 189
MF3 = 178
MGF3 = 168
MG3 = 159
MAF3 = 150
MA3 = 142
MBF3 = 134
MB3 = 126

MC4 = 119
MEOF = $FF

*** ORIGINAL RAGS BY SCOTT JOPLIN ***
;       ARRANGED BY FRANK COHEN

MUS1V1 DC MC4,1,MC4,2,MC4,1,MC4,2,MC4,2
 DC MC4,2,MA2,2,MD2,4
 DC MC3,1,MC3,2,MC3,1,MC3,2,MC3,2
 DC MC3,2,0,2,0,1,MD3,1,MG3,1,MB3,1
 DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
 DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
 DC ME3,1,ME3,2,MG3,1,MA3,1,MG3,1,MA3,2
 DC MB3,4,0,1,MD3,1,MG3,1,MB3,1
 DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
 DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
 DC MB3,2,MA3,2,MA3,2,MAF3,1,MA3,1
 DC MB3,1,MA3,2,MGF3,1,ME3,2,MD3,2
 DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
 DC MD3,1,MG3,1,MB3,1,MD3,2,MB3,1,MD3,1,MB3,1
 DC ME3,1,ME3,2,MG3,1,MA3,1,MG3,1,MA3,2
 DC MB3,4,0,2,MB3,2
 DC ME3,1,MD3,2,MB2,1,MC3,2,MB2,2
 DC MB2,1,MA2,2,ME2,1,MB2,2,MC2,2
 DC MB3,1,MA3,2,MB3,1,MC4,1,MB3,1,MA3,2
 DC MG3,2
 DC MEOF,MEOF

MUS1V2 DC ME3,1,ME3,2,ME3,1,MEF3,2,MEF3,2
 DC MD3,2,0,2,MD2,4
 DC ME2,1,ME2,2,ME2,1,MEF2,2,MEF2,2
 DC MD2,2,0,2,0,1,0,2,0,1
 DC 0,4,0,4
 DC 0,4,0,4
 DC 0,1,0,2,ME3,1,ME3,1,ME3,1,MEF3,2
 DC MD3,4,0,1,0,1,0,2
 DC 0,2,MD2,2,0,2,MD2,2
 DC 0,2,MD2,2,0,2,MD2,2
 DC MDF2,2,MDF2,2,MDF2,2,MC2,1,MC2,1
 DC MC2,1,MC2,2,MC2,1,MC2,2,MC2,2
 DC 0,2,MD2,2,0,2,MD2,2
 DC 0,2,MD2,2,0,2,MD2,2
 DC 0,1,0,2,ME2,1,ME2,1,ME2,1,ME2,2
 DC MEF2,4,0,2,MB2,2
 DC 0,2,MB1,2,0,2,MAF2,2
 DC 0,2,MC2,2,0,2,MC2,2
 DC MB2,1,MA2,2,MB2,1,MC3,1,MB2,1,MA2,2
 DC MG2,2
 DC MEOF,MEOF

MUS1V3 DC MA2,1,MA2,2,MA2,1,MA2,2,MA2,2
 DC MC3,2,0,2,0,4
 DC MC2,1,MC2,2,MC2,1,MC2,2,MC2,2
 DC MC2,2,0,2,0,4
 DC 0,2,MD2,2,0,2,MD2,2
 DC 0,2,MD2,2,0,2,MD2,2
 DC 0,2,ME2,2,0,2,MEF2,2
 DC 0,2,MD2,2,MD1,2,0,2
 DC 0,4,0,4
 DC 0,4,0,4
 DC 0,2,MA1,2,0,2,MA1,2
 DC 0,4,0,4
 DC 0,4,0,4
 DC 0,4,0,4
 DC 0,2,MC2,2,0,2,MC2,2
 DC 0,2,MA1,2,MA1,4
 DC 0,2,MB1,2,0,2,MAF1,2
 DC 0,2,MC2,2,0,2,MC2,2
 DC 0,2,MB1,2,0,2,0,2
 DC MG2,2
 DC MEOF,MEOF

MUS1V4 DC MA2,1,MA2,2,MA2,1,MG2,2,MG2,2
 DC MGF2,2,MA1,2,MD1,4
 DC MA1,1,MA1,2,MA1,1,MG1,2,MG1,2
 DC MGF1,2,MA1,2,MD1,4
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MC1,2,MG1,2,MC1,2,MG1,2
 DC MG1,2,MG1,2,MD1,2,0,2
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC ME1,2,MG1,2,MA1,2,MG1,2
 DC MD1,1,MGF1,2,MA1,1,MG1,2,MGF1,2
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MC1,2,MG1,2,MC1,2,MG1,2
 DC MB1,2,MGF1,2,MGF1,4
 DC MAF1,2,ME1,2,ME1,2,ME1,2
 DC MA1,2,MA1,2,MA1,2,MA1,2
 DC MD1,2,MG1,2,MD1,2,ME1,1,MGF1,1
 DC MG1,2
 DC MEOF,MEOF

*** INTERMISSION MUSIC ***

MUS2V1 DC MBF3,1,MB3,2,MBF3,1,MB3,2,MBF3,1,MB3,1
 DC MGF3,1,MG3,2,ME3,1,ME3,4
 DC MGF3,1,MG3,2,MGF3,1,MG3,2,MGF3,1,MG3,1
 DC MDF3,1,MD3,2,MB2,1,MB2,4
 DC MA2,1,MA2,2,MA2,1,ME3,2,ME3,2
 DC MD3,1,MG3,2,ME3,1,MD3,1,MB2,1,MG2,2
 DC MA2,1,MB2,1,MC3,1,MB2,2,MA2,2,MB2,1
 DC MG2,2,0,2,MG3,4
 DC MEOF,MEOF

MUS2V2 DC MGF3,1,MG3,2,MGF3,1,MG3,2,MGF3,1,MG3,1
 DC MDF3,1,ME3,2,MC3,1,MC3,4
 DC MDF3,1,ME3,2,MDF3,1,ME3,2,MDF3,1,ME3,1
 DC MBF2,1,MB2,2,MG2,1,MG2,4
 DC MG2,1,MG2,2,MG2,1,MA2,2,MA2,2
 DC MB2,1,0,1,0,2,0,4
 DC MC2,1,MD2,1,ME2,1,MD2,2,MC2,2,MD2,1
 DC MB1,2,0,2,MB2,4
 DC MEOF,MEOF

MUS2V3 DC 0,2,MD2,2,0,2,MD2,2
 DC 0,2,ME2,2,0,2,ME2,2
 DC 0,2,MC2,2,0,2,MC2,2
 DC 0,2,MD2,2,0,2,MD2,2
 DC ME2,1,ME2,2,ME2,1,MAF2,2,MAF2,2
 DC MG2,1,0,1,0,2,0,4
 DC MA1,4,0,4
 DC MG1,2,0,2,MG2,4
 DC MEOF,MEOF

MUS2V4 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MC1,2,MG1,2,MC1,2,MG1,2
 DC MC1,2,MG1,2,MC1,2,MG1,2
 DC MG1,2,MB1,2,MD1,2,MB1,2
 DC MC1,4,MDF1,4
 DC MD1,2,MG1,2,MG1,4
 DC MA1,4,MD1,4
 DC MG1,2,0,2,MG1,4
 DC MEOF,MEOF

***  DEATH MUSIC BY SCOTT JOPLIN
***  ARRANGED BY FRANK COHEN

MUS3V1 DC MC4,1,MA3,1,MGF3,1,MEF3,1,MC3,1,MA2,2,MAF2,1
 DC MG2,2,MA2,1,MC3,2,MD3,1,ME3,2
 DC MA2,4,ME3,4
 DC MC3,4,0,4
 DC MEOF,MEOF

MUS3V2 DC MGF1,1,MA1,1,MC1,1,MEF1,1,MF1,1,MA1,2,MAF1,1
 DC 0,2,ME2,2,0,2,ME2,2
 DC 0,2,MC2,2,0,2,MB1,2
 DC MG1,4,0,4
 DC MEOF,MEOF

MUS3V3 DC 0,4,0,4
 DC 0,2,MC2,2,0,2,MC2,2
 DC 0,2,MA1,2,0,2,MG1,2
 DC MG1,4,0,4

MUS3V4 DC 0,4,0,4
 DC MG1,2,MG1,2,MA1,2,MA1,2
 DC MD1,2,MGF1,2,MG1,2,MF1,2
 DC ME1,4,0,4

*** BOTTOM LINE FINISHED MUSIC
*** ARRANGED BY FRANK COHEN 5/9/82

MUS4V1 DC MB1,1,MD2,1,MF2,1,MAF2,1,MB2,1,MB2,2,MB2,2
 DC MD3,1,MF3,1,MAF3,1,MB3,2,0,2
 DC MC4,1,MAF3,1,MEF3,1,MC3,2,MAF2,1,MC2,1,MEF2,1
 DC MBF2,1,MBF2,2,MAF2,3
 DC MEOF,MEOF

MUS4V2 DC MD1,1,MF1,1,MAF1,1,MB1,1,MD2,1,MD2,2,MD2,1
 DC MD2,1,MF2,1,MAF2,1,MB2,1,MD3,2,0,2
 DC MEF3,2,0,2,0,4
 DC MG2,1,MG2,2,MEF2,3

MUS4V3 DC 0,4,0,4
 DC 0,4,0,4
 DC 0,4,0,4
 DC 0,4,0,4

MUS4V4 DC 0,4,0,4
 DC 0,4,0,4
 DC MAF2,2,0,2,0,4
 DC MEF1,2,MEF1,2,MAF1,2

*** MIDDLE LINE FINISHED MUSIC

MUS5V1 DC MBF2,1,MC3,1,MBF2,1,MG2,1,MBF2,1,MC3,1,MBF2,1,MG2,1
 DC MBF2,1,MD3,2,MBF2,1,MD3,4
 DC MG2,1,MD3,3,MA2,1,MC3,2
 DC MBF2,2,MF3,1,MG3,1,MA3,1,MBF3,2
 DC MEOF,MEOF

MUS5V2 DC MEF1,2,MF1,2,MG1,2,MA1,2
 DC MBF1,2,MD2,2,MF1,2,MB1,2
 DC MC1,2,MBF1,2,MF1,2,MEF2,2
 DC MD2,2,MEF2,2,MD2,2
 DC 0,4,0,4

MUS5V3 DC 0,4,0,4
 DC 0,2,MF1,2,0,2,MF1,2
 DC 0,4,0,4
 DC 0,2,MC2,2,0,2
 DC 0,4,0,4

MUS5V4 DC MEF2,1,MF2,1,MG2,1,MA2,1
 DC 0,2,MBF1,2,0,2,MF1,2
 DC 0,2,MG1,2,0,2,MA1,2
 DC MBF1,2,MF1,2,MBF1,2
 DC 0,4,0,4

*** BONUS MAN MUSIC ***

MUS6V1 DC MA3,1,MG3,2,MG3,2,MA3,1,MG3,2
 DC MC4,2,0,2,MC1,2
 DC MEOF,MEOF

MUS6V2 DC MF3,1,MF3,2,MF3,2,0,1,0,2
 DC ME3,2,0,2,ME2,2

MUS6V3 DC MB2,1,MB2,2,MB2,2,0,1,0,2
 DC MC2,2,0,2,MG1,2

MUS6V4 DC MG1,2,MF1,2,MB1,2,MG1,2
 DC MC1,2,0,2,MC3,2

*------------SOUND EFFECTS--------------*

SOUNDS TST ATTRACT_MODE
 BNE SOUND_END
 TST SOUND_COUNT
 BEQ SOUND_END

 SUB #1,SOUND_COUNT
 TST SOUND_COUNT
 BNE SOUND_END

 MOVE #255,D0
 MOVE #7,D1
 JSR DOSOUND

SOUND_END RTS

HIT_WALL TST SOUND_COUNT
 BNE SOUND_END
 TST ATTRACT_MODE
 BNE SOUND_END
 TST MUSTAT
 BNE SOUND_END
 MOVE #5,SOUND_COUNT
 MOVE #160,D0
 MOVE #0,D1
 JSR DOSOUND
 MOVE #11,D0
 MOVE #1,D1
 JSR DOSOUND
 MOVE #210,D0
 MOVE #6,D1
 JSR DOSOUND
 MOVE #$F6,D0  ;Turn on all tone voices
 MOVE #7,D1
 JSR DOSOUND
 MOVE #10,D0  ;Set volumes
 MOVE #8,D1
 JMP DOSOUND

POP_SOUND TST SOUND_COUNT
 BNE SOUND_END
 TST ATTRACT_MODE
 BNE SOUND_END
 TST MUSTAT
 BNE SOUND_END
 MOVEM.L D0-D7/A0-A4,-(A7)
 MOVE #2,SOUND_COUNT
 MOVE #100,D0
 MOVE #0,D1
 JSR DOSOUND
 MOVE #9,D0
 MOVE #1,D1
 JSR DOSOUND
 MOVE #180,D0
 MOVE #6,D1
 JSR DOSOUND
 MOVE #$F6,D0  ;Turn on all tone voices
 MOVE #7,D1
 JSR DOSOUND
 MOVE #10,D0  ;Set volumes
 MOVE #8,D1
 JSR DOSOUND
 MOVEM.L (A7)+,D0-D7/A0-A4
 RTS

*-----------------Variables and Storage----------------*

 BSS
 EVEN

HOLDA0 DS.L 1
VCOUNT DS 1
COUNT DS 1
COUNT2 DS 1

POP_COUNT1 DS 1
POP_COUNT2 DS 1
POP_COUNT3 DS 1

POINTS DS.L 1
BONUS DS.L 1

XPOS DS 48
DELAY DS 48
SWITCH DS 48

OLDCLOWNX DS 1
OLDCLOWNY DS 1
CLOWNX DS 1
CLOWNY DS 1
CLOWNIMAGE DS 1
OLDIMAGE DS 1
IMAGETIME DS 1
LIVES DS 1

MENXPOS DS 1
OLDMEN DS 1

XYZZY DS 8
COLORS DS 16
OLD_COLORS DS 16
OLD_REZ DS 1

COUNTER DS 1
TIMER DS 1
COUNT1 DS 1
SCREEN DS.L 1
SCREEN2 DS.L 1
FHANDLE DS 1
HOLDEN DS.L 1
PCOUNT DS 1
PCOUNT2 DS 1
 EVEN

KAY DS 1
YINC DS 1
XINC DS 1
VPOS DS 1
HPOS DS 1
SYINC DS 1
KS DS 1
HITS DS 1
RNDVAL DS 1
TOP_FLAG DS 1

MUSDLY DS 1
MUSTAT DS 1
VOICE1 DS 1
VOICE2 DS 1
VOICE3 DS 1
MSDLY1 DS 1
MSDLY2 DS 1
MSDLY3 DS 1
MSPTR1 DS.L 1
MSPTR2 DS.L 1
MSPTR3 DS.L 1
SOUND_COUNT DS 1

LFSIZE DS.L 1
LFADR DS.L 1

ATTRACT_MODE DS 1
MEN_TIMER DS 1

BALLOONS DS.B 32000
FLIP1 DS.B 32000
MEN DS.B 32000
MESSAGES DS.B 32000
TITLE DS.B 32000
DECODE DS.B 32000

 END
