image of READY prompt

Wang2200.org

Listing of file='CATMOUSE' on disk='vmedia/more_games.wvd.zip'

# Sector 268, program filename = 'CATMOUSE'
0010 REM  *****  'CATMOUSE' 9/28/81 WRITTEN BY JAMES LESNICK MD, PHILADELPHIA,
      PA.
0020 REM RE-WRITTEN 11/08/81 BY ROGER M. KIRK JR, LAWRENCE, MA
0030 $PSTAT="CATMOUSE"
0040 DIM A$1
0050 DIM F(24,38),H(10),H$(10)8,W$20,L$(10)2,N$(10)3 ,N1$(10)3
0060 DATA LOAD DC OPEN T "CMDATA"
0070 DATA LOAD DC N$(),H()
0080 PRINT HEX(03060202020F)
   : P5=100
   : K=3
   : S=0
   : H=3
0090 K$=HEX(C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0)
   : REM 'GRAPHIC NULLS'
0100 K1$=HEX(C8CCFFFFC8CCFFFFC8CCFFFFC8CC)
0110 REM  ----   THIS IS THE FIELD
0120 REM 0 = NOTHING
0130 REM 1 = CRUMB
0140 REM 2 = SUPER CHEESE
0150 REM 3 = A WALL
0160 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
0170 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
0180 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
0190 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
0200 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
0210 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
0220 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
0230 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
0240 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
0250 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
0260 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
0270 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
0280 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
0290 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
0300 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
0310 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
0320 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
0330 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
0340 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
0350 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
0360 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
0370 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
0380 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
0390 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
0400 PRINT AT(0,1);BOX(24,77)
0410 PRINT AT(10,24);BOX(4,31);
0420 PRINT AT(1,4);BOX(3,7);AT(1,68);BOX(3,7);
0430 PRINT AT(0,14);BOX(1,19);BOX(0,-19);
0440 PRINT AT(1,36);BOX(3,9);
0450 PRINT AT(0,48);BOX(1,17);AT(0,48);BOX(0,-17);
0460 PRINT AT(2,14);BOX(1,19);AT(2,48);BOX(1,17);
0470 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);
0480 PRINT AT(5,4);BOX(4,7);AT(5,68);BOX(4,7);
0490 PRINT AT(4,14);BOX(7,7);AT(4,58);BOX(7,7);
0500 PRINT AT(6,24);BOX(3,9);AT(6,48);BOX(3,7);
0510 PRINT AT(4,24);BOX(1,9);AT(4,48);BOX(1,7);
0520 PRINT AT(5,36);BOX(4,3);AT(5,42);BOX(4,3);
0530 PRINT AT(10,39);BOX(0,-3);
0540 PRINT AT(20,4);BOX(3,7);AT(20,68);BOX(3,7);
0550 PRINT AT(21,14);BOX(2,19);
0560 PRINT AT(21,48);BOX(2,17);
0570 PRINT AT(18,36);BOX(5,9);
0580 PRINT AT(14,4);BOX(5,7);AT(14,68);BOX(5,7);
0590 PRINT AT(12,14);BOX(8,7);AT(12,58);BOX(8,7);
0600 PRINT AT(18,24);BOX(2,9);AT(18,48);BOX(2,7);
0610 PRINT AT(15,24);BOX(2,15);AT(15,42);BOX(2,13);
0620 PRINT AT(0,16);HEX(9120912091);
0630 E1=369
   : MAT READ F
   : RESTORE
0640 PRINT AT(0,50);HEX(020402020E);STR(K1$,1,(K*4)-2);HEX(020402020F);
   : FOR Y=0 TO 23
   : FOR X=2 TO 76 STEP 2
   : D=F(Y+1,X/2)
   : ON D GOTO 650,670,660
   : GOTO 680
0650 PRINT AT(Y,X);HEX(C8C4);
   : GOTO 680
0660 PRINT AT(Y,X);HEX(FFFF);
   : GOTO 680
0670 PRINT AT(Y,X);HEX(C0C0);
   : GOTO 680
0680 NEXT X,Y
0690 PRINT AT(11,27);HEX(D7C3C0D7EBC2EBC3E0F8F0C0DDD8D5EAC3D5EAC0D5CAD3C1D7C3C
     0C0)
0700 PRINT AT(12,27);HEX(F5F0C0D7EBC0EAC0C0C2C0C0D5C0D5EAF0D5EAF0D5E0F2D4F7F0C
     0)
0710 E=0
0720 IF S>0 THEN 730
   : PRINT AT(13,30);HEX(02040B000E);
   : PRINT "INSTRUCTIONS (Y OR N)"
   : KEYIN  A$
   : PRINT HEX(020400000E);HEX(06);
   : IF A$="Y" THEN 3230
   : IF A$<>"N" THEN GOTO 720
0730 REM %^--- MAIN PROGRAM LOOP ---
0740 X=40
   : Y=14
   : A$="8"
   : F=0
0750 PRINT AT(13,30);HEX(02040B000E);"HIT 'RETURN' TO START   ";HEX(020400000E
     );
0760 KEYIN B$
   : IF B$<>HEX(0D) THEN 760
0770 PRINT AT(13,30);K$;STR(K$,1,10);
   : PRINT AT(0,62-(4*(4-K)));STR(K$,1,4);
0780 L1,M1,N1,O1=40
   : L2,M2,N2,O2=10
   : C=0
   : C1=1
   : M=0
   : L3,M3,N3,O3=0
0790 REM %^
0800 IF A$<>"0" THEN 850
   : IF H=0 THEN 850
   : A$="5"
   : PRINT AT(Y,X);HEX(C0C0);
   : REM CLEAR OLD MOUSE
0810 X=2*INT((INT(RND(1)*100)+(100/38))/(100/38))
   : REM RANDOM X COORDINATE FOR 'HOLE'
0820 Y=INT((INT(RND(1)*100))/(99/23))
   : REM RANDOM Y COORDINATE FOR 'HOLE'
0830 IF F(Y+1,X/2)=0 THEN 810
   : IF F(Y+1,X/2)=3 THEN 810
   : IF F(Y+1,X/2)=2 THEN 840
   : GOSUB '105 (1)
   : F(Y+1,X/2)=2
0840 REM PRINT NEW MOUSE
   : 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 630
   : GOTO 850
0850 ON POS("123456789"=A$) GOSUB 1080,1280,890,1080,880,890,1080,1460,890
   : IF F=1 THEN 630
   : IF F=2 THEN 730
0860 KEYIN A$,870,870
0870 GOSUB 1650
   : IF F=2 THEN 730
   : GOTO 800
0880 FOR P=1 TO P5*2
   : NEXT P
   : C=C-1
   : RETURN
0890 FOR I=X TO 76 STEP 2
   :                     REM  MOUSE  HORIZONTAL -->
0900 C=C-1
0910 PRINT HEX(020402020E);AT(Y,I);HEX(C8CC);HEX(020402020F);
0920 IF Y<> 11 THEN 930
   : IF I<>74 THEN 930
   : PRINT AT(Y,I);HEX(C0C0);AT(11,2);HEX(F7F3);
   : I=2
   : GOTO 940
0930 IF I<76 THEN 940
   : FOR P=1 TO P5*2
   : NEXT P
   : GOTO 1040
0940 IF F(Y+1,(I/2)+1)=0 THEN 1260
   : IF C<=0 THEN 1070
   : IF F(Y+1,(I/2)+1)=5 THEN GOSUB '115(I+2,Y)
0950 PRINT AT(Y,I);HEX(C0);HEX(020402020E);AT(Y,I+1);HEX(C0C0);
0960 FOR P=1 TO P5
   : NEXT P
0970 PRINT HEX(020402020F);AT(Y,I+1);HEX(C0);HEX(020402020E);HEX(C8CC);HEX(020
     402020F);
0980 FOR P=1 TO P5
   : NEXT P
0990 IF F(Y+1,(I/2)+1)<>3 THEN 1000
   : C=30
   : S1=100
1000 GOSUB '105(F(Y+1,(I/2)+1))
   : IF F=1 THEN RETURN
   : F(Y+1,(I/2)+1)=2
1010 X=I+2
   : GOSUB 1650
   : IF F=2 THEN RETURN
1020 KEYIN A$,1060,1030
1030 NEXT I
1040 X=76
1050 RETURN
1060 X=I+2
   : RETURN
1070 IF F(Y+1,(I/2)+1)=5 THEN 1260
   : GOTO 950
1080 FOR I= X TO 2 STEP -2
   :             REM  MOUSE  HORIZONTAL <--
1090 C=C-1
1100 PRINT HEX(020402020E);AT(Y,I);HEX(CCC4);HEX(020402020F);
1110 IF Y<> 11 THEN 1120
   : IF I<>4 THEN 1120
   : PRINT AT(Y,I);HEX(C0C0);AT(11,76);HEX(F3FB);
   : I=76
   : GOTO 1130
1120 IF I>2 THEN 1130
   : FOR P=1 TO P5*2
   : NEXT P
   : GOTO 1230
1130 IF F(Y+1,(I/2)-1)=0 THEN 1260
   : IF C<=0 THEN 1270
   : IF F(Y+1,(I/2)-1)=5 THEN GOSUB '115(I-2,Y)
1140 PRINT HEX(020402020E);AT(Y,I-1);HEX(C0C0);HEX(020402020F);HEX(C0);
1150 FOR P=1 TO P5
   : NEXT P
1160 PRINT HEX(020402020E);AT(Y,I-2);HEX(CCC4);HEX(020402000F);HEX(C0);
1170 FOR P=1 TO P5
   : NEXT P
1180 IF F(Y+1,(I/2)-1)<>3 THEN 1190
   : C=30
   : S1=100
1190 GOSUB '105 (F(Y+1,(I/2)-1))
   : IF F= 1 THEN RETURN
   : F(Y+1,(I/2)-1)=2
1200 X=I-2
   : GOSUB 1650
   : IF F= 2 THEN RETURN
1210 KEYIN A$,1250,1220
1220 NEXT I
1230 X=2
1240 RETURN
1250 X=I-2
   : RETURN
1260 X=I
   : FOR P=1 TO P5*2
   : NEXT P
   : GOSUB 1650
   : RETURN
1270 IF F(Y+1,(I/2)-1)=5 THEN 1260
   : GOTO 1140
1280 FOR I=Y TO 23
   :              REM  MOUSE  VERTICAL DOWN
1290 C=C-1
1300 PRINT HEX(020402020E);AT(I,X);HEX(E8D4);HEX(020402020F);
1310 IF I<23 THEN 1320
   : FOR P=1 TO P5*2
   : NEXT P
   : GOTO 1420
1320 IF F(I+2,X/2)=0 THEN 1630
   : IF C<=0 THEN 1450
   : IF F(I+2,X/2)=5 THEN GOSUB '115(X,I+1)
1330 PRINT AT(I,X);HEX(C0C0);HEX(020402020E);AT(I+1,X);HEX(C0C0);
1340 FOR P=1 TO P5
   : NEXT P
1350 PRINT AT(I+1,X);HEX(E8D4);HEX(020402020F);
1360 FOR P=1 TO P5
   : NEXT P
1370 IF F(I+2,X/2)<>3 THEN 1380
   : C=30
   : S1=100
1380 GOSUB '105 (F(I+2,X/2))
   : IF F=1 THEN RETURN
   : F(I+2,X/2) = 2
1390 Y=I+1
   : GOSUB 1650
   : IF F=2 THEN RETURN
1400 KEYIN A$,1440,1410
1410 NEXT I
1420 Y=23
1430 RETURN
1440 Y=I+1
   : RETURN
1450 IF F(I+2,X/2)=5 THEN 1630
   : GOTO 1330
1460 FOR I= Y TO 0 STEP -1
   :            REM  MOUSE  VERTICAL UP
1470 C=C-1
1480 PRINT HEX(020402020E);AT(I,X);HEX(CAC5);HEX(020402020F);
1490 IF I>0 THEN 1500
   : FOR P=1 TO P5*2
   : NEXT P
   : GOTO 1600
1500 IF F(I,X/2)=0 THEN 1630
   : IF C<=0 THEN 1640
   : IF F(I,X/2)=5 THEN GOSUB '115(X,I-1)
1510 PRINT AT(I,X);HEX(C0C008080C);HEX(020402020E);HEX(C0C0);
1520 FOR P=1 TO P5
   : NEXT P
1530 PRINT AT(I-1,X);HEX(CAC5);HEX(020402020F);
1540 FOR P=1 TO P5
   : NEXT P
1550 IF F(I,X/2)<>3 THEN 1560
   : C=30
   : S1=100
1560 GOSUB '105 (F(I,X/2))
   : IF F=1 THEN RETURN
   : F(I,X/2)=2
1570 Y=I-1
   : GOSUB 1650
   : IF F=2 THEN RETURN
1580 KEYIN A$,1620,1590
1590 NEXT I
1600 Y=0
1610 RETURN
1620 Y=I-1
   : RETURN
1630 Y=I
   : FOR P=1 TO P5*2
   : NEXT P
   : GOSUB 1650
   : RETURN
1640 IF F(I,X/2)=5 THEN 1630
   : GOTO 1510
1650 IF C<=0 THEN 1660
   : C1=-C1
   : IF C1 =-1 THEN 1660
   : FOR P=1 TO P5*8
   : NEXT P
   : RETURN
1660 IF M=4 THEN 1700
1670 IF RND(1)>.975 THEN M=M+1
1680 IF M=0 THEN 1740
1690 ON M GOTO 1730,1720,1710,1700
1700 GOSUB '110 (O1,O2,O3)
   : IF F=2 THEN RETURN
   : O1=X2
   : O2=Y2
   : O3=B
1710 GOSUB '110 (N1,N2,N3)
   : IF F=2 THEN RETURN
   : N1=X2
   : N2=Y2
   : N3=B
1720 GOSUB '110 (M1,M2,M3)
   : IF F=2 THEN RETURN
   : M1=X2
   : M2=Y2
   : M3=B
1730 GOSUB '110 (L1,L2,L3)
   : IF F=2 THEN RETURN
   : L1=X2
   : L2=Y2
   : L3=B
1740 FOR P=1 TO P5*(8-2*M)
   : NEXT P
1750 RETURN
1760 DEFFN'100 (X1,Y1)
   :                  REM    CATS  --->
1770 IF X1 = 76 THEN RETURN
1780 IF X1<>74 THEN 1790
   : IF Y1=11 THEN 1900
1790 IF F(Y1+1,(X1/2)+1)=0 THEN RETURN
   : IF F(Y1+1,(X1/2)+1)=5 THEN RETURN
1800 IF C>0 THEN 1810
   : IF Y1<>Y THEN 1810
   : IF X1+2=X THEN 2930
1810 PRINT AT(Y1,X1);HEX(C0C0);
   : IF C>10 THEN 1830
1820 IF C>0 THEN PRINT HEX(02040B020E);
   : ELSE PRINT HEX(020402020E);
1830 PRINT HEX(D9D9);
1840 FOR P = 1 TO P5*2
   : NEXT P
1850 PRINT HEX(020400000E);
1860 F(Y1+1,X1/2)=B
1870 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
   : IF B=3 THEN PRINT AT(Y1,X1);HEX(FFFF);
1880 B=F(Y1+1,(X1/2)+1)
   : F(Y1+1,(X1/2)+1)=5
1890 Z=1
   : RETURN
1900 IF F(12,2)=5 THEN RETURN
1910 IF B=1 THEN PRINT AT(11,74);HEX(C8C4);
   : ELSE PRINT AT(11,74);HEX(C0C0);
1920 PRINT AT(11,4);
   : IF C>10 THEN 1940
   : IF C>0 THEN PRINT HEX(02040B020E);
   : ELSE PRINT HEX(020402020E);
   : PRINT HEX(D9D9);HEX(020400000E);
1930 F(12,37)=B
   : B=F(12,2)
   : F(12,2)=5
   : X2=2
   : Z=1
   : RETURN
1940 PRINT HEX(D9D9);
   : GOTO 1930
1950 DEFFN'101 (X1,Y1)
   :                 REM    CATS  <---
1960 IF X1=2 THEN RETURN
1970 IF X1<>4 THEN 1980
   : IF Y1=11 THEN 2080
1980 IF F(Y1+1,(X1/2)-1)=0 THEN RETURN
   : IF F(Y1+1,(X1/2)-1)=5 THEN RETURN
1990 IF C>0 THEN 2000
   : IF Y1<>Y THEN 2000
   : IF X1-2 = X THEN 2930
2000 PRINT AT(Y1,X1-2);
   : IF C>10 THEN 2020
2010 IF C>0 THEN PRINT HEX(02040B020E);
   : ELSE PRINT HEX(020402020E);
2020 PRINT HEX(D9D9);HEX(020400000E);HEX(C0C0);
2030 FOR P=1 TO P5*2
   : NEXT P
2040 F(Y1+1,X1/2)=B
2050 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
   : IF B=3 THEN PRINT AT(Y1,X1);HEX(FFFF);
2060 B=F(Y1+1,(X1/2)-1)
   : F(Y1+1,(X1/2)-1)=5
2070 Z=1
   : RETURN
2080 IF F(12,37)=5 THEN RETURN
2090 IF B=1 THEN PRINT AT(11,4);HEX(C8C4);
   : ELSE PRINT AT(11,4);HEX(C0C0);
2100 PRINT AT(11,74);
   : IF C>10 THEN 2120
   : IF C>0 THEN PRINT HEX(02040B020E);
   : ELSE PRINT HEX(020402020E);
   : PRINT HEX(D9D9);HEX(020400000E);
2110 F(12,2)=B
   : B=F(12,37)
   : F(12,37)=5
   : X2=76
   : Z=1
   : RETURN
2120 PRINT HEX(D9D9);
   : GOTO 2110
2130 DEFFN'102 (X1,Y1)
   :                REM    CATS UP
2140 IF Y1=0 THEN RETURN
2150 IF F(Y1,X1/2)= 0 THEN RETURN
   : IF F(Y1,X1/2)=5 THEN RETURN
2160 IF C>0 THEN 2170
   : IF Y1-1<>Y THEN 2170
   : IF X1=X THEN 2930
2170 F(Y1+1,X1/2)=B
2180 IF B<3 THEN 2190
   : PRINT AT(Y1,X1);HEX(FFFF);
   : GOTO 2200
2190 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
   : ELSE PRINT AT(Y1,X1);HEX(C0C0);
2200 B=F(Y1,X1/2)
   : F(Y1,X1/2)=5
2210 PRINT AT(Y1-1,X1);
   : IF C>10 THEN 2230
2220 IF C>0 THEN PRINT HEX(02040B020E);
   : ELSE PRINT HEX(020402020E);
2230 PRINT HEX(D9D9);HEX(020400000E);
2240 FOR P=1 TO P5*2
   : NEXT P
2250 Z=1
   : RETURN
2260 DEFFN'103 (X1,Y1)
   :              REM    CATS DOWN
2270 IF Y1=23 THEN RETURN
2280 IF F(Y1+2,X1/2) = 0 THEN RETURN
   : IF F(Y1+2,X1/2)=5 THEN RETURN
2290 IF C>0 THEN 2300
   : IF Y1+1 <> Y THEN 2300
   : IF X1=X THEN 2930
2300 F(Y1+1,X1/2)=B
2310 IF B<3 THEN 2320
   : PRINT AT(Y1,X1);HEX(FFFF);
   : GOTO 2330
2320 IF B=1 THEN PRINT AT(Y1,X1);HEX(C8C4);
   : ELSE PRINT AT(Y1,X1);HEX(C0C0);
2330 B=F(Y1+2,X1/2)
   : F(Y1+2,X1/2)=5
2340 PRINT AT(Y1+1,X1);
   : IF C>10 THEN 2360
2350 IF C>0 THEN PRINT HEX(02040B020E);
   : ELSE PRINT HEX(020402020E);
2360 PRINT HEX(D9D9);HEX(020400000E);
2370 FOR P=1 TO P5*2
   : NEXT P
2380 Z=1
   : RETURN
2390 DEFFN'110(X2,Y2,B)
   : REM ***** MOVE CATS *****
2400 Z=0
   : IF C>0 THEN 2540
2410 IF X>X2 THEN 2470
   : REM    CATS ARE CHASING
2420 IF X<X2 THEN 2510
2430 IF Y<Y2 THEN 2520
2440 GOSUB '103 (X2,Y2)
   : IF Z=0 THEN 2450
   : Y2=Y2+1
   : RETURN
2450 GOSUB '100 (X2,Y2)
   : IF Z=0 THEN 2460
   : X2=X2+2
   : RETURN
2460 GOSUB '101 (X2,Y2)
   : IF Z=0 THEN 2530
   : X2=X2-2
   : RETURN
2470 GOSUB '100 (X2,Y2)
   : IF Z=0 THEN 2480
   : X2=X2+2
   : RETURN
2480 IF Y>Y2 THEN 2490
   : GOSUB '102(X2,Y2)
   : IF Z=0 THEN 2490
   : Y2=Y2-1
   : RETURN
2490 GOSUB '103(X2,Y2)
   : IF Z=0 THEN 2500
   : Y2=Y2+1
   : RETURN
2500 GOSUB '102(X2,Y2)
   : IF Z=0 THEN 2530
   : Y2=Y2-1
   : RETURN
2510 GOSUB '101 (X2,Y2)
   : IF Z=0 THEN 2480
   : X2=X2-2
   : RETURN
2520 GOSUB '102 (X2,Y2)
   : IF Z=0 THEN 2450
   : Y2=Y2-1
   : RETURN
2530 FOR P=1 TO P5*2
   : NEXT P
   : RETURN
2540 IF Y<Y2 THEN 2600
   : REM    CATS ARE BEING CHASED
2550 IF Y>Y2 THEN 2640
2560 IF X<X2 THEN 2650
2570 GOSUB '101 (X2,Y2)
   : IF Z=0 THEN 2580
   : X2=X2-2
   : RETURN
2580 GOSUB '102 (X2,Y2)
   : IF Z=0 THEN 2590
   : Y2=Y2-1
   : RETURN
2590 GOSUB '103 (X2,Y2)
   : IF Z=0 THEN 2530
   : Y2=Y2+1
   : RETURN
2600 GOSUB '103 (X2,Y2)
   : IF Z=0 THEN 2610
   : Y2=Y2+1
   : RETURN
2610 IF X>X2 THEN 2620
   : GOSUB '100 (X2,Y2)
   : IF Z=0 THEN 2620
   : X2=X2+2
   : RETURN
2620 GOSUB '101 (X2,Y2)
   : IF Z=0 THEN 2630
   : X2=X2-2
   : RETURN
2630 GOSUB '100 (X2,Y2)
   : IF Z=0 THEN 2530
   : X2=X2+2
   : RETURN
2640 GOSUB '102 (X2,Y2)
   : IF Z=0 THEN 2610
   : Y2=Y2-1
   : RETURN
2650 GOSUB '100 (X2,Y2)
   : IF Z=0 THEN 2580
   : X2=X2+2
   : RETURN
2660 REM  ****  SCORING ROUTINE  ****
2670 DEFFN'105 (Z)
2680 IF Z=1 THEN S=S+10
2690 IF Z=3 THEN S=S+50
2700 IF Z=2 THEN 2710
   : E=E+1
2710 PRINT AT(0,25);HEX(020402000E);S;HEX(020400000E);
2720 IF E=E1 THEN GOSUB 3190
2730 RETURN
2740 DEFFN'115(X1,Y1)
2750 S=S+S1
2760 PRINT HEX(020402000E);AT(Y1,X1-1);S1;HEX(07);AT(0,25);S;HEX(020400000E);
2770 FOR P=1 TO 3000
   : NEXT P
   : S1=S1*2
2780 PRINT AT(Y1,X1-1);HEX(C0C0C0C0);
2790 F(Y1+1,X1/2)=2
2800 IF L1<>X1 THEN 2890
   : IF L2<>Y1 THEN 2890
   : E2=L3
2810 L1=M1
   : L2=M2
   : L3=M3
2820 M1=N1
   : M2=N2
   : M3=N3
2830 N1=O1
   : N2=O2
   : N3=O3
2840 ON M GOTO 2850,2860,2870,2880
2850 L1=40
   : L2=10
   : M=0
   : IF E2=1 THEN GOSUB 2920
   : L3=0
   : RETURN
2860 M1=40
   : M2=10
   : M=1
   : IF E2=1 THEN GOSUB 2920
   : M3=0
   : RETURN
2870 N1=40
   : N2=10
   : M=2
   : IF E2=1 THEN GOSUB 2920
   : N3=0
   : RETURN
2880 O1=40
   : O2=10
   : M=3
   : IF E2=1 THEN GOSUB 2920
   : O3=0
   : RETURN
2890 IF M1<>X1 THEN 2900
   : IF M2<>Y1 THEN 2900
   : E2=M3
   : GOTO 2820
2900 IF N1<>X1 THEN 2910
   : IF N2<>Y1 THEN 2910
   : E2=N3
   : GOTO 2830
2910 E2=O3
   : GOTO 2840
2920 E=E+1
   : IF E=E1 THEN GOSUB 3190
   : RETURN
2930 REM *** MOUSE CAPTURED ***
2940 PRINT HEX(07);
2950 K=K-1
2960 PRINT AT(Y,X);HEX(C0C0);
2970 ON M GOTO 3010,3000,2990,2980
2980 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
2990 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
3000 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
3010 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
3020 IF K=0 THEN 3030
   : F=2
   : Z=1
   : RETURN
3030 PRINT AT(0,52);HEX(02040B000E);"GAME OVER";AT(22,0);
3040 IF S<=H(1) THEN 3160
   : H(1)=S
3050 PRINT AT(10,25);HEX(02040B000E); "        CONGRATULATIONS !        ";HEX(
     020400000E);
3060 PRINT AT(11,25);"   YOU HAVE QUALIFIED FOR THE    ";
3070 PRINT AT(12,25);"    CAT & MOUSE HALL OF FAME     ";
3080 PRINT HEX(0202000F);AT(13,30);
   : N$(1)="   "
   : LINPUT "ENTER YOUR INITIALS",-N$(1)
   : IF VER(N$(1),"AAA")<3 THEN 3080
3090 MAT MOVE H() TO H$()
   : MAT SORT H$() TO W$,L$()
   : MAT MOVE H$(),L$(1) TO H()
3100 MAT MOVE N$(),L$(1) TO N1$()
   : MAT MOVE N1$() TO N$()
3110 DBACKSPACE BEG
   : DATA SAVE DC N$(),H()
3120 PRINT HEX(03);AT(2,25);HEX(02040B000E);"THE CAT & MOUSE HALL OF FAME";HEX
     (020400000E);
3130 FOR I=10 TO 1 STEP -1
   : PRINT AT(14-I,33);
   : IF N$(I)<>" "AND I<10 AND N$(I)=N$(I+1) THEN PRINTUSING 3140,H(I)
   : ELSE PRINTUSING 3150,N$(I);H(I)
   : NEXT I
3140 % "      #####
3150 %###     #####
3160 PRINT AT(15,27);HEX(06);HEX(02040B000E);"HIT 'SF'0 AND PLAY AGAIN";HEX(02
     040B000E);
3170 KEYIN A$,,3180
   : GOTO 3170
3180 IF VAL(A$)=0 THEN 60
   : IF VAL(A$)=31 THEN LOAD T "START"
   : GOTO 3170
3190 K=K+1
   : P5=P5-3
   : F=1
   : IF K<=4 THEN 3200
   : K=4
   : PRINT AT(13,32);HEX(02040B000E);"BONUS 5000 pts";HEX(020400000E);
   : S=S+5000
   : PRINT AT(0,25);S;
   : RETURN
3200 PRINT AT(13,34);HEX(02040B000E);"BONUS MOUSE";HEX(020400000E);
3210 RETURN
3220 REM %^ PRINT RULES OF THE GAME.
3230 PRINT HEX(03);HEX(02040B000E);
3240 PRINT AT(0,27);" THE CAT & MOUSE GAME ";
3250 PRINT AT(2,9);"THE MICE ARE LOOSE IN THE HOUSE AND EATING UP EVERYTHING."
3260 PRINT AT(3,17);"THE CATS HAVE BEEN LET OUT TO CHASE THEM.";HEX(020400000E
     );
3270 PRINT AT(5,20);BOX(2,5);AT(8,20);BOX(2,5);AT(11,20);BOX(2,5);
3280 PRINT AT(8,12);BOX(2,5);AT(8,27);BOX(2,6);
3290 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"
3300 PRINT AT(14,12);BOX(2,13);AT(14,18);"0";AT(15,13);"ESCAPE HOLE";
3310 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);
3320 PRINT HEX(0202020F);AT(7,40);HEX(C8C4);"  =  CRUMB  10 Pts.";
3330 PRINT AT(9,40);HEX(FFFF);"  =  SUPER CHEESE  50 Pts.";
3340 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."
3350 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);
3360 S=100
   : PRINT AT(18,0);"MOUSE -->";AT(17,39);"CATS";HEX(020402020E);
3370 FOR I=10 TO 70 STEP 2
   : IF I=38 THEN 3390
   : IF I=48 THEN 3390
   : IF I=58 THEN 3390
   : IF I=68 THEN 3390
3380 PRINT AT(18,I);HEX(FFFFC8CC);
   : FOR P=1 TO 0900
   : NEXT P
   : NEXT I
   : GOTO 3400
3390 PRINT HEX(020400000E);AT(19,I);HEX(07);S;"Pts";HEX(020402020E);
   : FOR P=1 TO 2500
   : NEXT P
   : S=S*2
   : GOTO 3380
3400 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);
3410 KEYIN A$,3420,3410
   : GOTO 3410
3420 IF A$<>HEX(0D)THEN GOTO 3410
   : GOTO 80
9999 %PRINT "RE-SAVING 'CATMOUSE'":SCRATCH T"CATMOUSE":SAVE T()"CATMOUSE"