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