Fundamentals Of Math

Date: 1983
Type: Cassette
Platform(s): TS 1000

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:

ProgramLevelConstraint
Addition3,5Last digits sum < 10 (no carry)
Addition4,6Last digits sum ≥ 10 (carry)
Subtraction2,4Last digit of N ≥ last digit of M (no borrow)
Subtraction3,5Last digit of N < last digit of M (borrow)
Multiplication6,7Both operands two-digit; multi-step partial products shown
Division1,3,5,7Exact division (no remainder)
Division2,4,6,8Division 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.

Content

Appears On

Related Products

A progressive series of drill, practice and review sessions. Graded. 80% score promotes the student to the next level. Up...

Related Articles

Related 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.

People

No people associated with this content.

Scroll to Top