home *** CD-ROM | disk | FTP | other *** search
- 1 OPEN 5,3
- 2 POKE 53280,0:POKE 53281,0:GOSUB20020
- 5 ML=850:DATA 162,5,32,201,255,169,147,32,210,255
- 6 DATA 162,250,169,32,157,255,3,157,249,4,157,243,5,157,237,6,169,1
- 7 DATA 157,255,215,157,249,216,157,243,217,157,237,218,202,208,225,96
- 8 FOR T=0 TO 43:READ A:POKE ML+T,A:NEXT
- 9 POKE 53280,0:POKE 53281,0:SYS(ML)
- 10 FOR SD=1024 TO 1063:POKE SD,160:NEXT
- 11 FOR SD=1024 TO 1944 STEP 40:POKE SD,160:NEXT
- 12 FOR SD=1063 TO 2023 STEP 40:POKE SD,160:NEXT
- 13 FOR SD=1984 TO 2023:POKE SD,160:NEXT
- 14 DIM CM$(12)
- 15 DO$=""
- 16 PRINT""LEFT$(DO$,7):PRINTTAB(8)"123 DIGIT MULTIPLICATION":PRINT
- 17 PRINT"BY DON ROSS"
- 18 PRINT:PRINT:PRINTTAB(8)"MICROCOMPUTER WORKSHOPS"
- 19 PRINT:PRINT:PRINT TAB(13) "COPYRIGHT 1983"
- 20 FOR X=1TO2500:NEXTX
- 22 RE$="RETURN[146]":LC=59468
- 27 SYS(ML):DIM C(13)
- 28 PRINT"HI! WHAT'S YOUR NAME ";:INPUT F$:IF F$="" THEN 28
- 29 IFLEN(F$)<2ANDASC(F$)=160THENPRINT"[145][145][145][145]";:GOTO28
- 30 SYS(ML):PRINT"HI "F$",":PRINT
- 32 PRINT"DO YOU WANT INSTRUCTIONS?"
- 33 GET G$:IF G$="" THEN 33
- 34 IF G$="N" THEN 250
- 35 IF G$<>"Y" THEN 33
- 36 SYS (ML)
- 37 PRINT" INSTRUCTIONS[146]"
- 38 PRINT"I WILL GIVE YOU PRACTICE IN MULTIPLYING "
- 40 PRINT"NUMBERS. THE TOP NUMBER WILL ALWAYS HAVE"
- 43 PRINT"THREE DIGITS."
- 46 PRINT"YOU MAY CHOOSE HOW MANY DIGITS THE "
- 48 PRINT"BOTTOM NUMBER MAY HAVE -- 1, 2, OR 3."
- 56 GOSUB 5500
- 60 PRINT"[147]":SYS(ML):PRINT""
- 61 PRINT "BECAUSE ALL PROBLEMS ARE GENERATED "
- 62 PRINT"RANDOMLY, YOU WILL GET DIFFERENT "
- 65 PRINT"PROBLEMS EACH TIME YOU RUN THIS PROGRAM."
- 66 GOSUB 5500
- 72 SYS(ML):PRINT
- 75 PRINTTAB(14)468:PRINTTAB(11)" X 53":PRINTTAB(15)"[163][163][163]"
- 80 POKE 1024+4*40+17,160
- 81 PRINT"FOR EXAMPLE: IF YOU WANTED A TWO-DIGIT "
- 82 PRINT"PROBLEM, IT WOULD LOOK LIKE THE ONE "
- 83 PRINT"ABOVE."
- 85 GOSUB 5500
- 90 GOSUB 5200
- 95 PRINT"":PRINTLEFT$(DO$,8);
- 97 PRINT"THE WHITE SQUARE IS CALLED A CURSOR. "
- 99 PRINT"IT WILL SHOW YOU WHERE THE NEXT NUMBER"
- 101 PRINT"WILL GO. "
- 102 PRINT"IF YOU TYPE A 4, IT WOULD PRINT THE 4 IN"
- 103 PRINT"PLACE OF THE CURSOR."
- 104 PRINT" TRY[146] TYPING A 4!!"
- 105 GET FG$:IF FG$<>"4" THEN 105
- 107 POKE 1024+40*4+17,52
- 108 POKE 1024+16,160
- 115 GOSUB 5200
- 118 PRINT"":PRINTLEFT$(DO$,8);
- 120 PRINT"A 4 HAS BEEN PRINTED AND THE CURSOR IS "
- 122 PRINT"NOW ABOVE THE 6. YOU MUST NOW TYPE THE "
- 125 PRINT"CARRY ABOVE THE 6. (THAT IS WHERE THE "
- 127 PRINT"CARRY GOES). "
- 128 PRINT" TRY[146] TYPING A 2!!"
- 129 GET HL$:IF HL$<>"2" THEN 129
- 130 POKE 1040,50
- 131 GOSUB 5200
- 132 PRINT"VERY GOOD!! "
- 133 PRINT" "
- 134 PRINT"REMEMBER: YOU MUST ENTER THE CARRY EVEN "
- 136 PRINT"IF IT IS A ZERO."
- 138 GOSUB 5500
- 150 SYS(ML):PRINT""
- 250 FOR X=826 TO 838:READ T1:POKE X,T1:NEXT X
- 260 DATA 169,96,162,0,157,108,6,232
- 270 DATA 224,240,208,248,96
- 281 CM$(1)="VERY IMPRESSIVE!"
- 282 CM$(2)="I SEE YOU'VE BEEN DOING YOUR HOMEWORK!"
- 283 CM$(3)="TOO BAD YOUR TEACHER CAN'T SEE THIS!"
- 284 CM$(4)="THE MATH DEPARTMENT IS PROUD OF YOU!"
- 285 CM$(5)="WELL, WE CAN'T ALL BE PERFECT."
- 286 CM$(6)="THAT WAS A GOOD TRY."
- 287 CM$(7)="YOU ALMOST MADE IT ON THAT ONE."
- 288 CM$(8)="KEEP TRYING. YOU'RE DOING WELL."
- 289 CM$(9)="KEEP TRYING. YOU'LL GET IT."
- 290 CM$(10)="DON'T GET DISCOURAGED. YOU'LL DO BETTER."
- 291 CM$(11)="THESE PROBLEMS ARE NOT SO EASY."
- 292 CM$(12)="TRY AGAIN. PRACTICE MAKES PERFECT."
- 920 SYS(ML): PRINT"HOW MANY DIGITS WOULD YOU LIKE IN THE":PRINT
- 925 PRINT"MULTIPLIER ?"
- 930 GET IN$:IF IN$="" THEN 930
- 931 IF VAL(IN$)<1 OR VAL(IN$)>3 THEN 930
- 932 WY=0
- 940 SYS(ML):GOSUB 25000:SK=PN
- 950 FOR I3=1TOVAL(RIGHT$(TI$,2)):X=RND(1):NEXT I3
- 951 FOR VM=1 TO SK
- 952 SYS(ML)
- 953 CV=0
- 1000 R1=0:R2=0
- 1010 FOR X=1TO6
- 1020 A(X)=0:B(X)=0:S(X)=0
- 1030 NEXT X
- 1130 L=220:U=19:C=0
- 1142 A=VAL(IN$)
- 1150 IF A=1 OR A=2 OR A=3 THEN 1170
- 1160 PRINT"[147]":SYS(ML):PRINT"":GOTO 920
- 1170 PRINT"[147]":SYS(ML):PRINT""
- 1175 POKE 53272,21
- 1210 FOR X=3 TO 1 STEP -1
- 1220 A(X)=INT(RND(1)*10)
- 1230 IF A(3)=0 GOTO 1220
- 1240 R1=R1+A(X)*10^(X-1)
- 1250 NEXT X
- 1260 FOR X=A TO 1 STEP -1
- 1270 B(X)=INT(RND(1)*10)
- 1280 IF B(A)=0 GOTO 1270
- 1290 R2=R2+B(X)*10^(X-1)
- 1300 NEXT X
- 1310 PRINTTAB(20-3);R1
- 1320 PRINTTAB(20-A);R2
- 1330 PRINTTAB(16);"[145]X[198][198][198][198][198]"
- 1331 PRINT" "
- 1340 POKE1024+220,160
- 1350 D=0:S=0
- 1360 FOR X=0 TO A-1
- 1370 FOR Y=1 TO 4
- 2100 P=A(Y)*B(X+1)+C
- 2103 C=INT(P/10)
- 2106 P(X+Y)=P-C*10
- 2110 S(X+Y)=S(X+Y)+P(X+Y)
- 2112 K=X+Y
- 2115 POKE 1024+(L+1-Y+D-S),160
- 2120 GOSUB 5400
- 2121 IF G$="*" THEN 6000
- 2125 POKE 1024+(L+1-Y+D-S),48+G
- 2127 IF S9=0 THEN 2130
- 2128 GOSUB 5100
- 2130 IF P(X+Y)=G THEN 2160
- 2135 J=P(X+Y)
- 2140 GOSUB 5000
- 2145 GOTO 2115
- 2160 S5=0
- 2164 IF C=0 AND Y=3 THEN 2305
- 2165 IF Y=4 THEN 2305
- 2167 IFY=3 THEN 2300
- 2169 POKE 1024 +(U+1-Y),160
- 2175 GOSUB 5400
- 2176 IF G$="*" THEN 6000
- 2185 POKE 1024+(U+1-Y),48+G
- 2186 IF S9=0 THEN 2188
- 2187 GOSUB 5100
- 2188 POKE 1024+(U+2-Y),96
- 2190 IFC=GTHEN 2290
- 2194 J=C:GOSUB 5000
- 2200 GOTO 2169
- 2290 S5=0
- 2300 NEXT Y
- 2305 D=D+40:S=S+1
- 2306 POKE 1024+U-1,96
- 2310 NEXT X
- 2312 IF A=1 THEN 4910
- 2314 FOR X=0 TO 4+A
- 2315 POKE 1024+(221+40*A-X),67
- 2316 NEXT X
- 3500 T=220+40*A+40:C=0
- 3510 FOR X=1 TO K
- 3525 S(X)=S(X)+C
- 3530 P=INT(S(X)/10)
- 3535 B=S(X)-P*10
- 3540 POKE 1024+(T-X+1),160
- 3550 GOSUB 5400
- 3551 IF G$="*" THEN 6000
- 3566 POKE 1024+(T-X+1),48+G
- 3567 IF S9=0 THEN 3570
- 3568 GOSUB 5100
- 3570 IF B=G THEN 3668
- 3580 J=B
- 3590 GOSUB 5000
- 3600 GOTO 3540
- 3668 S5=0
- 3670 C=INT(S(X)/10)
- 3678 IF X=K GOTO 4800
- 3680 POKE 1024+(T-40*(A+2)-X),160
- 3690 GOSUB 5400
- 3691 IF G$="*" THEN 6000
- 3703 POKE 1024+(T-40*(A+2)-X),48+G
- 3705 IF S9=0 THEN 3710
- 3706 GOSUB 5100
- 3710 IF G=C THEN 3785
- 3715 J=C
- 3720 GOSUB 5000
- 3730 GOTO 3680
- 3785 POKE 1024+(T-40*(A+2)-X+1),96
- 3786 S5=0
- 3790 NEXT X
- 4800 IF C=0 THEN 4900
- 4810 POKE 1024 +(T-X),160
- 4815 IF S9=0 THEN 4820
- 4816 GOSUB 5100
- 4820 GOSUB 5400
- 4821 IF G$="*"THEN 6000
- 4835 POKE 1024+(T-X),48+G
- 4840 IF C=G THEN 4900
- 4850 J=C
- 4860 GOSUB 5000
- 4870 GOTO 4810
- 4900 POKE 1024 +(T-40*(A+2)-X+1),96
- 4910 XZ=1 +INT(RND(0)*4)+4*((ABS(CV>1)AND ABS(CV<4))+ABS(CV>3)*2)
- 4911 WE$="ERRORS.":IF CV=1 THEN WE$="ERROR."
- 4912 PRINT"YOU MADE"CV;WE$
- 4913 PRINT""CM$(XZ)
- 4920 FOR WA=1 TO 2000:NEXT
- 4927 SYS(ML):PRINT""
- 4928 M1=0
- 4929 WY=WY+CV
- 4930 NEXT VM
- 4931 VM=VM-1
- 4932 GOTO 6000
- 5000 REM SUBROUTINE FOR ERROR CORRECTION
- 5005 M1=M1+1
- 5010 PRINT"":PRINT""
- 5020 S5=S5+1
- 5030 IF S5=2 THEN 5050
- 5035 PRINT"SORRY "F$",":PRINT
- 5040 PRINTG"IS INCORRECT.TRY AGAIN."
- 5041 CV=CV+1
- 5045 GOTO 5070
- 5050 PRINT"SORRY "F$",":PRINT:PRINT"THE CORRECT ANSWER IS"J".":PRINT
- 5055 PRINT"CONTINUE WHEN YOU UNDERSTAND YOUR ERROR.";
- 5060 S5=0
- 5070 S9=1
- 5080 RETURN
- 5100 REM SUBR TO CLEAR BOTTOM OF SCREEN
- 5102 T1=0
- 5130 POKE 831,108
- 5140 SYS(826)
- 5145 POKE 831,208
- 5146 SYS(826)
- 5150 PRINT""
- 5160 S9=0
- 5170 RETURN
- 5200 REM BLANK PART OF SCREEN
- 5210 PRINT"": PRINT LEFT$(DO$,11);
- 5220 FOR X=1TO40:PRINT" ";:NEXT X
- 5240 RETURN
- 5300 PRINT"":PRINT""LEFT$(DO$,20):PRINT"HIT[160]"RE$" WHEN READY TO CONTINUE."
- 5305 GET G$:IF G$="" THEN 5305
- 5310 RETURN
- 5400 REM SUBR FOR GET STATEMENT
- 5401 PRINT" HIT * TO QUIT[146]"
- 5410 GET G$:IF G$="" THEN 5410
- 5420 IF CHR$(13)=G$ THEN 5410
- 5422 IF (ASC(G$)<48 OR ASC(G$)>57) AND G$ <>"*" THEN 5410
- 5425 G=VAL(G$)
- 5430 RETURN
- 5500 REM SUBR FOR SPACE TO CONTINUE
- 5505 PRINT""LEFT$(DO$,20)
- 5510 PRINT" HIT SPACE[146] TO CONTINUE."
- 5520 GET G$:IF G$="" THEN 5520
- 5530 IF ASC(G$)<>32 THEN 5520
- 5540 RETURN
- 6000 SYS(ML)
- 6010 PRINT"ERROR ANALYSIS:":PRINT:PRINT
- 6020 PRINT"AVERAGE PER PROBLEM --"INT((WY/VM)*100)/100
- 6030 PRINT:PRINT"TOTAL --"WY
- 6040 FOR WA=1 TO 3000:NEXT
- 6050 PRINT"HIT RETURN[146] FOR MORE PROBLEMS ":PRINT"OR * TO QUIT."
- 6055 G$="":GET G$:IF G$="" THEN 6055
- 6060 IF G$="*" THEN 6100
- 6070 IF ASC(G$)=13 THEN 920
- 6080 GOTO 6055
- 6100 PRINT" [145][145][145][145][145]"
- 6110 PRINT"[145][145][145][145]I HOPE YOU ENJOYED THIS SESSION."
- 6115 PRINT"TYPE 'RUN' RETURN[146] TO RUN AGAIN."
- 20000 END
- 20020 PRINT"[147]"
- 20030 PRINT" [169] [223][146] [223][146] [169] [223][146]"
- 20040 PRINT" [146][169] [223] [146] [146] [223] [146] [146][169] [223] [146]"
- 20050 PRINT" [146] [146] [146] [223][223][146]"
- 20060 PRINT" [146] [146] [169][146][169] [223][223][146]"
- 20070 PRINT" [146] [146] [223][223][146] [223][223][146]"
- 20080 PRINT" [146] [146] [146] [223][223][146]"
- 20100 PRINT" [223][146] [169] [146] [146] [169] [146] [223][146] [169] [146]"
- 20110 PRINT" [223] [146][169] [146][169] [223] [146][169]"
- 20120 PRINT" SOFTWARE PRESENTS:"
- 20130 PRINT " 123 DIGIT MULTIPLICATION"
- 20140 PRINT " [197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197][197]"
- 20150 FOR WA=1TO2000:NEXT WA
- 20160 PRINT"[147]"
- 22000 RETURN
- 24999 END
- 25000 PRINT"[147]HOW MANY PROBLEMS DO YOU WANT";
- 25005 INPUT PN$
- 25010 IF PN$="" THEN 25000
- 25020 PN=VAL(PN$)
- 25030 IF PN<1 THEN 25000
- 25040 IF PN<10 THEN RETURN
- 25050 PRINT"ARE YOU SURE YOU WANT "PN$" PROBLEMS (Y/N)?";
- 25060 GET DC$
- 25070 IF DC$<>"Y" AND DC$<>"N" THEN 25060
- 25080 IF DC$="Y" THEN RETURN
- 25090 GOTO25000
-