home *** CD-ROM | disk | FTP | other *** search
- 0 OPEN 5,3:ML=850:DATA 162,5,32,201,255,169,147,32,210,255
- 1 DATA 162,250,169,32,157,255,3,157,249,4,157,243,5,157,237,6,169,1
- 2 DATA 157,255,215,157,249,216,157,243,217,157,237,218,202,208,225,96
- 3 FOR T=0 TO 43:READ A:POKE ML+T,A:NEXT
- 4 DIM CM$(12):POKE 53280,0:POKE 53281,0:GOSUB 20020
- 5 PRINT"[147]":SYS(ML):DO$="":RI$=""
- 6 POKE 53280,0:POKE 53281,0
- 20 FOR X=3 TO 37:POKE1024+40*2+X,160:POKE1024+40*22+X,160:NEXTX
- 30 FOR X=3TO22:POKE1024+40*X+3,160:POKE1024+40*X+37,160:NEXTX
- 40 PRINT""RI$" L O N G D I V I S I O N"
- 42 PRINT""RI$"[195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195][195]"
- 45 PRINT""RI$RI$"BY DON ROSS"
- 50 PRINT""LEFT$(DO$,14)RI$"MICROCOMPUTER WORKSHOPS"
- 60 PRINT""LEFT$(DO$,17)RI$RI$"COPYRIGHT 1983"
- 70 FORX=1TO1500:NEXTX
- 71 CM$(1)="VERY IMPRESSIVE!"
- 72 CM$(2)="I SEE YOU'VE BEEN DOING YOUR HOMEWORK!"
- 73 CM$(3)="TOO BAD YOUR TEACHER CAN'T SEE THIS!"
- 74 CM$(4)="THE MATH DEPARTMENT IS PROUD OF YOU!"
- 75 CM$(5)="WELL, WE CAN'T ALL BE PERFECT."
- 76 CM$(6)="THAT WAS A GOOD TRY."
- 77 CM$(7)="YOU ALMOST MADE IT ON THAT ONE."
- 78 CM$(8)="KEEP TRYING. YOU'RE DOING WELL."
- 79 CM$(9)="KEEP TRYING. YOU'LL GET IT."
- 80 CM$(10)="DON'T GET DISCOURAGED. YOU'LL DO BETTER."
- 81 CM$(11)="THESE PROBLEMS ARE NOT SO EASY."
- 82 CM$(12)="TRY AGAIN. PRACTICE MAKES PERFECT."
- 150 PRINT"[147]":SYS(ML)
- 200 R$="RETURN[146]"
- 210 PRINT"[147]HI! WHAT'S YOUR NAME ";
- 211 INPUT F$:IF F$="" THEN 210
- 220 IFLEN(F$)<2ANDASC(F$)=160THEN 210
- 230 PRINT"[147]":SYS(ML)
- 235 PRINT"HI[160]"F$",":PRINT:PRINT"DO YOU WANT INSTRUCTIONS ?"
- 240 GET AN$:IF AN$="" THEN 240
- 250 IFCHR$(13)=AN$THEN240
- 255 IFAN$="N"THEN670
- 260 IFAN$<>"Y"THEN230
- 270 PRINT"[147]":SYS(ML)
- 280 PRINT" INSTRUCTIONS[146]"
- 281 PRINT"I WILL GIVE YOU PRACTICE IN LONG "
- 283 PRINT"DIVISION. BECAUSE ALL PROBLEMS ARE "
- 285 PRINT"GENERATED RANDOMLY, YOU WILL GET "
- 287 PRINT"DIFFERENT PROBLEMS EACH TIME YOU RUN "
- 289 PRINT"THIS PROGRAM."
- 290 GOSUB 2690
- 292 PRINT""
- 294 PRINT"YOU MAY DECIDE HOW DIFFICULT THE "
- 296 PRINT"PROBLEM WILL BE BY CHOOSING THE NUMBER "
- 298 PRINT"OF DIGITS IN THE DIVISOR. "
- 300 PRINT"THE DIVISOR MAY BE 1, 2, OR 3 DIGITS. "
- 302 GOSUB 2690
- 390 PRINT"[147]":SYS(ML)
- 400 PRINTLEFT$(DO$,9);:PRINT"FOR EXAMPLE: IF THE DIVISOR WERE 2 "
- 410 PRINT"DIGITS, THE PROBLEM WOULD LOOK LIKE "
- 420 PRINT"THIS."
- 430 PRINT"THE WHITE SQUARE IS CALLED A CURSOR. IT"
- 440 PRINT"TELLS YOU WHERE THE NEXT NUMBER SHOULD "
- 445 PRINT"GO."
- 460 PRINT""
- 470 PRINTTAB(16)"[164][164][164][164][164]"
- 480 PRINTTAB(13)"59[167]16756"
- 490 POKE1024+18,160
- 491 PRINT"HIT SPACE[146] TO CONTINUE."
- 501 GET GH$:IF GH$<>" " THEN 501
- 502 PRINT"FOR EXAMPLE: IF YOU TYPE A 2, THEN A 2 "
- 503 PRINT"WILL APPEAR WHERE THE CURSOR IS. "
- 504 FOR CV=1 TO 10:PRINT" [157]";:NEXT CV
- 505 PRINT"TRY[146] TYPING A 2!! "
- 509 GET FG$:IF FG$<>"2" THEN 509
- 510 PRINT"":PRINTLEFT$(DO$,6);
- 520 PRINT"THE[160]2 WILL PRINT IN PLACE OF THE "
- 530 PRINT"CURSOR AND THE CURSOR WILL MOVE BELOW"
- 540 PRINT"THE 7. IT IS JUST LIKE WRITING ON A "
- 550 PRINT"PIECE OF PAPER!!"
- 570 POKE1024+18,50
- 580 POKE1024+18+3*40,160
- 590 PRINT"HIT SPACE[146] TO CONTINUE."
- 591 GET DJ$:IF DJ$<>" " THEN 591
- 600 PRINT"":PRINT LEFT$(DO$,6);
- 602 PRINT"IF YOU MAKE A MISTAKE, I WILL GIVE YOU "
- 604 PRINT"ANOTHER TRY. AFTER TWO TRIES, I WILL "
- 606 PRINT"GIVE YOU THE CORRECT ANSWER AND WILL "
- 608 PRINT"ALLOW YOU TO CONTINUE."
- 610 GOSUB 2690
- 670 REM
- 680 PRINT"[147]":SYS(ML)
- 690 FORI=1TOVAL(RIGHT$(TI$,2)):R=RND(1):NEXTI
- 710 DIM C(20):
- 720 FORX=1TO13:READ C(X):NEXT
- 730 REM
- 740 REM
- 770 PRINT"[147]":SYS(ML):GOSUB 25000:SK=PN
- 772 PRINT"[147]":SYS(ML)
- 773 CX=0
- 780 PRINT"HOW MANY DIGITS WOULD YOU LIKE IN THE":PRINT:PRINT"DIVISOR ?"
- 790 GET IN$:IF VAL(IN$)<1 OR VAL(IN$)>3 THEN 790
- 795 IF ASC(IN$)=160 THEN PRINT"[145]";:GOTO790
- 796 FOR VM=1 TO SK
- 797 M(1)=200:M(2)=321:M(3)=442
- 798 D1=0:J2=0:K2=0
- 799 SUB=0:TP=0:H2=0:H3=0:H5=1:V4=0:CV=0
- 800 D=VAL(IN$)
- 810 IFD<>1ANDD<>2ANDD<>3THEN770
- 820 A(D)=1
- 830 FOR X=1TOD
- 840 A(X)=INT(RND(1)*10)
- 850 IFA(D)=0THEN840
- 860 D1=D1+A(X)*10^(X-1)
- 870 NEXT X
- 880 IFD1=1THEND1=0:GOTO830
- 890 Q=INT(RND(1)*998+1)
- 900 D2=D1*Q
- 910 L=INT(LOG(Q)/LOG(10))+1
- 920 L2=INT(LOG(D2)/LOG(10))+1
- 925 IF L2<3 THEN 890
- 930 T=Q
- 940 FORX=1TOL
- 950 Q(X)=T-INT(T/10)*10
- 960 T=INT(T/10)
- 970 NEXT X
- 980 T=D2
- 990 FORX=1TOL2
- 1000 D(X)=T-INT(T/10)*10
- 1010 T=INT(T/10)
- 1020 NEXT X
- 1030 PRINT"[147]":SYS(ML):PRINT:C$=STR$(D1)
- 1040 PRINTTAB(14+D+1)"[176]";
- 1050 FORX=1TOL2:PRINT"[192]";:NEXT X
- 1060 PRINT:PRINTTAB(14);C$"[194]"
- 1070 FORX=L2TO1STEP-1
- 1080 POKE1024+96+D+L2-X,48+D(X)
- 1090 NEXTX
- 1100 M4=1
- 1110 FORE4=1TOL-1:M4=M4*10:NEXTE4
- 1120 TP=INT(D2/M4)
- 1130 FORX=LTO1STEP-1
- 1140 X1=L-X
- 1150 POKE1024+16+D+L2-L+X1,160
- 1160 GOSUB2640
- 1161 IF G$="*" THEN 3000
- 1170 POKE1024+16+D+L2-L+X1,48+G
- 1180 IFS9=0THEN1200
- 1190 GOSUB2310
- 1200 IFG=Q(X)THEN1230
- 1210 J=Q(X):GOSUB2160
- 1220 GOTO 1150
- 1230 S5=0
- 1240 C=0
- 1250 FORZ=1TOD
- 1260 IFQ(X)=0ANDX=1THEN2010
- 1270 IFQ(X)=0THENJ2=1:GOTO1620
- 1280 P=Q(X)*D1
- 1290 PD=Q(X)*A(Z)+C:C=INT(PD/10)
- 1300 PD=PD-C*10
- 1310 IFJ2=1THENX1=X1-1:K2=1
- 1320 POKE1024+17-Z+D+L2-L+X1+120*(X1+1)+K2,160
- 1330 GOSUB2640
- 1331 IF G$="*" THEN 3000
- 1340 POKE1041-Z+D+L2-L+X1+120*(X1+1)+K2,48+G
- 1350 IFJ2=1THENX1=X1+1:K2=0
- 1360 IFS9=0THEN1380
- 1370 GOSUB2310
- 1380 IFPD=GTHEN1410
- 1390 J=PD:GOSUB2160
- 1400 GOTO1310
- 1410 S5=0:IFZ=DTHEN2460
- 1420 POKE1024+54+D-Z,160
- 1430 GOSUB2640
- 1431 IF G$="*" THEN 3000
- 1440 POKE1024+54+D-Z,48+G
- 1450 IFS9=0THEN1470
- 1460 GOSUB2310
- 1470 IFC=GTHEN1500
- 1480 J=C:GOSUB 2160
- 1490 GOTO1420
- 1500 S5=0:POKE 1024+55+D-Z,96
- 1510 NEXTZ
- 1520 SUB=Q(X)*D1
- 1530 POKE1024+55+D-(Z+1),96
- 1540 LS=INT(LOG(SUB)/LOG(10))+1
- 1550 IFJ2=1THENX1=X1-1
- 1560 IFX=1THENH5=0
- 1570 FORW=1TOL2
- 1580 POKE1199+W+D+X1*120,67
- 1590 NEXTW
- 1600 V=V+1
- 1610 IFJ2=1THENX1=X1+1
- 1620 SUB=Q(X)*D1
- 1630 DF=INT(TP)-INT(SUB)
- 1640 IFDF<>OTHEN1670
- 1650 LS=1:S(1)=0:H2=1:IFJ2=1THEN1860
- 1660 GOTO1740
- 1670 IF DF<=0 THEN 797 LS=INT(LOG(DF)/LOG(10))+1
- 1680 IFJ2=1THEN1860
- 1690 T=DF
- 1700 FORX7=1TOLS
- 1710 S(X7)=T-INT(T/10)*10
- 1720 T=INT(T/10)
- 1730 NEXTX7
- 1740 IFX=1THEN2010
- 1750 FORX7=1TOLS
- 1760 POKE1041+D+L2-L-X7+M(X1+1),160
- 1770 GOSUB2640
- 1771 IF G$="*" THEN 3000
- 1780 POKE1041+D+L2-L-X7+M(X1+1),48+G
- 1790 IFS9=0THEN1810
- 1800 GOSUB2310
- 1810 IFG=S(X7)THEN1840
- 1820 J=S(X7):GOSUB 2160
- 1830 GOTO1760
- 1840 S5=0
- 1850 NEXTX7
- 1860 IFX=1THEN2010
- 1870 IFJ2=1THENX1=X1-1
- 1880 IFJ2=1ANDH2=1THENH3=1
- 1890 POKE1041+D+L2-L-X7+M(X1+1)+LS+1+H3,160
- 1900 GOSUB2640
- 1901 IF G$="*" THEN 3000
- 1910 POKE1041+D+L2-L-X7+M(X1+1)+LS+1+H3,48+G
- 1920 IFJ2=1THENX1=X1+1
- 1930 IFS9=0THEN1950
- 1940 GOSUB2310
- 1950 IFG=D(L-(X1+1))THEN1980
- 1960 J=D(L-(X1+1)):GOSUB 2160
- 1970 GOTO1860
- 1980 S5=0
- 1990 TP=DF*10+D(L-(X1+1))
- 2000 NEXTX
- 2010 XZ=1+INT(RND(0)*4)+4*((ABS(CV>1) AND ABS(CV<4))+ABS(CV>3)*2)
- 2011 FR$="ERRORS":IF CV=1 THEN FR$="ERROR"
- 2020 PRINT"YOU MADE"CV""FR$".":PRINT:PRINT CM$(XZ):CX=CX+CV
- 2021 PRINT" "
- 2022 FOR WA=1 TO 3000:NEXT
- 2130 M1=0
- 2140 NEXT VM
- 2141 VM=VM-1
- 2142 G$="@"
- 2143 GOTO 3000
- 2160 REM SUBR
- 2170 M1=M1+1
- 2180 S5=S5+1
- 2190 IFS5=2THEN2250
- 2200 E1=E1+1
- 2220 PRINT""LEFT$(DO$,19);"SORRY "F$".":PRINT
- 2230 PRINT"YOUR ANSWER IS INCORRECT. TRY AGAIN."
- 2231 CV=CV+1
- 2240 GOTO2290
- 2250 PRINT""LEFT$(DO$,15);F$",":PRINT:PRINT"THE CORRECT ANSWER IS"J".":PRINT
- 2260 PRINT"WHEN YOU UNDERSTAND YOUR ERROR,TYPE":PRINT
- 2270 PRINT"THE CORRECT ANSWER.":E1=E1+1
- 2280 S5=0
- 2290 S9=1
- 2300 RETURN
- 2310 REM SUBR
- 2320 T1=0
- 2350 FORU2=826TO838
- 2360 T1=T1+1:POKE U2,C(T1)
- 2370 NEXTU2
- 2380 SYS(826)
- 2390 POKE831,168
- 2400 SYS(826)
- 2410 PRINT" "
- 2420 S9=0
- 2430 RETURN
- 2440 DATA 169,96,162,0,157,108,6,232
- 2450 DATA 224,240,208,248,96
- 2460 REM
- 2470 IFC=0THEN1500
- 2480 IFJ2=1THENX1=X1-1:K2=1
- 2490 POKE1040-Z+D+L2-L+X1+120*(X1+1)+K2,160
- 2500 GET G$:IF G$="" THEN 2500
- 2510 G=VAL(G$)
- 2520 IFS9=OTHEN2540
- 2530 GOSUB 2310
- 2540 IFC=GTHEN2570
- 2550 J=C:GOSUB 2160
- 2560 GOTO2490
- 2570 POKE1040-Z+D+L2-L+X1+120*(X1+1)+K2,48+G
- 2580 IFJ2=1THENX1=X1+1:K2=0
- 2590 POKE1024+55+D-Z,96
- 2600 GOTO1500
- 2640 REM
- 2641 PRINT" HIT * TO QUIT[146]"
- 2650 GETG$:IF G$=""THEN2650
- 2660 IFCHR$(13)=G$THEN2650
- 2669 IF (ASC(G$)<48 OR ASC(G$)>57) AND G$<>"*" THEN 2650
- 2670 G=VAL(G$)
- 2680 RETURN
- 2690 REM
- 2700 PRINT"":PRINTLEFT$(DO$,21);:PRINT"HIT SPACE[146] TO CONTINUE."
- 2705 B5$=" "
- 2710 GETG$:IFG$=""THEN2710
- 2720 IFASC(G$)<>32THEN2710
- 2730 PRINT"":PRINTLEFT$(DO$,9);
- 2740 FOR QE=1TO13:PRINTB5$:NEXT QE
- 2760 RETURN
- 3000 PRINT"[147]":SYS(ML):PRINT"ERROR ANALYSIS:":PRINT
- 3010 PRINT"AVERAGE PER PROBLEM -- "INT((CX/VM)*100)/100
- 3020 PRINT:PRINT"TOTAL -- "CX
- 3030 FOR WA=1 TO 3000:NEXT
- 3035 PRINT"HIT RETURN[146] FOR MORE PROBLEMS ":PRINT"OR * TO QUIT."
- 3036 G$="":GET G$:IF G$="" THEN 3036
- 3037 IF ASC(G$)<>13 AND G$<>"*" THEN3036
- 3040 IF G$<>"*" THEN 770
- 3060 PRINT"I HOPE YOU ENJOYED THIS SESSION!!"
- 3070 PRINT"TYPE 'RUN' RETURN[146] TO BEGIN 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" L O N G D I V I S I O N"
- 20140 PRINT" [183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183]"
- 20150 FOR WA=1TO2000:NEXT WA
- 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
-