1 REM ***************************** 2 REM * MATTEPGM.BAC - 16 K Minne * 3 REM * 80-12-15 / VER 2.0 * 4 REM * (c) Alf Wirdling <4230> * 5 REM ***************************** 10 RANDOMIZE 20 ; CHR$(12);TAB(3); 30 ; "MATTE-TRAINING-PROGRAM - VERSION 2" 40 ; TAB(3);STRING$(34,61) : ; 50 ; "Med detta program kan man |va upp sin" 60 ; "skicklighet i huvudr{kning eller anv{n-" 70 ; "da det som ett t{vlingsprogram i huvud-" 80 ; "r{kning." 90 ; "Man f}r sj{lv v{lja r{knes{tt, talstor-" 100 ; "lek samt bet{nketid f|r varje fr}ga." 110 ; "Tal-storleken v{ljs genom att ange h|g-" 120 ; "sta v{rde f|r de 2 termerna." 130 ; "Ex. Om man vill att de h|gsta tal som" 140 ; "kan uppkomma vid division skall vara :" 150 ; "999/55 s} anger man 999 f|r term 1 och" 160 ; "55 f|r term nr 2." 170 ; "'Uttagningen' av talen sker helt slump-" 180 ; "m{ssigt." 190 ; "M{tningen av bet{nketiden sker automat-" 200 ; "iskt. N{r tiden {r ute ges n{sta fr}ga." 210 ; "Om man backar med v{nsterpil, backas" 220 ; "inte tecknet, utan ett '' skrivs som" 230 ; "motsvarar detta." 240 ; : ; TAB(3);"TRYCK RETURN N[R DU L[ST F[RDIGT "; 250 GET R$ 380 A2=0 : Z2=0 : M%=0% 390 ; CHR$(12); 400 ; TAB(15);"MENY" 410 ; TAB(15);STRING$(4,61) : ; 420 ; TAB(10);"A - ADDITION" 430 ; TAB(10);"S - SUBTRAKTION" 440 ; TAB(10);"M - MULTIPLIKATION" 450 ; TAB(10);"D - DIVISION" 460 ; : ; TAB(9);"SVARA MED BOKSTAV "; 470 GET R$ : ; R$ 480 IF R$="A" OR R$="a" THEN M%=1% 490 IF R$="S" OR R$="s" THEN M%=2% 500 IF R$="M" OR R$="m" THEN M%=3% 510 IF R$="D" OR R$="d" THEN M%=4% 520 IF M%=0% THEN 460 530 ; : ; TAB(9);"BET[NKETID (SEK.) "; 540 ONERRORGOTO 530 550 INPUT R 560 ; : ; TAB(6);"TERMERNAS MAXIMALA STORLEK" 570 ; TAB(6);STRING$(26,61) : ; 580 ; TAB(6);"TERM NR 1 "; 590 ONERRORGOTO 580 600 INPUT T1 610 ; TAB(6);"TERM NR 2 "; 620 ONERRORGOTO 610 630 INPUT T2 640 ; : ; TAB(6);"ANGE ANTAL FR]GOR "; 650 ONERRORGOTO 640 660 INPUT A% 670 IF M%<>4% THEN 690 680 ; : ; TAB(5);"ETT HELTAL DUGER SOM SVAR !" 690 ; : ; R;" SEKUNDERS BET[NKETID PER FR]GA !" 700 ; : ; TAB(5);"TRYCK RETURN N[R DU [R REDO "; 710 GET R$ 720 ; CHR$(12);TAB(8); 730 ; "SVARA P] DESSA FR]GOR !" 740 B%=0% : FOR I%=1% TO A% 750 FOR F=1 TO 2000 : NEXT F 760 U1=INT(RND*T1+1) : U2=INT(RND*T2+1) 770 GOSUB 1300 780 ; : ; I%;". ";U1; 790 ON M% GOSUB 1190,1200,1210,1220 800 ; U2;" = ?"; 810 ONERRORGOTO 780 820 S$="" : GOSUB 1420 830 GOSUB 1340 : IF Z>R THEN 980 840 S=INP(56) 850 IF S<128 THEN 830 860 IF S=136 THEN 900 870 IF S=141 THEN 920 880 S$=S$+CHR$(S-128) 890 ; CHR$(S-128); : GOSUB 1420 : GOTO 830 900 S$=LEFT$(S$,LEN(S$)-1%) 910 ; ""; : GOSUB 1420 : GOTO 830 920 ; : S=VAL(S$) 930 GOSUB 1340 : Z2=Z2+Z 940 ON M% GOSUB 1230,1270,1280,1290 950 ON K% GOTO 960,1010 960 ; : ; "FELAKTIGT SVAR, SKALL VARA ";S2 970 GOTO 1020 980 Z2=Z2+Z : ; 990 ; : ; "BET[NKETIDEN [R \VERSKRIDEN !" 1000 B%=B%+1% : GOTO 1020 1010 ; : ; "FULLKOMLIGT R[TT SVARAT !" 1020 NEXT I% 1030 ; : ; STRING$(40,61) 1040 ; "SLUT P] FR]GORNA !" 1050 ; : ; "AV";A%;" FR]GOR SVARADE DU R[TT P]";A2 1060 ; : ; "(\VERSKRED BET[NKETIDEN P]";B%;" FR]GOR)" 1070 ; : ; "DET BLEV ALLTS]"; 1080 ; INT(100%*(A2/A%));" PROCENT R[TT !" 1090 ; : ; "DU ANV[NDE SAMMANLAGT";Z2;" SEKUNDER" 1100 ; : ; "ELLER CIRKA"; 1110 ; INT(Z2/A%*10)/10;" SEKUNDER PER FR]GA !" 1120 ; : ; STRING$(40,61) 1130 ; "'E' F\R AVSLUT ELLER 'M' (MENYN) "; 1140 GET R$ : GET R$ : ; R$ 1150 IF R$="M" OR R$="m" THEN 380 1160 IF R$<>"E" AND R$<>"e" THEN 1130 1170 ; : ; "MATTE-TRAINING-PROGRAM AT END" 1180 END 1190 ; " +"; : RETURN 1200 ; " -"; : RETURN 1210 ; " *"; : RETURN 1220 ; " /"; : RETURN 1230 S2=U1+U2 1240 IF S=S2 THEN 1260 1250 K%=1% : RETURN 1260 K%=2% : A2=A2+1 : RETURN 1270 S2=U1-U2 : GOTO 1240 1280 S2=U1*U2 : GOTO 1240 1290 S2=INT(U1/U2) : GOTO 1240 1300 REM SUBRUTINEN : SETCLOCK 1310 T1%=65008% 1320 Z=0 : Z1%=0 : Z%= NOT 0 : Z1%= NOT Z1% 1330 POKE 65008%,Z%,Z1%,SWAP%(Z1%) : RETURN 1340 REM SUBRUTINEN : GETCLOCK 1350 D%=0 1360 IF (PEEK(T1%) AND 4%)=0 THEN 1350 1370 FOR O%=0% TO 2% 1380 Z%(O%)=255% XOR PEEK(T1%+O%) : NEXT O% 1390 Z=((Z%(2)*256)+Z%(1))*5.12+Z%(0)/50 1400 IF Z>86400 THEN Z=Z-86400 : D%=D%+1 : GOTO 1400 1410 RETURN 1420 FOR X=1 TO 175 : NEXT X : RETURN