Monkey Fighter Monkey Fighter
Games Help Help Search Search Shop Shop
Locked and Loaded

Name: Route 666
Author: Robert Walsh
Platform: Amiga
Language: M68000 Assembly
Lincense: Free

Images

Level 1 Objects
Level 2 Objects
Object Mask: Lev 1
Object Mask: Lev 2
Shop Screen
Stats Screen
Title Screen
Title Back 2

Source

Route.s
Master.i
Boss.i
Box.i
Line.i
Title.i
Types.i
Ssgfx.i
Map.i
Ship.i
Lev1Back.i
Sounds.i

Executable

route


Route 666 Boss

Overview:

Route 666 is my attempt at a side scrolling shoot-em-up. It has one playable level completed with a boss monster at the end. I had planned to release this game to the public when finished. However, I stopped working on it in 1996. So now, in 2003, I am releasing the unfinished version to the public.


The Code:

The code listed below is taken for Route.s. It is the complete listing with the exception of the data statements. There are a few comments that can give you an idea to how it works. Since this code is so much like Biker Babe From Barbados, I suggest you read that tutorial for more input. Albeit, I think it would be nice to comment more of the code. So, I put that on my todo list.

        jsr MEMORY
        lea Black,a1
        jsr NEWPAL

MOVECOP move.l  _BckGrnd1,d0
        jsr PUTBMAP
        lea COPLIST,a1
        move.l  a1,$DFF080
        move.w  #$FFFF,$DFF088
        move.w  #$83E0,$DFF096

        lea VBINT,a1
        move.l  a1,$6c
        move.w  #$C020,$DFF09A

        lea ShotSd,a1   SOUND FX
        move.l  a1,AudShot
        lea WapSd,a1
        move.l  a1,AudWap
        lea DripSd,a1
        move.l  a1,AudDrip
        lea ExplSnd,a1
        move.l  a1,AudExpl
        lea BuffSnd,a1
        move.l  a1,AudBuff
        lea BuzzSnd,a1
        move.l  a1,AudBuzz
        lea BoomSnd,a1
        move.l  a1,AudBoom
        lea BumfSnd,a1
        move.l  a1,AudBumf
        lea WhiaSnd,a1
        move.l  a1,AudWhia
        lea EngzSnd,a1
        move.l  a1,AudEngz
        lea MissSnd,a1
        move.l  a1,AudMiss
        lea TinkSnd,a1
        move.l  a1,AudTink
        move.w  #64,$DFF0A8
        move.w  #64,$DFF0B8
        move.w  #64,$DFF0C8
        move.w  #64,$DFF0D8

        move.l  _BckGrnd1,d0        BITMAPS
        move.l  _BckGrnd2,d1
        move.l  d0,_BitMapY
        move.l  d1,_BitMapN

        jsr MISSTBL
        jsr TYPETBL
        jsr SPRITBL

        lea ShipTbl,a0
        lea Ship1,a1
        move.l  a1,(a0)+
        move.l  a1,(a0)+

        lea MaskTbl,a0
        lea Mask1,a1
        move.l  a1,(a0)+
        move.l  a1,(a0)+

        lea BackTbl,a0
        lea Back1,a1
        move.l  a1,(a0)+
        lea Back2,a1
        move.l  a1,(a0)+

        lea ColrTbl,a0
        lea Colors1,a1
        move.l  a1,(a0)+
        lea Colors2,a1
        move.l  a1,(a0)+

        lea MappTbl,a0
        lea Map1,a1
        move.l  a1,(a0)+
        lea Map2,a1
        move.l  a1,(a0)+

        lea EnmsTbl,a0
        lea Enms1,a1
        move.l  a1,(a0)+
        lea Enms2,a1
        move.l  a1,(a0)+

TITLE   move.l  _BitMapY,a1
        add.l #724,a1
        lea Title,a0
        move.w  #11232,d5
        move.w  #199,d0
        move.w  #40,d6
        move.w  #48,d7
        jsr SEEIFF

        lea TitCol,a0
        jsr FADEIN

tit1    move.w  $BFE000,d0
        btst  #7,d0
        bne tit1

        lea TitCol,a0
        jsr FADEOUT

INITLEV move.w  #10000,d0        Clear BackMap
        move.l  _BackMap,a0
        cbm move.l  #0,(a0)+
        dbf d0,cbm

        move.w  #12000,d0        Clear ShipMap
        move.l  _ShipMap,a0
        csm move.l  #0,(a0)+
        dbf d0,csm

        move.w  #8,d1            Move Colors
        lea Colors0,a1
        lea ColrTbl,a0
        move.w  Level,d0
        lsl.w #2,d0
        move.l  (a0,d0),a0
        mcl move.l  (a0)+,(a1)+
        dbf d1,mcl

        lea ShipTbl,a0
        move.w  Level,d0
        lsl.w #2,d0
        move.l  (a0,d0),a0
        move.l  _ShipMap,a1
        move.w  #8000,d5
        move.w  #199,d0
        move.w  #40,d6
        move.w  #40,d7
        jsr SEEIFF

        lea MaskTbl,a0
        move.w  Level,d0
        lsl.w #2,d0
        move.l  (a0,d0),a0
        move.l  _ShipMap,a1
        add.l #40000,a1
        move.w  #0,d3
        move.w  #199,d0
        move.w  #40,d6
YLns    move.l  a1,a5
        jsr DoLine
        add.l #40,a1
        dbf d0,YLns

        lea BackTbl,a0
        move.w  Level,d0
        lsl.w #2,d0
        move.l  (a0,d0),a0
        move.l  _BackMap,a1
        move.w  #8000,d5
        move.w  #198,d0
        move.w  #40,d6
        move.w  #40,d7
        jsr SEEIFF

PREPLV1 move.w  #0,Boss
        lea COPLIST,a2
        move.w  #$0000,6(a2)
        move.w  #0,$DFF102

        move.l  _BitMapY,d0
        sub.w #2,d0
        jsr PUTBMAP

        lea MappTbl,a0
        move.w  Level,d0
        lsl.w #2,d0
        move.l  (a0,d0),a0
        move.w  Section,d0
        mulu  #1680,d0
        lea (a0,d0),a0
        move.l  a0,CurMap

        lea EnmsTbl,a0
        move.w  Level,d0
        lsl.w #2,d0
        move.l  (a0,d0),a0
        move.w  Section,d0
        pl1 cmp.w #9999,(a0)+
        bne pl1
        dbf d0,pl1
        move.l  a0,EListPt

        lea Enemy,a0
        move.w  #130,d0
        clrenm  move.l  #0,(a0)+
        dbf d0,clrenm

        jsr CLRBACK
        jsr MAKEMAP
        jsr DRWSTRT

        move.l  EListPt,a1
        cmp.w #9000,(a1)
        bne setpar
        add.l #20,EListPt
        move.w  #1,Boss

        setpar  move.w  #0,Message
        move.w  #0,PlayerX
        move.w  #100,PlayerY
        move.w  #0,PlayerI
        move.w  #15,ObjOff
        move.w  #0,BMapOff
        move.w  #-2,Distance
        move.w  #120,Warp
        move.w  #36,Slow
        move.w  #0,Accel
        move.w  #1,Stop
        lea Colors,a0
        jsr FADEIN

*** ROUTE 666 *************************************************************

ABOBGN  jsr KYBOARD            Parse Keyboard
        cmp.b #$40,Key
        beq PAUSE              <- Pause (display stats)
        cmp.b #$45,Key
        beq QUIT               <- Quit (terminate program)
        cmp.w #0,PlayerH
        bmi DEATH              <- Player Died
        cmp.w #208,Distance
        bge ENDLVL             <- End of Level
        sub.w #2,Slow
        bpl SRTSEQ             <- Start of Level
        tst.w NLev
        bne NEWLVL

*READ JOYBUTTON************************************************************

SHOOT   btst.b  #7,$BFE001
        beq ButDwn
        move.b  #0,Reload
        jmp GETJOY
ButDwn  tst.b Reload
        beq dosht
        add.b #1,Reload
        cmp.b #60,Reload
        blt GETJOY
        move.w  BulPow,d0
        move.w  MaxPow,d1
        cmp.w d0,d1
        beq GETJOY
        cmp.w #0,ResPow
        beq GETJOY
        sub.w #1,ResPow
        move.w  #$4,$DFF096          * Tink Sound
        move.l  AudTink,Aud2Snd      |
        move.l  #$05D00125,$DFF0C4   |
        move.w  #15,Aud2Del          *
        jsr INCPOW
dosht   move.b  #1,Reload
        lea Bullets,a0
        moveq #3,d5                  # of Bullets [MAX=1-ABS#]
        nxtbul  move.w  (a0),d0
        beq shtok
        add.l #8,a0
        dbf d5,nxtbul
        jmp GETJOY
shtok   move.l  PlayerX,(a0)
        move.w  BulSiz,4(a0)
        move.w  #$1,$DFF096          * Shot Sound
        move.l  AudShot,Aud0Snd      |
        move.l  #$015E0190,$DFF0A4   |
        move.w  #5,Aud0Del           *

*READ JOYSTICK*************************************************************

GETJOY  move.w  $DFF00C,d2
        moveq #2,d0
        moveq #2,d1
        btst.l  #1,d2
        bne gj3
        btst.l  #9,d2
        bne gj2
        eor.w d0,d0
gj2     neg.w d0
gj3     move.w  d2,d3
        and.w #$0001,d3
        move.w  d2,d4
        and.w #$0002,d4
        lsr.w #1,d4
        eor.w d4,d3
        btst  #0,d3
        bne MOVEME
        move.w  d2,d4
        lsr.w #1,d4
        eor.w d4,d2
        btst  #8,d2
        bne gj5
        eor d1,d1
gj5     neg.w d1

*UPDATE PLAYERS MOVEMENTS**************************************************

MOVEME  add.w PlayerX,d0
        add.w PlayerY,d1
        cmp.w #16,d0
        ble mm2
        cmp.w #321,d0
        bge mm2
        move.w  d0,PlayerX
mm2     cmp.w #1,d1
        ble mm4
        cmp.w #219,d1
        bge mm4
        move.w  d1,PlayerY
mm4     sub.w #1,PlayerA            Animation part
        bpl DOENEMY
        move.w  #11,PlayerA

*UPDATE ENEMY LIST*********************************************************

DOENEMY move.l  EListPt,a0
        move.w  Distance,d0
        lsl.w #3,d0
        add.w ObjOff,d0            d0 = Distance
de1     cmp.w 6(a0),d0
        ble DOLIST
        lea Enemy,a1
        moveq #11,d7
de2     tst.w (a1)
        bne de4
        move.l  (a0)+,(a1)+
        move.l  (a0)+,(a1)+
        move.l  (a0)+,(a1)+
        move.l  (a0)+,(a1)+
        move.l  (a0)+,(a1)+
        bra de1
de4     add.l #20,a1
        dbf d7,de2

*PARSE ENEMY LIST**********************************************************

DOLIST  move.l  a0,EListPt
        moveq #23,d6
        lea Enemy,a1
        lea JmpTable,a6
        move.w  GenUse,d7
de5     tst.w (a1)
        beq de6
        move.b  9(a1),d0
        and.w #$00FF,d0
        lsl.w #2,d0
        move.l  (a6,d0),a0
        jsr (a0)
de6     add.l #20,a1
        dbf d6,de5

*BOSS LEVEL****************************************************************

        cmp.w #1,Boss
        bne DRAWENY
        jsr DOBOSS

*DRAW ENEMYS***************************************************************

DRAWENY moveq #23,d6
        lea Enemy,a5
        move.l  _BitMapN,a3
        add.l #59000,a3
BW00    btst.b  #6,$DFF002          IS THIS REALLY NECCESARY?
        bne BW00
        move.l  #$FFFF0000,$DFF044  BLTAFWM
        move.l  #$002C0024,$DFF060  BLTxMOD
        move.l  #$0024002C,$DFF064  BLTxMOD
en0     move.l  #0,(a3)
        move.l  -2(a5),d0           X Position
        beq en4
        move.w  2(a5),d1            Y Position
        move.l  _BitMapN,a0
        move.w  4(a5),d2
        add.w ObjOff,d0
        ror.l #3,d0
        mulu.w  #48,d1
        add.w d0,d1
        add.w Distance,d1
        lea (a0,d1),a0
        ror.l #1,d0
        swap  d0
        move.l  a0,d4
        and.b #$FE,d4
        move.l  d4,a0
        move.l  d4,(a3)

        lea 4(a3),a6
        move.l  _ShipMap,a1
        lea (a1,d2),a1
        move.l  a1,a2
        add.l #40000,a2
        move.w  #$0FCA,d1
        or.w  d0,d1
        moveq #4,d4
BW0     btst.b  #6,$DFF002
        bne BW0
        move.w  d0,$DFF042             BLTCON1
        move.w  d1,$DFF040             BLTCON0
en1     move.l  (a0),(a6)+
        move.l  48(a0),(a6)+
        move.l  96(a0),(a6)+
        move.l  144(a0),(a6)+
        move.l  192(a0),(a6)+
        move.l  240(a0),(a6)+
        move.l  288(a0),(a6)+
        move.l  336(a0),(a6)+
        move.l  384(a0),(a6)+
        move.l  432(a0),(a6)+
        move.l  480(a0),(a6)+
        move.l  528(a0),(a6)+
        move.l  576(a0),(a6)+
        move.l  624(a0),(a6)+
        move.l  672(a0),(a6)+
        move.l  720(a0),(a6)+
BW1     btst.b  #6,$DFF002
        bne BW1
        move.l  a2,$DFF050            BLTAPT
        move.l  a1,$DFF04C            BLTBPT
        move.l  a0,$DFF048            BLTCPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE
        add.l #11232,a0
        add.l #8000,a1
dbf     d4,en1
en4     add.l #20,a5
        add.l #324,a3
dbf     d6,en0

**DRAW BULLETS*************************************************************

DRAWBUL sub.w #1,BulDel
        bpl db
        move.w  #1,BulDel
        neg.w BulYD
db      moveq #4,d6
        lea Bullets,a5
        move.l  _BitMapN,a3
        add.l #57000,a3
db0     move.l  #0,(a3)
        move.l  -2(a5),d0            X Position
        beq db4
        move.w  2(a5),d1             Y Position
        move.l  _BitMapN,a0
        move.w  4(a5),d2
        add.w ObjOff,d0
        ror.l #3,d0
        mulu.w  #48,d1
        add.w d0,d1
        add.w Distance,d1
        lea (a0,d1),a0
        ror.l #1,d0
        swap  d0
        move.l  a0,d4
        and.b #$FE,d4
        move.l  d4,a0
        move.l  a0,(a3)

        lea 4(a3),a6
        move.l  _ShipMap,a1
        lea (a1,d2),a1
        move.l  a1,a2
        add.l #40000,a2
        move.w  #$0FCA,d1
        or.w  d0,d1
        moveq #4,d4
db1     move.l  (a0),(a6)+
        move.l  48(a0),(a6)+
        move.l  96(a0),(a6)+
        move.l  144(a0),(a6)+
        move.l  192(a0),(a6)+
        move.l  240(a0),(a6)+
        move.l  288(a0),(a6)+
        move.l  336(a0),(a6)+
        move.l  384(a0),(a6)+
        move.l  432(a0),(a6)+
        move.l  480(a0),(a6)+
        move.l  528(a0),(a6)+
        move.l  576(a0),(a6)+
        move.l  624(a0),(a6)+
        move.l  672(a0),(a6)+
        move.l  720(a0),(a6)+
        tst.w d4
        beq db2
BW2     btst.b  #6,$DFF002
        bne BW2
        move.w  d0,$DFF042            BLTCON1
        move.w  d1,$DFF040            BLTCON0
        move.l  a2,$DFF050            BLTAPT
        move.l  a1,$DFF04C            BLTBPT
        move.l  a0,$DFF048            BLTCPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE
        add.l #11232,a0
        add.l #8000,a1
        dbf d4,db1
db2     cmp.w #20,d2
        blt db6
        cmp.w #6,BulPow
        bge s1
        add.w #2,4(a5)                <-----*  Bullet Hit Something
        cmp.w #26,4(a5)
        blt s1
s4      move.w  #0,(a5)
s1      move.w  #$0FCA,d1
        or.w  d0,d1
BW3     btst.b  #6,$DFF002
        bne BW3
        move.w  d1,$DFF040            BLTCON0 Explosion
        move.l  a2,$DFF050            BLTAPT
        move.l  a1,$DFF04C            BLTBPT
        move.l  a0,$DFF048            BLTCPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE
        jmp db4
db6     cmp.w #5,BulPow
        blt db7
        move.w  BulYD,d1
        add.w d1,2(a5)
db7     move.w  BulSpd,d1             <-----*  Bullet Didn't Hit Something
        add.w d1,(a5)
        move.w  (a5),d3
        cmp.w #340,d3
        bge   s4
        move.w  #$0AA0,d1
        or.w  d0,d1
BW4     btst.b  #6,$DFF002
        bne BW4
        move.w  d1,$DFF040            BLTCON0 Collision Detect
        move.l  a2,$DFF050            BLTAPT
        move.l  a1,$DFF04C            BLTBPT
        move.l  a0,$DFF048            BLTCPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE

ENMCOL  move.w  2(a5),d1
        move.w  (a5),d0
        lea Enemy,a6
        moveq #11,d7
ec1     move.w  (a6),d2
        move.w  2(a6),d3
        sub.w d0,d2
        bpl ec2
        neg.w d2
ec2     sub.w d1,d3
        bpl ec3
        neg.w d3
ec3     add.w d2,d3
BW40    btst.b  #6,$DFF002            Check Collision at last possible moment!
        bne BW40
        btst.b  #5,$DFF002
        bne db4
        cmp.w #6,BulPow
        bge s1s
        move.w  #20,4(a5)
s1s     cmp.w #27,d3
        bge ec4

        move.w  BulPow,d3
        add.b d3,8(a6)
        move.w  #$4,$DFF096         * Wap Sound
        move.l  AudWap,Aud2Snd      |
        move.l  #$020C0258,$DFF0C4  |
        move.w  #9,Aud2Del          *
        bra db4
ec4     add.l #20,a6
        dbf d7,ec1
        move.w  #$4,$DFF096         * Buff Sound
        move.l  AudBuff,Aud2Snd     |
        move.l  #$067F0210,$DFF0C4  |
        move.w  #16,Aud2Del         *
db4     add.l #8,a5
        add.l #324,a3
        dbf d6,db0

*DRAW PLAYER**************************************************************

DRAWME  move.l  _BitMapN,a0
        move.l  a0,a5
        add.l #56500,a5
        move.l  PlayerXl,d0
        move.w  PlayerY,d1
        add.w ObjOff,d0
        ror.l #3,d0
        mulu.w  #48,d1
        add.w d0,d1
        add.w Distance,d1
        lea (a0,d1),a0
        ror.l #1,d0
        swap  d0
        move.l  a0,d4
        and.b #$FE,d4
        move.l  d4,a0
        move.l  d4,(a5)+

        move.l  _ShipMap,a1
        move.w  PlayerA,d4
        lea (a1,d4),a1
        cmp.w #0,PlayerI
        beq dmn1
        add.l #28,a1
dmn1    move.l  a1,a2
        add.l #40000,a2
        move.w  #$0FCA,d1
        or.w  d0,d1
        moveq #3,d4
dm1     btst.b  #6,$DFF002
        bne dm1
        move.l  (a0),(a5)+
        move.l  48(a0),(a5)+
        move.l  96(a0),(a5)+
        move.l  144(a0),(a5)+
        move.l  192(a0),(a5)+
        move.l  240(a0),(a5)+
        move.l  288(a0),(a5)+
        move.l  336(a0),(a5)+
        move.l  384(a0),(a5)+
        move.l  432(a0),(a5)+
        move.l  480(a0),(a5)+
        move.l  528(a0),(a5)+
        move.l  576(a0),(a5)+
        move.l  624(a0),(a5)+
        move.l  672(a0),(a5)+
        move.l  720(a0),(a5)+
Bdm1    btst.b  #6,$DFF002
        bne Bdm1
        move.w  d0,$DFF042            BLTCON1
        move.w  d1,$DFF040            BLTCON0
        move.l  a2,$DFF050            BLTAPT
        move.l  a1,$DFF04C            BLTBPT
        move.l  a0,$DFF048            BLTCPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE
        add.l #11232,a0
        add.l #8000,a1
        dbf d4,dm1
        move.w  #$0EA0,d1             Check for collision
        or.w  d0,d1
dm2     btst.b  #6,$DFF002
        bne dm2
        move.w  d1,$DFF040            BLTCON0
        move.l  a2,$DFF050            BLTAPT
        move.l  a1,$DFF04C            BLTBPT
        move.l  a0,$DFF048            BLTCPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0302,$DFF058        BLTSIZE
        tst.w PlayerI                 Check for invincable
        beq BW7
        sub.w #1,PlayerI
        jmp MVBACK
BW7     btst.b  #6,$DFF002
        bne BW7
        btst.b  #5,$DFF002
        bne MVBACK
        move.w  #$1,$DFF096          * Buzz Sound
        move.l  AudBuzz,Aud0Snd      |
        move.l  #$00020999,$DFF0A4   |
        move.w  #2,Aud0Del           *
dp4     sub.w #3,PlayerH             Player is Dying!!!
        bpl MVBACK
        cmp.w #0,ResFix
        beq dp
        sub.w #1,ResFix
        move.w  #25,PlayerH
        move.w  #$8,$DFF096          * Tink Sound
        move.l  AudTink,Aud3Snd      |
        move.l  #$05D00125,$DFF0D4   |
        move.w  #15,Aud3Del          *
        jmp MVBACK
dp      move.w  #6,d6                Player is DEAD!
        lea DMatX,a0
        lea DMatY,a2
dp0     move.w  PlayerX,d0
        move.w  PlayerY,d1
        add.b (a0,d6),d0
        add.b (a2,d6),d1
        lea Enemy,a1
        moveq #23,d7
dp1     tst.w (a1)
        bne dp2
        move.w  d0,(a1)+
        move.w  d1,(a1)+
        move.l  #$05100000,(a1)+
        move.l  #$00120000,(a1)+
        move.l  #0,(a1)+
        move.l  #0,(a1)+
        jmp dp3
dp2     add.l #20,a1
        dbf d7,dp1
dp3     dbf d6,dp0
        move.w  #$1,$DFF096           * Expl Sound
        move.l  AudExpl,Aud0Snd       |
        move.l  #$23040160,$DFF0A4    |
        move.w  #90,Aud0Del           *
        move.l  #0,PlayerX
        move.w  #300,PlayerI
        sub.w #1,PlayerL

*SCROLL BACKGROUND********************************************************

MVBACK
*       move.w  #$222,$DFF180
        cmp.b #$FF,$DFF006           Wait for VBlank
        bne MVBACK
*       move.w  #0,$DFF180

        move.w  PlayerH,d1
        move.w  #260,d0
        sub.w d1,d0
        bpl Hok
        move.w  #260,d0
        move.w  #0,PlayerH
Hok     lea Line,a1
        add.w #1,LineA
        cmp.w #32,LineA
        bne hok1
        move.w  #0,LineA
        hok1    move.w  LineA,d1
        lsr.w #2,d1
        mulu.w  #808,d1
        move.b  d0,(a1,d1)
        lea SPRPTR,a0
        move.l  a1,d0
        add.w d1,d0
        move.w  d0,30(a0)
        swap  d0
        move.w  d0,26(a0)
        cmp.w #255,d0

        move.l  _BitMapY,d1            Switch bit map pointers
        move.l  _BitMapN,d0
        move.l  d1,_BitMapN
        move.l  d0,_BitMapY
        lea COPLIST,a2
        cmp.w #0,Stop                  Stop movement
        bne nomove
        bchg.b  #0,GenDel              Update background - Odd cycle
        beq pb1
        add.w #1,ObjOff
nomove  move.l  _BitMapY,d0
        add.w Distance,d0
        jsr PUTBMAP
        move.l  _BckGrnd1,a3
        bra ADDMAP
pb1     move.w  BMapOff,d2             Update background - even cycle
        dbf d2,pb2
        moveq #15,d2
        move.w  #0,ObjOff
        add.w #2,Distance
pb2     move.w  d2,BMapOff
        move.w  d2,6(a2)
        lsl.w #4,d2
        or.w  d2,6(a2)
        move.l  _BitMapY,d0
        add.w Distance,d0
        jsr PUTBMAP

        move.l  _BckGrnd2,a3
ADDMAP  move.l  _BackBuff,a4
        move.w  BMapOff,d5
        move.w  Distance,d0
        lea 46(a3,d0),a3
        lea 46(a4,d0),a4
        move.w  #3504,d0
        mulu  d5,d0
        add.l d0,a3
        move.l  #18688,d0
        mulu  d5,d0
        add.l d0,a4

am0     btst.b  #6,$DFF002            BLIT IN BACKGROUND
        bne am0
        move.l  #$FFFFFFFF,$DFF044    BLTAFWM
        move.l  #$09F00000,$DFF040    BLTCON0&1
        move.l  #$00FE002E,$DFF064    BLTxMOD
        move.l  a4,$DFF050            BLTAPT
        move.l  a3,$DFF054            BLTDPT
        move.w  #$12C1,$DFF058        BLTSIZE

*CLEANUP PLAYER*************************************************************

        move.l  _BitMapN,a5
        add.l #56500,a5
        move.l  (a5)+,a0
        cmp.l #0,a0
        beq cu2
        moveq #3,d4
cu1     move.l  (a5)+,(a0)
        move.l  (a5)+,48(a0)
        move.l  (a5)+,96(a0)
        move.l  (a5)+,144(a0)
        move.l  (a5)+,192(a0)
        move.l  (a5)+,240(a0)
        move.l  (a5)+,288(a0)
        move.l  (a5)+,336(a0)
        move.l  (a5)+,384(a0)
        move.l  (a5)+,432(a0)
        move.l  (a5)+,480(a0)
        move.l  (a5)+,528(a0)
        move.l  (a5)+,576(a0)
        move.l  (a5)+,624(a0)
        move.l  (a5)+,672(a0)
        move.l  (a5)+,720(a0)
        add.l #11232,a0
        dbf d4,cu1
cu2     btst.b  #6,$DFF002            For Bullet & ENEMY BLITS!
        bne cu2
        move.l  #$0000002C,$DFF064    BLTxMOD

*CLEANUP BULLETS***********************************************************

        move.l  _BitMapN,a5
        add.l #58296,a5
        moveq #4,d3
cb2     move.l  (a5)+,a0
        move.l  a5,a3
        cmp.l #0,a0
        beq cb6
        moveq #4,d4

cb5a    btst.b  #6,$DFF002
        bne cb5a
        move.l  a3,$DFF050            BLTAPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE
        add.l #11232,a0
        add.l #64,a3
        move.l  (a3)+,(a0)
        move.l  (a3)+,48(a0)
        move.l  (a3)+,96(a0)
        move.l  (a3)+,144(a0)
        move.l  (a3)+,192(a0)
        move.l  (a3)+,240(a0)
        move.l  (a3)+,288(a0)
        move.l  (a3)+,336(a0)
        move.l  (a3)+,384(a0)
        move.l  (a3)+,432(a0)
        move.l  (a3)+,480(a0)
        move.l  (a3)+,528(a0)
        move.l  (a3)+,576(a0)
        move.l  (a3)+,624(a0)
        move.l  (a3)+,672(a0)
        move.l  (a3)+,720(a0)
        add.l #11232,a0
cb5c    btst.b  #6,$DFF002
        bne cb5c
        move.l  a3,$DFF050          BLTAPT
        move.l  a0,$DFF054          BLTDPT
        move.w  #$0402,$DFF058      BLTSIZE
        add.l #11232,a0
        add.l #64,a3
        move.l  (a3)+,(a0)
        move.l  (a3)+,48(a0)
        move.l  (a3)+,96(a0)
        move.l  (a3)+,144(a0)
        move.l  (a3)+,192(a0)
        move.l  (a3)+,240(a0)
        move.l  (a3)+,288(a0)
        move.l  (a3)+,336(a0)
        move.l  (a3)+,384(a0)
        move.l  (a3)+,432(a0)
        move.l  (a3)+,480(a0)
        move.l  (a3)+,528(a0)
        move.l  (a3)+,576(a0)
        move.l  (a3)+,624(a0)
        move.l  (a3)+,672(a0)
        move.l  (a3)+,720(a0)
        add.l #11232,a0
cb5e    btst.b  #6,$DFF002
        bne cb5e
        move.l  a3,$DFF050         BLTAPT
        move.l  a0,$DFF054         BLTDPT
        move.w  #$0402,$DFF058     BLTSIZE
cb6     sub.l #328,a5
        dbf d3,cb2

*CLEANUP ENEMYS************************************************************

        move.l  _BitMapN,a5
        add.l #66452,a5
        moveq #23,d3
ce2     move.l  (a5)+,a0
        move.l  a5,a3
        cmp.l #0,a0
        beq ce6
ce5a    btst.b  #6,$DFF002
        bne ce5a
        move.l  a3,$DFF050         BLTAPT
        move.l  a0,$DFF054         BLTDPT
        move.w  #$0402,$DFF058     BLTSIZE
        add.l #11232,a0
        add.l #64,a3
        move.l  (a3)+,(a0)
        move.l  (a3)+,48(a0)
        move.l  (a3)+,96(a0)
        move.l  (a3)+,144(a0)
        move.l  (a3)+,192(a0)
        move.l  (a3)+,240(a0)
        move.l  (a3)+,288(a0)
        move.l  (a3)+,336(a0)
        move.l  (a3)+,384(a0)
        move.l  (a3)+,432(a0)
        move.l  (a3)+,480(a0)
        move.l  (a3)+,528(a0)
        move.l  (a3)+,576(a0)
        move.l  (a3)+,624(a0)
        move.l  (a3)+,672(a0)
        move.l  (a3)+,720(a0)
        add.l #11232,a0
ce5c    btst.b  #6,$DFF002
        bne ce5c
        move.l  a3,$DFF050            BLTAPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE
        add.l #11232,a0
        add.l #64,a3
        move.l  (a3)+,(a0)
        move.l  (a3)+,48(a0)
        move.l  (a3)+,96(a0)
        move.l  (a3)+,144(a0)
        move.l  (a3)+,192(a0)
        move.l  (a3)+,240(a0)
        move.l  (a3)+,288(a0)
        move.l  (a3)+,336(a0)
        move.l  (a3)+,384(a0)
        move.l  (a3)+,432(a0)
        move.l  (a3)+,480(a0)
        move.l  (a3)+,528(a0)
        move.l  (a3)+,576(a0)
        move.l  (a3)+,624(a0)
        move.l  (a3)+,672(a0)
        move.l  (a3)+,720(a0)
        add.l #11232,a0
ce5e    btst.b  #6,$DFF002
        bne ce5e
        move.l  a3,$DFF050            BLTAPT
        move.l  a0,$DFF054            BLTDPT
        move.w  #$0402,$DFF058        BLTSIZE

ce6     sub.l #328,a5
        dbf d3,ce2

        jmp ABOBGN

*LEVEL3 INTERRUPT**********************************************************

VBINT   move.w  #$0020,$DFF09C
        cmp.l #0,Aud3Snd            Channel 3
        beq ac2
        move.l  Aud3Snd,$DFF0D0
        move.w  #$8008,$DFF096
        move.l  #0,Aud3Snd
ac2     sub.w #1,Aud3Del
        bne ca2
        move.w  #$0008,$DFF096

ca2     cmp.l #0,Aud2Snd            Channel 2
        beq ac4
        move.l  Aud2Snd,$DFF0C0
        move.w  #$8004,$DFF096
        move.l  #0,Aud2Snd
ac4     sub.w #1,Aud2Del
        bne ca4
        move.w  #$0004,$DFF096

ca4     cmp.l #0,Aud1Snd            Channel 1
        beq ca5
        move.l  Aud1Snd,$DFF0B0
        move.w  #$8002,$DFF096
        move.l  #0,Aud1Snd
ca5     sub.w #1,Aud1Del
        bne ca6
        move.w  #$0002,$DFF096

ca6     cmp.l #0,Aud0Snd            Channel 0
        beq ca7
        move.l  Aud0Snd,$DFF0A0
        move.w  #$8001,$DFF096
        move.l  #0,Aud0Snd
ca7     sub.w #1,Aud0Del
        bne ca3
        move.w  #$0001,$DFF096
ca3     rte
**************************************************************************
INCPOW  MOVEM.L D0-D1,-(SP)
        cmp.w #9,MaxPow
        ble ip0
        move.w  #9,MaxPow
ip0     move.w  BulPow,d0
        move.w  MaxPow,d1
        cmp.w d0,d1
        beq ip3
IP      cmp.w #18,BulSiz
        beq ip1
        add.w #2,BulSiz
ip1     cmp.w #10,BulSpd
        beq ip2
        add.w #2,BulSpd
ip2     cmp.w #9,BulPow
        beq ip3
        add.w #1,BulPow
ip3     MOVEM.L (SP)+,D0-D1
        rts
**************************************************************************
KYBOARD move.b  $BFEC01,d0            Read Keyboard
        not.b d0
        lsr.b #1,d0
        bcs.s Hndshk
        move.b  d0,Key
Hndshk  bset  #6,$BFEE01
        move.b  #0,$BFEC01
        bclr.b  #6,$BFEE01
        cmp.b #$50,Key
        bne k1
        move.w  #500,PlayerI
        move.b  #0,Key
        rts
k1      cmp.b #$51,Key
        bne k2
        jsr INCPOW
        add.w #1,ResPow
        cmp.w #10,ResPow
        bne bye
        move.w  #9,ResPow
        rts
k2      cmp.b #$52,Key
        bne k3
        add.w #1,ResFix
        cmp.w #10,ResFix
        bne bye
        move.w  #9,ResFix
k3      cmp.b #$53,Key
        bne bye
        add.w #1,MaxPow
        cmp.w #10,MaxPow
        bne bye
        move.w  #9,MaxPow
        rts

**************************************************************************
DEATH   add.w #1,Warp
        cmp.w #300,Warp
        ble DOENEMY                <- Let game 'coast' to stop
        cmp.w #0,PlayerL
        blt GMOVER
        lea Colors,a0
        jsr FADEOUT
        move.w  PlayerHM,d0
        move.w  d0,PlayerH
        move.w  #1,BulPow
        move.w  #4,BulSpd
        move.w  #12,BulSiz
        jmp PREPLV1

***************************************************************************
ENDLVL  move.w  #1,Stop
        move.w  #0,GenUse
        sub.w #1,Warp
        beq WARP
        cmp.w #50,Warp              <- can we shoot?
        bge SHOOT                   <- YES!
        jmp GETJOY                  <- NO!

WARP    cmp.w #0,Aud2Del
        bgt WARP
*       move.w  #$4,$DFF096         * Go Sound
*       move.l  AudGo,Aud2Snd       |
*       move.l  #$0EC00333,$DFF0C4  |
*       move.w  #20,Aud2Del         *

        move.w  #1,Warp
        lea Enemy,a1
        moveq #23,d7
wp1     tst.w (a1)
        bne wp2
        move.w  PlayerX,(a1)+
        move.w  PlayerY,(a1)+
        move.l  #$05100000,(a1)+
        move.l  #$00120000,(a1)+
        move.l  #0,(a1)+
        move.l  #0,(a1)+
        jmp wp3
wp2     add.l #20,a1
        dbf d7,wp1
wp3     add.w #1,Accel
        move.w  Accel,d0
        add.w d0,PlayerX
        cmp.w #338,PlayerX
        ble MOVEME
        move.w  #338,PlayerX
        cmp.w #80,Accel
        ble DOENEMY
        lea Colors,a0
        jsr FADEOUT
        add.w #1,Section
        jmp PREPLV1
***************************************************************************
NEWLVL  lea Colors,a0
        jsr FADEOUT
        add.w #1,Level
        move.w  #0,NLev
        move.w  #0,Section
        jmp INITLEV
***************************************************************************

SRTSEQ  bne hold
        cmp.w #1,Boss
        beq hold
        move.w  #0,Stop
hold    move.w  Slow,d0
        lsr.w #1,d0
        add.w #1,d0
        lea Enemy,a1
        moveq #23,d7
sp1     tst.w (a1)
        bne sp2
        move.w  PlayerX,(a1)+
        move.w  PlayerY,(a1)+
        move.l  #$05100000,(a1)+
        move.l  #$00120000,(a1)+
        move.l  #0,(a1)+
        move.l  #0,(a1)+
        jmp MOVEME
sp2     add.l #20,a1
        dbf d7,sp1
        jmp SHOOT
**************************************************************************
SUBGAME MOVEM.L D6-D7/A0-A6,-(SP)
        move.b  #0,Key
        move.l  _BitMapY,a0
        move.l  _Buffer,a1
        add.l #2414,a0
        add.w Distance,a0
        move.w  #4,d5
sg3     move.w  #124,d6
sg2     move.w  #9,d7
sg1     move.w  (a0),(a1)+
        move.w  #0,(a0)+
        dbf d7,sg1
        add.l #28,a0
        dbf d6,sg2
        add.l #5232,a0
        dbf d5,sg3

        lea BoxDat,a3
        move.l  _BitMapY,a4
        move.w  Distance,d0
        lea (a4,d0),a4
        move.l  a4,a5
        add.l #22464,a4
        add.l #33696,a5
        move.w  #3,d5
        move.w  #1,d0
Box     move.w  (a3)+,d0
        move.w  (a3)+,d1
        move.w  (a3)+,d2
        move.w  (a3)+,d3
        move.l  a5,a0
        move.w  #$BFA,d6
        jsr LINE
        move.l  a4,a0
        jsr LINE
        dbf d5,Box

SGMAIN  move.w  #0,d0
        jsr WAIT
        move.w  $BFE000,d0
        btst  #7,d0
        bne SGMAIN

        move.b  #0,Key
        move.l  _BitMapY,a0
        move.l  _Buffer,a1
        add.l #2414,a0
        add.w Distance,a0
        move.w  #4,d5
sg6     move.w  #124,d6
sg5     move.w  #9,d7
sg4     move.w  (a1)+,(a0)+
        dbf d7,sg4
        add.l #28,a0
        dbf d6,sg5
        add.l #5232,a0
        dbf d5,sg6
        MOVEM.L (SP)+,D6-D7/A0-A6
        rts
***************************************************************************

PUTBMAP lea MAPPTR,a2
        move.l  #11232,d1
        swap  d0            +
        move.w  d0,2(a2)    |
        swap  d0            | Modify the Copper Lists Bit
        move.w  d0,6(a2)    | Memory Reserved for Bit Map
        add.l d1,d0         |
        swap  d0            |
        move.w  d0,10(a2)   |
        swap  d0            |
        move.w  d0,14(a2)   |
        add.l d1,d0         |
        swap  d0            |
        move.w  d0,18(a2)   |
        swap  d0            |
        move.w  d0,22(a2)   |
        add.l d1,d0         |
        swap  d0            |
        move.w  d0,26(a2)   |
        swap  d0            |
        move.w  d0,30(a2)   |
        add.l d1,d0         |
        move.w  d0,38(a2)   |
        swap  d0            |
        move.w  d0,34(a2)   +
        rts
***************************************************************************
MAKEMAP move.l  CurMap,a0
        move.l  _BackBuff,a1
        move.l  _BackMap,a2

mp1     move.w  #0,d7
mp2     move.w  #0,d6
mp3     move.l  a1,a3             a3 = PutMap Pointer
        move.l  a2,a4             a4 = GetMap Pointer

        move.b  (a0)+,d0          This section computes GetMap location
        and.w #$00FF,d0           *
        divu  #20,d0              *
        swap  d0                  *
        add.w d0,a4               *
        add.w d0,a4               *
        swap  d0                  *
        mulu  #720,d0             *
        add.w d0,a4               a4 = Now GetMap ChunkN Pointer

        move.w  d7,d0             This section computes PutMap Location
        mulu.w  #4608,d0          *
        add.l d0,a3               *
        add.w d6,a3               *
        add.w d6,a3               a3 = Now PutMap Pointer

        move.w  #4,d5
mp4     move.w  #17,d4
mp5     move.w  (a4),(a3)
        add.w #256,a3
        add.w #40,a4
        dbf d4,mp5
        add.l #55296,a3
        add.w #7280,a4
        dbf d5,mp4

        add.w #1,d6
        cmp.w #127,d6
        ble mp3
        add.w #1,d7
        cmp.w #12,d7
        ble mp2
        rts

***************************************************************************

SEEIFF  moveq #0,d3               A1-A4 Data Pointer
        lea (a1,d5),a2            A5    BitMap Pointer
        lea (a2,d5),a3            D0    Y Line Counter
        lea (a3,d5),a4            D1    X Byte Counter
        lea (a4,d5),a6            d5    Size of BitPlanes
YLines  move.l  a1,a5
        jsr DoLine
        add.w d7,a1
        move.l  a2,a5
        jsr DoLine
        add.w d7,a2
        move.l  a3,a5
        jsr DoLine
        add.w d7,a3
        move.l  a4,a5
        jsr DoLine
        add.w d7,a4
        move.l  a6,a5
        jsr DoLine
        add.w d7,a6
        dbf d0,YLines
        rts

DoLine  moveq #0,d1
        moveq #0,d4
NewData jsr GetData
XLines  cmp.b #0,d2
        bmi rpx
        jsr Copy
        jmp erp
rpx     jsr Repeat
erp     cmp.w d6,d1
        bmi NewData
        rts

Copy    addq.w  #1,d1
        add.w d2,d1
        move.w  d2,d5
cmore   btst  #0,d4
        bne codd
        jsr GetData
        or.b  d2,(a5)   *
        jmp ecod
codd    jsr GetData
        or.w  d2,(a5)+  *
ecod    addq.w  #1,d4
        dbf d5,cmore
        rts

Repeat  neg.b d2
        addq.w  #1,d1
        add.w d2,d1
        move.w  d2,d5
        jsr GetData
rmore   btst  #0,d4
        bne rodd
        or.b  d2,(a5)   *
        jmp erod
rodd    or.w  d2,(a5)+  *
erod    addq.w  #1,d4
        dbf d5,rmore
        rts

GetData move.w  (a0),d2
        btst  #0,d3
        bne OddData
        lsr.w #8,d2
        and.w #$00FF,d2
        addq.b  #1,d3
        rts
OddData and.w #$00FF,d2
        addq.b  #1,d3
        addq.l  #2,a0
        rts

***************************************************************************

LINE    MOVEM.L D0-D7/A0-A6,-(SP)
        and.l #$0000FFFF,d0
        sub.w d0,d2
        bmi xneg
        sub.w d1,d3
        bmi yneg
        cmp.w d3,d2
        bmi ygtx
        moveq.w #17,d5
        bra line
ygtx    exg d2,d3
        moveq.w #1,d5
        bra line
yneg    neg.w d3
        cmp.w d3,d2
        bmi ynygtx
        moveq.w #25,d5
        bra line
ynygtx  exg d2,d3
        moveq.w #5,d5
        bra line
xneg    neg.w d2
        sub.w d1,d3
        bmi xyneg
        cmp.w d3,d2
        bmi xnygtx
        moveq.w #21,d5
        bra line
xnygtx  exg d2,d3
        moveq.w #9,d5
        bra line
xyneg   neg.w d3
        cmp.w d3,d2
        bmi xynygtx
        moveq.w #29,d5
        bra line
xynygtx exg d2,d3
        moveq.w #13,d5
line    mulu.w  #48,d1
        ror.l #4,d0
        add.w d0,d0
        add.w d1,a0
        add.w d0,a0
        swap  d0
        or.w  d6,d0
        lsl.w #2,d3
        add.w d2,d2
        move.w  d2,d1
        lsl.w #5,d1
        add.w #$42,d1
BWL1    btst.b  #6,$DFF002
        bne BWL1
        move.w  d3,$DFF062
        sub.w d2,d3
        ext.l d3
        move.l  d3,$DFF050
        bpl over
        or.w  #$0040,d5
over    move.w  d0,$DFF040
        move.w  d5,$DFF042
        move.w  #48,$DFF060
        move.w  #48,$DFF066
        sub.w d2,d3
        move.w  d3,$DFF064
        move.w  #$8000,$DFF074
        move.l  #-1,$DFF044
        move.l  a0,$DFF048
        move.l  a0,$DFF054
        move.w  d1,$DFF058
BWL2    btst.b  #6,$DFF002
        bne BWL2
        move.l  #$FFFF0000,$DFF044  BLTAFWM
        move.l  #$002C0024,$DFF060  BLTxMOD
        move.l  #$0024002C,$DFF064  BLTxMOD
        MOVEM.L (SP)+,D0-D7/A0-A6
        rts

**************************************************************************

NEWPAL  lea $DFF180,a2
        moveq #31,d0
npl1    move.w  (a1)+,(a2)+
        dbf d0,npl1
        rts
***************************************************************************
CLRBACK move.l  _BckGrnd1,a0
        move.l  _BckGrnd2,a1
        move.w  #16750,d0
cb0     move.l  #0,(a0)+
        move.l  #0,(a1)+
        dbf d0,cb0
        rts
**************************************************************************
DRWSTRT move.l  _BckGrnd1,a0
        move.l  _BckGrnd2,a1
        move.l  _BackBuff,a3
        move.w  #1169,d0
ds0     move.w  #11,d1
ds1     move.l  (a3),(a1)+
        move.l  (a3)+,(a0)+
        dbf d1,ds1
        add.w #208,a3
        dbf d0,ds0
        rts
**************************************************************************
CLRBOTS move.l  _BckGrnd1,d1
        add.l #150000,d1
BWC     btst.b  #6,$DFF002
        bne BWC
        move.w  #0,$DFF042            BLTCON1
        move.w  #$0100,$DFF040        BLTCON0
        move.w  #0,$DFF066            BLTDMOD
        move.l  d1,$DFF054            BLTDPT
        move.w  #$8032,$DFF058        BLTSIZE Current erases 512 x 100
        move.l  _BckGrnd2,d1
        add.l #150000,d1
BWD     btst.b  #6,$DFF002
        bne BWD
        move.w  #0,$DFF042
        move.w  #$0100,$DFF040
        move.w  #0,$DFF066
        move.l  d1,$DFF054
        move.w  #$8032,$DFF058
        rts
***************************************************************************
FADEIN  lea ColBuf,a2
        move.w  #16,d6
fi0     move.l  #0,(a2)+
        dbf d6,fi0
        move.w  #16,d7
fi1     lea $DFF180,a1
        lea ColBuf,a2
        move.l  a0,a3
        move.w  #0,d6
fi2     move.w  (a2),d1
        move.w  (a3)+,d4
        move.w  d1,d2
        and.w #$000F,d2
        move.w  d4,d5
        and.w #$000F,d5
        cmp.w d2,d5
        beq fi3
        add.w #1,d2
fi3     move.w  d1,d3
        and.w #$00F0,d3
        move.w  d4,d5
        and.w #$00F0,d5
        cmp.w d3,d5
        beq fi4
        lsr.w #4,d3
        add.w #1,d3
        lsl.w #4,d3
fi4     and.w #$0F00,d1
        and.w #$0F00,d4
        cmp.w d1,d4
        beq fi5
        lsr.w #8,d1
        add.w #1,d1
        lsl.w #8,d1
fi5     or.w  d3,d2
        or.w  d2,d1
        move.w  d1,(a1)+
        move.w  d1,(a2)+
        add.w #1,d6
        cmp.w #32,d6
        blt fi2
        move.w  #4,d0
        jsr WAIT
        dbf d7,fi1
        rts

***************************************************************************
FADEOUT move.l  a0,a1
        lea ColBuf,a2
        move.w  #16,d6
fo0     move.l  (a1)+,(a2)+
        dbf d6,fo0
        move.w  #16,d7
fo1     lea $DFF180,a1
        lea ColBuf,a2
        move.w  #0,d6
fo2     move.w  (a2),d1
        move.w  d1,d2
        and.w #$000F,d2
        beq fo3
        sub.w #1,d2
fo3     move.w  d1,d3
        and.w #$00F0,d3
        beq fo4
        lsr.w #4,d3
        sub.w #1,d3
        lsl.w #4,d3
fo4     and.w #$0F00,d1
        beq fo5
        lsr.w #8,d1
        sub.w #1,d1
        lsl.w #8,d1
fo5     or.w  d2,d1
        or.w  d3,d1
        move.w  d1,(a1)+
        move.w  d1,(a2)+
        add.w #1,d6
        cmp.w #32,d6
        blt fo2
        move.w  #2,d0
        jsr WAIT
        dbf d7,fo1
        rts

**************************************************************************
WAIT    move.b  $DFF006,d1
        cmp.b #$FF,d1
        beq WAIT
        jsr DELAY
        dbf d0,WAIT
        rts

DELAY   move.b  $DFF006,d1
        cmp.b #$FF,d1
        bne DELAY
        rts

**************************************************************************

GMOVER  move.w  $BFE000,d0
        btst  #7,d0
        bne GMOVER
        move.w  #2,d0
        jmp QUIT                    Return to master program
									
Copyright ©2005, Robert Walsh, All Rights reserved.