home *** CD-ROM | disk | FTP | other *** search
/ AMOS PD CD / amospdcd.iso / 101-125 / apd123 / autoexec.amos / autoexec.amosSourceCode next >
AMOS Source Code  |  1982-03-29  |  41KB  |  1,367 lines

  1. Set Buffer 20
  2. Screen Open 0,320,200,2,Lowres : Wait Vbl : Bell : Curs Off : Flash Off : Cls 0
  3. Dir$="APD123:"
  4. Dim R(9),DX(7),DY(7),PT(20),PTX(20),PTY(20),BX(20),BY(20),BR(20),BT(20),BRT(3,2)
  5. Dim PD$(160),COMP(5),COMP$(5),MP(80,4),MD(80,4),MES$(3),B(14),AMOS$(3),MAP$(10)
  6. Dim LVL$(10),LTXT$(10),CDX(15),CDY(15)
  7. No Icon Mask 
  8. Hide On 
  9. Music Off 
  10. CREDITS
  11. Do 
  12.    CHEAT=0
  13.    Load "adverts.abk",11
  14.    Screen Open 0,288,176,16,Lowres
  15.    Curs Off : Flash Off : Cls 0
  16.    Hide On 
  17.    Screen Display 0,144,,288,
  18.    Get Icon Palette 
  19.    Screen Open 2,320,208,16,Lowres
  20.    Curs Off : Flash Off : Cls 0
  21.    Get Icon Palette 
  22.    Screen Hide 2
  23.    Screen Open 1,320,80,16,Lowres
  24.    Curs Off : Flash Off : Cls 0 : Get Icon Palette 
  25.    Screen Display 1,,222,,80
  26.     Extension_5_0084 16,16
  27.     Extension_5_0026 0,0 To 320,208
  28.    If Length(6)=0
  29.       Reserve As Data 6,1604
  30.    End If 
  31.    Screen 0
  32.    Double Buffer 
  33.    Autoback 0
  34.    Bob Update Off 
  35.    S=4
  36.    Gosub RDBITS
  37.    LDPD
  38.    Limit Bob 0,0 To 288,176
  39.    LIVES=5 : SPADES=0 : SCORE=0 : DISKS=0 : KEYS=0
  40.    SETDISP
  41.    S$=""
  42.    For A=0 To 255
  43.       S$=S$+Chr$((A mod 128)*2)
  44.    Next A
  45.    Set Wave 2,S$
  46.    Wave 2 To 8
  47.    Set Envel 2,0 To 1,63
  48.    Set Envel 2,1 To 20,63
  49.    Set Envel 2,2 To 20,0
  50.    LVL=0
  51.    SCORE=0
  52.    CAR=0
  53.    While LVL<11
  54.       If MAP$(LVL)="" : NDLVL=-1 : LVL=11
  55.       Else 
  56.          If LIVES>0
  57.             Erase 6 : Reserve As Data 6,1604
  58.             Bload MAP$(LVL),Start(6)
  59.             HIX= Extension_5_00BC *16-288 : Rem hix=mapx*xsize-display width+16
  60.             HIY= Extension_5_00C8 *16-176 : Rem hiy=mapy*ysize-display height+16 
  61.             CARX=-1
  62.             Gosub SETBADDIES
  63.             Gosub LVLDATA
  64.             PTP=0
  65.             NDLVL=0
  66.             Music 1
  67.             Screen 0
  68.             If Extension_5_0156(7,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,1)>0
  69.                Colour 8,$445 : Colour 9,$557
  70.                Colour 10,$889 : Colour 11,$BAB
  71.             Else 
  72.                Get Icon Palette 
  73.             End If 
  74.          End If 
  75.       End If 
  76.       Wait Vbl 
  77.       PIGHIT=0
  78.       BIGBON=0
  79.       While LIVES>0 and NDLVL>=0
  80.          MX= Extension_5_0156(0,1,2 To Extension_5_00BC -1, Extension_5_00C8 -1,1)*16
  81.          MY= Extension_5_0172(0,1,2 To Extension_5_00BC -1, Extension_5_00C8 -1,1)*16
  82.          MX=MX-144 : X=144 : If MX<0 : X=Max(16,X+MX) : MX=0 : End If 
  83.          MY=MY-88 : Y=88 : If MY<0 : Y=Max(16,Y+MY) : MY=0 : End If 
  84.          S=4
  85.          HXO=-1
  86.          R=0 : LK=0
  87.          OSCORE=-1
  88.          PIGX=0
  89.          Bob Off 
  90.          COPFLAG=0
  91.          XCOP=-32
  92.          YCOP=-32
  93.          ROCKX=-1
  94.          If CAR=1 : S=CARS : End If 
  95.          CAR=0 : CARS=4
  96.          DIE=0
  97.          DEAD=0
  98.          T=0
  99.          While DEAD=0 and NDLVL>=0
  100.             GTG=1-GTG
  101.             Screen 2
  102.             MXO=MX : MYO=MY : XO=X : YO=Y
  103.             NS=1 : HX=MX/16 : HY=MY/16
  104.             FX=MX mod 16
  105.             FY=MY mod 16
  106.             If(HXO<>HX) or HYO<>HY or HXO=-1 Then Gosub NICEMAP Else Wait Vbl 
  107.             HXO=HX : HYO=HY
  108.             If PTP>0 and DIE=0 : Gosub PTTILE : End If 
  109.             Screen 0
  110.             Bob Clear 
  111.             Screen Copy 2,FX,FY,288+FX,176+FY To Logic(0),0,0
  112.             If CAR=0
  113.                If DIE=0
  114.                   Bob 1,X,Y,R*2+T+1
  115.                Else 
  116.                   Bob 1,X,Y,(DIE+11)*2+T+1
  117.                End If 
  118.             Else 
  119.                Bob 1,X,Y,75+R
  120.             End If 
  121.             Gosub BADDIES
  122.             If CARX>0
  123.                Gosub CARSHOW
  124.             End If 
  125.             If PIGX>0
  126.                Gosub PIGEON
  127.             End If 
  128.             If EGGX>0
  129.                Gosub EGG
  130.             End If 
  131.             If COPFLAG
  132.                Gosub COPCHOP
  133.             End If 
  134.             If ROCKX>0
  135.                Gosub ROCKET
  136.             End If 
  137.             If SCORE<>OSCORE
  138.                Gosub DISPSCORE
  139.             End If 
  140.             On DEMO Gosub D1,D2,D3,D4,D5,D6,D7,D8
  141.             Screen 0
  142.             TLK=0
  143.             PT=0
  144.             If TENNIS=1
  145.                If MY<TENY-32
  146.                   MY=MY+Min(Abs(TENY-MY),16) : TLK=1
  147.                   Y=Y-Min(Abs(TENY-MY),16)
  148.                   MX=(MX/16)*16
  149.                   MY=(MY/16)*16
  150.                   TENPS=0 : TENCS=0 : TENBX=128 : TENBY=48 : TENDX=4 : TENDY=1
  151.                   TENPY=48 : TENCY=48
  152.                Else 
  153.                   Gosub PLYTENNIS
  154.                   PT=1
  155.                   PT2=1
  156.                End If 
  157.             End If 
  158.             If MY>0 and Y<100 and TENNIS<>1
  159.                MY=MY-8 : Y=Y+8 : TLK=1
  160.             End If 
  161.             If PT=0 and PT2=1 : For A=25 To 29 : Bob A,999,1,1 : Next A : PT2=0 : End If 
  162.             Bob Draw 
  163.             Screen Swap 
  164.             C=Bob Col(1,2 To 2+NBAD)
  165.             If C and DIE=0
  166.                If CAR=0
  167.                   DIE=1 : TT=0
  168.                Else 
  169.                   SCRE=SCRE+1000
  170.                   For A=2 To 2+NBAD
  171.                      If Col(A)
  172.                         BX(A-2)=-1 : A=999
  173.                      End If 
  174.                   Next A
  175.                End If 
  176.             End If 
  177.             C=Bob Col(1,34 To 34)
  178.             If C
  179.                CARS=S
  180.                CAR=1
  181.                S=0
  182.                R=12 : CDX=0 : CDY=1
  183.                CARX=-1
  184.                Bob 34,999,1,1
  185.                DLINE["Skid Pan 2, 'The Chase' Coming to Liscenceware Soon !"]
  186.             End If 
  187.             If DIE>0 : V=0 : Inc TT
  188.                If TT>2 : DIE=2 : T=Min(TT-3,1) : End If 
  189.                If TT=5 : DEAD=1 : Wait 20 : Sam Play 8,6 : End If 
  190.             End If 
  191.             If LK=0 and TLK=0
  192.                DXO=DX : DYO=DY
  193.                If ICE>0
  194.                   If CAR=0
  195.                      If DX=0 and DY=0
  196.                         DX=Rnd(2)-1 : DY=Rnd(2)-1
  197.                         R=Rnd(7)
  198.                      End If 
  199.                      X=X+DX*S : Y=Y+DY*S
  200.                      R=(R+1) mod 8
  201.                   Else 
  202.                      SKID=1
  203.                      X=X+SDX*S : Y=Y+SDY*S
  204.                      R=(R+RD) mod 16
  205.                   End If 
  206.                   Dec ICE : M=2
  207.                Else 
  208.                   If CAR=0
  209.                      DX=0 : DY=0 : M=0
  210.                      If Jleft(1) : X=X-S : DX=-1 : M=1 : End If 
  211.                      If Jright(1) : X=X+S : DX=1 : M=1 : End If 
  212.                      If Jup(1) : Y=Y-S : DY=-1 : M=1 : End If 
  213.                      If Jdown(1) : Y=Y+S : DY=1 : M=1 : End If 
  214.                   Else 
  215.                      M=0
  216.                      DX=CDX : DY=CDY
  217.                      If Jleft(1) : DR=-1 : R=R-1 : R=(R+16) mod 16 : M=1 : End If 
  218.                      If Jright(1) : DR=1 : R=R+1 : R=R mod 16 : M=1 : End If 
  219.                      If M=1 and Fire(1) and S=4 : Inc SKKK
  220.                      Else 
  221.                      SKKK=0 : End If 
  222.                      If SKKK>3+Rnd(6) : SKID=S : End If 
  223.                      If SKID=0
  224.                         DX=CDX(R) : DY=CDY(R)
  225.                         SDX=DX : SDY=DY
  226.                      Else 
  227.                         Sam Play 8,7,30000
  228.                         DX=SDX : DY=SDY
  229.                         R=R+DR : R=R mod 16
  230.                         If Fire(1)=0 : SKID=0 : End If 
  231.                      End If 
  232.                      If SKID=0 or Rnd(2)=1
  233.                         Dec S
  234.                      End If 
  235.                      If Fire(1) and SKID=0 : Add S,2 : S=Min(4,S) : End If 
  236.                      If Jdown(1) : Dec S : End If 
  237.                      If Jup(1)
  238.                         DX=Sgn(DX) : DY=Sgn(DY)
  239.                         CARX=MX+X-16 : CARY=MY+Y : S=CARS : CAR=0 : R=0
  240.                      End If 
  241.                      S=Max(0,S)
  242.                      If S>0
  243.                         X=X+DX*S : Y=Y+DY*S
  244.                         M=4
  245.                      Else 
  246.                         SKID=0
  247.                      End If 
  248.                      CDX=DX : CDY=DY
  249.                   End If 
  250.                End If 
  251.                If SPIN=1
  252.                   R=Rnd(7) : X=X+8*DX(R) : Y=Y+DY(R)*8 : DX=DX(R) : DY=DY(R) : M=1
  253.                   SPIN=0
  254.                End If 
  255.                If M>0
  256.                   T=1-T : If M=1 and DIE=0 and CAR=0 : R=R((DX+1)+(DY+1)*3) : End If 
  257.                If X<160 and DX<0 : MX=Max(MX-S*M,0) : If MX=0 : X=Max(16,X) : Else X=160 : End If : End If 
  258.                If X>160 and DX>0 : MX=Min(HIX,MX+S*M) : If MX=HIX : X=Min(X,288) : Else X=160 : End If : End If 
  259.                If Y<100 and DY<0 : MY=Max(MY-S*M,0) : If MY=0 : Y=Max(16,Y) : Else Y=100 : End If : End If 
  260.                If Y>100 and DY>0 : MY=Min(HIY,MY+S*M) : If MY=HIY : Y=Min(160,Y) : Else Y=100 : End If : End If 
  261.                Else 
  262.                   DX=DXO : DY=DYO
  263.                End If 
  264.             End If 
  265.             If Rnd(50)>48 and PIGX=0 and PIGHIT=0 and LVL mod 2=1
  266.                PIGX=MX+X : PIGY=MY+192 : Sam Play 8,8,15000
  267.             End If 
  268.             If LK=0
  269.                TX=(MX+X)/16 : TY=(Y+MY)/16
  270.                V= Extension_5_0142(TX,TY,0)
  271.             End If 
  272.             TENNIS=0
  273.             If(V=1 or V=64) and CAR=0 : Gosub FALL : End If 
  274.             If V=2 : Gosub MNE : End If 
  275.             If V=3 : Gosub PIT : End If 
  276.             If V>=128 : Gosub WALL : End If 
  277.             If V=4 : ICE=1 : End If 
  278.             If V=6 and M=0 : TENNIS=1 : TENY=MY+Y : End If 
  279.             If V=7
  280.                If CAR=0
  281.                   Gosub ROAD
  282.                Else 
  283.                   RTIME=0
  284.                End If 
  285.             Else 
  286.                If CAR>0
  287.                   Gosub ROAD
  288.                Else 
  289.                   RTIME=0
  290.                End If 
  291.             End If 
  292.             If V=16 or V=17
  293.                If CAR=0
  294.                   Gosub PRTAL
  295.                Else 
  296.                   Gosub WALL
  297.                End If 
  298.             End If 
  299.             If CAR=0
  300.                If V=18 or V=19 : Gosub WOBILDON : End If 
  301.                If V=39 : Gosub KEY : End If 
  302.                If V=32 : Gosub DISK : End If 
  303.                If V=33 : Gosub AMOSBOX : End If 
  304.                If V>33 and V<39 : Gosub COMPUTERBIT : End If 
  305.                If V=41 : Gosub COMPUTERBIT : End If 
  306.                If V=40 : Gosub SPADE : End If 
  307.                If V=8 and ROCKX<1 : Gosub LAUNCH : End If 
  308.             End If 
  309.             If V=5 : SPIN=1 : Sam Play 8,6 : End If 
  310.             TX=(MX+X)/16 : TY=(Y+MY)/16
  311.             A$=Inkey$
  312.             If A$<>"" : Gosub KEYCHECK : End If 
  313.             If Fire(1) and V<128 and DIE=0 and FO=0 and CAR=0
  314.                Gosub FROUTINE
  315.             End If 
  316.             FO=Fire(1)
  317.          Wend : If DEAD : Dec LIVES : End If 
  318.       Wend 
  319.       If LIVES<=0
  320.          LVL=11 : Rem end game 
  321.       Else 
  322.          Inc LVL
  323.          If LVL<12 and LIVES>0
  324.             Gosub NDLEVEL
  325.          End If 
  326.       End If 
  327.    Wend 
  328.    Erase 6
  329.    Reserve As Data 6,3204
  330.    Screen Close 2
  331.    Screen Close 0
  332.    Screen Close 1
  333.    Erase 11
  334.    If LIVES<=0
  335.       Bload "MGgameover.map",Start(6)
  336.       Screen Open 0,320,208,16,Lowres
  337.       Curs Off : Flash Off : Get Icon Palette : Cls 0
  338.       Screen Display 0,144,56,304,192
  339.        Extension_5_0026 0,0 To 320,192
  340.        Extension_5_0006 0,0
  341.       X=1
  342.       Clear Key 
  343.       Double Buffer 
  344.       Autoback 0
  345.       Auto View Off 
  346.       Update Off 
  347.       Bob Off 
  348.       Music Off 
  349.       Amal Off 
  350.       T=0
  351.       M= Extension_5_00BC 
  352.       For A=0 To 15 : Colour A+16,Colour(A)
  353.       Next A
  354.       While Mouse Key=0 and(Inkey$="") and Fire(1)=0
  355.          Y=Sin(Q#)*8+8
  356.          Q#=Q#+0.1
  357.          If Q#>Pi# : Q#=0 : End If 
  358.          Inc T : T=T mod 16
  359.          If T=0
  360.             Wait Vbl 
  361.             Screen Copy Logic(0),16,0,320,192 To Logic(0),0,0
  362.              Extension_5_004E X,0
  363.             View 
  364.             Screen Offset 0,0,Y
  365.             Screen Swap 
  366.             View 
  367.             Screen Copy Physic(0) To Logic(0)
  368.             Inc X : X=X mod M
  369.             View 
  370.          Else 
  371.             Screen Offset 0,T,Y
  372.             View 
  373.             View 
  374.             Wait Vbl 
  375.             View 
  376.          End If 
  377.       Wend 
  378. Auto View On 
  379.    Else 
  380.       Load "engame.abk",11
  381.       Auto View Off 
  382.       Screen Open 1,320,20,16,Lowres
  383.       Curs Off : Flash Off : Cls 0
  384.       Screen Hide 1
  385.       Unpack 11 To 0
  386.       Auto View On 
  387.       Screen 1
  388.       Ink 1,0,0
  389.       Text 0,8,"Arnie can now write his"
  390.       Get Block 2,0,0,320,10,1
  391.       Screen 0
  392. Get Block 1,0,0,320,12
  393.       Put Block 2,0,0
  394.       Screen 1 : Cls 0
  395. Wait 200
  396.       Text 0,8,"Amazing AMOS article"
  397.       Get Block 2,0,0,320,10,1
  398.       Screen 0
  399. Put Block 1,0,0
  400.       Put Block 2,0,0
  401.       Wait 200
  402.       Screen 1 : Cls 0 : Ink 1,0,0
  403.       Text 0,8,"Once he puts 50p in the meter !"
  404.       Get Block 2,0,0,320,10
  405.       Screen 0
  406.       Fade 1,0,$FFF,$FFF,0,0,0,0,0,0,0,0,0,0,0,0,0
  407.  Cls 0
  408. Put Block 2,0,0
  409. For A=91 To 94
  410. Bob 1,173,124,A
  411. Bob Update 
  412. Wait 5
  413. Wait Vbl 
  414. Next A
  415.       While Mouse Key=0 and Fire(1)=0 and(Inkey$="")
  416.       Wend 
  417.    End If 
  418. Loop 
  419. DISPSCORE:
  420. Screen 1
  421. Put Block 3,16,20
  422. A$=Right$("0000000"+Mid$(Str$(SCORE),2),7)
  423. For A=1 To 7
  424.    Paste Bob 17+A,16+A*6,34+Val(Mid$(A$,A,1))
  425. Next A
  426. OSCORE=SCORE
  427. Put Block 4,288,20
  428. A=0 : C=0 : While A<LIVES
  429.    Paste Bob 293,20+A*5,30 : Inc A : Inc C
  430. Wend 
  431. A=0 : While A<KEYS and A<4 and C<12
  432.    Paste Bob 292,20+C*5,29 : Inc A : Inc C
  433. Wend 
  434. A=0 : While A<SPADES and A<4 and C<12
  435.    Paste Bob 290,20+C*5,31 : Inc A : Inc C
  436. Wend 
  437. Ink 15
  438. Return 
  439. CARSHOW:
  440. If CARX>=MX and CARX<=MX+302 and CARY>=MY and CARY<=MY+192
  441.    Bob 34,CARX-MX,CARY-MY,81
  442. Else 
  443.    Bob 34,999,1,1
  444. End If 
  445. Return 
  446. LAUNCH:
  447. ROCKX=MX+X : ROCKY=MY+Y : ROCKR=R
  448. PT[7,TX,TY]
  449. Return 
  450. ROAD:
  451. If RTIME<20
  452.    Inc RTIME
  453. Else 
  454.    COPFLAG=1
  455. End If 
  456. Return 
  457. WOBILDON:
  458.  Extension_5_00EC 1,8,9
  459. HXO=-1
  460. Return 
  461. FROUTINE:
  462. V2= Extension_5_0142(TX+DX(R),TY+DY(R),1)
  463. If SPADES>0
  464.    Sam Play 8,5
  465.    Dec SPADES : SCORE=SCORE+50
  466.    PT[V2,TX+DX(R),TY+DY(R)]
  467. Else 
  468.    V3= Extension_5_0096(TX+DX(R),TY+DY(R))
  469.    If V2<>V3 and V3<>6
  470.       Sam Play 8,4
  471.       If V3<>97
  472.          PT[97,TX+DX(R),TY+DY(R)]
  473.       Else 
  474.          PT[7,TX+DX(R),TY+DY(R)]
  475.       End If 
  476.    End If 
  477. End If 
  478. Return 
  479. SPADE:
  480. Inc SPADES
  481. Sam Play 8,4
  482. PT[7,TX,TY]
  483. SCORE=SCORE+100
  484. Sam Play 8,1
  485. Return 
  486. COMPUTERBIT:
  487. If V=41 : V2=39
  488. Else V2=V
  489. End If 
  490. COMP(V2-34)=1
  491. SHWCOMP
  492. SCORE=SCORE+(LVL+1)*5000
  493. PT[7,TX,TY]
  494. Sam Play 8,6
  495. BIGBON=1
  496. NDLVL= Extension_5_0156(8,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  497. Return 
  498. AMOSBOX:
  499. Inc AMBOX
  500. SHWGOODIES[AMBOX-1]
  501. If AMBOX=2 : S=6 : DLINE["AMOS TOME makes map games easier !"] : End If 
  502. SCORE=SCORE+10000
  503. PT[7,TX,TY]
  504. Sam Play 8,6
  505. BIGBON=1
  506. NDLVL= Extension_5_0156(8,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  507. Return 
  508. DISK:
  509. Inc DISKS
  510. SHWDISK[DISKS]
  511. SCORE=SCORE+500
  512. PT[7,TX,TY]
  513.  Extension_5_00A8 7,TX,TY
  514. NDLVL= Extension_5_0156(8,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  515. If BIGBON=0
  516.    NDLVL=0
  517. End If 
  518. Return 
  519. KEY:
  520. Inc KEYS
  521. Sam Loop Off : Sam Play 8,4
  522. PT[7,TX,TY]
  523. SCORE=SCORE+250
  524. Return 
  525. PRTAL:
  526. If KEYS=0 : X=XO : Y=YO : MX=MXO : MY=MYO
  527. Else 
  528.    Dec KEYS : Sam Loop Off : Sam Play 8,5 : SCORE=SCORE+5
  529.    PT[32+(V-16)*7,TX,TY]
  530. End If 
  531. Return 
  532. WALL:
  533. MX=MXO : MY=MYO : X=XO : Y=YO
  534. If CAR=1
  535.    SDX=Rnd(1)*(-SDX)
  536.    SDY=Rnd(1)*(-SDY)
  537.    SKID=1
  538.    Sam Play 8,2
  539. End If 
  540. Return 
  541. PIT:
  542. PT[5+WP*24,TX,TY]
  543. Return 
  544. PTTILE:
  545. For A=0 To PTP-1
  546.    PT=PT(A) : PTX=PTX(A) : PTY=PTY(A)
  547.    If PTX>=0 and PTX< Extension_5_00BC and PTY>0 and PTY< Extension_5_00C8 
  548.        Extension_5_00A8 PT,PTX,PTY
  549.       TX=PTX*16-(MXO/16)*16 : TY=PTY*16-(MYO/16)*16
  550.       If TX>=0 and TX<=320 and TY>=0 and TY<=192
  551.          Screen 2 : Paste Icon TX,TY,PT+1
  552.       End If 
  553.    End If 
  554. Next A
  555. PTP=0
  556. Return 
  557. MNE:
  558. Gosub FALL : TT=1 : Sam Loop Off : Sam Play 8,2
  559. PT[7,TX,TY]
  560. Return 
  561. FALL:
  562. DIE=1 : LK=1 : TT=0 : T=0 : MX=(MX/16)*16
  563. X=((X)/16)*16+8 : MY=(MY/16)*16 : Y=((Y)/16)*16+8
  564. PT[6,TX,TY]
  565. Sam Loop Off : Sam Play 8,7
  566. Return 
  567. LVLDATA:
  568. Unpack 11 To 2
  569. Flash Off 
  570. Screen Hide 2
  571. Screen 0
  572. Fade 1 To 2
  573. GX=G mod 3
  574. GY=G/3
  575. GX=GX*93 : GY=GY*127
  576. Cls 0
  577. Screen Copy 2,96,184,209,214 To Logic(0),0,0
  578. Screen Copy 2,132,131,171,183 To Logic(0),36,32
  579. Screen Copy 2,190,133,279,151 To Logic(0),160,0
  580. Ink 1,0
  581. A$="LEVEL"+Str$(LVL+1)+"|"+LVL$(LVL)+"|"+LTXT$(LVL)
  582. L=0
  583. While A$<>""
  584.    I=Instr(A$,"|")
  585.    If I>0 and I<24
  586.       L$=Left$(A$,I-1)
  587.       L$=Left$(L$+Space$(24),24)
  588.       A$=Mid$(A$,I+1)
  589.    Else 
  590.       L$=Left$(A$+Space$(24),24)
  591.       A$=Mid$(A$,25)
  592.    End If 
  593.    While Right$(L$,1)<>" "
  594.       A$=Right$(L$,1)+A$
  595.       L$=Left$(L$,Len(L$)-1)
  596.    Wend 
  597.    Text 100,40+L,L$
  598.    L=L+8
  599. Wend 
  600. Screen Copy Logic(0) To Physic(0)
  601. While Fire(1)=0 and Mouse Key=0 and(Inkey$="") : Wend 
  602. While Mouse Key>0 or Fire(1) : Wend 
  603. Screen Open 2,320,208,16,Lowres
  604. Curs Off : Flash Off 
  605. Get Icon Palette 
  606. Screen Hide 2
  607. HXO=-1
  608. Screen 0
  609. Get Icon Palette 
  610. Wait Vbl 
  611. Return 
  612. NDLEVEL:
  613. Unpack 11 To 2
  614. Flash Off 
  615. Screen Hide 2
  616. Screen 0
  617. Fade 1 To 2
  618. GX=G mod 3
  619. GY=G/3
  620. GX=GX*93 : GY=GY*127
  621. Cls 0
  622. Screen Copy 2,96,184,209,214 To Logic(0),0,0
  623. Screen Copy 2,132,131,171,183 To Logic(0),36,32
  624. Screen Copy 2,190,133,279,151 To Logic(0),160,0
  625. Ink 1,0
  626. A$="LEVEL"+Str$(LVL)+" COMPLETED !| |"
  627. B$=""
  628. If NBAD<0
  629.    B$="Rambo Bonus for Total Needless violence 10000 pts"
  630.    SCORE=SCORE+10000
  631. Else 
  632.    MUG=0
  633.    ROT=0
  634.    For A=0 To NBAD-1
  635.       If BT(A)=0 : Inc MUG : End If 
  636.       If BT(A)=1 : Inc ROT : End If 
  637.    Next A
  638.    If MUG=0 and MUGS>0 : B$="Charlie Bronson Mugger Mashing Bonus, 5000 pts|" : SCORE=SCORE+5000 : End If 
  639.    If ROT=0 and ROTS>0 : B$=B$+"Roger Rottweiler Bonus for dooing doggies 2500 pts|" : SCORE=SCORE+2500 : End If 
  640. End If 
  641. A$=A$+B$
  642. L=0
  643. While A$<>""
  644.    I=Instr(A$,"|")
  645.    If I>0 and I<24
  646.       L$=Left$(A$,I-1)
  647.       L$=Left$(L$+Space$(24),24)
  648.       A$=Mid$(A$,I+1)
  649.    Else 
  650.       L$=Left$(A$+Space$(24),24)
  651.       A$=Mid$(A$,25)
  652.    End If 
  653.    While Right$(L$,1)<>" "
  654.       A$=Right$(L$,1)+A$
  655.       L$=Left$(L$,Len(L$)-1)
  656.    Wend 
  657.    Text 100,40+L,L$
  658.    L=L+8
  659. Wend 
  660. Screen Copy Logic(0) To Physic(0)
  661. While Fire(1)=0 and Mouse Key=0 and(Inkey$="") : Wend 
  662. While Mouse Key>0 or Fire(1) : Wend 
  663. Screen Open 2,320,208,16,Lowres
  664. Curs Off : Flash Off 
  665. Get Icon Palette 
  666. Screen Hide 2
  667. HXO=-1
  668. Screen 0
  669. Get Icon Palette 
  670. Wait Vbl 
  671. Return 
  672. PLYTENNIS:
  673. If TENWIN=0
  674.    If TENCHEER
  675.       If TENCHEER=1
  676.          For A=0 To 2
  677.             Set Envel 0,A*2 To 2,63
  678.             Set Envel 0,A*2+1 To 0,0
  679.          Next A
  680.          Wave 0 To %1000
  681.          Noise To %111
  682.          Volume 15,63
  683.          Play %1000,70,0
  684.          Play %111,90,0
  685.       End If 
  686.       Play %1000,60+Rnd(10),0
  687.       If Rnd(2)>1
  688.          Screen 0
  689.          For A=0 To 15 : Colour A,$FFF : Next A
  690.          Fade 3 To 2
  691.       End If 
  692.       Inc TENCHEER : If TENCHEER=16 : HXO=-1 : TENCHEER=0 : Wave 1 To 15 : End If 
  693.    Else 
  694.       TENPY=Max(40,Min(136,Y Screen(Y Mouse)))
  695.       Bob 25,128,Y-3,34+TENPS
  696.       Bob 26,192,Y-3,34+TENCS
  697.       Bob 27,82,TENPY,32
  698.       Bob 28,238,TENCY,32
  699.       Bob 29,TENBX,TENBY,33
  700.       TENBX=TENBX+TENDX : TENBY=TENBY+TENDY*2
  701.       If TENBX<80 : Inc TENCS : TENBX=128 : TENBY=48+Rnd(90) : TENDY=Rnd(4)-Rnd(4) : TENDX=4 : TENCHEER=1 : End If 
  702.       If TENBX>240 : Inc TENPS : TENBX=192 : TENBY=48+Rnd(90) : TENDY=Rnd(4)-Rnd(4) : TENDX=-4 : TENCHEER=1 : SCORE=SCORE+10 : End If 
  703.       If TENBY<41 : TENDY=Abs(TENDY) : Sam Play 8,4 : End If 
  704.       If TENBY>135 : TENDY=-Abs(TENDY) : Sam Play 8,4 : End If 
  705.       B=Bob Col(27,29 To 29)
  706.       If B and TENDX<0 : TENDX=4 : Sam Play 8,4 : D=-(TENPY-TENBY-1) : TENDY=Max(-4,Min(4,(D+1)/2)) : End If 
  707.       B=Bob Col(28,29 To 29)
  708.       If B and TENDX>0 : TENDX=-4 : Sam Play 8,4 : D=-(TENCY-TENBY-1) : TENDY=Max(-4,Min(4,(D+1)/2)) : End If 
  709.       If TENCY<>TENBY
  710.          TENCY=TENCY+Sgn(TENBY-TENCY-6)*4
  711.       End If 
  712.       If TENPS>4 : DLINE["Player Wins 5 Bonus Keys"] : SCORE=SCORE+10000 : KEYS=KEYS+5 : TENWIN=1 : End If 
  713.       If TENCS>4 : DLINE["Computer Wins ! Player Gets 1 Key"] : SCORE=SCORE+500 : Inc KEYS : TENWIN=1 : End If 
  714.    End If 
  715. End If 
  716. Return 
  717. COPCHOP:
  718. DX=Sgn(X-XCOP)
  719. DY=Sgn(Y-YCOP)
  720. If GTG=0
  721.    If Abs(DX) : DY=0 : End If 
  722. Else 
  723.    If Abs(DY) : DX=0 : End If 
  724. End If 
  725. CR=DX-(DX<>0)+DY-2*(DY<>0)
  726. Bob 32,XCOP,YCOP,57+CR*2+GTG
  727. If GTG=1
  728.    NEENAW=1-NEENAW
  729.    V=Max(0,Min(63,63-((Abs(X-XCOP)+Abs(Y-YCOP))*32)/260))
  730.    Volume 8,V
  731.    Play 8,20+NEENAW*10,0
  732. End If 
  733. If RTIME>=20
  734.    XCOP=XCOP+DX*8 : YCOP=YCOP+DY*8
  735. Else 
  736.    XCOP=XCOP-8 : YCOP=YCOP-8
  737.    If XCOP<0 and YCOP<0
  738.       Bob 32,999,1,1
  739.       COPFLAG=0
  740.    End If 
  741. End If 
  742. C=Bob Col(32,1 To 1)
  743. If C and DIE=0
  744.    DLINE["You're nicked sonny Jim !"]
  745.    COPFLAG=0
  746.    DIE=1 : TT=0
  747. End If 
  748. Return 
  749. ROCKET:
  750. RTX=(PIGX-ROCKX) : RTY=(PIGY-ROCKY)
  751. If ROCKX>=MX and ROCKX<=MX+304 and ROCKY>=MY and ROCKY<=MY+192
  752.    Bob 33,ROCKX-MX,ROCKY-MY,65+ROCKR
  753. Else 
  754.    Bob 33,999,1,1
  755.    ROCKX=-1
  756. End If 
  757. DX=Sgn(RTX) : DY=Sgn(RTY)
  758. ROCKX=ROCKX+DX*8 : ROCKY=ROCKY+DY*8
  759. ROCKR=R((DX+1)+(DY+1)*3)
  760. C=Bob Col(33,30 To 30)
  761. If C
  762.    Sam Play 8,2
  763.    ROCKX=-1 : Bob 33,999,1,1
  764.    SCORE=SCORE+1000
  765.    PIGHIT=1
  766. End If 
  767. Return 
  768. PIGEON:
  769. If PIGX>=MX and PIGX<=MX+304 and PIGY>=MY and PIGY<=MY+192
  770.    Bob 30,PIGX-MX,PIGY-MY,52+GTG+PIGHIT*21
  771.    If EGGX<=0 and Rnd(10)>9 and PIGHIT=0
  772.       Sam Play 8,7,16000
  773.       EGGX=PIGX : EGGY=PIGY : EGGR=0
  774.    End If 
  775. Else 
  776.    Bob 30,999,16,1
  777. End If 
  778. PIGY=Max(0,Min(HIY+176,PIGY-6))
  779. PIGX=Max(0,Min(HIX+288,PIGX-PIGHIT*4))
  780. If PIGY<1 or PIGX<1
  781.    PIGX=0
  782.    Bob 30,999,16,1
  783. End If 
  784. Return 
  785. EGG:
  786. If EGGX>=MX and EGGX<=MX+304 and EGGY>=MY and EGGY<=MY+192
  787.    Bob 31,EGGX-MX,EGGY-MY,54+EGGR
  788. Else 
  789.    Bob 31,999,16,1
  790. End If 
  791. If EGGX>-1
  792.    EGGY=Max(0,Min(HIY+176,EGGY-4))
  793.    EGGX=Max(0,EGGX-1)
  794.    EGGTIME=EGGTIME+1
  795.    If EGGTIME mod 4=0
  796.       Inc EGGR
  797.       If EGGR=3
  798.          Sam Play 8,2
  799.          If Rnd(10)>6
  800.             ETX=EGGX/16 : ETY=EGGY/16
  801.             V00= Extension_5_0096(ETX,ETY)
  802.             V11= Extension_5_0142(ETX,ETY,0)
  803.             If V11<32
  804.                V2= Extension_5_0142(ETX,ETY,1)
  805.                If V2=V00 and Rnd(100)>80
  806.                   V2=7
  807.                End If 
  808.                PT[V2,ETX,ETY]
  809.             End If 
  810.          End If 
  811.          EGGX=-1
  812.          Bob 31,999,1,1
  813.       End If 
  814.    End If 
  815. End If 
  816. Return 
  817. BADDIES:
  818. For B=0 To NBAD
  819.    If BX(B)>0
  820.       On BT(B)+1 Gosub BADDY1,BADDY2
  821.    Else 
  822.       Bob Off B+2
  823.    End If 
  824. Next B
  825. If NBAD>=0
  826.    If BX(NBAD)<=0
  827.       Bob Off NBAD+2
  828.       Dec NBAD
  829.    End If 
  830. End If 
  831. Return 
  832. BADDY1:
  833. ' B=baddy number 
  834. 'Baddy 1 runs straight, until hitting a wall, then he
  835. 'turns  right, reverse then left 
  836. BX=BX(B) : BY=BY(B)
  837. BR=BR(B)
  838. If BX>=MX and BX<=MX+304 and BY>=MY and BY<=MY+192
  839.    Bob B+2,BX-MX+8,BY-MY+12,17+BR*2+GTG
  840. Else 
  841.    Bob B+2,999,B*16,1
  842. End If 
  843. BX=Max(0,Min(HIX+288,BX+DX(BR*2)*4)) : BY=Max(0,Min(HIY+176,BY+DY(BR*2)*4))
  844. BTX=BX/16 : BTY=BY/16
  845. V= Extension_5_0142(BTX,BTY,0)
  846. If(V>0 and V<4) or V=64
  847.    PT[6,BTX,BTY]
  848.    BX(B)=-1 : SCORE=SCORE+100 : Sam Play 8,3
  849. End If 
  850. If V=128 or V=16 or V=17
  851.    Gosub B1TURN
  852. End If 
  853. If BX(B)>-1
  854.    BX(B)=BX : BY(B)=BY
  855.    BR(B)=BR
  856. End If 
  857. Return 
  858. B1TURN:
  859. BTX=BX(B)/16 : BTY=BY(B)/16
  860. BR=(BR+1) mod 4
  861. F=0 : C=1 : While F=0 and C<4
  862.    V= Extension_5_0142(BTX+DX(BR*2),BTY+DY(BR*2),0)
  863.    If V<127 : F=1
  864.    Else 
  865.       BR=((BR+BRT(C,0))+4) mod 4
  866.       Inc C
  867.    End If 
  868. Wend 
  869. BX=BTX*16 : BY=BTY*16
  870. Return 
  871. BADDY2:
  872. ' B=baddy number 
  873. 'Baddy 2 runs straight, until hitting a wall, then he
  874. 'turns  left, right then reverse   
  875. BX=BX(B) : BY=BY(B)
  876. BR=BR(B)
  877. If BX>=MX and BX<=MX+304 and BY>=MY and BY<=MY+192
  878.    Bob B+2,BX-MX,BY-MY,44+BR*2+GTG
  879. Else 
  880.    Bob B+2,999,B*16,1
  881. End If 
  882. BX=Max(0,Min(HIX+288,BX+DX(BR*2)*4)) : BY=Max(0,Min(HIY+176,BY+DY(BR*2)*4))
  883. BTX=BX/16 : BTY=BY/16
  884. V= Extension_5_0142(BTX,BTY,0)
  885. If(V=1 or V=3) or V=64
  886.    PT[6,BTX,BTY]
  887.    BX(B)=-1 : SCORE=SCORE+100 : Sam Play 8,3
  888. End If 
  889. V2= Extension_5_0096(BTX,BTY)
  890. If(V=128 and V2<>97) or V=16 or V=17 or V=2
  891.    Gosub B2TURN
  892. End If 
  893. If BX(B)>-1
  894.    BX(B)=BX : BY(B)=BY
  895.    BR(B)=BR
  896. End If 
  897. Return 
  898. B2TURN:
  899. BTX=BX(B)/16 : BTY=BY(B)/16
  900. BR=(BR+3) mod 4
  901. F=0 : C=1 : While F=0 and C<4
  902.    V= Extension_5_0142(BTX+DX(BR*2),BTY+DY(BR*2),0)
  903.    If V<127 : F=1
  904.    Else 
  905.       BR=((BR+BRT(C,1))+4) mod 4
  906.       Inc C
  907.    End If 
  908. Wend 
  909. BX=BTX*16 : BY=BTY*16
  910. Return 
  911. SETBADDIES:
  912. MUGS=0 : ROTS=0
  913. A=0 : B=0 : While B<2
  914.    SX= Extension_5_0156(47+B,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  915.    SY= Extension_5_0172(47+B,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  916.    If SX>=0
  917.       BX(A)=SX*16+8 : BY(A)=SY*16+8 : BR(A)=0 : BT(A)=B : Inc A
  918.        Extension_5_00A8 7,SX,SY
  919.       A=Min(20,A)
  920.       If BT(A)=0
  921.          Inc MUGS
  922.       Else 
  923.          Inc ROTS
  924.       End If 
  925.    Else 
  926.       Inc B
  927.    End If 
  928. Wend 
  929. NBAD=A
  930. SX= Extension_5_0156(50,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  931. SY= Extension_5_0172(50,0,0 To Extension_5_00BC -1, Extension_5_00C8 -1,0)
  932. If SX>=0 and LVL<>2
  933.    CARX=SX*16+8 : CARY=SY*16+8
  934.    M= Extension_5_0096(SX-1,SY)
  935.     Extension_5_00A8 M,SX,SY
  936. End If 
  937. Return 
  938. D1:
  939. Screen 1
  940. If DTIME=0
  941.    For A=0 To 5 : Paste Icon A*16+34,20,48+A : Next A
  942.    DTIME=1
  943. Else 
  944.    Screen Copy 1,DTIME+32,20,DTIME+129,36 To 1,DTIME+33,20
  945.    Inc DTIME
  946.    If DTIME=160
  947.       DEMO=0
  948.       Cls 0,48,20 To 288,36
  949.    End If 
  950. End If 
  951. Return 
  952. D2:
  953. Screen Copy 1,52,20,288,36 To 1,48,20
  954. Screen 1
  955. Inc DTIME
  956. If DTIME=4 : DTIME=0
  957.    A=Asc(Left$(MES$,1))-65
  958.    MES$=Mid$(MES$,2)+Left$(MES$,1)
  959.    If Left$(MES$,1)="x"
  960.       DEMO=0
  961.    Else 
  962.       If A>=0 and A<26
  963.          Paste Icon 272,20,A+48
  964.       Else 
  965.          Cls 0,272,20 To 288,36
  966.       End If 
  967.    End If 
  968. End If 
  969. Return 
  970. D3:
  971. Screen 1
  972. If DTIME=0
  973.    VK=0 : VX=48 : VX4=-1 : DTIME=1
  974. Else 
  975.    Cls 0,48,20 To 288,36
  976.    Paste Icon VX,21,76+Sgn(VK) : VX=VX+2 : If VK>0 : Paste Icon VK,21,79+VT : VT=(VT+1) mod 3 : End If 
  977.    If VX4>0 : Put Block 1,VX4,20 : End If 
  978.    If VX=80 : VX4=48 : Paste Icon 48,20,78 : Get Block 1,48,20,16,16,1 : End If 
  979.    If VX4=VX : Sam Play 8,2 : VK=VX : VT=0 : DLINE["Virus X4.0 Kills all viruses!"] : End If 
  980.    If VX4>0 : VX4=VX4+4 : End If 
  981.    If VX4>272 or VX>272 : DEMO=0 : Cls 0,48,20 To 288,76 : End If 
  982. End If 
  983. Return 
  984. D4:
  985. If DTIME=0
  986.    DTIME=1 : B1=48 : B2=272
  987.    Paste Icon B1,52,74 : Get Block 1,B1,52,16,16,1
  988.    Paste Icon B2,52,75 : Get Block 2,B2,52,16,16,1
  989. Else 
  990.    Screen 1
  991.    Cls 0,48,20 To 288,70
  992.    If V0>0 : V0=V0-8
  993.    Else 
  994.       V0=Min(32,Vumeter(0)/4)
  995.    End If 
  996.    If V1>0 : V1=V1-8
  997.    Else 
  998.       V1=Min(32,Vumeter(2)/4)
  999.    End If 
  1000.    Put Block 1,B1,52-V0 : Put Block 2,B2,52-V1
  1001.    Inc B1 : Dec B2
  1002.    If B1>272 or B2<48 : DEMO=0 : Cls 0,48,20 To 288,70 : DLINE["Are your balls music sensitive ?"] : End If 
  1003. End If 
  1004. Return 
  1005. D5:
  1006. Screen 1
  1007. If DTIME=0
  1008.    Paste Icon 48,62,82 : Get Block 1,48,63,16,16,1
  1009.    Paste Icon 48,46,83 : Get Block 2,48,47,16,16,1
  1010.    For A=48 To 272 Step 16 : Paste Icon A,20,84+Rnd(2) : B((A-48)/16)=1 : Next A
  1011.    DTIME=1 : BRX=48 : BRY=46 : DX#=1 : BSP=2 : DBY=-1 : BALL=3
  1012. Else 
  1013.    Cls 0,48,28 To 288,78
  1014.    BTX=Max(48,Min(272,X Screen(X Mouse)))
  1015.    Put Block 1,BTX,62 : Put Block 2,BRX,BRY
  1016.    BRX=BRX+DX# : BRY=BRY+DBY*BSP : If BRX<48 or BRX>282 : Sam Play 8,4 : BRX=Max(48,Min(282,BRX)) : DX#=-DX# : End If 
  1017.    If BRY<18 : Sam Play 8,4 : BRY=18 : DBY=1 : Gosub CHECKBRICKS : End If 
  1018.    If BRY>58 : If BRX>BTX-4 and BRX<BTX+16 : Sam Play 8,4 : BRY=Min(61,BRY) : DBY=-1 : DX#=Max(-4,Min(4,(BRX-BTX-4)/2.0)) : End If : End If 
  1019.    If BRY>62 : Sam Play 8,2 : Dec BALL : BRX=48 : BRY=46 : DX#=1 : DBY=-1 : If BALL=0 : DEMO=0 : Cls 0,48,20 To 288,78 : End If : End If 
  1020.    Inc DTIME : If DTIME mod 150=0 : BSP=Min(6,BSP+1) : End If 
  1021. End If 
  1022. Return 
  1023. CHECKBRICKS:
  1024. B=Max(0,Min(14,(BRX-46)/16)) : If B(B)=1 : SCORE=SCORE+10 : End If 
  1025. Cls 0,48+B*16,20 To 64+B*16,26
  1026. B(B)=0 : F=0 : For A=0 To 14 : If B(A)=1 : F=1 : A=99 : End If 
  1027. Next A
  1028. If F=0 : DLINE["Special Arcadia Bonus !"] : SCORE=SCORE+100000 : DEMO=0 : Cls 0,48,20 To 288,78 : End If 
  1029. Return 
  1030. D6:
  1031. Screen 1
  1032. Paste Icon 272-DTIME,22,87+DTIME mod 2
  1033. Ink Rnd(15) : Bar 280-DTIME,20 To 281-DTIME,21 : Inc DTIME
  1034. If DTIME=224 : Cls 0,48,20 To 288,38 : DEMO=0 : End If 
  1035. Ink 15,0
  1036. Return 
  1037. D7:
  1038. Screen 1
  1039. Paste Icon 152,20,89+DTIME/8
  1040. Inc DTIME
  1041. If DTIME=52 : DEMO=0 : Cls 0,144,20 To 176,36 : End If 
  1042. Return 
  1043. D8:
  1044. Screen 1
  1045. Cls 0,48,20 To 288,52
  1046. Paste Icon 272-FTX-FTT*4,20,96
  1047. Paste Icon 272-FTX+FTT*4,36,97
  1048. If DTIME mod 2=0 : FTT=1-FTT
  1049.    FTX=FTX+8
  1050. End If 
  1051. If FTX>=224 : Cls 0,48,20 To 288,52 : DEMO=0 : End If 
  1052. Return 
  1053. NICEMAP:
  1054. Screen 2
  1055. If HXO=-1 Then Extension_5_0006 HX,HY : Goto NDNICE
  1056. MDX=Sgn(HX-HXO)*16 : MDY=Sgn(HY-HYO)*16 : DX2=-(MDX<0)*16 : DY2=-(MDY<0)*16
  1057. Screen Copy 2,Max(0,MDX),Max(0,MDY),320,208 To 2,DX2,DY2
  1058. If HX<HXO Then Extension_5_003C HX,HY
  1059. If HX>HXO Then Extension_5_004E HX,HY
  1060. If HY<HYO Then Extension_5_0060 HX,HY
  1061. If HY>HYO Then Extension_5_0070 HX,HY
  1062. NDNICE: Return 
  1063. RDBITS:
  1064. Restore BITS
  1065. For A=0 To 2 : For B=0 To 2 : Read R(A*3+B) : Next B : Next A
  1066. BITS: Data 1,2,3,0,0,4,7,6,5
  1067. For A=0 To 15 : Read CDX(A),CDY(A) : Next A
  1068. Data -4,0,-3,-1,-2,-2,-1,-3,0,-4,1,-3,2,-2,3,-1,4,0
  1069. Data 3,2,2,2,2,3,0,4,-2,3,-2,2,-3,2
  1070. For A=0 To 7 : Read DX(A),DY(A) : Next A
  1071. Data -1,0,-1,-1,0,-1,1,-1,1,0,1,1,0,1,-1,1
  1072. For B=0 To 1
  1073.    For A=0 To 3 : Read BRT(A,B) : Next A
  1074. Next B
  1075. Data 1,-2,3,1
  1076. Data 3,2,1,1
  1077. For A=0 To 5 : Read COMP$(A) : Next A
  1078. Data "Amiga","Monitor","Disk Drive","Mouse","Joystick","RAM CARD"
  1079. For A=0 To 3 : Read MES$(A) : Next A
  1080. Data "I HATE SCROLLY MESSAGES"
  1081. Data "OH NO A BORING SCROLLY MESSAGE"
  1082. Data "GREETS TO NOBODY FROM ANN T SOCIAL"
  1083. Data "GOSH A SCROLLY MESSAGE DEMO GOING ON AT THE SAME TIME AS THE GAME"
  1084. For A=0 To 2
  1085.    Read AMOS$(A)
  1086. Next A
  1087. Data "AMOS-The Creator|This game was written using the AMOS language and AMOS TOME. AMOS is available now. R.R.P ï¿½49.95"
  1088. Data "AMOS TOME|The TOtal Map Editor, used to write this game, gives you 27 new AMOS commands and the most powerfull map editor available on any machine. out Now !. ï¿½24.99"
  1089. Data "The AMOS Compiler|Make your programs go 2-10 times faster ! Compiles AMOS programs into executable machine code. available May 1991"
  1090. A=0 : Read MAP$
  1091. While MAP$<>"END"
  1092.    MAP$(A)=MAP$
  1093.    Read LVL$(A),LTXT$(A)
  1094.    Inc A
  1095.    Read MAP$
  1096. Wend 
  1097. Data "deadline3.map","Easy Street","Find the Mouse, and P.D disks, avoid muggers, rottweilers and don't jaywalk !"
  1098. Data "deadline4.map","By the River","At least the sun is shining, find your AMOS package."
  1099. Data "deadline5.map","Techno Fear","Find the monitor."
  1100. Data "deadline6.map","Tinstone","Go racing and get the Ram upgrade"
  1101. Data "deadline7.map","Horsham Common","Find out about a U.F.O sighting, and get the Disk Drive"
  1102. Data "deadline8.map","Close Encounters","On board an alien ship, Find the TOME box !"
  1103. Data "deadline1.map","Mean Streets","Find the Joystick, and P.D disks, avoid muggers, rottweilers and don't jaywalk !"
  1104. Data "deadline2.map","Wobildin Park","There's an Amiga in here somewhere, and some sport !"
  1105. Data "deadline9.map","Hall of the Compiler","Find the compiler, but watch out !"
  1106. Data "END"
  1107. Return 
  1108. Procedure CREDITS
  1109.    Load "tomelogo.abk",11
  1110.    Screen Open 0,320,256,16,Lowres : Curs Off : Flash Off : Cls 0
  1111.    Unpack 11 To 0
  1112.    SCROFF
  1113.    T$="This disk is public domain, and may be copied freely, as long as none of the files on it are"
  1114.    T$=T$+" removed, modified or used for any commercial gain (i.e coverdisks). Deadline is (c) Shadow Software/AMOS Club 1991"
  1115.    DTEXT[T$]
  1116.    SCROFF
  1117.    T$="AMOS TOME will be available in March 91, with a discount for AMOS Club Members."
  1118.    T$=T$+"TOME includes a new extension of 27 commands for AMOS, as well as the most powerfull Map Editor available for any computer!"
  1119.    DTEXT[T$]
  1120.    SCROFF
  1121.    T$="The AMOS Club provides programming advice and support for AMOS users."
  1122.    T$=T$+" Membership is ï¿½10 per year (�15 Overseas) and provides 6, 20 page newsletters"
  1123.    T$=T$+" as well as access to the AMOS Helpline, and the AMOS P.D Library."
  1124.    DTEXT[T$]
  1125.    SCROFF
  1126.    T$="Also on this disk are some typical AMOS programs from the newsletters."
  1127.    T$=T$+" More programs like these, as well as advice, hints, tips and help for absolute beginners to experts is in each newsletter."
  1128.    DTEXT[T$]
  1129.    SCROFF
  1130.    T$="To join the AMOS Club, send a cheque for the correct amount (�10 U.K, ï¿½15 Overseas) and your name and address"
  1131.    T$=T$+" to AARON FOTHERGILL, AMOS CLUB, 1 LOWER MOOR,WHIDDON VALLEY, BARNSTAPLE, N.DEVON. EX32 8NW, ENGLAND."
  1132.    DTEXT[T$]
  1133.    SCROFF
  1134.    T$=" The music in this game is from LUKE MILLER'S MUSIC DISK #1 from the AMOS P.D Library"
  1135.    T$=T$+" Samples are from Peter Hickman's P.D samples disks."
  1136.    DTEXT[T$]
  1137.    SCROFF
  1138.    T$="Instructions: You control Arnold Shortscribbler, who is trying to write an article for the next AMOS newsletter."
  1139.    T$=T$+" unfortunately, he has only a limited amount of time to collect together all his AMOS P.D collection, his Amiga"
  1140.    T$=T$+" and his AMOS software so that he can write the article [MORE]"
  1141.    DTEXT[T$]
  1142.    SCROFF
  1143.    T$="by the deadline for the next issue. Unfortunately, a huge storm has blown all of Arnold's disks and computer components"
  1144.    T$=T$+" out of the window and throughout the town's park and streets !"
  1145.    T$=T$+" [MORE]"
  1146.    DTEXT[T$]
  1147.    SCROFF
  1148.    T$="Arnold must avoid Muggers, Rottweilers, pits, water and mutant pigeons"
  1149.    T$=T$+" while collecting all his hardware and software. [MORE]"
  1150.    DTEXT[T$]
  1151.    SCROFF
  1152.    T$="Fortunately, Arnold has an unlimited supply of Stop Signs to divert muggers"
  1153.    T$=T$+" and can collect spades so that he can dig pits to trap either muggers or rottweilers."
  1154.    T$=T$+"[MORE]"
  1155.    DTEXT[T$]
  1156.    SCROFF
  1157.    T$="Go get em !"
  1158.    DTEXT[T$]
  1159.    SCROFF
  1160.    T$="AMOS TOME is (c) Shadow Software 1990. AMOS the Creator is (c) Mandarin/Jawx 1990."
  1161.    DTEXT[T$]
  1162.    SCROFF
  1163.    Z=Free
  1164.    Load "adverts.abk",11
  1165. End Proc
  1166. Procedure PT[P,X,Y]
  1167.    Shared PT(),PTX(),PTY(),PTP
  1168.    PT(PTP)=P : PTX(PTP)=X : PTY(PTP)=Y
  1169.    Inc PTP : PTP=Min(PTP,20)
  1170. End Proc
  1171. Procedure SHWCOMP
  1172.    Shared COMP(),COMP$()
  1173.    Screen 1
  1174.    C$=""
  1175.    For A=0 To 4 : If COMP(A)=1 : C$=C$+COMP$(A)+":" : End If 
  1176.    Next A
  1177.    DLINE[C$]
  1178. End Proc
  1179. Procedure SHWDISK[D]
  1180.    Shared PD$(),MES$(),MES$,DTIME,DEMO,SCORE
  1181.    Z=Free
  1182.    If D<160
  1183.       A$=PD$(D-1)
  1184.       If A$="" : A$="This Could Be your disk !" : End If 
  1185.       If(Left$(A$,3)="LPD") or(Left$(A$,3)="ACE")
  1186.          DLINE["This Disk "+A$]
  1187.          SCORE=SCORE+2000 : If Left$(A$,3)="ACE" : SCORE=SCORE+2500 : End If 
  1188.       Else 
  1189.          DLINE["This Disk APD"+Str$(D)+"-"+A$]
  1190.       End If 
  1191.    Else 
  1192.       DLINE["AMOS Club and AMOS Club P.D"]
  1193.    End If 
  1194.    A$=Upper$(A$)
  1195.    If DEMO=0 : DTIME=0 : End If 
  1196.    If Instr(A$,"FONTS") and DEMO=0 and Rnd(10)>8 : DEMO=1 : End If 
  1197.    If Instr(A$,"DEMO") and DEMO=0 and Rnd(10)>7 : DEMO=2 : MES$=MES$(Rnd(3))+Space$(35)+"x" : End If 
  1198.    If Instr(A$,"VIRUS") and DEMO=0 and Rnd(10)>3 : DEMO=3 : End If 
  1199.    If Instr(A$,"MUSIC") and Rnd(10)>8 : Music Off : Bank Swap 3,9 : Music 1 : End If 
  1200.    If Instr(A$,"SAMPLE") : Sam Loop Off : Sam Play 8,Rnd(8)+1 : End If 
  1201.    If Instr(A$,"BALLS") and DEMO=0 and Rnd(10)>4 : DEMO=4 : End If 
  1202.    If Instr(A$,"ARCADIA") and DEMO<4 and Rnd(10)>0 : DEMO=5 : DTIME=0 : End If 
  1203.    If Instr(A$,"PAINT") and DEMO<5 : DEMO=6 : DTIME=0 : End If 
  1204.    If Instr(A$,"REVERSI") and DEMO<5 : DEMO=7 : DTIME=0 : End If 
  1205.    If Instr(A$,"TREASURE") and DEMO<5 : DEMO=8 : DTIME=0 : End If 
  1206. End Proc
  1207. Procedure DLINE[D$]
  1208.    Ink 15,0 : Screen 1
  1209.    L$=Left$(D$+Space$(35),35) : R$=Left$(Mid$(D$,36)+Space$(35),35)
  1210.    While Right$(L$,1)<>" "
  1211.       R$=Right$(L$,1)+R$
  1212.       L$=Left$(L$,Len(L$)-1)
  1213.    Wend 
  1214.    Text 20,9,Left$(L$+Space$(35),35) : Text 20,17,Left$(R$+Space$(35),35)
  1215. End Proc
  1216. KEYCHECK:
  1217. A$=Upper$(A$)
  1218. If CHEAT<24
  1219.    If A$=Mid$("HELLO I MUST BE CHEATING",CHEAT+1,1)
  1220.       Inc CHEAT
  1221.       If CHEAT=24
  1222.          DLINE["Of course you are !"]
  1223.       End If 
  1224.    End If 
  1225. Else 
  1226.    If A$="N"
  1227.       NDLVL=-1 : BIGBON=1
  1228.    End If 
  1229.    If A$="L"
  1230.       LIVES=5
  1231.    End If 
  1232. End If 
  1233. Return 
  1234. Procedure SETDISP
  1235.    Screen 1
  1236.    Ink 2,0 : Box 17,1 To 303,78
  1237.    Ink 5,0 : Box 16,0 To 304,79
  1238.    DLINE["No P.D Disks Collected"]
  1239.    Ink 6,0
  1240.    A$="SCORE"
  1241.    For A=1 To 5
  1242.       Text 21,19+A*7,Mid$(A$,A,1)
  1243.    Next A
  1244.    A$="STATUS"
  1245.    For A=1 To 6
  1246.       Text 292,19+A*7,Mid$(A$,A,1)
  1247.    Next A
  1248.    Get Block 1,0,0,16,16
  1249.    Get Block 2,0,0,16,16
  1250.    Get Block 3,16,16,16,64
  1251.    Get Block 4,288,16,16,64
  1252. End Proc
  1253. Procedure SHWGOODIES[G]
  1254.    Shared AMOS$(),HXO
  1255.    Unpack 11 To 2
  1256.    Flash Off 
  1257.    Screen Hide 2
  1258.    Screen 0
  1259.    Fade 1 To 2
  1260.    GX=G mod 3
  1261.    GY=G/3
  1262.    GX=GX*93 : GY=GY*127
  1263.    Cls 0
  1264.    Screen Copy 2,GX,GY,GX+93,GY+127 To Logic(0),0,0 : Screen Copy 2,96,184,209,214 To Logic(0),96,0
  1265.    Screen Copy 2,132,131,171,183 To Logic(0),132,32
  1266.    Screen Copy 2,190,133,279,151 To Logic(0),0,130
  1267.    Ink 1,0 : Text 100,90,"You have collected "
  1268.    A$=AMOS$(G)+" "
  1269.    I=Instr(A$,"|")
  1270.    Text 100,98,Left$(A$,I-1)
  1271.    A$=Mid$(A$,I+1)
  1272.    L=0
  1273.    While A$<>""
  1274.       L$=Left$(A$+Space$(24),24)
  1275.       A$=Mid$(A$,25)
  1276.       While Right$(L$,1)<>" "
  1277.          A$=Right$(L$,1)+A$
  1278.          L$=Left$(L$,Len(L$)-1)
  1279.       Wend 
  1280.       Text 100,106+L,L$
  1281.       L=L+8
  1282.    Wend 
  1283.    Screen Copy Logic(0) To Physic(0)
  1284.    While Fire(1)=0 and Mouse Key=0 and(Inkey$="") : Wend 
  1285.    While Mouse Key>0 or Fire(1) : Wend 
  1286.    Screen Open 2,320,208,16,Lowres
  1287.    Curs Off : Flash Off 
  1288.    Get Icon Palette 
  1289.    Screen Hide 2
  1290.    HXO=-1
  1291.    Screen 0
  1292.    Get Icon Palette 
  1293.    Wait Vbl 
  1294. End Proc
  1295. Procedure LDPD
  1296.    Shared PD$()
  1297.    A=0
  1298.    Restore PDLIST
  1299.    Do 
  1300.       Read PD$
  1301.       Exit If PD$="END"
  1302.       PD$(A)=PD$
  1303.       Inc A
  1304.    Loop 
  1305.    PDLIST:
  1306.    Data "Games Music Creator","Treasure Search","Fonts disk 1"
  1307.    Data "Fonts disk 2","Fonts disk 3","STOS to AMOS","Virus X 4.0"
  1308.    Data "Music & Samples","AMOS Big Demo V4","Samples 2","Samples 3","Samples 4"
  1309.    Data "Samples 5","Iff Pictures 1","Iff Pictures 2","Iff Pictures 3"
  1310.    Data "Instruments (ST-01)","Instruments (ST-02)","Microman's Music  Sensitive Balls Demo"
  1311.    Data "Arc Angel Demo 1","Word Square Solver","Fun School 3 Demo","Soundtrack Module 1"
  1312.    Data "Soundtracker Module 2","Soundtracker Module 3","Soundtracker Module 4"
  1313.    Data "Soundtracker Module 5","Soundtracker Module 6","Soundtracker Module 7"
  1314.    Data "Soundtracker Module 8","Screen Designer","AMOS Programs"
  1315.    Data "Pink Goes Ape Demo","Luke Miller's Music 1","Archivist","AMOS UPDATER"
  1316.    Data "Arc Angel Demo 3","IFF Fonts Disk","Music 2","Music 3","Music 4"
  1317.    Data "Music 5","Music 6","Music 7","Music 8","Music 9","Music 10","Music 11"
  1318.    Data "Music 12","Music 13","Wierd Science Demo","Forms Really Unlimited"
  1319.    Data "Curos & Stavros Mega Demo II","AMOS programs","Samples 6","Samples 7"
  1320.    Data "Samples 8","Samples 9","Quiz Game","Hockey Pista Demo","Luke Millers Music 2"
  1321.    Data "Arcadia","Hack Magic Demo Creator","Art Program + Other AMOS programs"
  1322.    Data "Amos Programs","Music 14","Music 15","Music 16","Music 17","Music 18","Music 19","Music 20"
  1323.    Data "Music 21","Music 22","Music 23","AMOS Utility Disk"
  1324.    Data "AMOS programs","IFF Pictures 4","Instruments (ST-03)","Instruments (ST-04)"
  1325.    Data "Jukebox Demo Disk 1","Jukebox Demo Disk 2","AMOS Paint","Luke Miller's Music 3"
  1326.    Data "Reversi & Snakes & Ladders","Instruments (ST-05)","Instruments (ST-06)"
  1327.    Data "Instruments (ST-07)","Instruments (ST-08)","Instruments (ST-09)"
  1328.    Data "Instruments (ST-10)","Instruments (ST-11)","Instruments (ST-12)"
  1329.    Data "Instruments (ST-13)","Instruments (ST-14)","Pair It","Dynamite Dick + Other programs"
  1330.    Data "Music 24","Benson Demo I","AMOS DEMO II","Auto Player","Chainsaw Death"
  1331.    Data "Pick-A-Puzzle","Pick-A-Puzzle Data Disk","Picture It","Picture it disk 2"
  1332.    Data "AMOS Programs 6","Music Player","Weird Science Demo II","Cross Fire"
  1333.    Data "Bladerunners Music Disk","Panthorus Mega Demo I","Panthorus Mega Demo I Disk 2"
  1334.    Data "Predators Demo","Balloonacy","J.P.M Sound","AMOS Music + upgrades","Fun School 3 Sprites"
  1335.    Data "Electro Cad Demo","AMOS Music Player","Nik Williams BC Pictures","Jukebox","Deadline (You're Playing it !)"
  1336.    Data "Bob Maniacs","Benson Demo II","Dreamers Disk Mag","Cybornetics Demo Disk II","MACC Computer Club Demo","Music Disk 1"
  1337.    Data "The Wooden Ball","Armageddon Demo","Family History Database+PFDB 3.0","Mandelbrot Generator"
  1338.    Data "SpectraPaint V2.0","Simon Says & Space Maths","Maths Calculator"
  1339.    Data "Tile Trial","Spanish Tutor","Master Race","AMOS Programs 7"
  1340.    Data "LPD-1: Colouring Book","LPD-2: Arc Angel's Maths","LPD-3: Curos & Stavros Demo I"
  1341.    Data "LPD-4: Thingamajig","LPD-5: Jungle Bungle","LPD-6: Pukadu","LPD-7: 4 Way Lynx"
  1342.    Data "LPD-8: Work and Play","LPD-9: AMOS Assembler","LPD-10: The Word Factory","LPD-11: Go-Getter"
  1343.    Data "ACE-1: SPRITE X. (AMOS Club Members only !)"
  1344.    Data "END"
  1345. End Proc
  1346. Procedure DTEXT[D$]
  1347.    L=0
  1348.    Ink 1,0
  1349.    Cls 0,0,150 To 320,256
  1350.    While D$<>""
  1351.       L$=Left$(D$+Space$(38),38)
  1352.       D$=Mid$(D$,39)
  1353.       While Right$(L$,1)<>" "
  1354.          D$=Right$(L$,1)+D$
  1355.          L$=Left$(L$,Len(L$)-1)
  1356.       Wend 
  1357.       While Right$(L$,1)=" "
  1358.          L$=Left$(L$,Len(L$)-1)
  1359.       Wend 
  1360.       Text 160-Len(L$)*4,158+L*8,L$
  1361.       Inc L
  1362.    Wend 
  1363. End Proc
  1364. Procedure SCROFF
  1365.    Timer=0 : OK=0 : While OK=0 and Timer<1000 : OK=Mouse Key-Fire(1) : Wend 
  1366.    For A=0 To 53 : Screen Copy 0,0,150,320,256 To 0,0,148 : Wait Vbl : Next A
  1367. End Proc