home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 251-275 / apd268 / defence.amos / defence.amosSourceCode < prev    next >
AMOS Source Code  |  1991-07-19  |  15KB  |  507 lines

  1. Procedure INFO_TO_READ
  2.    '                     AMOS DEFENCE 
  3.    '
  4.    '               By K.Barton  May/June 1991 
  5.    '                 021-707-7984 ( B'ham ) 
  6.    '
  7.    '         Note :- My best is all 250 in 171 seconds. 
  8.    '
  9.    '      bob 1=ship  bob 4=explosion  bob 5=baddie1  
  10.    '      bob 6=baddie2  bob 7=baddie3  bob 8=missile1
  11.    '      bob 9=missile2  bob 10=missile3  amal 0=scrolling back  
  12.    '      bobs 11,12 mines  
  13.    '
  14.    '        "f1-f3" are for which missile to fire   
  15.    '       "hb1-hb3" are for is baddie 1-3 active ? 
  16.    '       "mno" is which missile was baddie hit by 
  17.    '      "oktoshoot" is so fire missile not too close together 
  18.    '
  19. End Proc
  20. Global F1,F2,F3,SCORE,MNO,OKTOSHOOT,HB1,HB2,HB3,LIVES,TIME
  21. LIVES=3 : SCORE=0
  22. Clear Key 
  23. WORDS
  24. TITLE
  25. Timer=0
  26. INITIALISE
  27. Wait 50
  28. Timer=0
  29. Amal On 
  30. Do 
  31.    Wait Vbl 
  32.    If HB1=0 or Amreg(1)>136 or Chanmv(5)=0 Then BADDIE_ONE : Rem  make baddie active
  33.    If HB2=0 or Amreg(2)>136 or Chanmv(6)=0 Then BADDIE_TWO
  34.    If HB3=0 or Amreg(3)>136 or Chanmv(7)=0 Then BADDIE_THREE
  35.    If Chanan(4)=0 Then Bob Off 4 : Rem  turn off explosion when done
  36.    TEST_FIREBUTTON
  37.    If F1=1 Then LAUNCH_MISSILE
  38.    If F2=1 Then LAUNCH_MISSILE2
  39.    If F3=1 Then LAUNCH_MISSILE3
  40.    Update 
  41.    If Inkey$="p" Then PAUSE
  42.    If Bob Col(1) or Bob Col(8) or Bob Col(9) or Bob Col(10) Then DETECT_COLLISION
  43.    If Chanmv(8)=0 Then Bob Off 8
  44.    If Chanmv(9)=0 Then Bob Off 9
  45.    If Chanmv(10)=0 Then Bob Off 10
  46.    If SCORE>249 Then YOUWIN
  47. Loop 
  48. Procedure DETECT_COLLISION
  49.    If Bob Col(1,5 To 7) Then HIT_YOUR_SHIP
  50.    If Timer>250 and Timer>TIME+250 and Bob Col(1,2 To 3) Then HIT_YOUR_SHIP
  51.    If Timer>250 and Timer>TIME+250 and Bob Col(1,11 To 14) Then HIT_YOUR_SHIP
  52.    If Bob Col(8,5 To 5) Then MNO=1 : HIT_BADDIE_ONE
  53.    If Bob Col(8,6 To 6) Then MNO=1 : HIT_BADDIE_TWO
  54.    If Bob Col(8,7 To 7) Then MNO=1 : HIT_BADDIE_THREE
  55.    If Bob Col(9,5 To 5) Then MNO=2 : HIT_BADDIE_ONE
  56.    If Bob Col(9,6 To 6) Then MNO=2 : HIT_BADDIE_TWO
  57.    If Bob Col(9,7 To 7) Then MNO=2 : HIT_BADDIE_THREE
  58.    If Bob Col(10,5 To 5) Then MNO=3 : HIT_BADDIE_ONE
  59.    If Bob Col(10,6 To 6) Then MNO=3 : HIT_BADDIE_TWO
  60.    If Bob Col(10,7 To 7) Then MNO=3 : HIT_BADDIE_THREE
  61. End Proc
  62. Procedure TEST_FIREBUTTON
  63.    Inc OKTOSHOOT
  64.    If OKTOSHOOT>4 and Fire(1) and Chanmv(8)=0 Then F1=1 : OKTOSHOOT=0
  65.    If OKTOSHOOT>4 and Fire(1) and Chanmv(8)=-1 and Chanmv(9)=0 Then F2=1 : OKTOSHOOT=0
  66.    If OKTOSHOOT>4 and Fire(1) and Chanmv(8)=-1 and Chanmv(9)=-1 and Chanmv(10)=0 Then F3=1 : OKTOSHOOT=0
  67. End Proc
  68. Procedure LAUNCH_MISSILE
  69.    If X Bob(1)<100 Then Sam Play 1,1
  70.    If X Bob(1)>220 Then Sam Play 2,1
  71.    If X Bob(1)>99 and X Bob(1)<221 Then Sam Play 3,1
  72.    F1=0
  73.    Bob 8,X Bob(1),Y Bob(1)-10,19
  74.    Channel 8 To Bob 8
  75.    Amal 8,"Let R1=RZ-6; Begin: Pause; Let R1=R1-4; Let Y=YS(0,R1); If R1>35 Jump Begin; "
  76.    Amal On 8
  77. End Proc
  78. Procedure LAUNCH_MISSILE2
  79.    If X Bob(1)<100 Then Sam Play 1,1
  80.    If X Bob(1)>220 Then Sam Play 2,1
  81.    If X Bob(1)>99 and X Bob(1)<221 Then Sam Play 3,1
  82.    F2=0
  83.    Bob 9,X Bob(1),Y Bob(1)-10,19
  84.    Channel 9 To Bob 9
  85.    Amal 9,"Let R1=RZ-6; Begin: Pause; Let R1=R1-4; Let Y=YS(0,R1); If R1>35 Jump Begin; "
  86.    Amal On 9
  87. End Proc
  88. Procedure LAUNCH_MISSILE3
  89.    If X Bob(1)<100 Then Sam Play 1,1
  90.    If X Bob(1)>220 Then Sam Play 2,1
  91.    If X Bob(1)>99 and X Bob(1)<221 Then Sam Play 3,1
  92.    F3=0
  93.    Bob 10,X Bob(1),Y Bob(1)-10,19
  94.    Channel 10 To Bob 10
  95.    Amal 10,"Let R1=RZ-6; Begin: Pause; Let R1=R1-4; Let Y=YS(0,R1); If R1>35 Jump Begin; "
  96.    Amal On 10
  97. End Proc
  98. Procedure HIT_YOUR_SHIP
  99.    HITX=X Bob(1)
  100.    HITY=Y Bob(1)
  101.    Update 
  102.    Amal Freeze 
  103.    Bob Off 5 : Bob Off 6 : Bob Off 7 : Bob Off 8 : Bob Off 9 : Bob Off 10
  104.    Boom 
  105.    For B=18 To 14 Step -1
  106.       Bob 4,HITX,HITY,B
  107.       Update 
  108.       Wait 5
  109.       Update 
  110.    Next B
  111.    Bob Off 1
  112.    For B=14 To 18
  113.       Bob 4,HITX,HITY,B
  114.       Update 
  115.       Wait 5
  116.       Update 
  117.    Next B
  118.    Bob Off 4
  119.    Wait 5
  120.    Update 
  121.    RESTART
  122.    INITIALISE
  123.    LIVES
  124.    Repeat 
  125.    Until Fire(1)
  126.    TIME=Timer
  127.    Amal On 
  128. End Proc
  129. Procedure BADDIE_ONE
  130.    HB1=1
  131.    If Timer<1001 Then SPD=Rnd(3)
  132.    If Timer<200 Then SPD=0
  133.    If Timer>1000 Then SPD=Rnd(1)+2
  134.    If Timer>2500 Then SPD=3
  135.    If Timer>3000 Then SPD=4
  136.    If Timer>3500 Then SPD=5
  137.    POS=Rnd(205)+20
  138.    BNUM=Rnd(2)
  139.    If BNUM=0 Then Bob 5,POS,Y Screen(0,20),2 : AB1$="Anim0,(1,6)(2,6)(3,6);"
  140.    If BNUM=1 Then Bob 5,POS,Y Screen(0,20),5 : AB1$="Anim0,(4,6)(5,6)(6,6)(5,6);"
  141.    If BNUM=2 Then Bob 5,POS,Y Screen(0,20),8 : AB1$="Anim0,(7,6)(8,6)(9,6)(8,6);"
  142.    Channel 5 To Bob 5
  143.    If SPD=0 Then AB1$=AB1$+"Let R0=Z(1); Let RB=10; For RB=10 To 138; Pause; Let X=X-R0; Let Y=YS(0,RB*2); Next RB"
  144.    If SPD=1 Then AB1$=AB1$+"Let R0=Z(1); Let RB=10; For RB=10 To 138; Pause; Let X=X+R0; Let Y=YS(0,RB*2); Next RB"
  145.    If SPD=2 Then AB1$=AB1$+"Let RB=5; For RB=5 To 69; Pause; Let Y=YS(0,RB*4); Next RB"
  146.    If SPD=3 Then AB1$=AB1$+"Let RB=3; For RB=3 To 45; Pause; Let X=X+1; Let Y=YS(0,RB*6); Next RB"
  147.    If SPD=4 Then AB1$="Let RB=2; For RB=2 To 34; Pause; Let X=X+2; Let Y=YS(0,RB*8); Next RB"
  148.    If SPD=5 Then AB1$="Let RB=2; For RB=2 To 34; Pause; Let X=X+3; Let Y=YS(0,RB*8); Next RB"
  149.    Amal 5,AB1$
  150.    Amal On 5
  151. End Proc
  152. Procedure HIT_BADDIE_ONE
  153.    HITX=X Bob(5)
  154.    HITY=Y Bob(5)
  155.    Inc SCORE
  156.    Boom 
  157.    Bob Off 5
  158.    If MNO=1 Then Bob Off 8
  159.    If MNO=2 Then Bob Off 9
  160.    If MNO=3 Then Bob Off 10
  161.    MNO=0
  162.    Channel 4 To Bob 4
  163.    Bob 4,HITX,HITY,18
  164.    HB$="Anim1,(18,1)(17,1)(16,1)(15,2)(14,2)(15,1)(16,1)(17,1)(18,1);"
  165.    Amal 4,HB$
  166.    Amal On 4
  167.    HB1=0
  168.    SCORE
  169. End Proc
  170. Procedure BADDIE_TWO
  171.    HB2=1
  172.    If Timer<1001 Then SPD=Rnd(3)
  173.    If Timer<200 Then SPD=0
  174.    If Timer>1500 Then SPD=Rnd(1)+2
  175.    If Timer>2500 Then SPD=3
  176.    If Timer>3000 Then SPD=4
  177.    If Timer>3500 Then SPD=5
  178.    POS=Rnd(205)+20
  179.    BNUM=Rnd(2)
  180.    Channel 6 To Bob 6
  181.    If BNUM=0 Then Bob 6,POS,Y Screen(0,20),2 : AB1$="Anim0,(1,6)(2,6)(3,6);"
  182.    If BNUM=1 Then Bob 6,POS,Y Screen(0,20),5 : AB1$="Anim0,(4,6)(5,6)(6,6)(5,6);"
  183.    If BNUM=2 Then Bob 6,POS,Y Screen(0,20),8 : AB1$="Anim0,(7,6)(8,6)(9,6)(8,6);"
  184.    If SPD=0 Then AB1$=AB1$+"Let R0=Z(1); Let RC=10; For RC=10 To 138; Pause; Let X=X-R0; Let Y=YS(0,RC*2); Next RC"
  185.    If SPD=1 Then AB1$=AB1$+"Let R0=Z(1); Let RC=10; For RC=10 To 138; Pause; Let X=X+R0; Let Y=YS(0,RC*2); Next RC"
  186.    If SPD=2 Then AB1$=AB1$+"Let RC=5; For RC=5 To 69; Pause; Let Y=YS(0,RC*4); Next RC"
  187.    If SPD=3 Then AB1$=AB1$+"Let RC=3; For RC=3 To 45; Pause; Let X=X-1; Let Y=YS(0,RC*6); Next RC"
  188.    If SPD=4 Then AB1$="Let RC=2; For RC=2 To 34; Pause; Let X=X-2; Let Y=YS(0,RC*8); Next RC"
  189.    If SPD=5 Then AB1$="Let RC=2; For RC=2 To 34; Pause; Let X=X-3; Let Y=YS(0,RC*8); Next RC"
  190.    Amal 6,AB1$
  191.    Amal On 6
  192. End Proc
  193. Procedure HIT_BADDIE_TWO
  194.    HITX=X Bob(6)
  195.    HITY=Y Bob(6)
  196.    Inc SCORE
  197.    Boom 
  198.    Bob Off 6
  199.    If MNO=1 Then Bob Off 8
  200.    If MNO=2 Then Bob Off 9
  201.    If MNO=3 Then Bob Off 10
  202.    MNO=0
  203.    Channel 4 To Bob 4
  204.    Bob 4,HITX,HITY,18
  205.    HB$="Anim1,(18,1)(17,1)(16,1)(15,2)(14,2)(15,1)(16,1)(17,1)(18,1);"
  206.    Amal 4,HB$
  207.    Amal On 4
  208.    HB2=0
  209.    SCORE
  210. End Proc
  211. Procedure BADDIE_THREE
  212.    HB3=1
  213.    If Timer<1001 Then SPD=Rnd(3)
  214.    If Timer<200 Then SPD=0
  215.    If Timer>2000 Then SPD=Rnd(1)+2
  216.    If Timer>2500 Then SPD=3
  217.    If Timer>3000 Then SPD=4
  218.    If Timer>3500 Then SPD=5
  219.    POS=Rnd(205)+20
  220.    If SPD=5 Then POS=X Bob(1)
  221.    BNUM=Rnd(2)
  222.    Channel 7 To Bob 7
  223.    If BNUM=0 Then Bob 7,POS,Y Screen(0,20),2 : AB1$="Anim0,(1,6)(2,6)(3,6);"
  224.    If BNUM=1 Then Bob 7,POS,Y Screen(0,20),5 : AB1$="Anim0,(4,6)(5,6)(6,6)(5,6);"
  225.    If BNUM=2 Then Bob 7,POS,Y Screen(0,20),8 : AB1$="Anim0,(7,6)(8,6)(9,6)(8,6);"
  226.    If SPD=0 Then AB1$=AB1$+"Let R0=Z(1); Let RD=10; For RD=10 To 138; Pause; Let X=X-R0; Let Y=YS(0,RD*2); Next RD"
  227.    If SPD=1 Then AB1$=AB1$+"Let R0=Z(1); Let RD=10; For RD=10 To 138; Pause; Let X=X+R0; Let Y=YS(0,RD*2); Next RD"
  228.    If SPD=2 Then AB1$=AB1$+"Let RD=5; For RD=5 To 69; Pause; Let Y=YS(0,RD*4); Next RD"
  229.    If SPD=3 Then AB1$=AB1$+"Let RD=3; For RD=3 To 45; Pause; Let Y=YS(0,RD*6); Next RD"
  230.    If SPD=4 Then AB1$="Let RD=2; For RD=2 To 34; Pause; Let Y=YS(0,RD*8); Next RD"
  231.    If SPD=5 Then AB1$="Let RD=2; For RD=2 To 34; Pause; Let Y=YS(0,RD*8); Next RD"
  232.    Amal 7,AB1$
  233.    Amal On 7
  234. End Proc
  235. Procedure HIT_BADDIE_THREE
  236.    HITX=X Bob(7)
  237.    HITY=Y Bob(7)
  238.    Inc SCORE
  239.    Boom 
  240.    Bob Off 7
  241.    If MNO=1 Then Bob Off 8
  242.    If MNO=2 Then Bob Off 9
  243.    If MNO=3 Then Bob Off 10
  244.    MNO=0
  245.    Channel 4 To Bob 4
  246.    Bob 4,HITX,HITY,18
  247.    HB$="Anim1,(18,1)(17,1)(16,1)(15,2)(14,2)(15,1)(16,1)(17,1)(18,1);"
  248.    Amal 4,HB$
  249.    Amal On 4
  250.    HB3=0
  251.    SCORE
  252. End Proc
  253. Procedure BACKGROUND
  254.    Update Off 
  255.    Screen Open 0,320,860,16,Lowres
  256.    Screen To Back 0
  257.    Curs Off : Flash Off : Hide 
  258.    Load Iff "back600.iff"
  259.    Screen Copy 0,0,0,320,256 To 0,0,600
  260.    Double Buffer 
  261.    Screen Display 0,128,30,320,245
  262.    Channel 0 To Screen Offset 0
  263.    A$="Loop: P; P; Let R0=R0+1; Let Y=600-R0; If R0<600 Jump Loop; Let R0=0; Jump Loop"
  264.    Amal 0,A$
  265.    MAKEMINES
  266.    Screen Open 3,340,30,16,Lowres
  267.    Screen To Back 3
  268.    Screen To Back 0
  269.    Curs Off : Flash Off : Hide 
  270.    Load Iff "scorebar.iff"
  271.    Get Sprite Palette 
  272.    Screen Display 3,128,270,,
  273.    Screen 0
  274. End Proc
  275. Procedure RESTART
  276.    If LIVES=3 or LIVES=2 Then Dec LIVES : Pop Proc
  277.    Dec LIVES
  278.    LIVES
  279.    Flash Off 
  280.    Fade 5 : Wait 75
  281.    Screen Open 2,355,275,16,Lowres
  282.    Screen Display 2,120,40,,
  283.    Flash Off : Curs Off : Hide : Get Sprite Palette 
  284.    Unpack 6
  285.    Set Rainbow 0,0,120,"(1,1,10)(1,-1,10)","(1,1,5)(1,-1,5)","(1,1,15)(1,-1,15)"
  286.    Rainbow 0,1,40,260
  287.    A$="Begin: For R0=0 To 40; Let X=R0; P; Next R0; For R0=0 To 40; Let X=40-R0; P; Next R0; Jump Begin"
  288.    Channel 2 To Rainbow 0
  289.    Amal 2,A$
  290.    Amal On 2
  291.    Pen 15 : Paper 3
  292.    Home 
  293.    Locate 11,16
  294.    Print "You made";SCORE;" hits"
  295.    Locate 11,17
  296.    Print "in";Timer/50;" seconds."
  297.    Wait 150
  298.    Locate 9,26
  299.    Paper 0
  300.    Print "Press any key to try again"
  301.    Clear Key : Wait Key 
  302.    Rainbow 0,0,400,0
  303.    Amal Off 2
  304.    Fade 5
  305.    Wait 80
  306.    Screen Close 2
  307.    Screen 0
  308.    Fade 5 To -1
  309.    Wait 80
  310.    LIVES=3
  311.    Timer=0
  312.    SCORE=0
  313.    NEWSCORE
  314. End Proc
  315. Procedure YOUWIN
  316.    Wait 10
  317.    Flash Off 
  318.    Bob Off 5 : Bob Off 6 : Bob Off 7 : Bob Off 4 : Bob Off 8 : Bob Off 9 : Bob Off 10
  319.    Update 
  320.    Amal Freeze 
  321.    Fade 5 : Wait 75
  322.    Screen Open 2,355,260,16,Lowres
  323.    Screen Display 2,120,38,,
  324.    Flash Off : Hide : Curs Off : Get Sprite Palette 
  325.    Unpack 7
  326.    Screen To Front 
  327.    Set Rainbow 0,0,90,"(1,2,5)(1,-2,5)","(1,1,3)(1,-1,3)","(1,1,15)(1,-1,15)"
  328.    Rainbow 0,1,40,260
  329.    A$="Begin: For R0=0 To 90; Let X=R0; P; Next R0; For R0=0 To 90; Let X=90-R0; P; Next R0; Jump Begin"
  330.    Channel 2 To Rainbow 0
  331.    Amal 2,A$
  332.    Amal On 2
  333.    Paper 4 : Pen 15
  334.    Locate 4,26
  335.    Print "You hit 250 aliens in";Timer/50;" seconds."
  336.    Locate 4,27
  337.    Print "You return a hero from the attack."
  338.    Wait 200
  339.    Locate 7,29
  340.    Print "Press any key to play again."
  341.    Clear Key : Wait Key 
  342.    Bell 
  343.    Rainbow 0,0,400,0
  344.    Amal Off 2
  345.    Fade 5
  346.    Wait 80
  347.    Screen Close 2
  348.    Screen 0
  349.    Fade 5 To -1
  350.    Wait 80
  351.    INITIALISE
  352.    LIVES=3
  353.    LIVES
  354.    SCORE=0
  355.    NEWSCORE
  356.    SCORE
  357.    Repeat 
  358.    Until Fire(1)
  359.    Amal On 
  360.    Timer=0
  361. End Proc
  362. Procedure TITLE
  363.    Screen Open 4,360,260,16,Lowres
  364.    Load Iff "intro.iff"
  365.    Screen Display 4,120,37,,
  366.    Get Sprite Palette 
  367.    Flash Off : Hide : Curs Off 
  368.    Bob 1,188,151,2
  369.    Bob 2,229,152,8
  370.    Bob 3,207,209,5
  371.    Bob 4,277,164,11
  372.    Channel 1 To Bob 1
  373.    Channel 2 To Bob 2
  374.    Channel 3 To Bob 3
  375.    Channel 4 To Bob 4
  376.    Amal 1,"A 0,(1,8)(2,8)(3,8)"
  377.    Amal 2,"A 0,(7,5)(8,5)(9,5)(8,5)"
  378.    Amal 3,"A 0,(4,5)(5,5)(6,5)(5,5)"
  379.    Amal 4,"A 0,(10,5)(11,5)(12,5)(11,5)"
  380.    Amal On 
  381.    Wait 250
  382.    Locate 18,15
  383.    Pen 15 : Paper 0
  384.    Print "Press any key to begin"
  385.    Clear Key : Wait Key 
  386.    Amal Off 
  387.    Bell 
  388.    BACKGROUND
  389.    Channel 14 To Screen Display 4
  390.    Amal 14,"Begin: Let R0=R0+1; Let Y=R0+37;  P; Jump Begin; "
  391.    Amal On 14
  392.    Wait 280
  393.    Amal Off 14
  394.    Screen Close 4
  395. End Proc
  396. Procedure WORDS
  397.    Screen Open 2,340,260,16,Lowres
  398.    Screen Display 2,120,40,,
  399.    Screen To Back 2 : Screen 2
  400.    Flash Off : Curs Off : Hide 
  401.    Colour 2,$FFF : Colour 6,$100 : Curs Off 
  402.    Set Rainbow 0,6,30,"(1,1,15)(1,-1,15)","",""
  403.    Rainbow 0,1,40,260
  404.    A$="Begin: For R0=0 To 29; Let X=R0; P; Next R0; Jump Begin"
  405.    Channel 2 To Rainbow 0
  406.    Amal 2,A$
  407.    Amal On 2
  408.    Pen 2 : Paper 6 : Cls 
  409.    Locate 15,2
  410.    Print "AMOS DEFENCE"
  411.    Locate 0,5
  412.    Print "   You are the lone defender of the great"
  413.    Print "  interplanetory starship 'AMOS' and"
  414.    Print "  have to resist a surprise attack from"
  415.    Print "  an alien race intent on the destruction"
  416.    Print "  of the whole Amos race."
  417.    Print ""
  418.    Print "   Attacking ships are loaded with"
  419.    Print "  explosives and try to evade your fire"
  420.    Print "  to make there kamekaze attacks on your"
  421.    Print "  base ship."
  422.    Print ""
  423.    Print "   It is believed they will abandon their"
  424.    Print "  attempt if you can destroy 250 of their"
  425.    Print "  number, but the more you destroy - the"
  426.    Print "  more persistant they become, and they"
  427.    Print "  get very fast and some will target you"
  428.    Print "  instead of the Amos starship."
  429.    Print ""
  430.    Print "   Look out for overhead rotating mines."
  431.    Print "  Get too close and your cosmic dust."
  432.    Print "     P pauses and fire restarts."
  433.    Screen To Front 2
  434.    Wait 250
  435.    Print ""
  436.    Print "          Press any key to start."
  437.    Clear Key : Wait Key 
  438.    Bell 
  439.    Rainbow 0,0,400,0
  440.    Fade 5 : Wait 80
  441.    Amal Off 2
  442.    Screen Close 2
  443. End Proc
  444. Procedure MAKEMINES
  445.    Bob 11,225,246,20
  446.    Channel 11 To Bob 11
  447.    A$="Start: A 0,(20,4)(21,4)(22,4)(23,4); Left: P; P; Let X=X+1; If X<295 Jump Left; A 0,(23,4)(22,4)(21,4)(20,4); Right: P; P; Let X=X-1; If X>1 Jump Right; Jump Start;"
  448.    Amal 11,A$ : Amal On 11
  449.    '
  450.    Bob 12,32,460,20
  451.    Channel 12 To Bob 12
  452.    A$="Start: A 0,(20,4)(21,4)(22,4)(23,4); Left: P; P; Let X=X+1; If X<295 Jump Left; A 0,(23,4)(22,4)(21,4)(20,4); Right: P; P; Let X=X-1; If X>1 Jump Right; Jump Start;"
  453.    Amal 12,A$ : Amal On 12
  454. End Proc
  455. Procedure INITIALISE
  456.    LIVES
  457.    SCORE
  458.    A$="Anim 0,(10,5)(11,5)(12,5)(11,5);"
  459.    A$=A$+"Let R0=1 ; Let RZ=230; " : Rem R0 is the speed factor 
  460.    A$=A$+"A: Let Y=YS(0,RZ); If J1&4 then Jump G ;" : Rem left 
  461.    A$=A$+"B: If J1&8 then Jump H ;" : Rem right  
  462.    A$=A$+"C: Let Y=YS(0,RZ); If J1&1 then Jump E ;" : Rem up 
  463.    A$=A$+"D: If J1&2 then Jump F ;" : Rem down 
  464.    A$=A$+"Jump A ;"
  465.    A$=A$+"G: Let X=X-R0 ; If X>2 Jump C; Let X=2; Jump C; "
  466.    A$=A$+"H: Let X=X+R0 ; If X<284 Jump C; Let X=284; Jump C; "
  467.    A$=A$+"E: Let RZ=RZ-R0 ; If RZ>140 Jump A ; Let RZ=140; Jump A; "
  468.    A$=A$+"F: Let RZ=RZ+R0 ; If RZ<232 Jump A ; Let RZ=235; Jump A; "
  469.    Bob 1,140,230,10
  470.    Channel 1 To Bob 1
  471.    Amal 1,A$
  472.    Get Sprite Palette 
  473.    Make Mask 
  474.    Flash 8,"(e40,8)(c00,8)(800,8)(c00,8)"
  475.    Flash 11,"(ff0,4)(ef0,4)(ee0,4)(ed0,4)(ec0,4)(eb0,4)(ec0,4)(ed0,4)(ee0,4)(ff0,4)"
  476. End Proc
  477. Procedure SCORE
  478.    Screen 3
  479.    Pen 15 : Paper 14
  480.    Locate 17,1
  481.    Print SCORE
  482.    Screen 0
  483. End Proc
  484. Procedure LIVES
  485.    Screen 3
  486.    Pen 15 : Paper 14
  487.    Locate 7,1
  488.    Print LIVES
  489.    Screen 0
  490. End Proc
  491. Procedure NEWSCORE
  492.    Screen 3
  493.    Pen 15 : Paper 14
  494.    Locate 17,1
  495.    Print "    "
  496.    Screen 0
  497. End Proc
  498. Procedure PAUSE
  499.    Amal Freeze 
  500.    TEMPTIME=Timer
  501.    Wait 50
  502.    While Fire(1)=0
  503.    Wend 
  504.    Amal On 
  505.    Clear Key 
  506.    Timer=TEMPTIME
  507. End Proc