r+remosa_sss.tap
r+remosa_sss.z80
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)="QQaaQQY]]]]]]]]Y]YTGT"+CHR$(191)+""+CHR$(142)+"TETTT"
  190 CS$(10)="QQQQ]QQY]]]]]]]]Y]YTTTTTTbTTT"
  195 CS$(11)="QQQQRR]QQY]]]]]]]]Y]YTTTTFTTT"
  200 CS$(12)="QQQQRR]QQY]]A]]]]]Y]YTTTTTTTT"
  205 CS$(13)="QQQQRR]QQY]]YA]]]]Y]YTTTTTTTT"
  210 CS$(14)="QQQQRRQQY]]YY]]]]Y]YTTTTTTTT"
  215 CS$(15)="QQQQQ______QQQY]]YY]]]]Y]YTTTTTTTT"
  220 CS$(16)="QQQQQ______QQQY]]YY]]A]C]YTTT"+CHR$(191)+"TTTTT"
  225 CS$(17)="QQPPPPPPPPPPPP]]]Y]]]YA]DYTTTTTTTTTT"
  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