catlab_sss.tap
catlab_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

    0 A1$="HEIMCOMPUTER robotron Z9001"
    2 A2$="SPIELE":A9=2
    4 A3$="X+CATLAB"
    6 A4$="KATZENLABYRINTH"
    8 A5$="EIN REAKTIONS-SPIEL"
   10 REM VERFASSER:SCHROETER
   12 REM ANSCHRIFT:MKD,DTW
   14 REM DATUM 07.09.1984 VERSION 2.0
   16 REM INITIALWERTE =================IN
   18 BORDER A9:INK 8:PAPER 1:WINDOW:CLS
   20 L=500:DIM M(4),N(4),R(4),X(14),Y(14):GOTO 10000
   90 GOSUB 100:GOTO 1000
   96 REM UNTERPROGRAMME ===============UP
   98 REM TITELBILD --------------------UP
  100 PRINT AT(2,2);A1$:PRINT AT(4,2);"",STRING$(34,""),""
  102 PRINT AT(5,2);"":PRINT AT(5,37);""
  104 PRINT AT(6,2);"",STRING$(34,""),""
  106 PRINT AT(5,3);A2$:PRINT INK 3;AT(5,29);A3$
  108 INK A9:PRINT AT(8,2);STRING$(36,"")
  110 FOR I=9 TO 13:PRINT AT(I,2);"":PRINT AT(I,37);"":NEXT I
  112 PRINT AT(14,2);STRING$(36,"")
  114 INK 8:PRINT AT(10,36-LEN(A4$));A4$:PRINT AT(12,36-LEN(A5$));A5$
  116 INK 3:PRINT AT(18,2);"VEB ROBOTRON-MESSELEKTRONIK"
  118 PRINT AT(20,2);">OTTO SCHOEN< DRESDEN":INK 8
  119 REM >ENTER< ---------------------UP
  120 PRINT INK 4;AT(22,31);">ENTER<"
  122 T$=INKEY$:IF T$=""THEN 122
  124 IF T$=CHR$(13)THEN PRINT AT(20,27);STRING$(11," "):RETURN
  126 GOSUB 130:GOTO 122
  129 REM WIE BITTE ? -----------------UP
  130 PRINT INK 2;AT(20,27);"WIE BITTE ?":RETURN
  149 REM J/N ABFRAGE -----------------UP
  150 PRINT INK 4;AT(22,(34-LEN(KY$)));KY$," ? J"
  152 T$=INKEY$:IF T$=""THEN 152
  153 PRINT INK 2;AT(22,37);T$
  154 IF ASC(T$)=74 OR ASC(T$)=13 THEN T=1:PRINT AT(20,27);STRING$(11," "):RETURN
  156 IF ASC(T$)=78 THEN T=2:PRINT AT(20,27);STRING$(11," "):RETURN
  158 GOSUB 130:PAUSE 10:GOTO 150
  199 REM MIN-STEPS PRINTEN -----------UP
  200 PRINT INK 3;AT(12,36);"MIN":PRINT INK 3;AT(13,35);"STEPS"
  202 PRINT INK 2;AT(15,35);L:RETURN
 1000 WINDOW:BORDER 1:PAPER 1:CLS:INK 7
 1010 PRINT INK 4;AT(0,2);STRING$(32,"")
 1020 PRINT AT(1,3);"                         "
 1030 PRINT AT(2,3);"        "
 1040 PRINT AT(3,3);"                     "
 1050 PRINT AT(4,3);"              "
 1060 PRINT AT(5,3);"                "
 1070 PRINT AT(6,3);"              "
 1080 PRINT AT(7,3);"                 "
 1090 PRINT AT(8,3);"             "
 1100 PRINT AT(9,3);"                 "
 1110 PRINT AT(10,3);"                 "
 1120 PRINT AT(11,3);"             "
 1130 PRINT AT(12,3);"                  "
 1140 PRINT AT(13,3);"              "
 1150 PRINT AT(14,3);"                   "
 1160 PRINT AT(15,3);"              "
 1170 PRINT AT(16,3);"               "
 1180 PRINT AT(17,3);"               "
 1190 PRINT AT(18,3);"               "
 1200 PRINT AT(19,3);"                 "
 1210 PRINT AT(20,3);"               "
 1220 PRINT AT(21,3);"                  "
 1230 PRINT AT(22,3);"                   "
 1240 PRINT INK 4;AT(23,2);STRING$(30,"")," "
 1244 WINDOW 1,23,2,2:PRINT INK 4;STRING$(22,"");:PRINT INK 3;AT(4,35);"STEPS"
 1246 WINDOW 1,23,33,33:PRINT INK 4;STRING$(22,"");:WINDOW:PRINT AT(0,0);" "
 1248 RM=5:PRINT INK 2;AT(22,35);"*****":GOSUB 200
 1265 X=25:RESTORE 1800:FOR I=1 TO 14:READ X(I):READ Y(I):NEXT I:K=0
 1280 FOR I=1 TO 4:R(I)=I-1
 1290 J=INT(14*RND(1)+1):M(I)=X(J):N(I)=Y(J)
 1310 IF PEEK(-5120+M(I)*40+N(I))<>255 THEN 1290
 1320 IF X<24 THEN 1480
 1330 NEXT I
 1370 X=1:Y=3:PRINT INK 2;AT(X,Y);"*"
 1380 FOR I=1 TO 4
 1390 POKE-5120+40*M(I)+N(I),255
 1400 O=M(I)+(R(I)=1)-(R(I)=3)
 1410 P=N(I)+(R(I)=2)-(R(I)=0)
 1420 XX=-5120+40*M(I)+N(I):IF PEEK(-5120+40*O+P)=255 THEN 1460
 1422 J=1:IF PEEK(XX-40)=255 THEN P(J)=1:J=J+1 
 1423 IF PEEK(XX+40)=255 THEN P(J)=3:J=J+1
 1424 IF PEEK(XX-1)=255 THEN P(J)=2:J=J+1
 1425 IF PEEK(XX+1)=255 THEN P(J)=0:J=J+1
 1440 IF RND(1)<.05 OR J=1 THEN 1290
 1445 R(I)=P((J-1)*RND(1)+1)
 1450 GOTO 1400
 1460 M(I)=O
 1470 N(I)=P
 1480 PRINT PAPER 5;AT(M(I),N(I));""
 1490 NEXT I
 1500 POKE 16383,0
 1510 CALL*4000
 1520 B=PEEK(36)
 1530 O=X-(B=10)+(B=11)
 1540 P=Y-(B=9)+(B=8)
 1550 POKE(-5120+40*X+Y),32
 1560 K=K+1:PRINT INK 2;AT(6,35);K
 1570 IF PEEK(16383)<>1 AND PEEK(-5120+40*O+P)=32 THEN 1580
 1572 RM=RM-1:PRINT AT(22,35+RM);" ":IF RM<>0 THEN BEEP:GOTO 1370 
 1574 FOR I=1 TO 3:BEEP:PAUSE 8:NEXT I:GOTO 1672
 1580 X=O:Y=P
 1590 PRINT INK 2;AT(O,P);"*"
 1600 IF X<>23 THEN 1380
 1610 IF K<L THEN L=K
 1670 GOSUB 200
 1672 IF INKEY$<>CHR$(13)THEN 1672
 1740 GOTO 1000
 1800 DATA 8,12,9,8,4,16,6,17,4,22,11,12,10,20,14,21,16,21,15,25,11,24,12,29
 1802 DATA 18,25,21,29
10000 REM BASIC-LADER 01
10010 DATA 0,33,0,236,62,42,35,190,32,252,17,40,0,62,139,25,190,40,19,167
10020 DATA 237,82,237,82,190,40,11,25,35,190,40,6,43,43,190,40,1,201,33
10030 DATA 255,63,54,1,201
10040 RESTORE 10010:S=0:FOR I=16383 TO 16426:READ J:POKE I,J:S=S+J:NEXT I
10042 CLS
10050 IF S<>3881 THEN PRINT AT(3,2);"DATENFEHLER!":PRINT AT(5,2);"BITTE NEU LADEN !":END
10055 PRINT:PRINT:PRINT "  BITTE MIT >RUN< STARTEN !":PRINT:PRINT
10060 DELETE 10010,10060
10070 GOTO 90
20000 RESTORE 1800:FOR I=1 TO 14:READ A:READ B
20010 PRINT INK 2;AT(A,B);""
20020 NEXT I