--- title: "Fundamentals Of Math" id: 51884 type: "computer_media" slug: "fundamentals-of-math" url: "http://localhost/computer_media/fundamentals-of-math/" markdown_url: "http://localhost/computer_media/fundamentals-of-math.md" published_at: "2023-08-16T01:42:21+00:00" modified_at: "2026-04-03T07:59:09+00:00" author: "David Anderson" featured_image: url: "http://localhost/wp-content/uploads/2019/02/20230809-041332.jpg" excerpt: "A four-module math drill suite teaching addition, subtraction, multiplication, and division with animated feedback, adaptive difficulty, and step-by-step long-division walkthroughs." category: - name: "Archived Media" slug: "archived-media" taxonomy: "category" url: "http://localhost/category/archived-media/" post_tag: - name: "Downloadable" slug: "downloadable" taxonomy: "post_tag" url: "http://localhost/tag/downloadable/" - name: "Timex Computer Corporation" slug: "timex-computer-corporation" taxonomy: "post_tag" url: "http://localhost/tag/timex-computer-corporation/" - name: "TS 1000" slug: "ts1000" taxonomy: "post_tag" url: "http://localhost/tag/ts1000/" model: - name: "Timex/Sinclair 1000" slug: "ts-1000" taxonomy: "model" url: "http://localhost/model/ts-1000/" genre: - name: "Education" slug: "education" taxonomy: "genre" url: "http://localhost/type/education/" - name: "Mathematics" slug: "mathematics" taxonomy: "genre" url: "http://localhost/type/mathematics/" media_type: "Cassette" download_url: "https://archive.org/download/timex-sinclair-software-archive/Fundamentals Of Math (1983)(Timex)(US)(TS1000)(Cassette).zip" mediadate: "1983" producer_company: - id: 11401 title: "Timex Computer Corporation" type: "company" url: "http://localhost/company/timex-computer-corporation/" related_products: - id: 12651 title: "Fundamentals of Math" type: "product" url: "http://localhost/product/fundamentals-of-math/" media_type_tags: "Education, Mathematics" --- # Fundamentals Of Math 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: 1. Lines 5–20: Set operation name in `Z$`, display the AMT logo using block graphics, wait for Enter. 2. Lines 25–45: Display level menu, validate input into `L`. 3. Lines 50–80: Display the test/review/new-level/end menu, validate into `R$`. 4. Lines 85–165: Draw the bordered problem frame, initialize counters. 5. Lines 170–385: Main 10-problem loop; generate operands, accept answer, branch to correct/wrong routines. 6. Lines 390–455: End-of-session scoring, level adjustment, prompt to continue. 7. Lines 460–465: “Thank you” exit screen and STOP. 8. Lines 470–705: Wrong-answer animation, answer reveal with carry/borrow walkthrough. 9. Lines 710–798: Random problem generation subroutine. 10. Lines 800–955: Animation support subroutines (sprite setup, slide, bounce). 11. Lines 960–985: Title prompt / keypress-wait subroutine. 12. 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 column `A`. - `GOSUB 800`: Set up right-side sprite (`B$="[,,][,,]"`, `A=22`). - `GOSUB 900` / `GOSUB 920`: Slide sprite horizontally across row 11 in opposing directions using `B`, `C`, `D`, `E` to 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 from `150` to `160`, skipping a level-2 guard that would set `G` for double-digit results — this means level 2 uses the default `G=19`, which is correct for that level’s stated range, so it is effectively harmless. - In the multiplication program, line `698` appears where `698` should logically be `598` (inside a `FOR J` loop 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 800` sets `C=12` and loops `AT 10,I` (row 10) rather than row 11 as in addition/subtraction, reflecting the shifted display layout for the multiplication problem frame. ## 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 ```