home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 301-325 / apd301 / defender / defender.amosSourceCode < prev    next >
AMOS Source Code  |  1991-06-29  |  14KB  |  606 lines

  1. Rem ************************************ 
  2. Rem ** DEFENDER V1.0 by David Boucher ** 
  3. Rem **  (C) 1991 RIPOFFWARE Software  ** 
  4. Rem **           25/8/91              ** 
  5. Rem **      Read the .doc file!       ** 
  6. Rem ************************************ 
  7. Dim LEVEL(160)
  8. Break Off 
  9. Global LEVEL(),ALIEN$,BULLET$,SHOT$,STARSHELL$,STAR$,NOA,TNOA,AMAX,NOB,LASER
  10. Global RLASER,DLASER,SHIELD,MX_SHIELD,DSHIELD,ALIEN,STAGE,FIN,PROB,FUSE
  11. Global FSEQ$,BSEQ$,SCORE,BONUS,HISC,OHS,LHSC,HT$
  12. Procedure MAINLOOP
  13.    SETUP
  14.    HISC_LOAD
  15.    SET_STRINGS
  16.    Do 
  17.       TITLE
  18.       GAME_SETUP
  19.       Do 
  20.          LEVEL_SETUP
  21.          Do 
  22.             Add ALIEN,1,1 To NOA
  23.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  24.             ALIEN_MOVE
  25.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  26.             DROP_BOMB
  27.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  28.             STARSHELL
  29.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  30.             NEW_ALIEN
  31.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  32.             LASER_FIRE
  33.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  34.             PANEL
  35.             If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  36.             GAME_END
  37.             If Mouse Click=2 Then PAUSE
  38.             If FIN>0 Then Exit 
  39.          Loop 
  40.          If Amreg(4)=1 Then SFX[2] : Amreg(4)=0
  41.          LEVEL_END
  42.          Exit If Param=1
  43.       Loop 
  44.    Loop 
  45. End Proc
  46. Procedure SETUP
  47.    Request Off 
  48.    Randomize Timer
  49.    Led Off 
  50.    If Exist(":") Then HT$=Dir$+"DEF.HSC" Else HT$=":DEF.HSC"
  51.    For L=0 To 160
  52.       LEVEL(L)=Peek(Start(9)+L)
  53.    Next 
  54.    Wait 100
  55. End Proc
  56. Procedure SET_STRINGS
  57.    ALIEN$="Let R7=1 A: Pause; Let R7=R7+1; If R7=4 Jump E; Jump F; H:"
  58.    ALIEN$=ALIEN$+"If R6=1 Jump I; Let X=X+R8; Let Y=Y+R9; If X>10 Jump B;"
  59.    ALIEN$=ALIEN$+"Let R8=1; B: If X<310 Jump C;Let R8=-1 C: If Y>10 Jump D:"
  60.    ALIEN$=ALIEN$+"Let R9=1; D: If Y<120 Jump A; Let R9=-1;Jump A;"
  61.    ALIEN$=ALIEN$+"E: Let R7=1;F : If R9<1 Jump G;Let A=R7+5; Jump H;"
  62.    ALIEN$=ALIEN$+"G: Let A=R7+8; Jump H;"
  63.    ALIEN$=ALIEN$+"I: Anim 1,(12,3)(13,3)(14,3)(15,3)(16,3)(17,3)(21,1);"
  64.    ALIEN$=ALIEN$+"J: Pause; If A<21 Jump J; Let X=-10;"
  65.    BULLET$="A: Pause; Let Y=Y+R8 If R6=1 Jump B; If Y<R9 Jump A;"
  66.    BULLET$=BULLET$+"If RA>0 Jump B; If R9=190 Jump B; Let R9=190; Jump A; B:"
  67.    BULLET$=BULLET$+"Anim 1,(18,3)(19,3)(20,3)(21,1); C: Pause; If A<21 Jump C;"
  68.    BULLET$=BULLET$+"Let X=-10; If R6=1 Jump D; Let RA=RA-1; Let RE=1;"
  69.    BULLET$=BULLET$+"If R9<190 Jump D; Let RB=1; D:"
  70.    SHOT$="A: Pause; If K1=0 Jump B; If RC=0 Jump B; Let R9=1; Let RC=RC-1;"
  71.    SHOT$=SHOT$+"Let A=A+1; If A<5 Jump C; Let A=4; B: Let A=2; Let R9=0;"
  72.    SHOT$=SHOT$+"C: Let X=XS(0,XM); Let Y=YS(0,YM); If R6=0 Jump A; Let X=-10"
  73.    STARSHELL$="Let R5=1; A 1,(21,2)(22,2)(23,2)(24,2)(25,2)(26,2); A: Pause;"
  74.    STARSHELL$=STARSHELL$+"If A<24 Jump A; C: Pause; If R6=1 Jump D;"
  75.    STARSHELL$=STARSHELL$+"If R9=0 Jump D; If RD=1 Jump D; Let R9=R9-1; Jump C;"
  76.    STARSHELL$=STARSHELL$+"D: A 1,(26,2)(25,2)(24,2)(23,2)(22,2)(21,2); E:"
  77.    STARSHELL$=STARSHELL$+"If A>21 Jump E; Let X=-10;"
  78.    STAR$="If X=340 Jump B; A: Pause; Let A=28; Move 360,0,180; B:"
  79.    STAR$=STAR$+"Let A=27; Move -360,0,180; Jump A;"
  80.    FSEQ$="(100,5)(300,3)(500,3)(700,3)(900,3)(B00,3)(D00,3)"
  81.    FSEQ$=FSEQ$+"(F00,7)(D00,3)(B00,3)(900,3)(700,3)(500,3)(300,3)"
  82.    BSEQ$="(100,5)(300,3)(500,3)(700,3)(900,3)(B00,3)(D00,3)"
  83.    BSEQ$=BSEQ$+"(F00,7)(D00,3)(B00,3)(900,3)(700,3)(500,3)(300,3)(000,1000)"
  84. End Proc
  85. Procedure TITLE
  86.    Clear Key 
  87.    Unpack 10 To 0
  88.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  89.    Ink 0
  90.    Paper 0
  91.    Double Buffer 
  92.    Autoback 1
  93.    Flash Off 
  94.    Curs Off 
  95.    Hide 
  96.    Priority Reverse On 
  97.    MESSAGE["--CLICK TO CONTINUE--",76,118]
  98.    DIGIT[SCORE,6,73,228]
  99.    DIGIT[HISC,6,183,228]
  100.    STAR[1,3,1]
  101.    STAR[2,56,2]
  102.    Fade 1 To -2
  103.    Music 1
  104.    Wait 30
  105.    Flash 15,FSEQ$
  106.    M$=Space$(40)
  107.    M$=M$+"welcome to ripoffware's latest game: defender!   written in amos by"
  108.    M$=M$+" david boucher.   press left mouse button to start, right to "
  109.    M$=M$+"quit."
  110.    MSCROLL[M$,247]
  111.    Flash Off 
  112.    Fade 1
  113.    For V=63 To 0 Step -1
  114.       Mvolume V
  115.       Wait Vbl 
  116.    Next 
  117.    Music Off 
  118.    Mvolume 63
  119.    Bob Off 
  120.    If Param=2
  121.       Autoback 2
  122.       Cls 0
  123.       Autoback 1
  124.       HISC_SAVE
  125.       Led On 
  126.       Screen Close 0
  127.       End 
  128.    End If 
  129.    Bar 0,0 To 319,125
  130.    PANEL_NOTE[""]
  131.    For STARS=1 To 50
  132.       X=Rnd(319)
  133.       LEVEL[X]
  134.       Y=Rnd(Param-5)
  135.       Plot X,Y,1
  136.    Next 
  137.    Fade 1 To -2
  138.    Wait 30
  139. End Proc
  140. Procedure GAME_SETUP
  141.    Update Every 2
  142.    Change Mouse 4
  143.    Colour 17,$FFF
  144.    Show On 
  145.    Limit Mouse 
  146.    STAGE=0
  147.    SCORE=0
  148.    RLASER=4
  149.    LASER=64
  150.    AMAX=3
  151.    NOA=5
  152.    NOB=9
  153.    BONUS=30
  154.    PROB=25
  155.    FUSE=200
  156.    OHS=HISC
  157.    FIN=0
  158. End Proc
  159. Procedure LEVEL_SETUP
  160.    Inc STAGE
  161.    TNOA=3+STAGE*2
  162.    MX_SHIELD=BONUS+STAGE*7+20
  163.    MX_SHIELD=(MX_SHIELD/15)*15
  164.    SHIELD=MX_SHIELD
  165.    DSHIELD=MX_SHIELD/15
  166.    DLASER=LASER/15
  167.    DIGIT[SCORE,6,73,228]
  168.    DIGIT[STAGE,2,150,228]
  169.    DIGIT[HISC,6,183,228]
  170.    For ALIEN=1 To NOA
  171.       Bob ALIEN,Rnd(320),Rnd(20)-30,6
  172.       Channel ALIEN To Bob ALIEN
  173.       Amal ALIEN,ALIEN$
  174.       Dec TNOA
  175.    Next 
  176.    For BULLET=6 To NOB+6
  177.       Bob BULLET,-10,-10,18
  178.       Channel BULLET To Bob BULLET
  179.    Next 
  180.    Bob 0,-10,-10,2
  181.    Channel 0 To Bob 0
  182.    Amal 0,SHOT$
  183.    Amreg(0)=SHIELD
  184.    Amreg(1)=0
  185.    Amreg(2)=LASER
  186.    Amreg(3)=0
  187.    Amal On 
  188.    Colour 15,(SHIELD/DSHIELD)*256
  189.    ALIEN=0
  190.    FIN=0
  191. End Proc
  192. Procedure ALIEN_MOVE
  193.    X=Amreg(ALIEN,8)
  194.    Y=Amreg(ALIEN,9)
  195.    X=X+Rnd(2)-1
  196.    If Abs(X)>AMAX Then X=AMAX*Sgn(X)
  197.    Y=Y+Rnd(2)-1
  198.    If Abs(Y)>AMAX Then Y=AMAX*Sgn(Y)
  199.    Amreg(ALIEN,8)=X
  200.    Amreg(ALIEN,9)=Y
  201. End Proc
  202. Procedure DROP_BOMB
  203.    BF=0
  204.    For BC=6 To NOB+6
  205.       If X Bob(BC)=-10 Then BF=BC
  206.    Next 
  207.    If Rnd(100)>50 and BF>0
  208.       X=X Bob(ALIEN)
  209.       Y=Y Bob(ALIEN)
  210.       If X>10 and X<310 and Y>10
  211.          Bob BF,X,Y+3,18
  212.          Amal BF,BULLET$
  213.          Amreg(BF,8)=Rnd(1)+1
  214.          LEVEL[X]
  215.          Amreg(BF,9)=Param
  216.          Amal On 
  217.       End If 
  218.    End If 
  219. End Proc
  220. Procedure STARSHELL
  221.    BF=0
  222.    For BC=6 To NOB+6
  223.       If X Bob(BC)=-10 Then BF=BC
  224.    Next 
  225.    If BF>0 and Rnd(10000)<PROB
  226.       Dec PROB
  227.       Bob BF,Rnd(300)+10,Rnd(100)+10,21
  228.       Amal BF,STARSHELL$
  229.       Amreg(BF,9)=Rnd(FUSE)+100
  230.       Amal On BF
  231.       SFX[4]
  232.    End If 
  233. End Proc
  234. Procedure NEW_ALIEN
  235.    For NEW=1 To NOA
  236.       If X Bob(NEW)=-10 and TNOA>0
  237.          Bob NEW,Rnd(320),Rnd(20)-30,6
  238.          Amal NEW,ALIEN$
  239.          Amal On NEW
  240.          Dec TNOA
  241.       End If 
  242.    Next 
  243. End Proc
  244. Procedure LASER_FIRE
  245.    If Amreg(0,9)=1
  246.       SFX[1]
  247.       If Bob Col(0)
  248.          For DEAD=1 To 15
  249.             If Col(DEAD)
  250.                If Amreg(DEAD,6)=0
  251.                   Amreg(DEAD,6)=1
  252.                   SFX[3]
  253.                   If DEAD<=NOA
  254.                      Add SCORE,STAGE*10
  255.                   Else 
  256.                      If Amreg(DEAD,5)=0
  257.                         Add SCORE,STAGE*5
  258.                      Else 
  259.                         Add SCORE,STAGE*20
  260.                         Flash 0,BSEQ$
  261.                         SMART
  262.                      End If 
  263.                   End If 
  264.                   SCD=1
  265.                End If 
  266.             End If 
  267.          Next 
  268.       End If 
  269.    Else 
  270.       If Amreg(2)<LASER
  271.          Amreg(2)=Amreg(2)+RLASER
  272.          If Amreg(2)>LASER : Amreg(2)=LASER : End If 
  273.       End If 
  274.    End If 
  275.    If SCD=1 Then SCORE
  276. End Proc
  277. Procedure PANEL
  278.    If Colour(0)=0 Then Flash Off 
  279.    SHIELD=Amreg(0)
  280.    If SHIELD<0 Then SHIELD=0
  281.    SCOL=SHIELD/DSHIELD
  282.    If SCOL>15 Then SCOL=15
  283.    Colour 15,SCOL*256
  284.    V=Amreg(2)/DLASER
  285.    If V>15 Then V=15
  286.    Colour 17,V*17+3840
  287.    METER[1,V]
  288.    METER[2,SCOL]
  289. End Proc
  290. Procedure GAME_END
  291.    OK=1
  292.    For FIN=1 To 15
  293.       If X Bob(FIN)>-10
  294.          If Amreg(FIN,5)=0
  295.             OK=0
  296.          End If 
  297.       End If 
  298.    Next 
  299.    If TNOA>0 Then OK=0
  300.    FIN=0
  301.    If Amreg(1)=1 Then FIN=1
  302.    If OK=1 Then FIN=2
  303. End Proc
  304. Procedure LEVEL_END
  305.    If FIN=1
  306.       Amreg(3)=1
  307.       SFX[7]
  308.       For OFF=0 To 15
  309.          If X Bob(OFF)>0 : Amreg(OFF,6)=1 : End If 
  310.       Next 
  311.       Flash Off 
  312.       Colour 0,0
  313.       C=$F00
  314.       Fade 2,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C,C
  315.       Wait 30
  316.       Fade 2
  317.       Wait 30
  318.       Amal Off 
  319.       Bob Off 
  320.       Hide 
  321.       Autoback 2
  322.       Cls 0
  323.       Autoback 1
  324.       MESSAGE["GAME OVER",124,30]
  325.       MESSAGE["THE CITY HAS BEEN DESTROYED!",48,50]
  326.       MESSAGE["YOUR SCORE:",116,70]
  327.       DIGIT[SCORE,6,128,85]
  328.       If OHS<HISC
  329.          MESSAGE["THIS IS A NEW HIGH SCORE, WELL DONE!",16,110]
  330.       End If 
  331.       MESSAGE["CLICK TO CONTINUE..",84,130]
  332.       Fade 1 To -2
  333.       Wait 30
  334.       CLICK
  335.       Fade 1
  336.       Wait 30
  337.       Screen Close 0
  338.       DEAD=1
  339.    Else 
  340.       Amreg(3)=1
  341.       Amreg(0,6)=1
  342.       SFX[6]
  343.       For AD=1 To 20
  344.          SFX[9]
  345.          Add SCORE,STAGE*5
  346.          SCORE
  347.       Next 
  348.       If STAGE<20
  349.          BONUS=SHIELD
  350.          SH=SHIELD/DSHIELD
  351.          LA=Amreg(2)/DLASER
  352.          Do 
  353.             Amreg(0)=SH*DSHIELD
  354.             Amreg(2)=LA*DLASER
  355.             PANEL
  356.             If SH<16 : Inc SH : Add SCORE,STAGE : SFX[9] : End If 
  357.             If LA<16 : Inc LA : End If 
  358.             SCORE
  359.             Exit If SH>15 and LA>15
  360.          Loop 
  361.       Else 
  362.          WIN
  363.          DEAD=1
  364.       End If 
  365.    End If 
  366. End Proc[DEAD]
  367. Procedure SFX[N]
  368.    If N=1
  369.       Sample 1 To 1
  370.       P=20+(Amreg(2)/DLASER)
  371.       Play 1,P,0
  372.    End If 
  373.    If N=2
  374.       Sample 2 To 2
  375.       P=25+Rnd(5)
  376.       Play 2,P,0
  377.    End If 
  378.    If N=3
  379.       Sample 3 To 3
  380.       P=30+Rnd(5)
  381.       Play 3,P,0
  382.    End If 
  383.    If N=4
  384.       Sample 4 To 4
  385.       Play 4,35,0
  386.    End If 
  387.    If N=5
  388.       Sample 5 To 4
  389.       Play 4,25,0
  390.    End If 
  391.    If N=6
  392.       Sample 6 To 14
  393.       Play 14,15,75
  394.    End If 
  395.    If N=7
  396.       Sample 7 To 15
  397.       Play 15,20,0
  398.    End If 
  399.    If N=8
  400.       Sample 8 To 15
  401.       Play 15,35,0
  402.    End If 
  403.    If N=9
  404.       Sample 9 To 15
  405.       Play 15,20,2
  406.    End If 
  407. End Proc
  408. Procedure WIN
  409.    Fade 1
  410.    Wait 20
  411.    Amal Off 
  412.    Bob Off 
  413.    Hide 
  414.    SCORE=SCORE*2
  415.    If HISC<SCORE Then HISC=SCORE
  416.    Unpack 10 To 0
  417.    Palette 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  418.    DIGIT[SCORE,6,73,228]
  419.    DIGIT[STAGE,2,150,228]
  420.    DIGIT[HISC,6,183,228]
  421.    STAR[1,85,1]
  422.    STAR[2,123,2]
  423.    Ink 0
  424.    Bar 0,0 To 319,58
  425.    Bar 0,87 To 319,125
  426.    Screen Copy 0,0,58,319,87 To 0,0,90
  427.    Bar 0,58 To 319,87
  428.    MESSAGE["CONGRATULATIONS!",96,10]
  429.    MESSAGE["YOU HAVE SAVED THE CITY",68,30]
  430.    MESSAGE["FROM THE ALIEN HORDES",76,40]
  431.    MESSAGE["YOU HAVE TRULY EARNED THE TITLE:",32,70]
  432.    PANEL_NOTE["CLICK TO CONTINUE"]
  433.    Fade 1 To -2
  434.    SFX[8]
  435.    Wait 30
  436.    Flash 15,FSEQ$
  437.    CLICK
  438.    Flash Off 
  439.    Fade 1
  440.    Wait 30
  441.    Screen Close 0
  442. End Proc
  443. Procedure PAUSE
  444.    Amal Freeze 
  445.    X=X Mouse
  446.    Y=Y Mouse
  447.    Hide 
  448.    Sprite 1,X Mouse,Y Mouse,1
  449.    PANEL_NOTE["PAUSED - LEFT MOUSE BUTTON TO UNPAUSE"]
  450.    CLICK
  451.    PANEL_NOTE[""]
  452.    Sprite Off 1
  453.    X Mouse=X
  454.    Y Mouse=Y
  455.    Show 
  456.    Amal On 
  457. End Proc
  458. Procedure SCORE
  459.    DIGIT[SCORE,6,73,228]
  460.    If SCORE>HISC
  461.       HISC=SCORE
  462.       DIGIT[HISC,6,183,228]
  463.    End If 
  464. End Proc
  465. Procedure SMART
  466.    For OFF=1 To 15
  467.       If X Bob(OFF)>0 : Amreg(OFF,6)=1 : Add SCORE,STAGE : End If 
  468.    Next 
  469.    SFX[5]
  470.    SCORE
  471. End Proc
  472. Procedure LEVEL[L]
  473.    If L<161 Then V=LEVEL(L) Else V=LEVEL(160-(L-160))
  474. End Proc[V]
  475. Procedure METER[M,V]
  476.    If V=16 Then V=15
  477.    V=77+(15-V)
  478.    If M=1
  479.       Paste Icon 6,232,V
  480.    Else 
  481.       Paste Icon 250,232,Hrev(V)
  482.    End If 
  483. End Proc
  484. Procedure DIGIT[NUMBER,L,X,Y]
  485.    Shared NUM$
  486.    If NUMBER<0
  487.       NUM$=String$(":",L)
  488.    Else 
  489.       NUM$=Right$(String$("0",L)+Str$(NUMBER)-" ",L)
  490.    End If 
  491.    For DIGIT=1 To L
  492.       Paste Icon X,Y,Asc(Mid$(NUM$,DIGIT,1))-47
  493.       Add X,11
  494.    Next 
  495. End Proc
  496. Procedure MSCROLL[MESSAGE$,Y]
  497.    MESSAGE$=Upper$(MESSAGE$)
  498.    EPOS=Len(MESSAGE$)
  499.    POS=1
  500.    Def Scroll 1,0,Y To 320,Y+10,-4,0
  501.    Do 
  502.       OFS=Varptr(MESSAGE$)-1
  503.       Paste Icon 309,Y,Peek(OFS+POS)-20
  504.       Add POS,1,1 To EPOS
  505.       SCR=0
  506.       Do 
  507.          Inc SCR
  508.          Scroll 1
  509.          Wait Vbl 
  510.          Exit If SCR=2
  511.          MICE=Mouse Click
  512.          Exit If MICE>0,2
  513.       Loop 
  514.    Loop 
  515. End Proc[MICE]
  516. Procedure MESSAGE[MESSAGE$,X,Y]
  517.    MESSAGE$=Upper$(MESSAGE$)
  518.    For POS=1 To Len(MESSAGE$)
  519.       Paste Icon X,Y,Asc(Mid$(MESSAGE$,POS,1))-20
  520.       Add X,8
  521.    Next 
  522. End Proc
  523. Procedure PANEL_NOTE[MESSAGE$]
  524.    Ink 0
  525.    Bar 0,247 To 319,255
  526.    If MESSAGE$="" Then Pop Proc
  527.    X=(320-(Len(MESSAGE$)*8))/2
  528.    MESSAGE[MESSAGE$,X,247]
  529. End Proc
  530. Procedure STAR[N,Y,D]
  531.    Update Every 1
  532.    If D=1 Then Bob N,-20,Y,27 Else Bob N,340,Y,28
  533.    Channel N To Bob N
  534.    Amal N,STAR$
  535.    Amal On N
  536. End Proc
  537. Procedure CLICK
  538.    While MICE<>1
  539.       MICE=Mouse Click
  540.    Wend 
  541.    SFX[4]
  542. End Proc
  543. Procedure HISC_LOAD
  544.    On Error Goto FAULT1
  545.    If Exist(HT$)
  546.       Open In 1,HT$
  547.       Input #1,HI
  548.       Close 1
  549.       On Error Goto 0
  550.       If HI>0 and HI<1000000
  551.          HISC=HI
  552.          LHSC=HI
  553.       End If 
  554.    End If 
  555.    ABORT1:
  556.    Pop Proc
  557.    FAULT1:
  558.    Resume ABORT1
  559. End Proc
  560. Procedure HISC_SAVE
  561.    On Error Goto FAULT2
  562.    If HISC>LHSC
  563.       Open Out 1,HT$
  564.       On Error Goto 0
  565.       Print #1,HISC
  566.       Close 1
  567.       Wait 300
  568.    End If 
  569.    ABORT2:
  570.    Pop Proc
  571.    FAULT2:
  572.    If Errn=84 or Errn=86
  573.       If Errn=84
  574.          MESSAGE["THIS DISK IS WRITE PROTECTED!",44,30]
  575.          MESSAGE["WRITE ENABLE YOUR DISK AND SELECT",28,90]
  576.       Else 
  577.          MESSAGE["CAN'T FIND THE GAME DISK!",60,30]
  578.          MESSAGE["INSERT GAME DISK AND SELECT",52,90]
  579.       End If 
  580.       MESSAGE["DO YOU WANT TO SAVE THE HIGH SCORE?",20,60]
  581.       MESSAGE["RETRY IF YOU DO,",96,100]
  582.       MESSAGE["OTHERWISE SELECT CANCEL",68,110]
  583.       MESSAGE[" LEFT MOUSE-RETRY    RIGHT MOUSE-CANCEL ",0,150]
  584.       Fade 1 To -2
  585.       Wait 30
  586.       MICE=0
  587.       While MICE=0
  588.          MICE=Mouse Click
  589.       Wend 
  590.       Fade 1
  591.       Wait 30
  592.       Cls 0
  593.       If MICE=2 : Resume ABORT2 : End If 
  594.       Resume 
  595.    End If 
  596.    MESSAGE["CAN'T SAVE THE HIGH SCORE!",56,60]
  597.    MESSAGE["CLICK TO CONTINUE",92,90]
  598.    Fade 1 To -2
  599.    Wait 30
  600.    CLICK
  601.    Fade 1
  602.    Wait 30
  603.    Cls 0
  604.    Resume ABORT2
  605. End Proc
  606. MAINLOOP