Listing of file='CATDELUX' on disk='vmedia/games-droz01.wvd.zip'
# Sector 76, program filename = 'CATDELUX'
0001 REM ***** 'CAT & MOUSE' 9/28/81 WRITTEN BY JAMES LESNICK MD, PHILADELPH
IA, PA.
0005 DIM F(24,38),H(10),H$(10)8,W$20,L$(10)2,N$(10)3 ,N1$(10)3
0006 DATA LOAD DC OPEN T "CATDATA"
0007 FOR I=1 TO 10
: DATA LOAD DC N$(I),H(I)
: NEXT I
0010 PRINT HEX(03060202020F)
: P5=100
: K=3
: S=0
: H=3
0015 K$=HEX(C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0)
0016 K1$=HEX(C8CCFFFFC8CCFFFFC8CCFFFFC8CC)
0020 REM ---- THIS IS THE FIELD
0030 DATA 3,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,1,1,
1,1,1,3
0031 DATA 1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,1
0032 DATA 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
0,0,0,1
0033 DATA 1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,1
0034 DATA 1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,1,1,1,3,1,1,1,0,0,0,0,1,0,0,0,0,1,1,
1,1,1,1
0035 DATA 1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,0,0,1,0,0,1,1,1,1,1,1,0,0,0,0,1,0,
0,0,0,1
0036 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,1
0037 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,1
0038 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,1,0,0,1,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,1
0039 DATA 1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,
1,1,1,1
0040 DATA 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,0
0041 DATA 2,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,
1,1,1,2
0042 DATA 0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,0
0043 DATA 1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,
1,1,1,1
0044 DATA 1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,2,1,1,1,1,1,1,1,1,0,0,0,0,1,0,
0,0,0,1
0045 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,1
0046 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,1
0047 DATA 1,0,0,0,0,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,0,
0,0,0,1
0048 DATA 1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,0,
0,0,0,1
0049 DATA 1,1,1,1,1,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1,1,
1,1,1,1
0050 DATA 1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,0,
0,0,0,1
0051 DATA 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
0,0,0,1
0052 DATA 1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,
0,0,0,1
0053 DATA 3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,3
0100 PRINT AT(0,1);BOX(24,77)
0105 PRINT AT(10,24);BOX(4,31);
0106 PRINT AT(1,4);BOX(3,7);AT(1,68);BOX(3,7);
0107 PRINT AT(0,14);BOX(1,19);BOX(0,-19);
0108 PRINT AT(1,36);BOX(3,9);
0109 PRINT AT(0,48);BOX(1,17);AT(0,48);BOX(0,-17);
0110 PRINT AT(2,14);BOX(1,19);AT(2,48);BOX(1,17);
0111 PRINT AT(12,1);BOX(1,10);AT(10,1);BOX(1,10);BOX(-3,0);AT(10,68);BOX(1,10)
;AT(12,68);BOX(1,10);AT(10,78);BOX(-3,0);
0112 PRINT AT(5,4);BOX(4,7);AT(5,68);BOX(4,7);
0113 PRINT AT(4,14);BOX(7,7);AT(4,58);BOX(7,7);
0114 PRINT AT(6,24);BOX(3,9);AT(6,48);BOX(3,7);
0115 PRINT AT(4,24);BOX(1,9);AT(4,48);BOX(1,7);
0116 PRINT AT(5,36);BOX(4,3);AT(5,42);BOX(4,3);
0117 PRINT AT(10,39);BOX(0,-3);
0118 PRINT AT(20,4);BOX(3,7);AT(20,68);BOX(3,7);
0119 PRINT AT(21,14);BOX(2,19);
0120 PRINT AT(21,48);BOX(2,17);
0121 PRINT AT(18,36);BOX(5,9);
0122 PRINT AT(14,4);BOX(5,7);AT(14,68);BOX(5,7);
0123 PRINT AT(12,14);BOX(8,7);AT(12,58);BOX(8,7);
0124 PRINT AT(18,24);BOX(2,9);AT(18,48);BOX(2,7);
0125 PRINT AT(15,24);BOX(2,15);AT(15,42);BOX(2,13);
0180 PRINT AT(0,16);HEX(9120912091);
0190 E1=0
: FOR I= 1 TO 24
: FOR J= 1 TO 38
: READ F(I,J)
: IF F(I,J)=1 THEN E1=E1+1
: IF F(I,J)=3 THEN E1=E1+1
: NEXT J
: NEXT I
: RESTORE
0193 PRINT AT(0,50);HEX(020402020E);STR(K1$,1,(K*4)-2);HEX(020402020F);
0195 FOR Y=0 TO 23
: FOR X=2 TO 76 STEP 2
: IF F(Y+1,X/2)=1 THEN PRINT AT(Y,X);HEX(C8C4);
: IF F(Y+1,X/2)=3 THEN PRINT AT(Y,X);HEX(FFFF);
: IF F(Y+1,X/2)=2 THEN PRINT AT(Y,X);HEX(C0C0);
: NEXT X
: NEXT Y
0196 PRINT AT(11,27);HEX(D7C3C0D7EBC2EBC3E0F8F0C0DDD8D5EAC3D5EAC0D5CAD3C1D7C3C
0C0)
0197 PRINT AT(12,27);HEX(F5F0C0D7EBC0EAC0C0C2C0C0D5C0D5EAF0D5EAF0D5E0F2D4F7F0C
0)
0198 E=0
0199 IF S>0 THEN 200
: PRINT AT(13,30);HEX(02040B000E);
: INPUT "INSTRUCTIONS (Y OR N)",N1$(1)
: PRINT HEX(020400000E);HEX(06);
: IF N1$(1)="Y" THEN 9000
0200 REM --- MAIN PROGRAM LOOP ---
0201 X=40
: Y=14
: A$="8"
: F=0
0202 PRINT AT(13,30);HEX(02040B000E);"HIT 'RETURN' TO START ";HEX(020400000E
);
0203 KEYIN B$,204,203
: GOTO 203
0204 IF B$<>HEX(0D) THEN 203
: PRINT AT(13,30);K$;STR(K$,1,10);
: PRINT AT(0,62-(4*(4-K)));STR(K$,1,4);
0205 L1,M1,N1,O1=40
: L2,M2,N2,O2=10
: C=0
: C1=1
: M=0
: L3,M3,N3,O3=0
0225 IF A$<>"0" THEN 230
: IF H=0 THEN 230
: A=5
: A$="5"
: PRINT AT(Y,X);HEX(C0C0);
0226 X=2*INT((INT(RND(1)*100)+(100/38))/(100/38))
0227 Y=INT((INT(RND(1)*100))/(99/23))
0228 IF F(Y+1,X/2)=0 THEN 226
: IF F(Y+1,X/2)=3 THEN 226
: IF F(Y+1,X/2)=2 THEN 229
: GOSUB '5 (1)
: F(Y+1,X/2)=2
0229 PRINT AT(Y,X);HEX(020402020E);HEX(C8CC);HEX(020400000E);
: H=H-1
: PRINT AT(0,16+(H*2));HEX(20);
: IF F=1 THEN 190
: GOTO 300
0230 IF A$<>"2" THEN 240
: A=2
: GOTO 300
0240 IF A$<>"4" THEN 245
: A=4
: GOTO 300
0245 IF A$<>"5" THEN 250
: A=5
: GOTO 300
0250 IF A$<> "6" THEN 260
: A=6
: GOTO 300
0260 IF A$<> "8" THEN 300
: A=8
0300 IF A=5 THEN 320
: ON A/2 GOSUB 1200,1100,1000,1300
: IF F=1 THEN 190
: IF F=2 THEN 200
0305 KEYIN A$,310,310
0310 GOSUB 2000
: IF F=2 THEN 200
: GOTO 225
0320 FOR P=1 TO P5*2
: NEXT P
: C=C-1
: GOTO 305
1000 FOR I=X TO 76 STEP 2
: REM HORIZONTAL -->
1002 C=C-1
1005 PRINT HEX(020402020E);AT(Y,I);HEX(C8CC);HEX(020402020F);
1006 IF Y<> 11 THEN 1007
: IF I<>74 THEN 1007
: PRINT AT(Y,I);HEX(C0C0);AT(11,2);HEX(F7F3);
: I=2
: GOTO 1008
1007 IF I<76 THEN 1008
: FOR P=1 TO P5*2
: NEXT P
: GOTO 1055
1008 IF F(Y+1,(I/2)+1)=0 THEN 1180
: IF C<=0 THEN 1090
: IF F(Y+1,(I/2)+1)=5 THEN GOSUB '15(I+2,Y)
1010 PRINT AT(Y,I);HEX(C0);HEX(020402020E);AT(Y,I+1);HEX(C0C0);
1020 FOR P=1 TO P5
: NEXT P
1030 PRINT HEX(020402020F);AT(Y,I+1);HEX(C0);HEX(020402020E);HEX(C8CC);HEX(020
402020F);
1035 FOR P=1 TO P5
: NEXT P
1037 IF F(Y+1,(I/2)+1)<>3 THEN 1040
: C=30
: S1=100
1040 GOSUB '5(F(Y+1,(I/2)+1))
: IF F=1 THEN RETURN
: F(Y+1,(I/2)+1)=2
1041 X=I+2
: GOSUB 2000
: IF F=2 THEN RETURN
1045 KEYIN A$,1070,1050
1050 NEXT I
1055 X=76
1060 RETURN
1070 X=I+2
: RETURN
1090 IF F(Y+1,(I/2)+1)=5 THEN 1180
: GOTO 1010
1100 FOR I= X TO 2 STEP -2
: REM HORIZONTAL <--
1102 C=C-1
1105 PRINT HEX(020402020E);AT(Y,I);HEX(CCC4);HEX(020402020F);
1106 IF Y<> 11 THEN 1107
: IF I<>4 THEN 1107
: PRINT AT(Y,I);HEX(C0C0);AT(11,76);HEX(F3FB);
: I=76
: GOTO 1108
1107 IF I>2 THEN 1108
: FOR P=1 TO P5*2
: NEXT P
: GOTO 1155
1108 IF F(Y+1,(I/2)-1)=0 THEN 1180
: IF C<=0 THEN 1190
: IF F(Y+1,(I/2)-1)=5 THEN GOSUB '15(I-2,Y)
1110 PRINT HEX(020402020E);AT(Y,I-1);HEX(C0C0);HEX(020402020F);HEX(C0);
1120 FOR P=1 TO P5
: NEXT P
1130 PRINT HEX(020402020E);AT(Y,I-2);HEX(CCC4);HEX(020402000F);HEX(C0);
1135 FOR P=1 TO P5
: NEXT P
1137 IF F(Y+1,(I/2)-1)<>3 THEN 1140
: C=30
: S1=100
1140 GOSUB '5 (F(Y+1,(I/2)-1))
: IF F= 1 THEN RETURN
: F(Y+1,(I/2)-1)=2
1141 X=I-2
: GOSUB 2000
: IF F= 2 THEN RETURN
1145 KEYIN A$,1170,1150
1150 NEXT I
1155 X=2
1160 RETURN
1170 X=I-2
: RETURN
1180 X=I
: FOR P=1 TO P5*2
: NEXT P
: GOSUB 2000
: RETURN
1190 IF F(Y+1,(I/2)-1)=5 THEN 1180
: GOTO 1110
1200 FOR I=Y TO 23
: REM VERTICAL DOWN
1202 C=C-1
1205 PRINT HEX(020402020E);AT(I,X);HEX(E8D4);HEX(020402020F);
1207 IF I<23 THEN 1208
: FOR P=1 TO P5*2
: NEXT P
: GOTO 1255
1208 IF F(I+2,X/2)=0 THEN 1380
: IF C<=0 THEN 1290
: IF F(I+2,X/2)=5 THEN GOSUB '15(X,I+1)
1210 PRINT AT(I,X);HEX(C0C0);HEX(020402020E);AT(I+1,X);HEX(C0C0);
1220 FOR P=1 TO P5
: NEXT P
1230 PRINT AT(I+1,X);HEX(E8D4);HEX(020402020F);
1235 FOR P=1 TO P5
: NEXT P
1237 IF F(I+2,X/2)<>3 THEN 1240
: C=30
: S1=100
1240 GOSUB '5 (F(I+2,X/2))
: IF F=1 THEN RETURN
: F(I+2,X/2) = 2
1241 Y=I+1
: GOSUB 2000
: IF F=2 THEN RETURN
1245 KEYIN A$,1270,1250
1250 NEXT I
1255 Y=23
1260 RETURN
1270 Y=I+1
: RETURN
1290 IF F(I+2,X/2)=5 THEN 1380
: GOTO 1210
1300 FOR I= Y TO 0 STEP -1
: REM VERTICAL UP
1302 C=C-1
1305 PRINT HEX(020402020E);AT(I,X);HEX(CAC5);HEX(020402020F);
1306 IF I>0 THEN 1308
: FOR P=1 TO P5*2
: NEXT P
: GOTO 1355
1308 IF F(I,X/2)=0 THEN 1380
: IF C<=0 THEN 1390
: IF F(I,X/2)=5 THEN GOSUB '15(X,I-1)
1310 PRINT AT(I,X);HEX(C0C008080C);HEX(020402020E);HEX(C0C0);
1320 FOR P=1 TO P5
: NEXT P
1330 PRINT AT(I-1,X);HEX(CAC5);HEX(020402020F);
1335 FOR P=1 TO P5
: NEXT P
1337 IF F(I,X/2)<>3 THEN 1340
: C=30
: S1=100
1340 GOSUB '5 (F(I,X/2))
: IF F=1 THEN RETURN
: F(I,X/2)=2
1341 Y=I-1
: GOSUB 2000
: IF F=2 THEN RETURN
1345 KEYIN A$,1370,1350
1350 NEXT I
1355 Y=0
1360 RETURN
1370 Y=I-1
: RETURN
1380 Y=I
: FOR P=1 TO P5*2
: NEXT P
: GOSUB 2000
: RETURN
1390 IF F(I,X/2)=5 THEN 1380
: GOTO 1310
2000 IF C<=0 THEN 2005
: C1=C1*(-1)
: IF C1 =-1 THEN 2005
: FOR P=1 TO P5*8
: NEXT P
: RETURN
2005 IF M=4 THEN 2040
2010 IF RND(1)>.975 THEN M=M+1
2020 IF M=0 THEN 2075
2030 ON M GOTO 2070,2060,2050,2040
2040 GOSUB '10 (O1,O2,O3)
: IF F=2 THEN RETURN
: O1=X2
: O2=Y2
: O3=B
2050 GOSUB '10 (N1,N2,N3)
: IF F=2 THEN RETURN
: N1=X2
: N2=Y2
: N3=B
2060 GOSUB '10 (M1,M2,M3)
: IF F=2 THEN RETURN
: M1=X2
: M2=Y2
: M3=B
2070 GOSUB '10 (L1,L2,L3)
: IF F=2 THEN RETURN
: L1=X2
: L2=Y2
: L3=B
2075 FOR P=1 TO P5*(8-2*M)
: NEXT P
2090 RETURN
2100 DEFFN'0 (X1,Y1)
: REM CATS --->
2110 IF X1 = 76 THEN RETURN
2115 IF X1<>74 THEN 2120
: IF Y1=11 THEN 2180
2120 IF F(Y1+1,(X1/2)+1)=0 THEN RETURN
: IF F(Y1+1,(X1/2)+1)=5 THEN RETURN
2125 IF C>0 THEN 2130
: IF Y1<>Y THEN 2130
: IF X1+2=X THEN 5000
2130 PRINT AT(Y1,X1);HEX(C0C0);
: IF C>10 THEN 2132
2131 IF C>0 THEN PRINT HEX(02040B020E);
: ELSE PRINT HEX(020402020E);
2132 PRINT HEX(D9D9);
2140 FOR P = 1 TO P5*2
: NEXT P
2150 PRINT HEX(020400000E);
2164 F(Y1+1,X1/2)=B
2165 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
: IF B=3 THEN PRINT AT(Y1,X1);HEX(FFFF);
2166 B=F(Y1+1,(X1/2)+1)
: F(Y1+1,(X1/2)+1)=5
2170 Z=1
: RETURN
2180 IF F(12,2)=5 THEN RETURN
2185 IF B=1 THEN PRINT AT(11,74);HEX(C8C4);
: ELSE PRINT AT(11,74);HEX(C0C0);
2190 PRINT AT(11,4);
: IF C>10 THEN 2196
: IF C>0 THEN PRINT HEX(02040B020E);
: ELSE PRINT HEX(020402020E);
: PRINT HEX(D9D9);HEX(020400000E);
2195 F(12,37)=B
: B=F(12,2)
: F(12,2)=5
: X2=2
: Z=1
: RETURN
2196 PRINT HEX(D9D9);
: GOTO 2195
2200 DEFFN'1 (X1,Y1)
: REM CATS <---
2210 IF X1=2 THEN RETURN
2215 IF X1<>4 THEN 2220
: IF Y1=11 THEN 2280
2220 IF F(Y1+1,(X1/2)-1)=0 THEN RETURN
: IF F(Y1+1,(X1/2)-1)=5 THEN RETURN
2225 IF C>0 THEN 2230
: IF Y1<>Y THEN 2230
: IF X1-2 = X THEN 5000
2230 PRINT AT(Y1,X1-2);
: IF C>10 THEN 2235
2231 IF C>0 THEN PRINT HEX(02040B020E);
: ELSE PRINT HEX(020402020E);
2235 PRINT HEX(D9D9);HEX(020400000E);HEX(C0C0);
2240 FOR P=1 TO P5*2
: NEXT P
2264 F(Y1+1,X1/2)=B
2265 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
: IF B=3 THEN PRINT AT(Y1,X1);HEX(FFFF);
2266 B=F(Y1+1,(X1/2)-1)
: F(Y1+1,(X1/2)-1)=5
2270 Z=1
: RETURN
2280 IF F(12,37)=5 THEN RETURN
2285 IF B=1 THEN PRINT AT(11,4);HEX(C8C4);
: ELSE PRINT AT(11,4);HEX(C0C0);
2290 PRINT AT(11,74);
: IF C>10 THEN 2296
: IF C>0 THEN PRINT HEX(02040B020E);
: ELSE PRINT HEX(020402020E);
: PRINT HEX(D9D9);HEX(020400000E);
2295 F(12,2)=B
: B=F(12,37)
: F(12,37)=5
: X2=76
: Z=1
: RETURN
2296 PRINT HEX(D9D9);
: GOTO 2295
2300 DEFFN'2 (X1,Y1)
: REM CATS UP
2310 IF Y1=0 THEN RETURN
2320 IF F(Y1,X1/2)= 0 THEN RETURN
: IF F(Y1,X1/2)=5 THEN RETURN
2322 IF C>0 THEN 2325
: IF Y1-1<>Y THEN 2325
: IF X1=X THEN 5000
2325 F(Y1+1,X1/2)=B
2327 IF B<3 THEN 2330
: PRINT AT(Y1,X1);HEX(FFFF);
: GOTO 2335
2330 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
: ELSE PRINT AT(Y1,X1);HEX(C0C0);
2335 B=F(Y1,X1/2)
: F(Y1,X1/2)=5
2340 PRINT AT(Y1-1,X1);
: IF C>10 THEN 2345
2342 IF C>0 THEN PRINT HEX(02040B020E);
: ELSE PRINT HEX(020402020E);
2345 PRINT HEX(D9D9);HEX(020400000E);
2350 FOR P=1 TO P5*2
: NEXT P
2370 Z=1
: RETURN
2400 DEFFN'3 (X1,Y1)
: REM CATS DOWN
2410 IF Y1=23 THEN RETURN
2420 IF F(Y1+2,X1/2) = 0 THEN RETURN
: IF F(Y1+2,X1/2)=5 THEN RETURN
2422 IF C>0 THEN 2423
: IF Y1+1 <> Y THEN 2423
: IF X1=X THEN 5000
2423 F(Y1+1,X1/2)=B
2424 IF B<3 THEN 2425
: PRINT AT(Y1,X1);HEX(FFFF);
: GOTO 2427
2425 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
: ELSE PRINT AT(Y1,X1);HEX(C0C0);
2427 B=F(Y1+2,X1/2)
: F(Y1+2,X1/2)=5
2430 PRINT AT(Y1+1,X1);
: IF C>10 THEN 2435
2432 IF C>0 THEN PRINT HEX(02040B020E);
: ELSE PRINT HEX(020402020E);
2435 PRINT HEX(D9D9);HEX(020400000E);
2440 FOR P=1 TO P5*2
: NEXT P
2470 Z=1
: RETURN
3000 DEFFN'10(X2,Y2,B)
: REM ***** MOVE CATS *****
3005 Z=0
: IF C>0 THEN 3500
3010 IF X>X2 THEN 3100
: REM CATS ARE CHASING
3020 IF X<X2 THEN 3200
3030 IF Y<Y2 THEN 3300
3040 GOSUB '3 (X2,Y2)
: IF Z=0 THEN 3060
: Y2=Y2+1
: RETURN
3060 GOSUB '0 (X2,Y2)
: IF Z=0 THEN 3070
: X2=X2+2
: RETURN
3070 GOSUB '1 (X2,Y2)
: IF Z=0 THEN 3400
: X2=X2-2
: RETURN
3100 GOSUB '0 (X2,Y2)
: IF Z=0 THEN 3110
: X2=X2+2
: RETURN
3110 IF Y>Y2 THEN 3120
: GOSUB '2(X2,Y2)
: IF Z=0 THEN 3120
: Y2=Y2-1
: RETURN
3120 GOSUB '3(X2,Y2)
: IF Z=0 THEN 3130
: Y2=Y2+1
: RETURN
3130 GOSUB '2(X2,Y2)
: IF Z=0 THEN 3400
: Y2=Y2-1
: RETURN
3200 GOSUB '1 (X2,Y2)
: IF Z=0 THEN 3110
: X2=X2-2
: RETURN
3300 GOSUB '2 (X2,Y2)
: IF Z=0 THEN 3060
: Y2=Y2-1
: RETURN
3400 FOR P=1 TO P5*2
: NEXT P
: RETURN
3500 IF Y<Y2 THEN 3600
: REM CATS ARE BEING CHASED
3520 IF Y>Y2 THEN 3700
3530 IF X<X2 THEN 3800
3540 GOSUB '1 (X2,Y2)
: IF Z=0 THEN 3550
: X2=X2-2
: RETURN
3550 GOSUB '2 (X2,Y2)
: IF Z=0 THEN 3560
: Y2=Y2-1
: RETURN
3560 GOSUB '3 (X2,Y2)
: IF Z=0 THEN 3400
: Y2=Y2+1
: RETURN
3600 GOSUB '3 (X2,Y2)
: IF Z=0 THEN 3610
: Y2=Y2+1
: RETURN
3610 IF X>X2 THEN 3620
: GOSUB '0 (X2,Y2)
: IF Z=0 THEN 3620
: X2=X2+2
: RETURN
3620 GOSUB '1 (X2,Y2)
: IF Z=0 THEN 3630
: X2=X2-2
: RETURN
3630 GOSUB '0 (X2,Y2)
: IF Z=0 THEN 3400
: X2=X2+2
: RETURN
3700 GOSUB '2 (X2,Y2)
: IF Z=0 THEN 3610
: Y2=Y2-1
: RETURN
3800 GOSUB '0 (X2,Y2)
: IF Z=0 THEN 3550
: X2=X2+2
: RETURN
4000 REM **** SCORING ROUTINE ****
4010 DEFFN'5 (Z)
4020 IF Z=1 THEN S=S+10
4030 IF Z=3 THEN S=S+50
4040 IF Z=2 THEN 4100
: E=E+1
4100 PRINT AT(0,25);HEX(020402000E);S;HEX(020400000E);
4110 IF E=E1 THEN GOSUB 5200
4200 RETURN
4500 DEFFN'15(X1,Y1)
4505 S=S+S1
4510 PRINT HEX(020402000E);AT(Y1,X1-1);S1;HEX(07);AT(0,25);S;HEX(020400000E);
4520 FOR P=1 TO 3000
: NEXT P
: S1=S1*2
4525 PRINT AT(Y1,X1-1);HEX(C0C0C0C0);
4530 F(Y1+1,X1/2)=2
4600 IF L1<>X1 THEN 4700
: IF L2<>Y1 THEN 4700
: E2=L3
4610 L1=M1
: L2=M2
: L3=M3
4620 M1=N1
: M2=N2
: M3=N3
4630 N1=O1
: N2=O2
: N3=O3
4640 ON M GOTO 4650,4660,4670,4680
4650 L1=40
: L2=10
: M=0
: IF E2=1 THEN GOSUB 4800
: L3=0
: RETURN
4660 M1=40
: M2=10
: M=1
: IF E2=1 THEN GOSUB 4800
: M3=0
: RETURN
4670 N1=40
: N2=10
: M=2
: IF E2=1 THEN GOSUB 4800
: N3=0
: RETURN
4680 O1=40
: O2=10
: M=3
: IF E2=1 THEN GOSUB 4800
: O3=0
: RETURN
4700 IF M1<>X1 THEN 4710
: IF M2<>Y1 THEN 4710
: E2=M3
: GOTO 4620
4710 IF N1<>X1 THEN 4720
: IF N2<>Y1 THEN 4720
: E2=N3
: GOTO 4630
4720 E2=O3
: GOTO 4640
4800 E=E+1
: IF E=E1 THEN GOSUB 5200
: RETURN
5000 REM *** MOUSE CAPTURED ***
5010 PRINT HEX(07);
5020 K=K-1
5040 PRINT AT(Y,X);HEX(C0C0);
5050 ON M GOTO 5090,5080,5070,5060
5060 IF O3=1 THEN PRINT AT(O2,O1);HEX(C8C4);
: IF O3=2 THEN PRINT AT(O2,O1);HEX(C0C0);
: IF O3=3 THEN PRINT AT(O2,O1);HEX(FFFF);
: F(O2+1,O1/2)=O3
5070 IF N3=1 THEN PRINT AT(N2,N1);HEX(C8C4);
: IF N3=2 THEN PRINT AT(N2,N1);HEX(C0C0);
: IF N3=3 THEN PRINT AT(N2,N1);HEX(FFFF);
: F(N2+1,N1/2)=N3
5080 IF M3=1 THEN PRINT AT(M2,M1);HEX(C8C4);
: IF M3=2 THEN PRINT AT(M2,M1);HEX(C0C0);
: IF M3=3 THEN PRINT AT(M2,M1);HEX(FFFF);
: F(M2+1,M1/2)=M3
5090 IF L3=1 THEN PRINT AT(L2,L1);HEX(C8C4);
: IF L3=2 THEN PRINT AT(L2,L1);HEX(C0C0);
: IF L3=3 THEN PRINT AT(L2,L1);HEX(FFFF);
: F(L2+1,L1/2)=L3
5100 IF K=0 THEN 5110
: F=2
: Z=1
: RETURN
5110 PRINT AT(0,52);HEX(02040B000E);"GAME OVER";AT(22,0);
5111 IF S<=H(1) THEN 5125
: H(1)=S
5112 PRINT AT(10,25);HEX(02040B000E); " CONGRATULATIONS ! ";HEX(
020400000E);
5113 PRINT AT(11,25);" YOU HAVE QUALIFIED FOR THE ";
5114 PRINT AT(12,25);" CAT & MOUSE HALL OF FAME ";
5115 PRINT HEX(0202000F);AT(13,30);
: N$(1)=" "
: LINPUT "ENTER YOUR INITIALS",-N$(1)
5116 MAT MOVE H() TO H$()
: MAT SORT H$() TO W$,L$()
: MAT MOVE H$(),L$(1) TO H()
5117 MAT MOVE N$(),L$(1) TO N1$()
: MAT MOVE N1$() TO N$()
5118 DBACKSPACE BEG
: FOR I=1 TO 10
: DATA SAVE DC N$(I),H(I)
: NEXT I
5121 PRINT HEX(03);AT(2,25);HEX(02040B000E);"THE CAT & MOUSE HALL OF FAME";HEX
(020400000E);
5122 FOR I=10 TO 1 STEP -1
: PRINT AT(14-I,33);N$(I);" ";H(I);
: NEXT I
5125 PRINT AT(13,25);HEX(06);HEX(02040B000E);"HIT 'SF'0 AND PLAY AGAIN";HEX(02
040B000E);
5130 KEYIN A$,,5140
: GOTO 5130
5140 IF VAL(A$)=0 THEN 6
: IF VAL(A$)=31 THEN LOAD T "START"
: GOTO 5130
5200 K=K+1
: P5=P5-3
: F=1
: IF K<=4 THEN 5210
: K=4
: PRINT AT(13,32);HEX(02040B000E);"BONUS 5000 pts";HEX(020400000E);
: S=S+5000
: PRINT AT(0,25);S;
: RETURN
5210 PRINT AT(13,34);HEX(02040B000E);"BONUS MOUSE";HEX(020400000E);
5220 RETURN
9000 PRINT HEX(03);HEX(02040B000E);
9005 PRINT AT(0,27);" THE CAT & MOUSE GAME ";
9010 PRINT AT(2,9);"THE MICE ARE LOOSE IN THE HOUSE AND EATING UP EVERYTHING."
9020 PRINT AT(3,17);"THE CATS HAVE BEEN LET OUT TO CHASE THEM.";HEX(020400000E
);
9030 PRINT AT(5,20);BOX(2,5);AT(8,20);BOX(2,5);AT(11,20);BOX(2,5);
9040 PRINT AT(8,12);BOX(2,5);AT(8,27);BOX(2,6);
9050 PRINT AT(5,22);"8";AT(6,22);"UP";AT(8,22);"5";AT(9,21);"STOP";AT(11,22);"
2";AT(12,21);"DOWN";AT(8,14);"4";AT(9,13);"LEFT";AT(8,30);"6";AT(9,28);"R
IGHT"
9055 PRINT AT(14,12);BOX(2,13);AT(14,18);"0";AT(15,13);"ESCAPE HOLE";
9056 PRINT HEX(02040B000E);AT(14,37);"A MOUSE CAN EAT A HOLE IN A WALL TO ESCA
PE,";AT(15,37);"BUT THERE'S NO TELLING WHERE HE COMES UP !";HEX(020400000
E);
9060 PRINT HEX(0202020F);AT(7,40);HEX(C8C4);" = CRUMB 10 Pts.";
9070 PRINT AT(9,40);HEX(FFFF);" = SUPER CHEESE 50 Pts.";
9080 PRINT AT(11,37);HEX(02040B000E);"WHEN A MOUSE EATS THE 'SUPER CHEESE', HE
";AT(12,36);"AQUIRES THE STRENGTH TO CHASE AND EAT CATS."
9100 PRINT HEX(020400000E);HEX(06);AT(18,40);HEX(D9D9);AT(18,50);HEX(D9D9);AT(
18,60);HEX(D9D9);AT(18,70);HEX(D9D9);
9105 S=100
: PRINT AT(18,0);"MOUSE -->";AT(17,39);"CATS";HEX(020402020E);
9110 FOR I=10 TO 70 STEP 2
: IF I=38 THEN 9200
: IF I=48 THEN 9200
: IF I=58 THEN 9200
: IF I=68 THEN 9200
9120 PRINT AT(18,I);HEX(FFFFC8CC);
: FOR P=1 TO 1500
: NEXT P
: NEXT I
: GOTO 9300
9200 PRINT HEX(020400000E);AT(19,I);HEX(07);S;"Pts";HEX(020402020E);
: FOR P=1 TO 2500
: NEXT P
: S=S*2
: GOTO 9120
9300 PRINT AT(21,22);" THE CURRENT HIGH SCORE IS ";H(10); AT(23,11);HEX(02040B
000E);"BEGIN WITH 3 MICE AND 3 HOLES. HIT 'RETURN' TO START";HEX(0204
00000E);
9310 KEYIN A$,9320,9310
: GOTO 9310
9320 IF A$<>HEX(0D)THEN GOTO 9320
: GOTO 10