Cheshire Cat


Cast adrift in space, and without fuel, you have only a beam weapon with which to defend yourself against the hostile nasties that assail you from all sides.

Your craft can be spun around to the left and right with the Z and X keys. Your beam is fired with RETURN, and if you're really desperate, you can always do your disappearing act by pressing your SPACE bar and visiting the void for a while.

    5  REM**CHESHIRE CAT** BBC VERSION*
   10 REM CONVERTED TO BBC MICRO BY C.R.TANNE
R
   20 DIMa$(2)
   30 VDU 23,224,8,8,42,42,42,42,42,62
   40 VDU 23,225,0,18,36,72,146,164,72,48
   50 VDU 23,226,0,0,252,128,255,128,252,0
   60 VDU 23,227,48,72,164,146,72,36,18,0
   70 VDU 23,228,62,42,42,42,42,42,8,8
   80 VDU 23,229,12,18,37,73,18,36,72,0
   90 VDU 23,230,0,63,1,255,1,63,0,0
  100 VDU 23,231,0,72,36,18,73,37,18,12
  110 VDU 23,232,231,195,165,24,24,165,195,23
1
  120 VDU 23,233,0,0,1,3,71,127,21,21
  130 VDU 23,234,0,0,192,224,241,255,84,84
  140 VDU 23,235,31,63,102,127,93,8,0,0
  150 VDU 23,236,252,224,51,255,221,136,0,0
  160 VDU 23,237,0,0,48,72,164,68,2,3
  170 VDU 23,238,0,0,12,18,37,34,64,192
  180 VDU 23,239,3,7,11,17,18,32,32,192
  190 VDU 23,240,192,224,208,136,72,4,4,3
  200 VDU 23,241,128,192,160,147,255,251,249,
-1
  210 VDU 23,242,1,3,5,201,-1,191,159,-1
  220 VDU 23,243,127,96,96,48,56,28,15,3
  230 VDU 23,244,254,6,6,12,28,56,240,192
  240 VDU 23,245,-1,-1,-1,-1,-1,-1,-1,-1
  250 MODE 7:VDU 23;8202;0;0;0;:GOSUB 1670
  260 hs=0:h$=""
  270 MODE 1:VDU 23;8202;0;0;0;28,4,27,35,4
  280 GOSUB 1610
  290 IF INKEY(-67) AND p<151 THEN p=p+1
  300 IF INKEY(-67) AND p=151 THEN p=p-7
  310 IF INKEY(-98) AND p>144 THEN p=p-1
  320 IF INKEY(-98) AND p=144 THEN p=p+7
  330 COLOUR 2:PRINT TAB(15,11);CHR$(p+80)
  340 IF INKEY(-99) THEN GOSUB 1350
  350 IF b<>0  AND INKEY(-74) THEN GOSUB 880
  360 ON t-1 GOSUB 410,450,500,570,600,600,71
0,780
  370 A=FNscreen(15,11):IF (A>127 AND A<136) 
OR (A>223 AND A<232) THEN ELSE GOSUB 1540
  380 ti=ti-1:COLOUR 3:PRINT TAB(28,0);t1;" "
:IF ti=0 THEN PRINT TAB(25,0);"TI:";ti:GOTO 1
430
  390 IF t1-ti>=29 THEN GOSUB 1270
  400 GOTO 290
  410 y=y+2:x=x+2:IF y>=21 THEN Y=1
  420 IF x>31 THEN x=0
  430 PROCover(x1,y1,CHR$(233)+CHR$(234),0):P
ROCover(x1,y1+1,CHR$(235)+CHR$(236),0):PROCov
er(x,y,CHR$(233)+CHR$(234),1):PROCover(x,y+1,
CHR$(235)+CHR$(236),1)
  440 y1=y:x1=x:RETURN
  450 y=INT(RND(3)/2-RND(3)/2):x=x+2:IF y<=21
 THEN y=1
  460 IF y<=0 THEN y=20
  470 IF x=30 THEN x=0
  480 PROCover(x1,y1,CHR$(233)+CHR$(234),0):P
ROCover(x1,y1+1,CHR$(235)+CHR$(236),0):PROCov
er(x,y,CHR$(233)+CHR$(234),1):PROCover(x,y+1,
CHR$(235)+CHR$(236),1)
  490 y1=y:x1=x:RETURN
  500 y=y+RND(3)-RND(3):x=x+RND(3)-RND(3)
  510 IF x<0 THEN x=30
  520 IF x>30 THEN x=0
  530 IF y>20 THEN y=1
  540 IF y<1 THEN y=20
  550 PROCover(x1,y1,CHR$(237)+CHR$(238),0):P
ROCover(x1,y1+1,CHR$(239)+CHR$(240),0):PROCov
er(x,y,CHR$(237)+CHR$(238),1):PROCover(x,y+1,
CHR$(239)+CHR$(240),1) 
  560 y1=y:x1=x:RETURN
  570 y=y-3:IF y<1 THEN x=x+RND(7)+3:y=20:IF 
x>30 THEN x=RND(5)
  580 PROCover(x1,y1,CHR$(237)+CHR$(238),0):P
ROCover(x1,y1+1,CHR$(239)+CHR$(240),0):PROCov
er(x,y,CHR$(237)+CHR$(238),1):PROCover(x,y+1,
CHR$(239)+CHR$(240),1)
  590 y1=y:x1=x:RETURN
  600 de=de+1
  610 IF de=5 THEN y=RND(20)+1:x=RND(30)+1:de
=0
  620 y=y+RND(2)-RND(2):x=x+RND(2)-RND(2):IF 
y<1 OR y>20 OR x<0 OR x>30 THEN de=5:GOTO 610
  630 PROCover(x1,y1,CHR$(241)+CHR$(242),0):P
ROCover(x1,y1+1,CHR$(243)+CHR$(244),0):PROCov
er(x,y,CHR$(241)+CHR$(242),1):PROCover(x,y+1,
CHR$(243)+CHR$(244),1)
  640 y1=y:x1=x
  650 RETURN
  660 y=y+RND(2)-RND(2)-(y<11)+(y>11):x=x+2
  670 IF x>30 THEN x=0
  680 IF y>20 OR y<1 THEN y=11
  690 PROCover(x1,y1,CHR$(242)+CHR$(241),0):P
ROCover(x1,y1+1,CHR$(240)+CHR$(239),0):PROCov
er(x,y,CHR$(242)+CHR$(241),1):PROCover(x,y+1,
CHR$(240)+CHR$(239),1)
  700 y1=y:x1=x:RETURN
  710 y=y+di:x=x+2:de=de+1:IF de=5 THEN de=0:
di=-di
  720 IF y<1 THEN y=20
  730 IF y>20 THEN y=1
  740 IF x>30 THEN x=0
  750 PROCover(x1,y1,CHR$(242)+CHR$(241),0):P
ROCover(x1,y1+1,CHR$(240)+CHR$(239),0):PROCov
er(x,y,CHR$(242)+CHR$(241),1):PROCover(x,y+1,
CHR$(240)+CHR$(239),1)
  760 y1=y:x1=x
  770 RETURN
  780 y=y+di:x=x+de
  790 IF x>30 THEN x=0
  800 IF y<1 THEN y=20
  810 IF y>20 THEN y=1
  820 IF RND(10)>8 THEN GOTO 860
  830 IF de=0 THEN de=2
  840 IF di=0 THEN di=2
  850 IF RND(10)>5 THEN di=-di
  860 PROCover(x1,y1,CHR$(232)+CHR$(232),0):P
ROCover(x1,y1+1,CHR$(232)+CHR$(232),0):PROCov
er(x,y,CHR$(232)+CHR$(232),1):PROCover(x,y+1,
CHR$(232)+CHR$(232),1)
  870 y1=y:x1=x:RETURN
  880 b=b-1:COLOUR 3:PRINT TAB(19,0);b;" "
  890 IF p=144 THEN g1=124:f1=88:f=78:g=0
  900 IF p=145 THEN g1=128:f1=88:f=78:g=78
  910 IF p=146 THEN g1=128:f1=83:f=0:g=126
  920 IF p=147 THEN g1=128:f1=79:f=-78:g=78
  930 IF p=148 THEN g1=123:f1=79:f=-78:g=0
  940 IF p=149 THEN g1=119:f1=79:f=-78:g=-78
  950 IF p=150 THEN g1=119:f1=84:f=0:g=-118
  960  IF p=151 THEN g1=119:f1=84:f=78:g=-78
  970 VDU29,g1*4+128;f1*4+192;
  980 xc=g/64:yc=f/64:hit=0
  990 GCOL0,3:SOUND &10,-15,6,15
 1000 FOR A%=1 TO 64:X%=xc*A%*4:Y%=yc*A%*4:IF
 POINT(X%,Y%)=1 THEN hit=1:A%=64:NEXT:GOTO 10
20
 1010 PLOT 69,X%,Y%:NEXT
 1020 GCOL0,0:SOUND &10,0,0,0
 1030 FOR A%=1 TO 64:X%=xc*A%*4:Y%=yc*A%*4:PL
OT 69,X%,Y%:NEXT
 1040 VDU29,0;0;
 1050 IF hit<>0 THEN GOTO 1080
 1060 IF b=0 THEN COLOUR 3:PRINT TAB(16,0);"S
H:";b:GOTO 1430
 1070 RETURN
 1080 PROCover(x,y,a$(1),0):PROCover(x,y+1,a$
(2),0)
 1090 hit=0:sc=sc+o:COLOUR 3:PRINT TAB(3,0);s
c
 1100 FOR f=1 TO 4:FOR i=2 TO 0 STEP -2
 1110     IF y-f>=1 AND x-f>=0 THEN PROCover(
x-f,y-f,MID$(a$(1),1,1),i)
 1120     IF y+f<=21 AND x-f>=0 THEN PROCover
(x-f,y+f,MID$(a$(2),1,1),i)
 1130     IF y-f>=0 AND x+f<=31 THEN PROCover
(x+f,y-f,MID$(a$(1),2,1),i)
 1140     IF y+f<=21 AND x+f<=31 THEN PROCove
r(x+f,y+f,MID$(a$(2),2,1),i)
 1150 SOUND 1,-15,f*4+100,1:NEXT:NEXT
 1160 COLOUR 2:PRINT TAB(15,11);CHR$(p+80)
 1170 IF b=0 THEN COLOUR 3:PRINT TAB(16,0);"S
H:";b:GOTO 1430
 1180 t=RND(7)+2:y=RND(20)+1:x=0
 1190 y1=y:x1=x:t1=ti
 1200  IF t=3 OR t=2 THEN a$(1)=CHR$(233)+CHR
$(234):a$(2)=CHR$(235)+CHR$(236):o=(20 AND t=
2)+(10 AND t=3)
 1210 IF t=4 OR t=5 THEN a$(1)=CHR$(237)+CHR$
(238):a$(2)=CHR$(239)+CHR$(240):o=(25 AND t=4
)+(10 AND t=5)
 1220 IF t=6 THEN a$(1)=CHR$(241)+CHR$(242):a
$(2)=CHR$(243)+CHR$(244):de=0:o=30
 1230 IF t=7 OR t=8 THEN a$(1)=CHR$(242)+CHR$
(241):a$(2)=CHR$(240)+CHR$(239):o=(25 AND t=8
)+(20 AND t=7):de=0:di=-2
 1240 IF t=9 THEN a$(1)=CHR$(232)+CHR$(232):a
$(2)=CHR$(232)+CHR$(232):de=2:di=0:o=20
 1250 PROCover(x,y,a$(1),0):PROCover(x,y+1,a$
(2),0)
 1260 RETURN
 1270 d=x*8+(16 AND x<=15)+(x>15)
 1280 GCOL3,3:PLOT 69,d*4+128,((21-y)*8)*4+19
2:PLOT 1,((124-d)/3)*4,((84-(21-y)*8)/3)*4
 1290 SOUND 1,-15,100,1:PLOT 1,((124-d)/3)*4,
((84-(21-y)*8)/3)*4
 1300 SOUND 1,-15,130,1:PLOT 1,((124-d)/3)*4,
((84-(21-y)*8)/3)*4
 1310 SOUND 1,-15,160,1:PLOT 69,d*4+128,((21-
y)*8)*4+192:PLOT 1,((124-d)/3)*4,((84-(21-y)*
8)/3)*4
 1320 SOUND 1,-15,190,1:PLOT 1,((124-d)/3)*4,
((84-(21-y)*8)/3)*4
 1330 SOUND 1,-15,210,1:PLOT 1,((124-d)/3)*4,
((84-(21-y)*8)/3)*4
 1340 GOTO 1540
 1350 ti=ti-30:t1=t1-30:COLOUR 3:PRINT TAB(28
,0);ti;" ":IF ti<=0 THEN PRINT TAB(25,0);"TI:
0 ":GOTO 1430
 1360 FOR g=7 TO 0 STEP -1
 1370   COLOUR 2:PRINT TAB(15,11);CHR$(p+80)
 1380 SOUND 1,-15,g*3+100,1:NEXT g
 1390 PRINT TAB(15,11);" "
 1400 FOR f=1 TO 8:FOR g=1 TO 10:NEXT g:ON t-
1 GOSUB 410,450,500,570,600,660,710,780:NEXT 
f
 1410 FOR g=0 TO 5:COLOUR 2:PRINT TAB(15,11);
CHR$(p+80):SOUND 1,-15,100+g*3,1:NEXT g
 1420 RETURN
 1430 FOR g=1 TO 7
 1440   FOR x=1 TO 21
 1450 SOUND 1,-15,80,0:NEXT x:NEXT g
 1460 COLOUR 3:PRINT TAB(11,8);"GAME OVER";TA
B(0,0);"SC:";sc:*FX15,1
 1470 IF sc<=hs THEN GOTO 1500
 1475 FORA=1 TO 2000:NEXT
 1480 hs=sc:PRINT TAB(1,11);"WELL DONE - A NE
W HIGH SCORE!!"
 1490 PRINT TAB(4,13);"PLEASE ENTER YOUR NAME
.":INPUT h$:FOR f=1 TO 50:NEXT f:GOTO 1510
 1500 PRINT TAB(1,11);"THE HIGH SCORE IS ";hs
;" POINTS.";TAB(1,12);"BY ";h$
 1510 PRINT TAB(2,16);"PRESS ANY KEY TO PLAY 
AGAIN."
 1520 IF INKEY$(1000)="" THEN TO 1520
 1530 SOUND 1,-15,250,1:GOTO 270
 1540 li=li-1:PRINT TAB(12,0);li
 1550 FOR f=1 TO 5:FOR g=144 TO 151
 1560     COLOUR 3:PRINT TAB(15,11);CHR$(g+80
):SOUND 1,-15,f+80,1
 1570 NEXT g:NEXT f
 1580 IF li=0 THEN COLOUR 3:PRINT TAB(9,0);"L
I:";li:GOTO 1430
 1590 PROCover(x,y,a$(1),0):PROCover(x,y+1,a$
(2),0):PRINT TAB(15,11);" "
 1600 GOTO 1180
 1610 GCOL 0,3:FOR f=1 TO 200:PLOT 69,RND(128
0),RND(1024):NEXT f
 1620 p=144:ti=500:b=100:sc=0:li=5:hit=0
 1630 COLOUR 3:PRINT TAB(0,0);"SC:      LI:  
  SH:      TI:    "
 1640 PRINT TAB(3,0);sc;TAB(12,0);li;TAB(19,0
);b;TAB(28,0);ti
 1650 SOUND 1,-15,70,1
 1660 GOTO 1180
 1670 PRINT TAB(0,7);CHR$141;CHR$129;"--CHESH
IRE CATS AND OTHER NASTIES!--"'CHR$141;CHR$13
1;"--CHESHIRE CATS AND OTHER NASTIES!--"
 1680 PRINT '''TAB(5);CHR$(133);"Program desi
gn & software by"
 1690 PRINT ''TAB(5);CHR$141;CHR$129;CHR$136;
"P A U L    S T A N L E Y"'TAB(5);CHR$141;CHR
$131;CHR$136;"P A U L    S T A N L E Y"
 1700 TIME=0:REPEAT UNTIL TIME>500:CLS
 1710 PRINT CHR$141;CHR$129;"--CHESHIRE CATS 
AND OTHER NASTIES!--"'CHR$141;CHR$131;"--CHES
HIRE CATS AND OTHER NASTIES!--"
 1720 PRINT '''''" They  placed  me  in   spa
ce.   Withoutengines, just a laser.";
 1730 PRINT " Shoot the nastiesthey said.  I'
d like to see them do  it.";
 1740 PRINT "Twist left with";CHR$133;"Z";CHR
$135;".  Right with";CHR$133;"X";CHR$135;", w
eremy  instructions. ";
 1750 PRINT "  They   told   me  toblast'em w
ith";CHR$133;"  <RETURN>";CHR$135;", and that
 if Igot into trouble, I could press";CHR$133
;"<SPACE>.God only knows what it does. ";
 1760 PRINT ''''TAB(10);CHR$141;CHR$129;"Plea
se help me!"'TAB(10);CHR$141;CHR$129;"Please 
help me!"'TAB(2,24);CHR$136;"If your prepared
 to press any key.";:*FX 15,1
 1770 IF INKEY$(1000)="" THEN GOTO 1770
 1780 SOUND 1,-15,240,2:RETURN
 1790 DEFPROCover(X%,Y%,A$,C%)
 1800 VDU 5:GCOL0,0:MOVE X%*32+128,1023-(Y%*3
2+128):PRINT STRING$(LEN(A$),CHR$245):MOVE X%
*32+128,1023-(Y%*32+128):GCOL 0,C%:PRINT A$:V
DU 4
 1810 ENDPROC
 1820 DEF FNscreen(X%,Y%)
 1830 VDU 31,X%,Y%:A%=135:C=USR(&FFF4):C=(C A
ND &FFFF) DIV &100
 1840 =C