0 GOTO2000
20 US=USR(100927018):US=USR(1540):US=USR(103481391):RETURN
22 US=USR(263684):US=USR(100927019):US=USR(2819627):RETURN
24 US=USR(956578091):US=USR(1056979204):US=USR(959135535):RETURN
26 US=USR(956578091):US=USR(956579588):US=USR(959135531):RETURN
28 US=USR(100940036):US=USR(103495979):RETURN
30 US=USR(336335907):US=USR(100930572):US=USR(337839659):RETURN
32 US=USR(101454860):US=USR(336335907):US=USR(102962211):RETURN
34 US=USR(722217763):US=USR(956574476):US=USR(723728683):RETURN
36 US=USR(722221324):US=USR(722217763):US=USR(723728675):RETURN
38 US=USR(336341772):US=USR(337849123):RETURN
40 US=USR(487726365):US=USR(336338194):US=USR(488444963):RETURN
42 US=USR(336731410):US=USR(487726365):US=USR(337452317):RETURN
44 US=USR(571613725):US=USR(722215442):US=USR(572336931):RETURN
46 US=USR(571616018):US=USR(571613725):US=USR(572336925):RETURN
48 US=USR(470950674):US=USR(471671581):RETURN
50 US=USR(504569620):US=USR(521412379):US=USR(521870876):RETURN
52 US=USR(504635156):US=USR(521412379):US=USR(521870875):RETURN
54 US=USR(554901524):US=USR(538189851):US=USR(538648860):RETURN
56 US=USR(554967060):US=USR(538189851):US=USR(538648859):RETURN
58 RETURN
60 ONSQGOTO62,64,66
62 PRINT@431,CHR$(255);CHR$(255);:RETURN
64 PRINT@367,CHR$(252);CHR$(232);:RETURN
66 PRINT@335,CHR$(208);CHR$(224);:RETURN
70 FL=0:FORX=-1TO1STEP2
72 IF MZ(H+X,V)<=0 THEN MZ(H+X,V)=-1:FL=1
74 IF MZ(H,V+X)<=0 THEN MZ(H,V+X)=-1:FL=1
76 NEXT X:RETURN
80 DR=RND(4):ONDRGOTO82,84,86,88
82 IFMZ(H-1,V)=-1THENNH=H-1:NV=V:MZ(NH,NV)=4:MZ(H,V)=MZ(H,V)+1:RETURN
83 GOTO80
84 IFMZ(H,V-1)=-1THENNH=H:NV=V-1:MZ(NH,NV)=8:MZ(H,V)=MZ(H,V)+2:RETURN
85 GOTO80
86 IFMZ(H+1,V)=-1THENNH=H+1:NV=V:MZ(NH,NV)=1:MZ(H,V)=MZ(H,V)+4:RETURN
87 GOTO80
88 IFMZ(H,V+1)=-1THENNH=H:NV=V+1:MZ(NH,NV)=2:MZ(H,V)=MZ(H,V)+8:RETURN
89 GOTO80
90 FL=0:FORX=12TO1STEP-1:FORY=1TO9
92 IFMZ(X,Y)=>0THEN96
93 FL=FL+1:FORI=-1TO1STEP2:IFMZ(X+I,Y)>0ANDMZ(X+I,Y)<100THENNH=X+I:NV=Y
94 IFMZ(X,Y+I)>0ANDMZ(X,Y+I)<100THENNH=X:NV=Y+I
95 NEXTI
96 NEXTY,X:RETURN
100 ONSQGOSUB20,30,40,50:RETURN
102 ONSQGOSUB22,32,42,52:RETURN
104 ONSQGOSUB24,34,44,54:RETURN
106 ONSQGOSUB26,36,46,56:RETURN
108 ONSQGOSUB28,38,48,58:FL=1:RETURN
120 PRINT@W1,CHR$(AB(48+Z,0));CHR$(AB(48+Z,1));
130 PRINT@W1+32,CHR$(AB(48+Z,2));CHR$(AB(48+Z,3));
140 RETURN
200 VI=16384:VCTRL=49151:TT=32:CH=16:W=2:E=3:J=0:U=1:F=5
210 FORX=0TO63:X1(X)=INT(X/W):X2(X)=INT(X-X1(X)*W):X1(X)=X1(X)+VI:NEXTX
215 FORY=0TO47:Y1(Y)=INT(Y/E):Y2(Y)=INT(Y-Y1(Y)*E):Y1(Y)=Y1(Y)*TT:NEXTY
220 FORH=0TO13:MZ(H,0)=100:MZ(H,10)=100:NEXTH:FORV=0TO10:MZ(0,V)=100:MZ(13,V)=100:NEXTV
225 MC=0
230 PRINT@419,"do you need instructions?"
235 A$=INKEY$:IFA$=""THEN235
236 IFA$="Y"THEN1500
240 CLS:PRINT"PLEASE WAIT..."
300 FORH=1TO12:FORV=1TO9:MZ(H,V)=0:NEXT V,H:H=RND(12):V=RND(9):MZ(H,V)=16:GOSUB70:GOSUB80:MZ(H,V)=MZ(H,V)-16
310 H=NH:V=NV:GOSUB70:IFFL=0THEN330
320 GOSUB80:GOTO310
330 GOSUB90:IFFL=0THEN410
340 GOTO310
410 SV=RND(9):SH=1:CV=RND(9):CH=12
420 RH=SH:RV=SV:DR=RND(4)
500 CLS0:GOSUB2003:SQ=1:Z=MZ(RH,RV):FL=0:IFCH=RHANDCV=RVTHEN1300
510 ON Z GOTO 520,530,540,550,560,570,580,590,600,610,620,630,640,650,770
520 ONDRGOTO720,710,700,730
530 ONDRGOTO730,720,710,700
540 ONDRGOTO750,740,710,730
550 ONDRGOTO700,730,720,710
560 ONDRGOTO720,760,720,760
570 ONDRGOTO730,750,740,710
580 ONDRGOTO750,770,740,760
590 ONDRGOTO710,700,730,720
600 ONDRGOTO740,710,730,750
610 ONDRGOTO760,720,760,720
620 ONDRGOTO770,740,760,750
630 ONDRGOTO710,730,750,740
640 ONDRGOTO740,760,750,770
650 ONDRGOTO760,750,770,740
700 GOSUB100:GOSUB104:GOSUB108:GOTO800
710 GOSUB102:GOSUB104:GOSUB108:GOTO800
720 GOSUB100:GOSUB104:GOTO800
730 GOSUB100:GOSUB106:GOSUB108:GOTO800
740 GOSUB102:GOSUB104:GOTO800
750 GOSUB100:GOSUB106:GOTO800
760 GOSUB102:GOSUB106:GOSUB108:GOTO800
770 GOSUB102:GOSUB106:GOTO800
800 IF FL=1 OR SQ=4 THEN 900
810 ONDRGOTO820,830,840,850
820 Z=MZ(RH-SQ,RV):IF CH=RH-SQ AND CV=RV THEN GOSUB 60
825 GOTO860
830 Z=MZ(RH,RV-SQ):IF CH=RH AND CV=RV-SQ THEN GOSUB 60
835 GOTO860
840 Z=MZ(RH+SQ,RV):IF CH=RH+SQ AND CV=RV THEN GOSUB 60
845 GOTO860
850 Z=MZ(RH,RV+SQ):IF CH=RH AND CV=RV+SQ THEN GOSUB 60
860 SQ=SQ+1:GOTO510
900 IFABS(CH-RH)>ABS(CV-RV)THENZ=ABS(CH-RH):GOTO910
905 Z=ABS(CV-RV)
910 IFZ=10THEN918
911 IFZ=11THEN920
915 W1=16:GOSUB120:GOTO930
918 Z=U:W1=16:GOSUB120:Z=J:W1=18:GOSUB120:GOTO930
920 Z=U:W1=16:GOSUB120:W1=18:GOSUB120
930 A$=INKEY$:IFA$=""THEN930
950 IFA$="A"THEN1000
960 IFA$="S"THEN1010
970 IFA$="W"THEN1020
980 IFA$="Q"THEN1200
990 GOTO930
995 CLS:PRINT@139,"RAT MAZE";:PRINT@232,"BY BEN BRUNOTTE"
996 PRINT@265,"MC-10 VERSION":PRINT@297,"BY JIM GERRIE"
997 PRINT@329,"M.L. GRAPHICS":PRINT@362,"GREG DIONNE":RETURN
1000 DR=DR-1:IFDR<=0THENDR=4
1005 GOTO500
1010 DR=DR+1:IFDR>=5THENDR=1
1015 GOTO500
1020 Z=MZ(RH,RV):ONZGOTO1030,1040,1050,1060,1070,1080,1090,1100,1110,1120,1130,1140,1150,1160,1170
1030 IFDR=1THEN1170
1031 GOTO930
1040 IFDR=2THEN1170
1041 GOTO930
1050 IFDR<=2THEN1170
1051 GOTO930
1060 IFDR=3THEN1170
1061 GOTO930
1070 ONDRGOTO1170,930,1170,930
1080 ONDRGOTO930,1170,1170,930
1090 IFDR=4THEN930
1091 GOTO1170
1100 IFDR=4THEN1170
1101 GOTO930
1110 ONDRGOTO1170,930,930,1170
1120 ONDRGOTO930,1170,930,1170
1130 IFDR=3THEN930
1131 GOTO1170
1140 IFDR>=3THEN1170
1141 GOTO930
1150 IFDR=2THEN930
1151 GOTO1170
1160 IFDR=1THEN930
1170 IFDR=1THENRH=RH-U
1172 IFDR=2THENRV=RV-U
1174 IFDR=3THENRH=RH+U
1176 IFDR=4THENRV=RV+U
1180 GOTO500
1200 GOSUB2004:CLS:PRINT@130,"PRESS ANY KEY WHEN FINISHED     LOOKING AT MAZE.":FORZX=1TO800:NEXTZX:CLS0:GOSUB2003
1205 US=USR(45):US=USR(15360)
1208 FORH=1TO12:FORV=1TO9:Z=MZ(H,V)
1210 ONZGOTO1220,1220,1220,1230,1230,1230,1230,1240,1240,1240,1240,1250,1250,1250,1250
1220 US=USR(F*((256*(H-1)+V)*65536+256*H+V)):US=USR(F*((256*H+(V-1))*65536+256*H+V)):GOTO1250
1230 US=USR(F*((256*(H-1)+V)*65536+256*H+V)):GOTO1250
1240 US=USR(F*((256*H+(V-1))*65536+256*H+V))
1250 NEXTV,H
1255 X0=INT(F*CH-2.5):Y0=INT(F*CV-2.5):X1=X0+1:Y1=Y0:US=USR((X0*256+Y0)*65536+X1*256+Y1)
1260 US=USR(F*((SH*256+SV-1)*65536+256*(SH-1)+SV)):US=USR(F*((256*SH+SV)*65536+256*(SH-1)+SV-1))
1290 IFINKEY$=""THEN1290
1295 GOTO1400
1300 FORZ=0TO10:CLS(RND(9)-1):PRINT@197,"YOU GOT THE CHEESE!!";:SOUNDRND(255),2:NEXT Z:CLS:PRINT@197,"YOU GOT THE CHEESE!!";
1310 MC=MC+1
1400 GOSUB2004:CLS:PRINT@230,"MAZES COMPLETED =";MC;
1405 PRINT@448,"  sAME MAZE, nEW MAZE, OR qUIT            ENTER CHOICE";
1410 A$=INKEY$:IFA$=""THEN 1410
1420 IFA$="S"THENCLS0:GOSUB2003:GOTO420
1430 IFA$="N"THEN240
1440 IFA$="Q"THEN1550
1450 GOTO1400
1500 CLS
1501 PRINT"   YOU HAVE A RAT'S EYE VIEW OF"
1502 PRINT"THE MAZE. THE NUMBER OF SQUARES"
1504 PRINT"TO THE CHEESE AS THE FLEA FLIES"
1506 PRINT"IS DISPLAYED AT THE TOP OF THE"
1508 PRINT"SCREEN."
1510 PRINT"   YOUR OPTIONS ARE:"
1512 PRINT"<RIGHT ARROW KEY>=TURN RIGHT"
1513 PRINT"ON THE SAME SQUARE."
1514 PRINT"<LEFT ARROW KEY>=TURN LEFT ON"
1515 PRINT"THE SAME SQUARE."
1516 PRINT"<UP ARROW KEY>=MOVE ONE SQUARE"
1517 PRINT"FORWARD."
1521 PRINT"<Q>=SEE MAZE AND OPTIONS MENU."
1522 PRINT"'X' IS YOUR STARTING POSITION"
1523 PRINT"AND THE '-' IS THE CHEESE."
1524 PRINT"     press any key to begin";
1530 A$=INKEY$:T=RND(10):IFA$=""THEN1530
1540 GOTO240
1550 END
2000 GOSUB995:CLEAR100:DIMLU(1,2),AB(90,3),X1(63),Y1(47),X,Y,BY:FORX=0TO1:FORY=0TO2:READLU(X,Y):NEXTY,X:GOSUB2018
2001 DIMMZ(14,11),X2(63),Y2(47),B8,M8,S8,VI,TT,W,E,F,J,U,CH,US,X0,X1,Y0,Y1:GOTO200
2002 DATA32,8,2,16,4,1
2003 POKEVCTRL,CHOR(PEEK(VCTRL)AND7):RETURN
2004 POKEVCTRL,J:RETURN
2010 FORT=W1TOW2STEPW3:PRINT@T,CHR$(W4);:NEXTT:PRINT@W1,CHR$(W5);:PRINT@W2,CHR$(W6);:RETURN
2011 DATA128,128,128,128,149,128,132,128,152,128,128,128,128,128,134,128,128,128,132,128
2012 DATA154,138,164,160,149,128,148,128,179,170,172,136,177,170,140,168,171,170,128,168,187,162,140,168,187,162,172,168
2013 DATA176,170,128,168,187,170,172,168,187,170,128,168,177,168,132,128,155,138,168,168,187,136,172,160,186,160,172,136,186,138
2014 DATA172,160,187,160,172,136,187,160,168,128,186,160,172,160,171,170,168,168,149,128,148,128,128,170,172,168,171,168,168,168
2015 DATA170,128,172,136,174,170,168,168,186,138,168,168,154,138,164,160,187,170,168,128,154,138,164,168,187,136,168,168
2016 DATA187,162,140,168,181,160,148,128,170,170,172,168,170,170,148,128,170,170,184,168,169,168,168,168,171,170,148,128
2017 READAB(X,0),AB(X,1),AB(X,2),AB(X,3):RETURN:DATA177,168,172,136
2018 X=32:GOSUB2017:X=33:GOSUB2017:X=39:GOSUB2017:X=44:GOSUB2017:X=46:GOSUB2017
2019 FORX=48TO57:GOSUB2017:NEXTX:X=63:GOSUB2017:FORX=65TO90:GOSUB2017:NEXTX
2020 REM LINE DRAW SUBROUTINE BY GREG DIONNE
2030 REM US=USR((X0*256+Y0)*65537) FOR SINGLE POINT
2040 REM US=USR((X0*256+Y0)*65536+X1*256+Y1) TO DRAW LINE
3000 DATALNPDALMMABABNNLLNMMMJAMKCCAJCFADHPAALLHAAALLEANAMLCCAJCFADHPAALMHAAALMFANNNGBBCDHCEPJHMOJHNLJGNGJHNMINDCJG
3001 DATAMKJBMMCHCIJLLLJHMKJGMOJLNHJHMOBGJANLCKABEANANMCKABFABBCFOANGNMNHNLNLNGNHNMNGMLNLLMNHMLCANAFPHOOMOCNMMKNNNI
3002 DATAJGNJMGKLDNIGIAMAFFEEEEMLFFMBFFCEPIHEAANICEABEEIKIAJHNKIGCADNNLNIIJAAIKEAIEEBNNNINONINGNKOKAAOHAADJEPJHMOJH
3003 DATANLJGNHJHNMINMAJGMLJBMNCHLGJLLMJHMLJGMOJLNGJHMOBGJANLCKABEANANMCKABFABBCFOANGNMNHNLNLNHNHNMNGMKNLLLNHMKCANA
3004 Z=32768:FORX=0TO3:READA$::GOSUB3005:NEXTX:Z=16917:A$="HOIAAA"
3005 FORY=1TOLEN(A$)/2:POKEZ,(ASC(MID$(A$,2*Y-1,1))-65)*16+ASC(MID$(A$,2*Y,1))-65:Z=Z+1:NEXTY:RETURN
