Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)
5 CLEAR 800
10 DIM ZT(38),TA(17),CS$(17)
15 PAPER 1:INK 4:BORDER 5
18 GOTO 100
20 ST=TA(V)
25 FOR J=0 TO 5
30 FOR I=0 TO 5
35 AD=(-1)*(ST-I-40*J)
40 IA=5081+AD:ID=INT((IA-1)/40)
45 ZE$=MID$(CS$(ID),(IA-40*ID),1)
50 IN=ASC(ZE$)
55 IF IN>127 THEN POKE AD,IN:POKE(AD-1024),112:GOTO 65
60 ZE=ZT(IN-65):GZ=INT(ZE/1000):FF=ZE-1000*GZ:POKE AD,GZ:POKE(AD-1024),FF
65 NEXT I,J
70 RETURN
100 DATA 5078,4838,4598,5072,4832,4592,5066,4826,4586,5060,4820,4580,5054,4814
105 DATA 4574,5048,4808,4568
110 FOR I=0 TO 17:READ TA(I):NEXT
115 DATA 143048,191048,142048,190048,143032,191032,142032,190032,191016,142016
120 DATA 180032,181032,181096,183064,182064,198039,046116,199016,197096,175064
125 DATA 173016,174016,171016,172016,139048,255102,0,0,032000,255051
130 DATA 254039,0,198064,255034,143100,190100
135 FOR I=0 TO 35:READ ZT(I):NEXT
140 CS$(0)="QQQQQQQdcQQQQQYYBYYYYCYYYYTTTTTTTT^AD^TT"
145 CS$(1)="QQQQQQdZZcQQQQYY]]]]]]YYYY^AD^TTTTBVUCTT"
150 CS$(2)="QQQQQdS]MZcQQQYY]L]]K]YYYYBVUCTHTTDWXATT"
155 CS$(3)="QQQQdZS]MZZcQQYY]]]]]]YYYYDWXATbTT^CB^TT"
160 CS$(4)="QQQdZZS]MZZZcQYYA]IJ]DYYYY^CB^TGT^AD^TTT"
165 CS$(5)="QQQQ]QQYYYA]]DYYYC]TTT^AD^BVUCTTT"
170 CS$(6)="QQQQ]aaYYYC]]BYYY]YHbGBVUCDWXATTT"
175 CS$(7)="QQOO]]]]YYC]]]]BYY]YTHTDWXA^CB^TTT"
180 CS$(8)="QQ]]]]NNYC]]]]]]BY]YTbT^CB^TTTTTTT"
185 CS$(9)="QQaaQQY]]]]]]]]Y]YTGT"+CHR$(191)+""+CHR$(142)+"TETTT"
190 CS$(10)="QQQQ]QQY]]]]]]]]Y]YTTTTTTbTTT"
195 CS$(11)="QQQQRR]QQY]]]]]]]]Y]YTTTTFTTT"
200 CS$(12)="QQQQRR]QQY]]A]]]]]Y]YTTTTTTTT"
205 CS$(13)="QQQQRR]QQY]]YA]]]]Y]YTTTTTTTT"
210 CS$(14)="QQQQRRQQY]]YY]]]]Y]YTTTTTTTT"
215 CS$(15)="QQQQQ______QQQY]]YY]]]]Y]YTTTTTTTT"
220 CS$(16)="QQQQQ______QQQY]]YY]]A]C]YTTT"+CHR$(191)+"TTTTT"
225 CS$(17)="QQPPPPPPPPPPPP]]]Y]]]YA]DYTTTTTTTTTT"
227 WI=0
230 NR=0:NF=0:WINDOW:CLS:WINDOW 20,20,2,39
235 PRINT INK 2;AT(6,13);"RECHENMOSAIK"
240 AN$="A":INPUT "RECHENART (+,-,*,:) ";AN$
245 IF ASC(AN$)=43 THEN RA=1:GOTO 270
250 IF ASC(AN$)=45 THEN RA=2:GOTO 270
255 IF ASC(AN$)=42 THEN RA=3:GOTO 270
260 IF ASC(AN$)=58 THEN RA=4:GOTO 270
265 GOTO 240
270 CLS:RS=4:PRINT "Schwierigkeitsstufe ";:WINDOW 20,20,24,39
275 INPUT "";RS:IF(RS<1)OR(RS>3)THEN 275
280 XU=1:XO=20:IF RS=3 THEN 320
285 IF RA>=3 THEN 300
290 IF RS=2 THEN XO=100
295 GOTO 350
300 IF(RA=3)AND(RS=1)THEN XO=10
305 IF(RA=4)AND(RS=1)THEN XO=100
310 IF(RA=4)AND(RS=2)THEN XO=1000
315 GOTO 350
320 WINDOW 20,23,2,39:CLS:PRINT:INK 2:PRINT TAB(9);"Gib ein!"
325 INK 4:PRINT TAB(9);"untere Grenze :";:INPUT "";XU
330 PRINT TAB(9);"obere Grenze :";:INPUT "";XO
335 IF XO<XU THEN 320
340 IF XU>0 THEN XU=0
345 IF XO<0 THEN XO=0
350 WINDOW:CLS:PRINT AT(0,0);" ":IF WI=1 THEN 370
352 FOR V=0 TO 17:GOSUB 20
355 NEXT
360 INK 6:PRINT AT (23,30);"ENTER":INK 4
365 A=RND(1):IF LEN(INKEY$)=0 THEN 365 ELSE CLS
370 NM=18:WINDOW 20,23,2,39:CLS
375 PRINT "Rechne!":PRINT
380 ON RA GOTO 385,420,440,455
385 IF XU>=0 THEN F=.7*(XO-XU)+XU
390 IF XU<0 THEN F=XO-XU
395 GOSUB 560
400 IF A+B>XO THEN B=INT((XO-A)*RND(1))
405 IF A+B<XU THEN B=INT((XU-A)*RND(1))
410 XE=A+B:OP$="+":GOSUB 540
415 GOTO 470
420 F=XO-XU:GOSUB 560
425 IF(A>B)AND(XU>0)THEN H=B:B=A:A=H
430 OP$="-":GOSUB 540
435 XE=B-A:GOTO 470
440 F=XO-XU:GOSUB 560
445 XE=A*B:OP$="*":GOSUB 540
450 GOTO 470
455 F=SQR(XO-XU):GOSUB 560
460 IF A=0 THEN A=1
465 XE=B:B=A*XE:OP$=":":GOSUB 540
470 INPUT "";X$:E$="F"
475 X=VAL(X$)
490 IF X=XE THEN E$="R"
495 IF E$="F"THEN 510
500 V=NR:GOSUB 20
505 NR=NR+1:IF NR=NM THEN 515 ELSE 370
510 NF=NF+1:INK 7:PRINT "***Falsch***":INK 4:PAUSE 10:GOTO 370
515 CLS:PRINT " "NF;"Fehler":PRINT
520 INK 6:PRINT TAB(30);"ENTER";:INK 4:INPUT "";XX
525 WI=1:AN$="J":CLS:INPUT "Fortsetzung der Rechnung: (J)/N";AN$
530 WINDOW:IF AN$="J"THEN 230
535 CLS:PRINT AT(0,0);" ":PRINT AT(11,11);"AUF WIEDERSEHEN!":PAUSE 20:CLS:END
540 IF B>=0 THEN PRINT B;:ELSE PRINT "(";B;")";
545 PRINT OP$;
550 IF A>=0 THEN PRINT A;:ELSE PRINT "(";A;")";
555 PRINT "=";:RETURN
560 A=INT(F*RND(1))+XU:IF A=0 THEN A=1
565 B=INT(F*RND(1))+XU:IF B=0 THEN B=1
570 RETURN