Fundamentals Of Math is a four-program educational suite covering addition, subtraction, multiplication, and division, each saved as a separate file. Each program presents 10 problems per session across multiple difficulty levels (six levels for addition, five for subtraction, eight each for multiplication and division), with the difficulty automatically adjusted up or down based on the student’s score: eight or more correct advances the level, seven holds, and fewer causes a review of the previous level. Problem generation uses RND with RAND 0 to seed a consistent sequence, and carry/borrow conditions are enforced algorithmically by examining individual digit values via string indexing on N$ and M$. Animated feedback routines use block graphics characters to display a “happy” bouncing sprite for correct answers and a “sad” sprite for wrong ones, with the animation driven by nested FOR/NEXT loops and repeated PRINT AT sequences. The division module is the most complex, implementing a full long-division walkthrough with step-by-step borrowing display and optional remainder problems.
Program Analysis
The suite comprises four independent but structurally identical BASIC programs, each handling one arithmetic operation. All four share the same overall architecture: a title/logo screen, level selection, a test/review/end menu, a 10-problem session loop, animated right/wrong feedback, automatic level promotion or demotion, and a keypress-wait idiom. The division program is significantly more elaborate than the other three, running to line 1725.
Program Structure
Each program follows the same top-level flow:
- Lines 5–20: Set operation name in
Z$, display the AMT logo using block graphics, wait for Enter. - Lines 25–45: Display level menu, validate input into
L. - Lines 50–80: Display the test/review/new-level/end menu, validate into
R$. - Lines 85–165: Draw the bordered problem frame, initialize counters.
- Lines 170–385: Main 10-problem loop; generate operands, accept answer, branch to correct/wrong routines.
- Lines 390–455: End-of-session scoring, level adjustment, prompt to continue.
- Lines 460–465: “Thank you” exit screen and STOP.
- Lines 470–705: Wrong-answer animation, answer reveal with carry/borrow walkthrough.
- Lines 710–798: Random problem generation subroutine.
- Lines 800–955: Animation support subroutines (sprite setup, slide, bounce).
- Lines 960–985: Title prompt / keypress-wait subroutine.
- Lines 990–995: SAVE and restart.
Keypress-Wait Idiom
All four programs use the standard two-line debounce pattern at lines 970–980 (or 1700–1710 in the division module):
970 IF INKEY$ <>"" THEN GOTO 970— waits for key release.975 IF INKEY$ ="" THEN GOTO 975— waits for key press.980 LET G$=INKEY$— captures the single keypress.
CHR$ 118 is the Enter/Newline key; CHR$ 39 is the delete/backspace key used in answer entry; CHR$ 54 (“6”, mapped as “Q” in some contexts) exits review mode back to the level menu.
Answer Entry and Editing
Answer entry (lines 190–245) builds the answer string S$ right-to-left (each new digit is prepended: LET S$=G$+S$), displaying a cursor * that shifts left as digits accumulate. Backspace (CHR$ 39) removes the leftmost digit of the displayed number. The display uses a fixed-width field at AT 11,13 (or AT 10,12 for multiplication), padded with spaces and the * cursor:
- 0 digits:
" *" - 1 digit:
" *"+S$ - 2 digits:
" *"+S$ - 3 digits:
"*"+S$
Maximum answer length is 3 digits for addition/subtraction and 4 for multiplication.
Problem Generation
The generation subroutine at lines 710–798 uses RND seeded by RAND 0 at line 77. For addition, it ensures N >= M (larger number on top) and enforces carry/no-carry constraints by comparing the last digits of N$ and M$. Level-specific constraints are:
| Program | Level | Constraint |
|---|---|---|
| Addition | 3,5 | Last digits sum < 10 (no carry) |
| Addition | 4,6 | Last digits sum ≥ 10 (carry) |
| Subtraction | 2,4 | Last digit of N ≥ last digit of M (no borrow) |
| Subtraction | 3,5 | Last digit of N < last digit of M (borrow) |
| Multiplication | 6,7 | Both operands two-digit; multi-step partial products shown |
| Division | 1,3,5,7 | Exact division (no remainder) |
| Division | 2,4,6,8 | Division with remainder |
For levels requiring two-digit numbers, a value of 10 is added to the one-digit random result (e.g., LET N$=STR$ (N+10)), guaranteeing the tens digit is 1.
Animated Feedback Sprites
Two animated sprites are used — a “happy face” for correct answers and a “sad face” for wrong answers — both built from block graphics characters. The sprites are drawn and erased by printing the graphic string B$ followed immediately by the blank string A$ (LET A$=" ") at the same position. Subroutines handle four phases:
GOSUB 845: Set up left-side sprite (B$="\,,\,,",A=6).GOSUB 935: Animate sprite vertically at columnA.GOSUB 800: Set up right-side sprite (B$="[,,][,,]",A=22).GOSUB 900/GOSUB 920: Slide sprite horizontally across row 11 in opposing directions usingB,C,D,Eto control range and step direction.
The correct-answer animation (lines 305–370) additionally bounces the sprite diagonally in a FOR J ... FOR I nested loop stepping through columns 15 down to F in steps of −4. In review mode, F is set to 11 (shorter travel) vs. 7 in test mode.
Carry and Borrow Walkthroughs
When a wrong answer is given (or in review mode), the programs display a step-by-step worked solution. For addition levels 4 and 6, lines 555–690 animate the carry digit appearing above the tens column. For subtraction levels 3 and 5, lines 553–660 show the borrowing process: the tens digit of the minuend is decremented (displayed in inverse video using CHR$ (CODE (N$(1))+128), i.e., adding 128 to the character code), the units digit is shown as 10+units, and the subtraction proceeds digit by digit with timed pauses via the GOSUB 695 delay loop (10 iterations).
Multiplication Long-Form Walkthrough
For levels 6 and 7 (two-digit × two-digit), the multiplication program displays a full partial-products breakdown (lines 553–580). Each partial product’s carry is accumulated by examining G$(1) (the tens digit of an intermediate string). The display uses inverse-video digits (CHR$ (CODE (N$(2))+128)) to highlight the active digit being multiplied. A variable Z tracks the current row offset for the second partial product line, and the program checks whether a five-digit total requires an extra column.
Division Long-Form Walkthrough
The division module (the longest of the four) implements a complete long-division display. Variable Z cycles through states (0, 3, 5, 6, 8) representing: initial quotient digit entry, subtraction entry, remainder carry-down, second quotient digit, and final remainder. The variable C$ holds the intermediate remainder after the first subtraction step. For two-digit quotients (LEN STR$ (INT (N/M))=2), a second pass through the division steps is triggered. Wrong answers trigger a fully animated worked solution spanning lines 1015–1255, including remainder display for even-level problems.
Scoring and Level Adjustment
After 10 problems, the score in R (correct) and W (wrong) is evaluated:
R > 7(8–10 correct): advance one level (capped at the maximum for each operation).R = 7: stay at the current level.R < 7: drop one level (floored at 1).
A congratulations message is shown when the student successfully completes the highest level of each operation.
Notable Anomalies
- Line 445 in the addition program prints
"PRESS ENTER TO 7EGIN"— the “B” is replaced with “7”, an apparent typo in the original listing. - The subtraction program’s line 160 is missing (addition has
155 IF L=2 THEN LET G=9); the subtraction version jumps directly from150to160, skipping a level-2 guard that would setGfor double-digit results — this means level 2 uses the defaultG=19, which is correct for that level’s stated range, so it is effectively harmless. - In the multiplication program, line
698appears where698should logically be598(inside aFOR Jloop at 593–700); the line numbering jumps from 597 to 698, meaning the inner loop body occupies a non-sequential line number but still executes correctly as BASIC finds the next higher line number regardless. - The multiplication module’s
GOSUB 800setsC=12and loopsAT 10,I(row 10) rather than row 11 as in addition/subtraction, reflecting the shifted display layout for the multiplication problem frame.
Content
Image Gallery
Source Code
3 REM (C) COPYRIGHT AMT, 1983
5 LET Z$="ADDITION"
10 PRINT AT 2,1;"▛▀▜";AT 3,1;"▌A▐ ADVANCED";AT 4,1;"▌ ▐";AT 5,1;"▌M▐ MICRO";AT 6,1;"▌ ▐";AT 7,1;"▌T▐ TECHNOLOGIES";AT 8,1;"▙▄▟";AT 12,8;"** PRESENTS **";AT 14,11;Z$
15 GOSUB 960
20 IF G$<>CHR$ 118 THEN GOTO 15
25 CLS
30 PRINT TAB 8;Z$;" LEVELS";AT 4,0;"1) 0-5 SINGLE DIGIT ANSWER";AT 6,0;"2) 0-9 DOUBLE DIGIT ANSWER";AT 8,0;"3) 0-19 ANSWER WITHOUT CARRY";AT 10,0;"4) 0-19 ANSWER WITH CARRY";AT 12,0;"5) 0-99 ANSWER WITHOUT CARRY";AT 14,0;"6) 0-99 ANSWER WITH CARRY";AT 19,7;"SELECT YOUR LEVEL";AT 21,9;"ENTER (1-6):"
35 GOSUB 970
40 IF G$<"1" OR G$>"6" THEN GOTO 35
45 LET L=VAL G$
50 CLS
55 LET L$=STR$ L
57 PRINT AT 1,4;"LEVEL ";L$;" HAS 10 PROBLEMS"
60 PRINT AT 6,5;" DO YOU WISH:";AT 8,9;"1) A TEST";AT 10,9;"2) A REVIEW";AT 12,9;"3) A NEW LEVEL";AT 14,9;"4) TO END";AT 19,2;"PLEASE MAKE YOUR SELECTION";AT 21,9;"ENTER (1-4):"
65 GOSUB 970
70 IF G$<"1" OR G$>"4" THEN GOTO 65
75 IF G$="3" THEN GOTO 25
77 RAND 0
80 LET R$=G$
85 CLS
90 PRINT AT 1,11;Z$;AT 3,11;"LEVEL: ";L$;AT 5,4;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜"
95 FOR I=6 TO 14
100 PRINT AT I,4;"▌";TAB 25;"▐"
105 NEXT I
110 PRINT AT 15,4;"▙████████████████████▟";AT 14,6;",,,,";TAB 22;"[,,][,,]"
115 IF R$="4" THEN GOTO 460
120 LET X=1
125 IF R$="2" THEN PRINT AT 17,9;"** REVIEW **"
130 PRINT AT 19,11;"PROBLEM ";X
135 LET R=0
140 LET W=0
145 LET G=19
150 IF L=1 THEN LET G=5
155 IF L=2 THEN LET G=9
160 IF L>4 THEN LET G=99
165 GOTO 380
170 LET S=0
175 LET X=X+1
180 PRINT AT 14,6;",,,,";TAB 22;"[,,][,,]";AT 8,15;N$;AT 9,12;"+ ";M$;AT 10,12;"-----";AT 11,16;"*"
182 IF R$<>"2" THEN GOTO 190
183 PRINT AT 21,0;"PRESS ENTER FOR ANSWER, Q TO END"
185 GOSUB 970
186 IF G$=CHR$ 54 THEN GOTO 50
187 IF G$<>CHR$ 118 THEN GOTO 185
188 PRINT AT 21,0;" "
189 GOTO 505
190 LET S$=""
195 GOSUB 970
200 IF (G$=CHR$ 118 OR G$=CHR$ 39) AND S=1 THEN GOTO 250
205 IF LEN S$=3 OR G$<"0" OR G$>"9" THEN GOTO 195
210 LET S=1
215 LET S$=G$+S$
220 LET A$="*"+S$
225 IF LEN S$=0 THEN LET A$=" *"
230 IF LEN S$=1 THEN LET A$=" *"+S$
235 IF LEN S$=2 THEN LET A$=" *"+S$
240 PRINT AT 11,13;A$
245 GOTO 195
250 IF G$<>CHR$ 39 THEN GOTO 285
255 IF LEN S$>1 THEN GOTO 275
260 LET S$=""
265 LET S=0
270 GOTO 220
275 LET S$=S$(2 TO )
280 GOTO 220
285 PRINT AT 11,16-LEN S$;" "
290 IF VAL S$<>VAL N$+M THEN GOTO 470
295 LET R=R+1
300 GOSUB 845
305 PRINT AT 10,6;"~~~~▝";AT 10,6;",,,,▝▞";AT 10,6;A$;AT 9,8;",,,,▞";AT 9,8;"~~~~";AT 9,8;A$;AT 8,9;",,,,▞";AT 8,9;"~~~~";AT 8,9;A$
310 GOSUB 935
315 GOSUB 800
320 GOSUB 900
325 PRINT AT 11,13;A$;B$
330 FOR J=15 TO F STEP -4
335 FOR I=11 TO 7 STEP -1
340 PRINT AT I,J;B$;AT I,J;A$
345 NEXT I
350 FOR I=7 TO 11
355 PRINT AT I,J-2;B$;AT I,J-2;A$
360 NEXT I
365 NEXT J
370 GOSUB 920
375 IF X<11 THEN PRINT AT 19,19;X
380 IF X<11 THEN GOSUB 710
385 IF X<11 THEN GOTO 170
387 PRINT AT 17,9;" "
390 IF R$="2" THEN GOTO 60
395 PRINT AT 19,11;" ";AT 21,3;" ";AT 7,8;"YOUR SCORE IS:";AT 9,10;R;" CORRECT";AT 11,10;W;" WRONG";AT 19,2;
400 IF R>7 THEN GOTO 430
403 IF R=7 THEN GOTO 420
405 LET L=L-1
410 IF L=0 THEN LET L=1
415 PRINT " LET US REVIEW LEVEL ";L;"."
417 GOTO 445
420 PRINT AT 19,2;"LET US CONTINUE AT LEVEL ";L;"."
425 GOTO 445
430 IF L=6 THEN PRINT AT 16,8;"CONGRATULATIONS";AT 18,0;"YOU HAVE SUCCESSFULLY COMPLETED";AT 19,6;"THE HIGHEST LEVEL.";AT 21,4;"PRESS ENTER TO CONTINUE"
432 IF L=6 THEN GOTO 447
435 LET L=L+1
440 PRINT "LET US ADVANCE TO LEVEL ";L;"."
445 PRINT AT 21,5;"PRESS ENTER TO 7EGIN"
447 GOSUB 970
450 IF G$<>CHR$ 118 THEN GOTO 447
455 GOTO 50
460 PRINT AT 8,8;"THANK YOU FOR";AT 10,7;"PLAYING ";Z$
465 STOP
470 LET W=W+1
475 GOSUB 845
480 PRINT AT 8,6;B$;"▗ ▗";AT 8,6;A$;AT 9,7;B$;"▚▘";AT 9,7;A$;AT 10,6;B$;"▗▘▚";AT 10,6;A$
482 GOSUB 935
484 GOSUB 800
486 GOSUB 900
488 PRINT AT 11,13;A$
490 FOR I=10 TO 8 STEP -1
492 PRINT AT I,9;B$;AT I,9;A$
494 NEXT I
496 FOR I=8 TO 10
498 PRINT AT I,7;B$;AT I,7;A$
500 NEXT I
502 GOSUB 920
505 LET T$=STR$ (VAL N$+M)
510 IF LEN T$=1 THEN LET T$=" "+T$
515 IF LEN T$=2 THEN LET T$=" "+T$
520 GOSUB 845
525 GOSUB 900
530 IF L=4 OR L=6 THEN GOTO 555
535 PRINT AT 11,16;T$(3);AT 11,13;B$;T$(2);AT 11,12;B$;T$(1)
540 LET C=10
542 GOSUB 920
545 PRINT AT 21,4;"PRESS ENTER TO CONTINUE"
546 GOSUB 970
547 IF G$<>CHR$ 118 THEN GOTO 546
550 PRINT AT 21,4;" "
551 GOSUB 800
552 LET F=11
554 GOTO 320
555 PRINT AT 11,15;A$
560 FOR I=8 TO 9
565 PRINT AT I,17;B$
570 GOSUB 695
575 PRINT AT I,17;A$
580 NEXT I
585 PRINT AT 11,16;T$(3);B$
590 GOSUB 695
595 PRINT AT 11,17;A$
600 IF VAL N$(LEN N$)+VAL M$(LEN M$)<10 THEN GOTO 615
605 PRINT AT 7,13;B$;"1"
610 GOSUB 695
615 PRINT AT 7,13;A$;AT 8,13;B$
620 GOSUB 695
625 PRINT AT 8,13;A$
630 IF M$(1)=" " THEN GOTO 650
635 PRINT AT 9,13;B$
640 GOSUB 695
645 PRINT AT 9,13;A$
650 PRINT AT 11,13;B$;T$(2)
655 GOSUB 695
660 PRINT AT 11,13;A$
665 IF L=4 OR M$(1)=" " THEN GOTO 540
670 IF VAL N$(1)+VAL M$(1)+1<10 THEN GOTO 540
675 PRINT AT 7,12;B$;"1"
680 GOSUB 695
685 PRINT AT 7,12;A$;AT 11,12;B$;"1"
690 GOTO 540
695 FOR J=1 TO 10
700 NEXT J
705 RETURN
710 LET N=INT (RND*G)+1
715 LET M=ABS ((INT (RND*G)+1)-N)
720 IF N>M THEN GOTO 740
725 LET S=M
730 LET M=N
735 LET N=S
740 IF L=2 AND N+M<10 THEN GOTO 710
745 LET N$=STR$ N
750 LET M$=STR$ M
755 IF L<3 THEN GOTO 785
760 LET A=VAL N$(LEN N$)+VAL M$(LEN M$)
765 IF ((L=4 OR L=6) AND A<10) OR ((L=3 OR L=5) AND A>9) THEN GOTO 710
770 IF L<>5 OR LEN N$<>2 OR LEN M$<>2 THEN GOTO 780
775 IF VAL N$(1)+VAL M$(1)>9 THEN GOTO 710
780 IF (L<5 AND N<10 AND M<10) OR (L>4 AND N<20 AND M<20) THEN LET N$=STR$ (N+10)
785 IF LEN N$=1 THEN LET N$=" "+N$
790 IF LEN M$=1 THEN LET M$=" "+M$
795 RETURN
800 LET B$="[,,][,,]"
805 LET A=22
810 LET B=21
815 LET C=12
820 LET D=-1
825 LET E=1
830 LET F=7
835 IF R$="2" THEN LET F=11
840 GOTO 875
845 LET B$=",,,,"
850 LET A=6
855 LET B=5
860 LET C=14
865 LET D=1
870 LET E=-1
875 LET A$=" "
880 FOR I=14 TO 11 STEP -1
885 PRINT AT I,A;B$;AT I,A;A$
890 NEXT I
895 RETURN
900 FOR I=B TO C STEP D
905 PRINT AT 11,I;" ";B$;" "
910 NEXT I
915 RETURN
920 FOR I=C TO B STEP E
925 PRINT AT 11,I;" ";B$;" "
930 NEXT I
935 FOR I=11 TO 13
940 PRINT AT I,A;B$;AT I,A;A$
945 NEXT I
950 PRINT AT 14,A;B$
955 RETURN
960 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
970 IF INKEY$ <>"" THEN GOTO 970
975 IF INKEY$ ="" THEN GOTO 975
980 LET G$=INKEY$
985 RETURN
990 SAVE "AD[D]"
995 GOTO 5
3 REM (C) COPYRIGHT AMT, 1983
5 LET Z$="SUBTRACTION"
10 PRINT AT 2,1;"▛▀▜";TAB 1;"▌A▐ ADVANCED";TAB 1;"▌ ▐";TAB 1;"▌M▐ MICRO";TAB 1;"▌ ▐";TAB 1;"▌T▐ TECHNOLOGIES";TAB 1;"▙▄▟";AT 12,9;"** PRESENTS **";AT 14,10;Z$
15 GOSUB 960
20 IF G$<>CHR$ 118 THEN GOTO 15
25 CLS
30 PRINT TAB 6;Z$;" LEVELS";AT 3,4;"SUBTRACT NUMBERS FROM:";AT 7,1;"1) 1 TO 9";AT 9,1;"2) 1 TO 19 WITHOUT CARRY";AT 11,1;"3) 1 TO 19 WITH CARRY";AT 13,1;"4) 1 TO 99 WITHOUT CARRY";AT 15,1;"5) 1 TO 99 WITH CARRY";AT 19,6;"SELECT YOUR LEVEL";AT 21,9;"ENTER (1-5):"
35 GOSUB 970
40 IF G$<"1" OR G$>"5" THEN GOTO 35
45 LET L=VAL G$
50 CLS
55 LET L$=STR$ L
57 PRINT AT 1,4;"LEVEL ";L$;" HAS 10 PROBLEMS"
60 PRINT AT 6,5;" DO YOU WISH:";AT 8,9;"1) A TEST";AT 10,9;"2) A REVIEW";AT 12,9;"3) A NEW LEVEL";AT 14,9;"4) TO END";AT 19,2;"PLEASE MAKE YOUR SELECTION";AT 21,9;"ENTER (1-4):"
65 GOSUB 970
70 IF G$<"1" OR G$>"4" THEN GOTO 65
75 IF G$="3" THEN GOTO 25
77 RAND 0
80 LET R$=G$
85 CLS
90 PRINT AT 1,9;Z$;AT 3,11;"LEVEL: ";L$;AT 5,4;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜"
95 FOR I=6 TO 14
100 PRINT AT I,4;"▌";TAB 25;"▐"
105 NEXT I
110 PRINT AT 15,4;"▙████████████████████▟";AT 14,6;",,,,";TAB 22;"[,,][,,]"
115 IF R$="4" THEN GOTO 460
120 LET X=1
125 IF R$="2" THEN PRINT AT 17,9;"** REVIEW **"
130 PRINT AT 19,11;"PROBLEM ";X
135 LET R=0
140 LET W=0
145 LET G=19
150 IF L=1 THEN LET G=9
160 IF L>3 THEN LET G=99
165 GOTO 380
170 LET S=0
175 LET X=X+1
180 PRINT AT 14,6;",,,,";TAB 22;"[,,][,,]";AT 8,15;N$;AT 9,12;"- ";M$;AT 10,12;"-----";AT 11,16;"*"
182 IF R$<>"2" THEN GOTO 190
183 PRINT AT 21,0;"PRESS ENTER FOR ANSWER, Q TO END"
185 GOSUB 970
186 IF G$=CHR$ 54 THEN GOTO 50
187 IF G$<>CHR$ 118 THEN GOTO 185
188 PRINT AT 21,0;" "
189 GOTO 520
190 LET S$=""
195 GOSUB 970
200 IF (G$=CHR$ 118 OR G$=CHR$ 39) AND S=1 THEN GOTO 250
205 IF LEN S$=3 OR G$<"0" OR G$>"9" THEN GOTO 195
210 LET S=1
215 LET S$=G$+S$
220 LET A$="*"+S$
225 IF LEN S$=0 THEN LET A$=" *"
230 IF LEN S$=1 THEN LET A$=" *"+S$
235 IF LEN S$=2 THEN LET A$=" *"+S$
240 PRINT AT 11,13;A$
245 GOTO 195
250 IF G$<>CHR$ 39 THEN GOTO 285
255 IF LEN S$>1 THEN GOTO 275
260 LET S$=""
265 LET S=0
270 GOTO 220
275 LET S$=S$(2 TO )
280 GOTO 220
285 PRINT AT 11,16-LEN S$;" "
290 IF VAL S$<>VAL T$ THEN GOTO 470
295 LET R=R+1
300 GOSUB 845
305 PRINT AT 10,6;"~~~~▝";AT 10,6;",,,,▝▞";AT 10,6;A$;AT 9,8;",,,,▞";AT 9,8;"~~~~";AT 9,8;A$;AT 8,9;",,,,▞";AT 8,9;"~~~~";AT 8,9;A$
310 GOSUB 935
315 GOSUB 800
320 GOSUB 900
325 PRINT AT 11,13;A$;B$
330 FOR J=15 TO F STEP -4
335 FOR I=11 TO 7 STEP -1
340 PRINT AT I,J;B$;AT I,J;A$
345 NEXT I
350 FOR I=7 TO 11
355 PRINT AT I,J-2;B$;AT I,J-2;A$
360 NEXT I
365 NEXT J
370 GOSUB 920
375 IF X<11 THEN PRINT AT 19,19;X
380 IF X<11 THEN GOSUB 710
385 IF X<11 THEN GOTO 170
387 PRINT AT 17,9;" "
390 IF R$="2" THEN GOTO 60
395 PRINT AT 19,11;" ";AT 21,3;" ";AT 7,8;"YOUR SCORE IS:";AT 9,10;R;" CORRECT";AT 11,10;W;" WRONG";AT 19,2;
400 IF R>7 THEN GOTO 430
403 IF R=7 THEN GOTO 420
405 LET L=L-1
410 IF L=0 THEN LET L=1
415 PRINT " LET US REVIEW LEVEL ";L;"."
417 GOTO 445
420 PRINT AT 19,2;"LET US CONTINUE AT LEVEL ";L;"."
425 GOTO 445
430 IF L=5 THEN PRINT AT 16,8;"CONGRATULATIONS";AT 18,0;"YOU HAVE SUCCESSFULLY COMPLETED";AT 19,6;"THE HIGHEST LEVEL.";AT 21,4;"PRESS ENTER TO CONTINUE"
433 IF L=5 THEN GOTO 447
435 LET L=L+1
440 PRINT "LET US ADVANCE TO LEVEL ";L;"."
445 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
447 GOSUB 970
450 IF G$<>CHR$ 118 THEN GOTO 447
455 GOTO 50
460 PRINT AT 8,8;"THANK YOU FOR";AT 10,5;"PLAYING ";Z$
465 STOP
470 LET W=W+1
475 GOSUB 845
480 PRINT AT 8,6;B$;"▗ ▗";AT 8,6;A$;AT 9,7;B$;"▚▘";AT 9,7;A$;AT 10,6;B$;"▗▘▚";AT 10,6;A$
482 GOSUB 935
484 GOSUB 800
486 GOSUB 900
488 PRINT AT 11,13;A$
490 FOR I=10 TO 8 STEP -1
492 PRINT AT I,9;B$;AT I,9;A$
494 NEXT I
496 FOR I=8 TO 10
498 PRINT AT I,7;B$;AT I,7;A$
500 NEXT I
505 GOSUB 920
520 GOSUB 845
525 GOSUB 900
527 IF L<3 OR L=4 OR N$(1)="1" THEN GOTO 535
530 GOTO 553
535 PRINT AT 11,16;T$(2);AT 11,13;B$;T$(1);AT 11,13;A$
540 LET C=10
541 GOSUB 920
544 PRINT AT 21,4;"PRESS ENTER TO CONTINUE"
545 GOSUB 970
546 IF G$<>CHR$ 118 THEN GOTO 545
549 PRINT AT 21,4;" "
550 GOSUB 800
551 LET F=11
552 GOTO 320
553 PRINT AT 11,15;A$
557 PRINT AT 8,15;CHR$ (CODE (N$(1))+128);AT 7,15;VAL N$(1)-1;AT 8,17;B$
558 GOSUB 695
564 PRINT AT 8,17;A$;AT 9,17;B$
565 GOSUB 695
570 PRINT AT 9,17;A$;AT 11,16;T$(2);B$
575 GOSUB 695
580 PRINT AT 11,17;A$;AT 7,13;B$
585 GOSUB 695
590 PRINT AT 7,13;A$
630 IF M$(1)=" " THEN GOTO 650
635 PRINT AT 9,13;B$
640 GOSUB 695
650 PRINT AT 9,13;A$;AT 11,13;B$;T$(1)
655 GOSUB 695
660 PRINT AT 11,13;A$
690 GOTO 540
695 FOR J=1 TO 10
700 NEXT J
705 RETURN
710 LET N=INT (RND*G)+1
715 LET M=ABS ((INT (RND*G)+1)-N)
720 IF N>M THEN GOTO 745
725 LET S=M
730 LET M=N
735 LET N=S
745 LET N$=STR$ N
750 LET M$=STR$ M
755 IF L=1 THEN GOTO 785
760 LET A=VAL N$(LEN N$)-VAL M$(LEN M$)
765 IF ((L=3 OR L=5) AND A>-1) OR ((L=2 OR L=4) AND A<0) THEN GOTO 710
770 IF L<>4 OR LEN N$<>2 OR LEN M$<>2 THEN GOTO 780
775 IF VAL N$(1)-VAL M$(1)<0 THEN GOTO 710
780 IF (L<5 AND N<10 AND M<10) OR (L>4 AND N<20 AND M<20) THEN LET N$=STR$ (N+10)
785 IF LEN N$=1 THEN LET N$=" "+N$
790 IF LEN M$=1 THEN LET M$=" "+M$
792 LET T$=STR$ (VAL N$-M)
796 IF LEN T$=1 THEN LET T$=" "+T$
798 RETURN
800 LET B$="[,,][,,]"
805 LET A=22
810 LET B=21
815 LET C=12
820 LET D=-1
825 LET E=1
830 LET F=7
835 IF R$="2" THEN LET F=11
840 GOTO 875
845 LET B$=",,,,"
850 LET A=6
855 LET B=5
860 LET C=14
865 LET D=1
870 LET E=-1
875 LET A$=" "
880 FOR I=14 TO 11 STEP -1
885 PRINT AT I,A;B$;AT I,A;A$
890 NEXT I
895 RETURN
900 FOR I=B TO C STEP D
905 PRINT AT 11,I;" ";B$;" "
910 NEXT I
915 RETURN
920 FOR I=C TO B STEP E
925 PRINT AT 11,I;" ";B$;" "
930 NEXT I
935 FOR I=11 TO 13
940 PRINT AT I,A;B$;AT I,A;A$
945 NEXT I
950 PRINT AT 14,A;B$
955 RETURN
960 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
970 IF INKEY$ <>"" THEN GOTO 970
975 IF INKEY$ ="" THEN GOTO 975
980 LET G$=INKEY$
985 RETURN
990 SAVE "SU[B]"
995 GOTO 5
3 REM (C) COPYRIGHT AMT, 1983
5 LET Z$="MULTIPLICATION"
10 PRINT AT 2,1;"▛▀▜";TAB 1;"▌A▐ ADVANCED";TAB 1;"▌ ▐";TAB 1;"▌M▐ MICRO";TAB 1;"▌ ▐";TAB 1;"▌T▐ TECHNOLOGIES";TAB 1;"▙▄▟";AT 12,8;"** PRESENTS **";AT 14,8;Z$
15 GOSUB 960
20 IF G$<>CHR$ 118 THEN GOTO 15
25 CLS
30 PRINT TAB 5;Z$;" LEVELS";AT 2,3;"MULTIPLIER MULTIPLICAND";AT 4,0;"1) 1-5 1-5";AT 6,0;"2) 1-5 6-9";AT 8,0;"3) 6-9 6-9";AT 10,0;"4) 1-9 10-19";AT 12,0;"5) 1-9 20-99";AT 14,0;"6) 10-19 10-19";AT 16,0;"7) 20-99 20-99";AT 18,0;"8) MULTIPLICATION TABLES (1-9)";AT 20,7;"SELECT YOUR LEVEL";AT 21,10;"ENTER (1-8):"
35 GOSUB 970
40 IF G$<"1" OR G$>"8" THEN GOTO 35
43 LET L=VAL G$
44 IF L<8 THEN GOTO 50
45 CLS
46 PRINT AT 3,5;Z$;" TABLES";AT 11,1;"PLEASE SELECT THE MULTIPLIER";AT 13,9;"FROM 1 TO 9.";AT 20,9;"ENTER (1-9):"
47 GOSUB 970
48 IF G$<"1" OR G$>"9" THEN GOTO 47
49 LET K$=G$
50 CLS
55 LET L$=STR$ L
57 PRINT AT 1,4;"LEVEL ";L$;" HAS 10 PROBLEMS"
60 PRINT AT 6,5;" DO YOU WISH:";AT 8,9;"1) A TEST";AT 10,9;"2) A REVIEW";AT 12,9;"3) A NEW LEVEL";AT 14,9;"4) TO END";AT 19,2;"PLEASE MAKE YOUR SELECTION";AT 21,9;"ENTER (1-4):"
65 GOSUB 970
70 IF G$<"1" OR G$>"4" THEN GOTO 65
75 IF G$="3" THEN GOTO 25
77 RAND 0
80 LET R$=G$
85 CLS
90 PRINT AT 1,8;Z$;AT 3,11;"LEVEL: ";L$;AT 5,4;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜"
95 FOR I=6 TO 14
100 PRINT AT I,4;"▌";TAB 25;"▐"
105 NEXT I
110 PRINT AT 15,4;"▙████████████████████▟";AT 14,6;",,,,";TAB 22;"[,,][,,]"
115 IF R$="4" THEN GOTO 460
120 LET X=1
125 IF R$="2" THEN PRINT AT 17,9;"** REVIEW **"
130 PRINT AT 19,11;"PROBLEM ";X
135 LET R=0
140 LET W=0
141 IF L<8 THEN GOTO 146
142 LET N=X
143 LET M=VAL K$
144 GOSUB 784
145 GOTO 170
146 LET G=9
147 LET H=9
150 IF L<3 THEN LET G=5
151 IF L=6 THEN LET G=19
152 IF L=7 THEN LET G=99
156 IF L=1 THEN LET H=5
160 IF L=4 OR L=6 THEN LET H=19
162 IF L=5 OR L=7 THEN LET H=99
165 GOTO 380
170 LET S=0
171 LET Z=0
175 LET X=X+1
180 PRINT AT 14,6;",,,,";TAB 22;"[,,][,,]";AT 7,15;N$;AT 8,13;"X ";M$;AT 9,13;"----";AT 10,16;"*"
181 IF R$<>"2" THEN GOTO 190
182 PRINT AT 21,0;"PRESS ENTER FOR ANSWER, Q TO END"
183 GOSUB 970
184 IF G$=CHR$ 54 THEN GOTO 50
185 IF G$<>CHR$ 118 THEN GOTO 183
186 PRINT AT 21,0;" "
187 GOTO 510
190 LET S$=""
195 GOSUB 970
200 IF (G$=CHR$ 118 OR G$=CHR$ 39) AND S=1 THEN GOTO 250
205 IF LEN S$=4 OR G$<"0" OR G$>"9" THEN GOTO 195
210 LET S=1
215 LET S$=G$+S$
220 LET A$="*"+S$
225 IF LEN S$=0 THEN LET A$=" *"
230 IF LEN S$=1 THEN LET A$=" *"+S$
235 IF LEN S$=2 THEN LET A$=" *"+S$
236 IF LEN S$=3 THEN LET A$=" *"+S$
237 PRINT AT 10+Z,12;
238 IF Z=1 THEN PRINT AT 10+Z,11;
240 PRINT A$
245 GOTO 195
250 IF G$<>CHR$ 39 THEN GOTO 285
255 IF LEN S$>1 THEN GOTO 275
260 LET S$=""
265 LET S=0
270 GOTO 220
275 LET S$=S$(2 TO )
280 GOTO 220
285 IF Z=0 OR Z=3 THEN PRINT AT 10+Z,16-LEN S$;" "
286 IF L<6 OR L=8 THEN GOTO 301
289 IF Z=3 THEN GOTO 300
290 IF Z=0 THEN PRINT AT 11,15;"*"
291 IF Z=0 THEN LET T1=VAL S$
292 IF Z<>1 THEN GOTO 297
293 PRINT AT 11,14-LEN S$;"+ ";AT 12,12;"-----";AT 13,16;"*"
294 IF LEN S$>2 THEN PRINT AT 12,11;"-"
295 LET Z=Z+1
296 LET T2=VAL S$
297 LET Z=Z+1
298 LET S=0
299 GOTO 190
300 IF T1<>VAL M$(2)*N OR T2<>VAL M$(1)*N THEN GOTO 470
301 IF VAL S$<>VAL T$ THEN GOTO 470
303 LET R=R+1
304 GOSUB 845
305 PRINT AT 9,6;"~~~~▝";AT 9,6;",,,,▝▞";AT 9,6;A$;AT 8,8;",,,,▞";AT 8,8;"~~~~";AT 8,8;A$;AT 7,9;",,,,▞";AT 7,9;"~~~~";AT 7,9;A$
310 GOSUB 935
312 IF L=6 OR L=7 THEN GOTO 587
315 GOSUB 800
320 GOSUB 900
325 PRINT AT 10,13;A$;B$
330 FOR J=15 TO F STEP -4
335 FOR I=10 TO 6 STEP -1
340 PRINT AT I,J;B$;AT I,J;A$
345 NEXT I
350 FOR I=6 TO 10
355 PRINT AT I,J-2;B$;AT I,J-2;A$
360 NEXT I
365 NEXT J
370 GOSUB 920
375 IF X>10 THEN GOTO 387
376 PRINT AT 19,19;X
377 IF L=8 THEN GOTO 142
380 GOSUB 710
385 GOTO 170
387 IF R$="2" AND L=8 THEN GOTO 396
388 PRINT AT 17,9;" "
390 IF R$="2" THEN GOTO 60
394 PRINT AT 19,11;" ";AT 21,3;" ";AT 7,8;"YOUR SCORE IS:";AT 9,10;R;" CORRECT";AT 11,10;W;" WRONG";AT 19,2;
395 IF L<8 THEN GOTO 401
396 PRINT AT 19,11;" "
397 PRINT AT 20,1;"PRESS ENTER TO RETURN TO MENU"
398 GOSUB 970
399 IF G$<>CHR$ 118 THEN GOTO 398
400 GOTO 25
401 IF R>7 THEN GOTO 430
403 IF R=7 THEN GOTO 420
405 IF L=1 THEN GOTO 415
410 LET L=L-1
415 PRINT " LET US REVIEW LEVEL ";L;"."
417 GOTO 445
420 PRINT AT 19,2;"LET US CONTINUE AT LEVEL ";L;"."
425 GOTO 445
430 IF L=7 THEN PRINT AT 16,8;"CONGRATULATIONS";AT 18,0;"YOU HAVE SUCCESSFULLY COMPLETED";AT 19,6;"THE HIGHEST LEVEL.";AT 21,4;"PRESS ENTER TO CONTINUE"
433 IF L=7 THEN GOTO 447
435 LET L=L+1
440 PRINT "LET US ADVANCE TO LEVEL ";L;"."
445 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
447 GOSUB 970
450 IF G$<>CHR$ 118 THEN GOTO 447
455 GOTO 50
460 PRINT AT 8,8;"THANK YOU FOR";AT 10,11;"PLAYING";AT 12,8;Z$
465 STOP
470 LET W=W+1
471 GOSUB 845
472 PRINT AT 7,6;B$;"▗ ▗";AT 7,6;A$;AT 8,7;B$;"▚▘";AT 8,7;A$;AT 9,6;B$;"▗▘▚";AT 9,6;A$
473 GOSUB 935
474 GOSUB 800
475 GOSUB 900
476 PRINT AT 10,13;A$
477 IF L<6 OR L=8 THEN GOTO 490
478 FOR J=15 TO 11 STEP -4
479 FOR I=10 TO 13
480 PRINT AT I,J;B$;AT I,J;A$
481 NEXT I
482 FOR I=13 TO 10 STEP -1
483 PRINT AT I,J-2;B$;AT I,J-2;A$
484 NEXT I
485 NEXT J
486 PRINT AT 10,9;A$
490 FOR I=9 TO 7 STEP -1
492 PRINT AT I,9;B$;AT I,9;A$
494 NEXT I
496 FOR I=7 TO 9
498 PRINT AT I,7;B$;AT I,7;A$
500 NEXT I
505 GOSUB 920
510 GOSUB 845
515 GOSUB 900
525 IF N$(1)<>" " THEN GOTO 553
535 PRINT AT 10,16;T$(4);AT 10,13;B$;T$(3);AT 10,12;B$;T$(2);AT 10,11;B$;T$(1)
540 LET C=9
541 GOSUB 920
544 PRINT AT 21,4;"PRESS ENTER TO CONTINUE"
545 GOSUB 970
546 IF G$<>CHR$ 118 THEN GOTO 545
549 PRINT AT 21,4;" "
550 GOSUB 800
551 LET F=12
552 GOTO 320
553 LET G$=STR$ (VAL N$(2)*VAL M$(2))
554 IF LEN G$=1 THEN LET G$=" "+G$
555 PRINT AT 7,16;CHR$ (CODE (N$(2))+128);AT 8,16;CHR$ (CODE (M$(2))+128);AT 10,16;G$(2);AT 10,14;B$;AT 6,15;G$(1)
556 GOSUB 703
557 LET H$=STR$ (VAL N$(1)*VAL M$(2))
558 IF G$(1)<>" " THEN LET H$=STR$ (VAL H$+VAL G$(1))
560 PRINT AT 7,16;N$(2);AT 7,15;CHR$ (CODE (N$(1))+128);AT 10,16-LEN H$;H$;AT 10,14-LEN H$;B$
562 GOSUB 703
564 PRINT AT 10,14-LEN H$;A$;AT 8,16;M$(2);AT 7,15;N$(1);AT 6,15;" "
566 IF M$(1)=" " THEN GOTO 540
568 LET G$=STR$ (VAL N$(2)*VAL M$(1))
570 IF LEN G$=1 THEN LET G$=" "+G$
572 PRINT AT 8,15;CHR$ (CODE (M$(1))+128);AT 7,16;CHR$ (CODE (N$(2))+128);AT 11,13;B$;G$(2);AT 6,15;G$(1)
573 GOSUB 703
574 LET H$=STR$ (VAL N$(1)*VAL M$(1))
575 IF G$(1)<>" " THEN LET H$=STR$ (VAL H$+VAL G$(1))
576 PRINT AT 7,16;N$(2);AT 7,15;CHR$ (CODE (N$(1))+128);AT 11,15-LEN H$;H$;AT 11,13-LEN H$;B$
577 GOSUB 703
578 PRINT AT 8,15;M$(1);AT 7,15;N$(1);AT 6,15;" ";AT 11,11-LEN H$;B$;"+ ";AT 12,12;"-----"
579 IF T$(1)<>" " THEN PRINT AT 12,11;"-"
580 PRINT AT 11,11-LEN H$;A$;AT 13,15;B$;AT 13,14;B$;T$(4);AT 13,13;B$;T$(3);AT 13,12;B$;T$(2);AT 13,11;B$;T$(1);AT 13,9;B$;A$;AT 13,7;B$;A$;AT 13,6;B$;A$;AT 13,6;A$;AT 14,6;B$
581 LET Z=0
584 PRINT AT 21,4;"PRESS ENTER TO CONTINUE"
585 GOSUB 970
586 IF G$<>CHR$ 118 THEN GOTO 585
587 LET B$="[,,][,,]"
590 PRINT AT 21,4;" "
591 IF L=4 OR L=5 THEN GOTO 315
592 PRINT AT 14,22;A$;AT 14,20;B$;AT 14,20;A$;
593 FOR J=16 TO 9-Z STEP -4
594 FOR I=13 TO 7 STEP -1
595 PRINT AT I,J;B$;AT I,J;A$
596 NEXT I
597 FOR I=7 TO 13
698 PRINT AT I,J-2;B$;AT I,J-2;A$
699 NEXT I
700 NEXT J
701 PRINT AT 14,22;B$
702 GOTO 375
703 FOR J=1 TO 10
704 NEXT J
705 RETURN
710 LET N=INT (RND*H)+1
715 LET M=INT (RND*G)+1
720 IF N>=M THEN GOTO 750
725 IF L=2 OR L=4 OR L=5 THEN GOTO 710
735 LET T=M
740 LET M=N
745 LET N=T
750 IF L=1 THEN GOTO 784
751 IF L>5 THEN GOTO 767
752 IF L=3 AND N<6 THEN LET M=M+4
753 IF L=3 AND N>5 THEN LET M=N-1
754 IF L=3 AND M=5 THEN LET M=6
755 IF L<4 AND N<6 THEN LET N=N+4
760 IF L=4 AND N<10 THEN LET N=N+10
765 IF L=5 AND N<20 THEN LET N=N+40
766 GOTO 784
767 IF L=7 THEN GOTO 775
768 IF N=10 THEN LET M=10
769 IF N>10 AND M<10 THEN LET M=N-1
770 IF N>9 THEN GOTO 784
771 LET N=N+10
772 LET M=M+10
773 GOTO 784
775 IF N=20 THEN LET M=20
776 IF N>20 AND M<20 THEN LET M=N-1
777 IF N>19 THEN GOTO 784
778 LET N=N+40
779 LET M=M+40
784 LET N$=STR$ N
785 LET M$=STR$ M
788 IF LEN N$=1 THEN LET N$=" "+N$
790 IF LEN M$=1 THEN LET M$=" "+M$
792 LET T$=STR$ (N*M)
794 IF LEN T$=1 THEN LET T$=" "+T$
795 IF LEN T$=2 THEN LET T$=" "+T$
796 IF LEN T$=3 THEN LET T$=" "+T$
798 RETURN
800 LET B$="[,,][,,]"
805 LET A=22
810 LET B=21
815 LET C=12
820 LET D=-1
825 LET E=1
830 LET F=7
835 IF R$="2" THEN LET F=12
840 GOTO 875
845 LET B$=",,,,"
850 LET A=6
855 LET B=5
860 LET C=14
865 LET D=1
870 LET E=-1
875 LET A$=" "
880 FOR I=14 TO 10 STEP -1
885 PRINT AT I,A;B$;AT I,A;A$
890 NEXT I
895 RETURN
900 FOR I=B TO C STEP D
905 PRINT AT 10,I;" ";B$;" "
910 NEXT I
915 RETURN
920 FOR I=C TO B STEP E
925 PRINT AT 10,I;" ";B$;" "
930 NEXT I
935 FOR I=10 TO 13
940 PRINT AT I,A;B$;AT I,A;A$
945 NEXT I
950 PRINT AT 14,A;B$
955 RETURN
960 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
970 IF INKEY$ <>"" THEN GOTO 970
975 IF INKEY$ ="" THEN GOTO 975
980 LET G$=INKEY$
985 RETURN
990 SAVE "MUL[T]"
995 GOTO 5
3 REM (C) COPYRIGHT AMT, 1983
5 LET Z$="DIVISION"
10 PRINT AT 2,1;"▛▀▜";TAB 1;"▌A▐ ADVANCED";TAB 1;"▌ ▐";TAB 1;"▌M▐ MICRO";TAB 1;"▌ ▐";TAB 1;"▌T▐ TECHNOLOGIES";TAB 1;"▙▄▟";AT 12,8;"** PRESENTS **";AT 14,11;Z$
15 GOSUB 1695
20 IF G$<>CHR$ 118 THEN GOTO 15
25 CLS
30 PRINT TAB 7;Z$;" LEVELS";AT 2,6;"DIVISOR DIVIDEND";AT 4,1;"1) 1-9 1-9";AT 6,1;"2) 1-9 1-9 REMAINDER";AT 8,1;"3) 1-9 10-19";AT 10,1;"4) 1-9 10-19 REMAINDER";AT 12,1;"5) 1-9 20-99";AT 14,1;"6) 1-9 20-99 REMAINDER";AT 16,1;"7) 10-99 10-99";AT 18,1;"8) 10-99 10-99 REMAINDER";AT 20,6;"SELECT YOUR LEVEL";AT 21,9;"ENTER (1-8):"
35 GOSUB 1700
40 IF G$<"1" OR G$>"8" THEN GOTO 35
45 LET L=VAL G$
50 CLS
55 LET L$=STR$ L
60 PRINT AT 1,4;"LEVEL ";L$;" HAS 10 PROBLEMS"
65 PRINT AT 6,5;" DO YOU WISH:";AT 8,9;"1) A TEST";AT 10,9;"2) A REVIEW";AT 12,9;"3) A NEW LEVEL";AT 14,9;"4) TO END";AT 19,2;"PLEASE MAKE YOUR SELECTION";AT 21,9;"ENTER (1-4):"
70 GOSUB 1700
75 IF G$<"1" OR G$>"4" THEN GOTO 70
80 IF G$="3" THEN GOTO 25
85 RAND 0
90 LET R$=G$
95 CLS
100 PRINT AT 1,11;Z$;AT 3,11;"LEVEL: ";L$;AT 5,4;"▛▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▜"
105 FOR I=6 TO 14
110 PRINT AT I,4;"▌";TAB 25;"▐"
115 NEXT I
120 PRINT AT 15,4;"▙████████████████████▟";AT 14,6;",,,,";TAB 22;"[,,][,,]"
125 IF R$="4" THEN GOTO 880
135 LET X=1
140 IF R$="2" THEN PRINT AT 17,9;"** REVIEW **"
145 PRINT AT 19,11;"PROBLEM ";X
150 LET K=1
155 LET O=1
160 LET R=0
165 LET W=0
170 LET E$=""
175 LET G=9
180 LET H=10
185 IF L>6 THEN LET G=90
190 IF L<3 THEN LET H=9
195 IF L=5 OR L=6 THEN LET H=99
200 IF L>6 THEN LET H=90
205 IF H=10 OR H=90 THEN LET K=10
210 IF H=90 THEN LET O=10
215 GOTO 785
220 LET S=0
225 LET Z=0
230 LET Y=0
235 LET RE=0
240 LET C$=""
245 LET X=X+1
250 PRINT AT 14,6;",,,,";TAB 22;"[,,][,,]";AT 7,13;"▄▄▄▄";AT 8,11;M$;"▌";N$
255 PRINT AT 6,14;
260 IF M>VAL N$(1) THEN PRINT AT 6,15;
265 PRINT "*"
270 IF R$<>"2" THEN GOTO 305
275 PRINT AT 21,0;"PRESS ENTER FOR ANSWER, Q TO END"
280 GOSUB 1700
285 IF G$=CHR$ 54 THEN GOTO 50
290 IF G$<>CHR$ 118 THEN GOTO 280
295 PRINT AT 21,0;" "
300 GOTO 1015
305 LET D$=""
310 LET S$=""
315 GOSUB 1700
320 IF (G$=CHR$ 118 OR G$=CHR$ 39) AND S=1 THEN GOTO 425
325 IF LEN S$=2 OR G$<"0" OR G$>"9" THEN GOTO 315
330 IF (Z=0 OR (M<=VAL N$(1) AND C$="")) AND LEN S$=1 AND RE=0 THEN GOTO 315
335 LET S=1
340 IF RE=1 THEN LET S$=S$+G$
345 IF RE=0 THEN LET S$=G$+S$
350 IF Z<>0 THEN GOTO 390
355 LET A$=S$+"*"
360 IF S=0 THEN LET A$="* "
365 IF LEN S$=1 THEN LET A$=S$+"* "
370 PRINT AT 6,14;
375 IF C$<>"" OR M>VAL N$(1) THEN PRINT AT 6,15;
380 IF RE=1 THEN PRINT AT 6,18;
385 GOTO 415
390 LET A$="*"+S$
395 IF S=0 THEN LET A$=" *"
400 IF LEN S$=1 THEN LET A$=" *"+S$
405 PRINT AT 6+Z,12;
410 IF M>VAL N$(1) OR C$<>"" THEN PRINT AT 6+Z,13;
415 PRINT A$
420 GOTO 315
425 IF G$<>CHR$ 39 THEN GOTO 465
430 IF LEN S$>1 THEN GOTO 450
435 LET S$=""
440 LET S=0
445 GOTO 350
450 IF RE=0 THEN LET S$=S$(2)
455 IF RE=1 THEN LET S$=S$(1)
460 GOTO 350
465 IF RE=1 THEN GOTO 665
470 IF Z=0 THEN GOTO 530
475 IF Z=8 THEN GOTO 605
480 IF Z<>5 THEN GOTO 560
485 LET C$=S$
490 IF M<=VAL N$(1) AND VAL C$<>VAL N$(1)-INT (VAL N$(1)/M)*M THEN LET Y=1
495 IF M>VAL N$(1) AND VAL C$<>VAL N$-INT (VAL N$/M)*M THEN LET Y=1
500 PRINT AT 11,13;" "
505 IF M>VAL N$(1) AND LEN S$=1 THEN PRINT AT 11,14;" "
510 IF M>VAL N$(1) OR LEN N$=1 THEN GOTO 615
515 PRINT AT 11,15;N$(2);AT 6,15;"*"
520 LET Z=0
525 GOTO 655
530 LET D$=D$+S$
535 PRINT AT 6,16;" "
540 IF M<=VAL N$(1) THEN PRINT AT 6,14+LEN D$;" "
545 LET Z=3
550 IF C$<>"" THEN LET Z=6
555 GOTO 640
560 IF (M>VAL N$(1) OR C$<>"") AND LEN S$=1 THEN PRINT AT 6+Z,14;" "
565 PRINT AT 6+Z,13;"-";AT 7+Z,13;"---"
570 IF Z=6 THEN GOTO 590
575 IF M<=VAL N$(1) AND VAL S$<>INT (VAL N$(1)/M)*M THEN LET Y=1
580 IF M>VAL N$(1) AND VAL S$<>INT (VAL N$/M)*M THEN LET Y=1
585 GOTO 595
590 IF VAL S$<>INT (VAL (STR$ (VAL N$(1)-INT (VAL N$(1)/M)*M)+N$(2))/M)*M THEN LET Y=1
595 LET Z=Z+2
600 GOTO 640
605 IF VAL S$<>N-INT (N/M)*M THEN LET Y=1
610 PRINT AT 14,15-LEN S$;" "
615 IF L=1 OR L=3 OR L=5 OR L=7 THEN GOTO 665
620 PRINT AT 6,17;"R*"
625 LET Z=0
630 LET RE=1
635 GOTO 655
640 PRINT AT 6+Z,15;
645 IF C$="" AND M<=VAL N$(1) THEN PRINT AT 6+Z,14;
650 PRINT "*"
655 LET S=0
660 GOTO 310
665 IF RE=1 AND VAL S$<>N-INT (N/M)*M THEN LET Y=1
670 IF RE=1 THEN PRINT AT 6,18+LEN S$;" "
675 IF Y=1 OR VAL D$<>INT (N/M) THEN GOTO 890
680 LET R=R+1
685 LET P=11
690 GOSUB 1575
695 PRINT AT 10,5;"~~▝";AT 10,5;",,▝▞";AT 10,5;" ";AT 9,6;",,,,▞";AT 9,6;"~~~~";AT 9,6;A$;AT 8,7;",,,,▞";AT 8,7;"~~~~";AT 8,7;A$
700 GOSUB 1670
705 IF LEN STR$ (INT (N/M))=2 THEN LET Z=6
710 IF LEN STR$ (INT (N/M))=2 THEN GOTO 1390
715 GOSUB 1525
720 GOSUB 1630
725 PRINT AT 6,13;A$
730 FOR J=15 TO F STEP -4
735 FOR I=6 TO 11
740 PRINT AT I,J;B$;AT I,J;A$
745 NEXT I
750 FOR I=11 TO 6 STEP -1
755 PRINT AT I,J-2;B$;AT I,J-2;A$
760 NEXT I
765 NEXT J
770 GOSUB 1650
775 IF X>10 THEN GOTO 795
780 PRINT AT 19,19;X
785 GOSUB 1460
790 GOTO 220
795 PRINT AT 17,9;" "
800 IF R$="2" THEN GOTO 65
805 PRINT AT 19,11;" ";AT 21,3;" ";AT 7,8;"YOUR SCORE IS:";AT 9,10;R;" CORRECT";AT 11,10;W;" WRONG";AT 19,2;
810 IF R>7 THEN GOTO 850
815 IF R=7 THEN GOTO 840
820 IF L=1 THEN GOTO 830
825 LET L=L-1
830 PRINT " LET US REVIEW LEVEL ";L;"."
835 GOTO 865
840 PRINT AT 19,2;"LET US CONTINUE AT LEVEL ";L;"."
845 GOTO 865
850 IF L=8 THEN PRINT AT 16,8;"CONGRATULATIONS";AT 18,0;"YOU HAVE SUCCESSFULLY COMPLETED";AT 19,6;"THE HIGHEST LEVEL.";AT 21,4;"PRESS ENTER TO CONTINUE"
853 IF L=8 THEN GOTO 867
855 LET L=L+1
860 PRINT "LET US ADVANCE TO LEVEL ";L;"."
865 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
867 GOSUB 1700
870 IF G$<>CHR$ 118 THEN GOTO 867
875 GOTO 50
880 PRINT AT 8,8;"THANK YOU FOR";AT 10,11;"PLAYING";AT 12,10;Z$
885 STOP
890 LET W=W+1
895 LET P=11
900 GOSUB 1575
905 PRINT AT 8,5;",,▗ ▗";AT 8,5;" ";AT 9,5;",,,,▚▘";AT 9,5;A$;AT 10,5;",,▗▘▚";AT 10,5;" "
910 GOSUB 1670
915 GOSUB 1525
920 GOSUB 1630
925 PRINT AT 6,13;A$;AT 6,15;B$;AT 6,15;A$;AT 6,16;B$;AT 6,16;A$;AT 8,16;B$;AT 8,16;A$;AT 9,16;B$;AT 9,16;A$;AT 9,14;B$;AT 9,14;A$
930 LET P=11
935 IF LEN D$=2 THEN LET P=14
940 FOR I=9 TO P
945 PRINT AT I,14;B$;AT I,14;A$
950 NEXT I
955 FOR I=P TO 9 STEP -1
960 PRINT AT I,12;B$;AT I,12;A$
965 NEXT I
970 PRINT AT 10,9;A$
975 FOR I=10 TO 8 STEP -1
980 PRINT AT I,8;B$;AT I,8;A$
985 NEXT I
990 FOR I=8 TO 10
995 PRINT AT I,6;B$;AT I,6;A$
1000 NEXT I
1005 LET P=10
1010 GOSUB 1650
1015 LET P=6
1020 GOSUB 1575
1025 LET C=12
1030 GOSUB 1630
1035 IF M>VAL N$(1) THEN PRINT AT 6,13;" ";B$;AT 6,15;INT (N/M);AT 6,13;B$;AT 6,12;B$;" "
1040 IF M<=VAL N$(1) THEN PRINT AT 6,14;INT (VAL N$(1)/M);AT 6,12;B$
1045 LET C=10
1050 LET B=8
1055 GOSUB 1650
1060 PRINT AT 6,9;A$;AT 7,9;B$;AT 7,9;A$;AT 8,9;B$;AT 8,9;A$;AT 9,9;B$;
1065 LET P=9
1070 LET C=12
1075 GOSUB 1630
1080 IF M<=VAL N$(1) THEN GOTO 1100
1085 LET H$=STR$ (INT (N/M)*M)
1087 IF LEN H$=1 THEN LET H$=" "+H$
1090 PRINT AT 9,13;" ";B$;AT 9,15;H$(2);AT 9,13;B$;AT 9,14;H$(1);AT 9,12;B$
1095 GOTO 1105
1100 PRINT AT 9,14;INT (VAL N$(1)/M)*M;AT 9,12;B$
1105 GOSUB 1445
1110 PRINT AT 9,11;B$;"-";AT 9,11;A$;AT 10,11;B$;"---";AT 10,11;A$;AT 11,11;B$;AT 11,11;" ";B$;AT 11,12;" ";B$
1115 IF M<=VAL N$(1) THEN GOTO 1140
1120 LET H$=STR$ (N-INT (N/M)*M)
1125 IF LEN H$=1 THEN LET H$=" "+H$
1130 PRINT AT 11,13;" ";B$;AT 11,15;H$(2);AT 11,13;B$;AT 11,14;H$(1);AT 11,12;B$
1135 GOTO 1145
1140 PRINT AT 11,14;VAL N$(1)-INT (VAL N$(1)/M)*M;AT 11,12;B$
1145 IF LEN STR$ (INT (N/M))<>2 THEN LET P=11
1150 IF LEN STR$ (INT (N/M))<>2 THEN GOTO 1235
1155 LET H$=STR$ (INT (N/M))
1160 PRINT AT 11,15;N$(2)
1165 GOSUB 1445
1170 PRINT AT 11,12;A$;AT 6,15;B$;AT 6,15;H$(2);B$
1175 GOSUB 1445
1180 LET H$=STR$ (INT (VAL (STR$ (VAL N$(1)-INT (VAL N$(1)/M)*M)+N$(2))/M)*M)
1185 PRINT AT 6,16;A$
1190 FOR I=8 TO 12
1195 PRINT AT I,16;B$;AT I,16;A$
1200 NEXT I
1205 IF LEN H$=1 THEN LET H$=" "+H$
1210 PRINT AT 12,14;B$;AT 12,15;H$(2);AT 12,13;B$;AT 12,14;H$(1);AT 12,12;B$
1215 GOSUB 1445
1220 PRINT AT 12,13;"-";AT 12,11;B$;AT 12,11;A$;AT 13,11;B$;"---";AT 13,11;A$;AT 14,11;B$;AT 14,11;" ";B$;AT 14,12;" ";B$;AT 14,13;" ";B$;AT 14,15;N-INT (N/M)*M;AT 14,13;B$;AT 14,12;B$;" "
1225 GOSUB 1445
1230 LET P=14
1235 IF L=1 OR L=3 OR L=5 OR L=7 THEN GOTO 1260
1240 PRINT AT 11,12;A$;AT 14,12;A$;AT 6,17;B$;AT 6,17;"R";B$;AT 6,18;N-INT (N/M)*M;B$
1245 GOSUB 1445
1250 PRINT AT 6,18+LEN STR$ (N-INT (N/M)*M);A$;AT 6,12;B$
1255 LET P=6
1260 LET C=10
1265 LET B=5
1270 GOSUB 1650
1275 IF P=14 THEN GOTO 1345
1280 GOSUB 1670
1285 IF (L=2 OR L=4 OR L=6 OR L=8) AND LEN STR$ (INT (N/M))=2 THEN GOTO 1345
1300 PRINT AT 21,4;"PRESS ENTER TO CONTINUE"
1305 GOSUB 1700
1310 IF G$<>CHR$ 118 THEN GOTO 1305
1325 PRINT AT 21,4;" "
1330 GOSUB 1525
1335 LET F=11
1340 GOTO 720
1345 LET Z=0
1360 PRINT AT 21,4;"PRESS ENTER TO CONTINUE"
1365 GOSUB 1700
1370 IF G$<>CHR$ 118 THEN GOTO 1365
1385 PRINT AT 21,4;" "
1390 GOSUB 1525
1392 PRINT AT 6,18;B$;AT 6,18;A$
1395 FOR J=16 TO 12-Z STEP -4
1400 FOR I=6 TO 14
1405 PRINT AT I,J;B$;AT I,J;A$
1410 NEXT I
1415 FOR I=14 TO 6 STEP -1
1420 PRINT AT I,J-2;B$;AT I,J-2;A$;AT 14,6;",,,,"
1425 NEXT I
1430 NEXT J
1435 GOSUB 1650
1440 GOTO 775
1445 FOR J=1 TO 10
1450 NEXT J
1455 RETURN
1460 LET N=INT (RND*H)+K
1465 LET M=INT (RND*G)+O
1470 IF N>=M THEN GOTO 1490
1475 LET T=M
1480 LET M=N
1485 LET N=T
1490 IF (L=5 OR L=6) AND N<20 THEN LET N=N+19
1495 IF (L=1 OR L=3 OR L=5 OR L=7) AND N-INT (N/M)*M<>0 THEN GOTO 1460
1500 IF (L=2 OR L=4 OR L=6 OR L=8) AND N-INT (N/M)*M=0 THEN GOTO 1460
1505 LET N$=STR$ N
1510 LET M$=STR$ M
1515 IF LEN M$=1 THEN LET M$=" "+M$
1520 RETURN
1525 LET B$="[,,][,,]"
1530 LET A=22
1535 LET B=21
1540 LET C=12
1545 LET D=-1
1550 LET E=1
1555 LET P=6
1560 LET F=7
1565 IF R$="2" THEN LET F=12
1570 GOTO 1605
1575 LET B$=",,,,"
1580 LET A=6
1585 LET B=5
1590 LET C=14
1595 LET D=1
1600 LET E=-1
1605 LET A$=" "
1610 FOR I=14 TO P STEP -1
1615 PRINT AT I,A;B$;AT I,A;A$
1620 NEXT I
1625 RETURN
1630 FOR I=B TO C STEP D
1635 PRINT AT P,I;" ";B$;" "
1640 NEXT I
1645 RETURN
1650 FOR I=C TO B STEP E
1655 PRINT AT P,I;" ";B$;" "
1660 NEXT I
1665 IF B$=",,,," THEN RETURN
1670 FOR I=P TO 13
1675 PRINT AT I,A;B$;AT I,A;A$
1680 NEXT I
1685 PRINT AT 14,A;B$
1690 RETURN
1695 PRINT AT 21,5;"PRESS ENTER TO BEGIN"
1700 IF INKEY$ <>"" THEN GOTO 1700
1705 IF INKEY$ ="" THEN GOTO 1705
1710 LET G$=INKEY$
1715 RETURN
1720 SAVE "DI[V]"
1725 GOTO 5
Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.