60 MODE 1:INK 2,24,17
70 INK 1,15:INK 0,0:BORDER 0:PAPER 0:PEN 1
80 DIM X(250):DIM Y(250)
90 LENGTH=4:SCORE=0
100 GOSUB 400
110 MODE 0
120 FOR T=0 TO 26:INK 1,T:LOCATE 6,10:PRINT "MEGAWORM":NEXT T
130 FOR T=0 TO 1000 STEP 2:SOUND 1,T,1,7,0,0,1:INK 1,(T/50):NEXT T
140 MODE 1
150 HEAD=1:XHEAD=20:YHEAD=10
160 PEN 3:FOR T=1 TO 40:LOCATE T,1:PRINT CHR$(206):LOCATE T,25:PRINT CHR$(206);:NEXT T
170 FOR T=2 TO 24:LOCATE 1,T:PRINT CHR$(206);+SPACE$(38)+CHR$(206):NEXT T
180 OBJX=5:OBJY=6:XDIR=1:YDIR=0:FOR T=1 TO 4:X(T)=20:Y(T)=10:NEXT T:COUNT=1
190 :
220 X(HEAD)=XHEAD+XDIR:Y(HEAD)=YHEAD+YDIR:PEN 1:LOCATE X(HEAD),Y(HEAD):PRINT CHR$(232):XHEAD=XHEAD+XDIR:YHEAD=YHEAD+YDIR
230 HEAD=HEAD+1:IF HEAD > LENGTH THEN HEAD=1
240 LOCATE X(HEAD),Y(HEAD):PRINT " "
250 A$=INKEY$
260 IF A$= "." THEN XDIR=1:YDIR=0
270 IF A$= "," THEN XDIR=-1:YDIR=0
280 IF A$= "Z" OR A$= "z" THEN YDIR=1:XDIR=0
290 IF A$= "A" OR A$= "a" THEN YDIR=-1:XDIR=0
300 COUNT=COUNT-1:SPEED INK COUNT+1,COUNT+1:IF COUNT=0 THEN LOCATE OBJX,OBJY:PRINT " " ELSE 330
310 OBJX=RND(1)*37+2:OBJY=RND(1)*22+2:IF TEST (OBJX*16-4,(26-OBJY)*16-4) > 0 THEN GOTO 310 ELSE LOCATE OBJX,OBJY:PEN 2:PRINT CHR$(233):ENV 1,7,-1,9,8,-1,40:SOUND 1,300,10,15,1,1,1:PEN 3
320 COUNT=50
330 IF XHEAD=CINT(OBJX) AND YHEAD=CINT(OBJY) THEN COUNT=1:SCORE=SCORE+20:LENGTH=LENGTH+4:IF LENGTH > 250 THEN GOTO 730 ELSE SOUND 1,478,20,15:FOR T=LENGTH-4 TO LENGTH:X(T)=2:Y(T)=2:NEXT T
340 IF XHEAD < 2 OR XHEAD > 39 OR YHEAD < 2 OR YHEAD > 24 THEN GOTO 650
350 IF TEST ((XHEAD+XDIR)*16-4,(26-(YHEAD+YDIR))*16-4) > 0 AND XHEAD <> CINT (OBJX) AND YHEAD <> CINT (OBJY) THEN GOTO 650
360 GOTO 220
370 :
400 PRINT "    DO YOU WANT INSTRUCTIONS ?"
410 A$=INKEY$:IF A$="" THEN GOTO 410
420 IF A$= "Y" OR A$= "y" THEN GOTO 430 ELSE RETURN
430 CLS:PRINT "           INSTRUCTIONS"
440 LOCATE 1,8:PRINT "   MOVE THE WORM AROUND THE SCREEN"
450 INK 1,RND(1)*26
460 PRINT "   AND COLLECT THE OBJECTS . IF"
470 INK 1,RND(1)*26
480 PRINT "   YOU CRASH INTO YOURSELF OR THE"
490 INK 1,RND(1)*26
500 PRINT "   WALL , THE GAME IS OVER"
510 PRINT "   WHEN YOU COLLECT AN OBJECT"
520 PRINT "   YOU MAY SHED SOME SKIN."
530 INK 1,RND(1)*26
540 PRINT "   'A' = UP      'Z' = DOWN"
550 INK 1,18
560 PRINT "   ',' = LEFT    '.' = RIGHT"
570 LOCATE 1,22:PRINT "   PRESS ANY KEY TO CONTINUE"
580 A$=INKEY$:IF A$="" THEN GOTO 580
590 INK 1,11
600 RETURN
610 :
640 A$=INKEY$:IF A$="" THEN GOTO 640
650 ENT 1,127,2,2:SOUND 1,200,200,1,1,1
660 FOR T=1000 TO 500 STEP-5:LOCATE 40,25:PRINT " ":SOUND 1,T,5,15,2,1,1:NEXT T
670 MODE 0:LOCATE 6,10:INK 2,18,11:PEN 2:PRINT "GAME OVER"
680 FOR T=1 TO 1000:NEXT T:SPEED INK 10,10:PRINT " You scored ";SCORE; "     points"
690 A$=INKEY$:IF A$="" THEN GOTO 690 ELSE RUN
700 :
730 PEN 2
740 MODE 0:LOCATE 3,7:PRINT "CONGRATULATIONS":LOCATE 1,10:PRINT " YOU HAVE GROWN TO":PRINT " YOUR FULL LENGTH ! ":FOR T=500 TO 600 STEP 5:SOUND 0,T,25,15,0,0,0:SOUND 1,T,25,15,1,1,1
750 SOUND 2,600-T+500,25,15,0,1,1:NEXT T
760 PRINT " SCORE = ";SCORE; " !"
770 A$=INKEY$:IF A$="" THEN GOTO 770 ELSE RUN