Math Programs

Date: 1988
Type: Cassette
Platform(s): TS 1000
Tags: Education

This submission contains three separate BASIC educational programs: a step-by-step mixed-fraction multiplication tutor, a fraction-skills drill covering lowest terms, mixed-numeral-to-improper, and improper-to-mixed conversions, a simulated calculator program, and an arithmetic word-problem generator. The fraction tutor walks students through each stage—converting mixed numerals to improper fractions, multiplying numerators and denominators, reducing to lowest terms via a descending divisor loop (lines 2720–2840), and converting back to a mixed numeral—pausing at each step for a keypress. The drill program uses RUN with a line number argument to branch between its three exercise modes and supports both computer-generated and student-entered fractions, with configurable upper bounds. The calculator simulation uses a DIM’d string array to accumulate digit keypresses and sentinel values of 9999999999 to flag which operation’s result is current. The word-problem program selects random nouns from a DIM array, generates addition, subtraction, multiplication, and division problems, and includes a speed-challenge sub-game that multiplies two random six-digit numbers to demonstrate computation speed.


Program Analysis

This listing contains four independent BASIC programs saved together. Each is described below in turn.

Program 1: Multiplying Fractions Tutor (lines 20–4470)

This program guides a single student through the complete process of multiplying two mixed numerals. It is attributed to Carl E. Downer of Newell, PA (May 1988). The program accepts six inputs (whole number, numerator, and denominator for each of two fractions), validates each against the range 1–99, then walks through every arithmetic sub-step on screen, pausing for a keypress between each stage.

Program Structure

  • Lines 40–460: Title screen (inverse-video text), speed selection (FAST/SLOW), directions subroutine, and input-range warning subroutine.
  • Lines 500–1080: Input collection with range validation (IF FIRST WN<1 OR FIRST WN>99 THEN GOTO 540).
  • Lines 1100–2480: Step-by-step display of the multiplication process using PRINT AT to position fraction components visually.
  • Lines 2500–2920: Lowest-terms reduction via a descending loop from 20 to 1 (lines 2720–2840).
  • Lines 2940–3120: Conversion of the improper result back to a mixed numeral using INT and remainder arithmetic.
  • Lines 3120–3460: Final display and replay prompt.
  • Lines 3500–4120: Subroutines — directions, input-range warning, and the keypress-pause/screen-clear routine.
  • Lines 4140–4440: Final-answer display subroutine showing both original fractions and the result.

Notable Techniques

  • Multi-word variable names (FIRST WN, SECOND D, WHOLE NUMBER, NEW NUMERATOR) exploit the ZX81/TS1000 rule that variable names may include spaces provided only the first letter matters for numeric variables — these are syntactically valid but rely on the tokeniser treating the full string as a single token.
  • The keypress-pause subroutine at line 3980 uses PAUSE P, where P is set to 60 (fast mode) or 6000 (slow mode) at lines 360–400, making all pauses throughout the program speed-adaptive.
  • Lowest-terms reduction (lines 2720–2840) counts down from 20, checking whether both numerator and denominator divide evenly by each trial divisor. This is a brute-force GCD approach limited to divisors ≤ 20 — fractions whose GCD exceeds 20 will not be fully reduced.
  • The remainder for the final mixed-numeral conversion uses INT (NEW NUMERATOR + .5) at line 3100 to round to the nearest whole number, avoiding floating-point truncation errors.
  • Lines 3440–3460 contain redundant logic: IF A$<>"Y" THEN GOTO 3460 followed immediately by STOP at 3460, since any non-“Y” input would reach 3460 by fall-through anyway.

Program 2: Fraction Skills Drill (lines 1–9050, second program block)

Written by Mr. Sweitzer (March 1987), this program offers a menu of three drill modes: reducing fractions to lowest terms, converting mixed numerals to improper fractions, and converting improper fractions to mixed numerals. It uses RUN with a line-number argument (RUN 150, RUN 1070, RUN 1910) to branch directly into each mode — a well-known technique that restarts the interpreter at a given line, clearing variables.

Program Structure

  • Lines 1–140: Menu display and mode selection.
  • Lines 150–1060: Lowest-terms mode. The reduction loop (lines 710–810) runs four passes (FOR T=1 TO 4), each sweeping divisors 20 to 1, providing a coarser but iterative reduction. FAST is engaged during computation (line 700) and SLOW restored afterward (line 820).
  • Lines 1070–1900: Mixed-numeral-to-improper mode. Computer-generated questions use even-checking (LET A=NUM/2: LET B=INT A: IF A<>B THEN GOTO …) as optional guards to select only even numerators/denominators, controlled by commented-out REM IF lines (450–510).
  • Lines 1910–2640: Improper-to-mixed mode. Enforces NUM > DEN for valid improper fractions. Uses INT (REM*DEN + .5) rounding as in Program 1.
  • Lines 8999–9050: Optional FastLoad block using DIM T$(24) and RAND USR 32685 to invoke a machine code routine. Lines 8999 and 9000 carry a REM instructing deletion if FastLoad is unavailable.

Notable Techniques and Anomalies

  • PAUSE 4E4 (40,000 frames) is used as an indefinite wait for a keypress — a common idiom given the ZX81 lacks a single-keypress wait instruction.
  • Score tracking uses variables RI (right) and WR (wrong), incremented after each answer. RUN at end-of-round resets all variables, so cumulative scores across rounds are not preserved.
  • The lowest-terms loop in mode 1 runs four fixed passes rather than looping until stable, which means fractions requiring more than four reduction steps may not reach lowest terms.
  • Lines 920 and 930 contain a subtle logical anomaly: line 910 at PRINT AT 4,25;A uses variable A which holds the last trial divisor’s quotient, not the originally reduced numerator — this may print an intermediate value rather than the final reduced numerator in some cases if the loop exits mid-pass.

Program 3: Timex Computer Calculator (third program block)

A software calculator simulation attributed to Mr. Sweitzer (April/May 1988). It draws a calculator face on screen using block graphics and inverse-video characters, then accepts digit keypresses one at a time, building up a number in a DIM Q$(10) string and a parallel DIM I(10) numeric array.

Program Structure

  • Lines 10–280: Initialisation, screen drawing with block graphic borders.
  • Lines 290–920: Main INKEY$ polling loop. Each digit press flashes the corresponding on-screen button using inverse video then restores it.
  • Lines 930–1560: Operation subroutines (ADD, SUBTRACT, MULTIPLY, DIVIDE). Each stores the first operand in a variable (S1, M1, D1) on K=1 and computes on subsequent presses.
  • Lines 1580–1960: EQUAL handler; displays result and offers memory operations (M+, M−, show, print, copy to screen).
  • Lines 2000–2050: Quit confirmation with battery-removal reminder.

Notable Techniques

  • Sentinel value 9999999999 is assigned to unused operation results so the EQUAL handler can test IF A<9999999999 THEN PRINT AT 3,9;A to display whichever operation produced a valid result.
  • Division result is rounded to two decimal places at line 1470: LET D=INT (100*D+.05)/100.
  • The variable R at line 20 (LET R=0) persists across GOTO 30 restarts (which skip line 20), implementing a memory register that survives between calculations. RUN at line 1720 fully resets memory.
  • Lines 1700–1780 show an INKEY$ polling block without a loop delay, so most branches will be missed when key state changes between successive reads — a known hazard of tight INKEY$ loops on this platform.
  • Lines 1870 and 1970 (after GOTOs at 1860/1960) are unreachable dead code.

Program 4: Word Problems (fourth program block)

A personalised arithmetic word-problem generator dated November 1984. It prompts for the student’s name and desired number of problems, then presents addition, subtraction, multiplication, and division problems using random nouns from a 10-element DIM I$(10,10) string array.

Program Structure

LinesFunction
1–470Name/parameter input, directions, decorated “thank you” screen
480–690Random number and noun generation subroutine
700–1040Main question loop: four question types per pass
1050–1130Answer-checking and score update subroutine
1140–1450Scoreboard, grade assignment, conditional comment subroutines
1490–2090Comment/personality subroutines including speed-challenge sub-game

Notable Techniques

  • The speed-challenge at lines 1820–1970 generates two random numbers up to 1,000,000 and multiplies them in FAST mode, printing the answer to taunt the student. The result is displayed before the student can respond.
  • Grade thresholds follow a standard A/B/C/D/E scale computed as (RI/(RI+WR))*100 (line 1250).
  • Line 845 resets N2 using INT (RND*10)+1 for the multiplication question, overriding the earlier random value — this limits the second factor to 1–10 regardless of the user’s chosen largest number N. A REM at line 844 documents this as an intentional configurable parameter.
  • The division question at lines 940–1000 also independently resets N2 and uses INT (C+.5) rounding. A guard at line 945 ensures the divisor does not exceed the dividend.
  • Line 920 in the source (the GOTO 920 target in the division section) is absent — the division block references it in a REM comment but the actual guard IF N2>N1 THEN GOTO 920 at line 945 would loop to a non-existent line; the label REM at line 910 clarifies the intent but the GOTO target is line 945’s own block start, making this effectively unreachable as a loop.
  • DIM I$(10,10) allocates a 10×10 character string array. Nouns longer than 10 characters would be truncated; all chosen nouns fit within 10 characters (“COMPUTERS” = 9).

Content

Appears On

Related Products

Related Articles

Related Content

Image Gallery

Math Programs

Source Code

  20 REM %C%A%R%L% %E%.% %D%O%W%N%E%R% % % % % % % % % % % % % % % % % % %3% %R%D% %S%T%R%E%E%T% % % % % % % % % % % % % % % % % % % % % %N%E%W%E%L%L%,% %P%A% %1%5%4%6%6
  40 SLOW 
  60 CLS 
  80 REM %T%I%T%L%E% %P%A%G%E
 100 PRINT AT 10,0;
 120 FOR R=1 TO 12
 140 PRINT "% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "
 160 NEXT R
 180 PRINT AT 11,5;"%M%U%L%T%I%P%L%Y%I%N%G% %F%R%A%C%T%I%O%N%S"
 200 PRINT AT 16,6;"%B%Y% %C%A%R%L% %E%.% %D%O%W%N%E%R"
 220 PRINT AT 20,11;"MAY 1988"
 240 PAUSE 250
 260 CLS 
 280 REM %S%E%T% %S%P%E%E%D
 300 PRINT AT 8,0;"PRESS <F> FOR FAST SPEED..."
 320 PRINT AT 10,0;"PRESS <S> FOR SLOW SPEED..."
 340 INPUT B$
 360 IF B$="F" THEN LET P=60
 380 IF B$="F" THEN FAST 
 400 IF B$<>"F" THEN LET P=6000
 420 CLS 
 440 GOSUB 3500
 460 CLS 
 480 GOSUB 3840
 500 REM %G%E%T% %N%U%M%B%E%R%S% %F%O%R% %F%R%A%C%T%I%O%N
 520 PRINT AT 0,0;"FIRST WHOLE NUMBER:";
 540 INPUT FIRST WN
 560 IF FIRST WN<1 OR FIRST WN>99 THEN GOTO 540
 580 PRINT FIRST WN
 600 PRINT 
 620 PRINT "FIRST NUMERATOR:";
 640 INPUT FIRST N
 660 IF FIRST N<1 OR FIRST N>99 THEN GOTO 640
 680 PRINT FIRST N
 700 PRINT "FIRST DENOMINATOR:";
 720 INPUT FIRST D
 740 IF FIRST D<1 OR FIRST D>99 THEN GOTO 720
 760 PRINT FIRST D
 780 PRINT 
 800 PRINT 
 820 PRINT "SECOND WHOLE NUMBER:";
 840 INPUT SECOND WN
 860 IF SECOND WN<1 OR SECOND WN>99 THEN GOTO 840
 880 PRINT SECOND WN
 900 PRINT 
 920 PRINT "SECOND NUMERATOR:";
 940 INPUT SECOND N
 960 IF SECOND N<1 OR SECOND N>99 THEN GOTO 940
 980 PRINT SECOND N
 1000 PRINT "SECOND DENOMINATOR:";
 1020 INPUT SECOND D
 1040 IF SECOND D<1 OR SECOND D>99 THEN GOTO 1020
 1060 PRINT SECOND D
 1080 PAUSE 300
 1100 CLS 
 1120 REM %P%R%I%N%T% %T%O% %S%C%R%E%E%N
 1140 PRINT AT 3,5;FIRST WN;AT 3,7;"---";AT 2,8;FIRST N;AT 4,8;FIRST D;AT 3,12;"%X"
 1160 PRINT AT 3,15;SECOND WN;AT 3,17;"---";AT 2,18;SECOND N;AT 4,18;SECOND D
 1180 PRINT AT 7,0;"--------------------------------"
 1200 PRINT AT 10,5;FIRST WN;AT 10,7;"---";AT 9,8;FIRST N;AT 11,8;FIRST D;AT 10,12;"%X"
 1220 PRINT AT 10,15;SECOND WN;AT 10,17;"---";AT 9,18;SECOND N;AT 11,18;SECOND D
 1240 REM %M%I%X%E%D% %N%U%M% %T%O% %I%M%P%R%O%P%E%R
 1260 PRINT AT 15,0;"CHANGE THE MIXED NUMERAL TO AN  IMPROPER FRACTION"
 1280 GOSUB 3980
 1300 PRINT AT 15,0;"REWRITE THE SAME DENOMINATOR"
 1320 GOSUB 3980
 1340 PRINT AT 10,5;"  ";AT 10,7;"---";AT 9,8;"  ";AT 11,8;FIRST D;AT 10,12;"%X"
 1360 PRINT AT 10,15;"  ";AT 10,17;"---";AT 9,18;"  ";AT 11,18;SECOND D
 1380 PRINT AT 15,0;"MULTIPLY THE WHOLE NUMBER TIMES THE DENOMINATOR"
 1400 GOSUB 3980
 1420 PRINT AT 15,0;"MULTIPLY ";FIRST WN;" TIMES ";FIRST D
 1440 GOSUB 3980
 1460 PRINT AT 15,0;"YOUR PRODUCT IS ";FIRST WN*FIRST D
 1480 GOSUB 3980
 1500 PRINT AT 13,0;"PRODUCT IS ";FIRST WN*FIRST D;AT 14,0;"NOW ADD ";FIRST N;" TO PRODUCT"
 1520 GOSUB 3980
 1540 PRINT AT 13,0;
 1560 FOR A=1 TO 7
 1580 PRINT "                                "
 1600 NEXT A
 1620 PRINT AT 15,0;"ADD ";FIRST WN*FIRST D;" PLUS ";FIRST N
 1640 GOSUB 3980
 1660 PRINT AT 15,0;"YOUR SUM IS ";FIRST WN*FIRST D+FIRST N
 1680 GOSUB 3980
 1700 PRINT AT 15,0;"REWRITE ";FIRST WN*FIRST D+FIRST N;" AS YOUR NEW NUMERATOR"
 1720 PRINT AT 9,8;FIRST WN*FIRST D+FIRST N
 1740 GOSUB 3980
 1760 PRINT AT 15,0;"MULTIPLY THE WHOLE NUMBER TIMES THE DENOMINATOR OF FRACTION:2"
 1780 GOSUB 3980
 1800 PRINT AT 15,0;"MULTIPLY ";SECOND WN;" TIMES ";SECOND D
 1820 GOSUB 3980
 1840 PRINT AT 15,0;"YOUR PRODUCT IS ";SECOND WN*SECOND D
 1860 GOSUB 3980
 1880 PRINT AT 13,0;"YOUR PRODUCT IS ";SECOND WN*SECOND D;AT 14,0;"NOW ADD ";SECOND N;" TO PRODUCT"
 1900 GOSUB 3980
 1920 PRINT AT 13,0;
 1940 FOR S=1 TO 7
 1960 PRINT "                                "
 1980 NEXT S
 2000 PRINT AT 15,0;"ADD ";SECOND WN*SECOND D;" PLUS ";SECOND N
 2020 GOSUB 3980
 2040 PRINT AT 15,0;"YOUR SUM IS ";SECOND WN*SECOND D+SECOND N
 2060 GOSUB 3980
 2080 PRINT AT 15,0;"REWRITE ";SECOND WN*SECOND D+SECOND N;" AS YOUR NEW NUMERATOR"
 2100 PRINT AT 9,18;SECOND WN*SECOND D+SECOND N
 2120 GOSUB 3980
 2140 PRINT AT 10,21;"= ----"
 2160 PRINT AT 15,0;"MULTIPLY ";FIRST WN*FIRST D+FIRST N;" TIMES ";SECOND WN*SECOND D+SECOND N
 2180 GOSUB 3980
 2200 LET A=FIRST WN*FIRST D+FIRST N
 2220 LET B=SECOND WN*SECOND D+SECOND N
 2240 PRINT AT 15,0;"YOUR PRODUCT IS ";A*B
 2260 GOSUB 3980
 2280 PRINT AT 15,0;"WRITE ";A*B;" AS YOUR NUMERATOR"
 2300 PRINT AT 9,24;A*B
 2320 GOSUB 3980
 2340 LET C=FIRST D*SECOND D
 2360 PRINT AT 15,0;"MULTIPLY ";FIRST D;" TIMES ";SECOND D
 2380 GOSUB 3980
 2400 PRINT AT 15,0;"YOUR PRODUCT IS ";C
 2420 GOSUB 3980
 2440 PRINT AT 15,0;"WRITE ";C;" AS YOUR DENOMINATOR"
 2460 PRINT AT 11,24;C
 2480 GOSUB 3980
 2500 LET DENOMINATOR=C
 2520 LET NUMERATOR=A*B
 2540 REM %L%O%W%E%S%T% %T%E%R%M%S
 2560 PRINT AT 15,0;"NOW YOU HAVE TO PUT THE FRACTIONIN LOWEST TERMS."
 2580 GOSUB 3980
 2600 CLS 
 2620 PRINT AT 9,1;NUMERATOR
 2640 PRINT AT 10,0;"-----"
 2660 PRINT AT 11,1;DENOMINATOR
 2680 PRINT AT 10,6;"=   ----"
 2700 PRINT AT 15,0;"COMPUTING LOWEST TERMS...WAIT."
 2720 FOR O=20 TO 1 STEP -1
 2740 IF O<10 THEN PRINT AT 18,16;"  "
 2760 PRINT AT 17,0;"I AM DIVIDING NUMERATOR AND THE DENOMINATOR BY: ";O
 2780 LET I=NUMERATOR/O
 2800 LET J=DENOMINATOR/O
 2820 IF INT I=I AND INT J=J THEN GOTO 2860
 2840 NEXT O
 2860 LET NUMERATOR=I
 2880 LET DENOMINATOR=J
 2900 PRINT AT 9,10;NUMERATOR;AT 11,10;DENOMINATOR
 2920 GOSUB 3980
 2940 REM %I%M%P%R%O%P%E%R% %T%O% %M%I%X%E%D
 2960 LET WHOLE NUMBER=NUMERATOR/DENOMINATOR
 2980 PRINT AT 15,0;"DIVIDE THE NUMERATOR ";NUMERATOR
 3000 PRINT AT 16,0;"BY THE DENOMINATOR ";DENOMINATOR
 3020 GOSUB 3980
 3040 LET WHOLE NUMBER=INT WHOLE NUMBER
 3060 LET NEW NUMERATOR=(NUMERATOR/DENOMINATOR)-INT (NUMERATOR/DENOMINATOR)
 3080 LET NEW NUMERATOR=NEW NUMERATOR*DENOMINATOR
 3100 LET NEW NUMERATOR=INT (NEW NUMERATOR+.5)
 3120 CLS 
 3140 REM %L%A%S%T% %S%C%R%E%E%N
 3160 PRINT AT 9,1;NUMERATOR
 3180 PRINT AT 10,0;"-----"
 3200 PRINT AT 11,1;DENOMINATOR
 3220 PRINT AT 10,6;"=      ----"
 3240 PRINT AT 10,10;WHOLE NUMBER
 3260 PRINT AT 9,14;NEW NUMERATOR
 3280 PRINT AT 11,14;DENOMINATOR
 3300 GOSUB 4160
 3320 CLS 
 3340 PRINT AT 5,0;"YOU HAVE COMPLETED YOUR PROBLEM"
 3360 PRINT AT 9,0;"PLEASE GIVE SOMEONE ELSE A TURN"
 3380 PRINT AT 13,0;"ENTER Y TO RUN THE PROGRAM AGAIN"
 3400 INPUT A$
 3420 IF A$="Y" THEN GOTO 40
 3440 IF A$<>"Y" THEN GOTO 3460
 3460 STOP 
 3480 REM %D%I%R%E%C%T%I%O%N%S
 3500 PRINT "DIRECTIONS:"
 3520 PRINT 
 3540 PRINT "FIRST ENTER THE NUMBERS ASKED.  DO NOT ENTER ZERO."
 3560 PRINT 
 3580 PRINT "SECOND READ THE STEPS. EVERY    STEP IS EXPLAINED."
 3600 PRINT 
 3620 PRINT "NEXT FOLLOW THE DIRECTIONS ON   THE BOTTOM OF THE SCREEN."
 3640 PRINT 
 3660 PRINT "AT THE END I WILL PRINT THE     ANSWER."
 3680 PRINT 
 3700 PRINT 
 3720 PRINT "IT IS TIME TO START..."
 3740 PRINT AT 21,0;"%P%R%E%S%S% %A% %K%E%Y% %T%O% %S%T%A%R%T%.%.%."
 3760 PAUSE 6000
 3780 CLS 
 3800 RETURN 
 3820 STOP 
 3840 PRINT AT 10,0;"NUMBERS BETWEEN 1 AND 99 ONLY."
 3860 PAUSE 300
 3880 CLS 
 3900 PRINT AT 21,0;"                                "
 3920 RETURN 
 3940 STOP 
 3960 REM %E%R%A%S%E% %S%C%R%E%E%N% %+% %P%A%U%S%E
 3980 PRINT AT 21,0;"%P%R%E%S%S% %A%N%Y% %K%E%Y% %T%O% %C%O%N%T%I%N%U%E%.%.%."
 4000 PAUSE P
 4020 PRINT AT 15,0;
 4040 FOR X=1 TO 7
 4060 PRINT "                                "
 4080 NEXT X
 4100 RETURN 
 4120 STOP 
 4140 REM %L%A%S%T% %S%C%R%E%E%N
 4160 PRINT AT 1,1;FIRST WN;" ---"
 4180 PRINT AT 0,4;FIRST N
 4200 PRINT AT 2,4;FIRST D
 4220 PRINT AT 1,7;"%X"
 4240 PRINT AT 1,9;SECOND WN;" ---"
 4260 PRINT AT 0,12;SECOND N
 4280 PRINT AT 2,12;SECOND D
 4300 PRINT AT 1,18;"="
 4320 PRINT AT 1,25;"----"
 4340 PRINT AT 1,22;WHOLE NUMBER
 4360 PRINT AT 0,26;NEW NUMERATOR
 4380 PRINT AT 2,26;DENOMINATOR
 4400 PRINT AT 21,0;"%P%R%E%S%S% %A%N%Y% %K%E%Y% %T%O% %C%O%N%T%I%N%U%E%.%.%."
 4420 PAUSE 6000
 4440 RETURN 
 4460 SAVE "FRACTION%S"
 4470 RUN 
 
   1 REM %A%L%E%X% %S%W%E%I%T%Z%E%R                   %R%.%D%.% %1% %B%O%X% %2%0%7                  %F%A%Y%E%T%T%E% %C%I%T%Y%,% %P%A% %1%5%4%3%8          %4%1%2%-%3%2%6%-%4%9%3%5
  10 RAND 
  20 REM %L%O%O%K% %F%O%R% %3% %R%E%M%S% %I%N% %T%H%E% %L%O%W%E%S%T% %T%E%R%M%S% %S%E%C%T%I%O%N%.%.%.
  30 CLS 
  40 SLOW 
  50 PRINT AT 1,0;"%S%E%L%E%C%T% %(%1%)% %O%F% %T%H%E% %F%O%L%L%O%W%I%N%G"
  60 PRINT ,,,,,,,,"%(%1%)% %L%O%W%E%S%T% %T%E%R%M%S"
  70 PRINT ,,"%(%2%)% %M%I%X%E%D% %N%U%M%E%R%A%L% %T%O% %I%M%P%R%O%P%E%R"
  80 PRINT ,,"%(%3%)% %I%M%P%R%O%P%E%R% %T%O% %M%I%X%E%D% %N%U%M%E%R%A%L"
  90 PRINT AT 18,12;"BY MR. SWEITZER";AT 20,12;"MARCH 23-24, 1987"
 100 INPUT NUMBER
 110 IF NUMBER=1 THEN RUN 150
 120 IF NUMBER=2 THEN RUN 1070
 130 IF NUMBER=3 THEN RUN 1910
 140 IF NUMBER<1 OR NUMBER>3 THEN GOTO 100
 150 CLS 
 160 PRINT AT 10,0;"...LOWEST TERMS..."
 170 PAUSE 100
 180 LET Q=0
 190 LET RI=0
 200 LET WR=0
 210 CLS 
 220 PRINT AT 8,0;"HOW MANY QUESTIONS PLEASE?: ";
 230 INPUT P
 240 PRINT P
 250 PAUSE 100
 260 CLS 
 270 PRINT AT 8,0;"DO YOU WANT THE COMPUTER TO",,,"GIVE YOU THE NUMERATOR AND",,,"THE DENOMINATOR (Y/N)? ";
 280 INPUT R$
 290 PRINT R$
 300 PAUSE 100
 310 IF R$="N" THEN GOTO 540
 320 CLS 
 330 PRINT AT 9,0;"LARGEST NUMERATOR TO USE: ";
 340 INPUT N
 350 PRINT N
 360 PRINT AT 11,0;"LARGEST DENOMINATOR TO USE: ";
 370 INPUT D
 380 PRINT D
 390 PAUSE 100
 400 CLS 
 410 PRINT AT 10,0;"T   H   I   N   K   I   N   G"
 420 LET NUM=INT (RND*N)+1
 430 LET A=NUM/2
 440 LET B=INT A
 450 REM %R%E%M%O%V%E% %R%E%M% %I%N% %N%E%X%T% %L%I%N%E% %I%F% %Y%O%U% %A%L%W%A%Y%S% %W%A%N%T% %A% %F%R%A%C%T%I%O%N% %T%H%A%T% %M%U%S%T% %B%E% %R%E%D%U%C%E%D
 460 REM IF A<>B THEN GOTO 0200
 470 LET DEN=INT (RND*D)+1
 480 LET A=DEN/2
 490 LET B=INT A
 500 REM %R%E%M%O%V%E% %R%E%M% %I%N% %N%E%X%T% %L%I%N%E% %I%F% %Y%O%U% %A%L%W%A%Y%S% %W%A%N%T% %A% %F%R%A%C%T%I%O%N% %T%H%A%T% %M%U%S%T% %B%E% %R%E%D%U%C%E%D
 510 REM IF A<>B THEN GOTO 0240
 520 REM %R%E%M%O%V%E% %R%E%M% %I%N% %N%E%X%T% %L%I%N%E% %I%F% %Y%O%U% %W%A%N%T% %O%N%L%Y% %P%R%O%P%E%R% %F%R%A%C%T%I%O%N%S
 530 IF DEN<NUM THEN GOTO 420
 540 IF R$="N" THEN CLS 
 550 IF R$="N" THEN PRINT AT 10,0;"KEEP NUMERATORS AND DENOMINATORSLESS THAN 1,000"
 560 IF R$="N" THEN PAUSE 100
 570 IF R$="N" THEN CLS 
 580 IF R$="N" THEN PRINT AT 10,0;"PLEASE ENTER NUMERATOR: ";
 590 IF R$="N" THEN INPUT NUM
 600 IF R$="N" THEN PRINT NUM
 610 IF R$="N" THEN CLS 
 620 IF R$="N" THEN PRINT AT 10,0;"PLEASE ENTER DENOMINATOR: ";
 630 IF R$="N" THEN INPUT DEN
 640 IF R$="N" THEN PRINT DEN
 650 CLS 
 660 PRINT "PLACE FRACTION IN LOWEST TERMS."
 670 PRINT 
 680 PRINT "%P%R%O%B%L%E%M..%Y%O%U%R% %A%N%S%W%E%R..%M%Y% %A%N%S%W%E%R"
 690 PRINT AT 4,1;NUM;AT 5,0;"''''''''";AT 6,1;DEN
 700 FAST 
 710 FOR T=1 TO 4
 720 FOR X=20 TO 1 STEP -1
 730 LET A=NUM/X
 740 LET B=INT A
 750 IF A<>B THEN NEXT X
 760 LET C=DEN/X
 770 LET E=INT C
 780 IF C<>E THEN NEXT X
 790 LET NUM=A
 800 LET DEN=C
 810 NEXT T
 820 SLOW 
 830 PRINT ,,,,"ENTER NUMERATOR: ";
 840 INPUT HNUM
 850 PRINT HNUM
 860 PRINT ,,"ENTER DENOMINATOR: ";
 870 INPUT HDEN
 880 PRINT HDEN
 890 PRINT AT 4,12;HNUM;AT 5,11;"''''''''";AT 6,12;HDEN
 900 PAUSE 60
 910 PRINT AT 4,25;A;AT 5,24;"''''''''";AT 6,25;C
 920 IF HNUM=NUM AND HDEN=DEN THEN PRINT AT 15,0;"%Y%O%U% %A%G%R%E%E% %W%I%T%H% %M%E%,% %Y%O%U% %A%R%E% %R%I%G%H%T"
 930 IF HNUM<>NUM OR HDEN<>DEN THEN PRINT AT 15,0;"%Y%O%U% %A%R%E% %V%E%R%Y% %W%R%O%N%G%,% %T%R%Y% %H%A%R%D%E%R"
 940 IF HNUM=NUM AND HDEN=DEN THEN LET RI=RI+1
 950 IF HNUM<>NUM OR HDEN<>DEN THEN LET WR=WR+1
 960 LET Q=Q+1
 970 PRINT ,,"NUMBER PROBLEMS COMPLETED: ";Q
 980 PRINT "NUMBER CORRECT: ";RI
 990 PRINT "NUMBER WRONG: ";WR
 1000 IF Q<P THEN PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE..."
 1010 IF Q<P THEN PAUSE 4E4
 1020 IF Q<P AND R$="Y" THEN GOTO 400
 1030 IF Q<P AND R$="N" THEN GOTO 540
 1040 IF Q=P THEN PRINT AT 21,0;"THIS ROUND OVER, PRESS A KEY..."
 1050 PAUSE 4E4
 1060 RUN 
 1070 REM % % % % % % % % % % % % % % % % % % % % % % % 
 1080 LET RI=0
 1090 LET WR=0
 1100 REM MIXED NUMERAL TO IMPROPER
 1110 CLS 
 1120 PRINT AT 10,0;"...MIXED NUMERAL TO IMPROPER       FRACTION..."
 1130 PAUSE 100
 1140 CLS 
 1150 PRINT AT 10,0;"HOW MANY QUESTIONS PLEASE?: ";
 1160 INPUT P
 1170 PRINT P
 1180 PAUSE 100
 1190 LET Q=0
 1200 CLS 
 1210 PRINT AT 10,0;"DO YOU WANT THE COMPUTER TO",,,"SELECT THE QUESTIONS (Y/N)? ";
 1220 INPUT R$
 1230 PRINT R$
 1240 PAUSE 100
 1250 IF R$="Y" THEN CLS 
 1260 IF R$="Y" THEN PRINT AT 8,0;"LARGEST WHOLE NUMBER TO USE: ";
 1270 IF R$="Y" THEN INPUT W
 1280 IF R$="Y" THEN PRINT W
 1290 IF R$="Y" THEN PRINT AT 10,0;"LARGEST NUMERATOR TO USE: ";
 1300 IF R$="Y" THEN INPUT N
 1310 IF R$="Y" THEN PRINT N
 1320 IF R$="Y" THEN PRINT AT 12,0;"LARGEST DENOMINATOR TO USE: ";
 1330 IF R$="Y" THEN INPUT D
 1340 IF R$="Y" THEN PRINT D
 1350 PAUSE 100
 1360 LET A=0
 1370 LET B=0
 1380 LET DEN=0
 1390 LET NUM=0
 1400 CLS 
 1410 IF R$="Y" THEN PRINT AT 10,0;"T   H   I   N   K   I   N   G"
 1420 IF R$="Y" THEN LET WHOLE=INT (RND*W)+1
 1430 IF R$="Y" THEN LET NUM=INT (RND*N)+1
 1440 IF R$="Y" THEN LET A=NUM/2
 1450 IF R$="Y" THEN LET B=INT A
 1460 IF R$="Y" AND A<>B THEN GOTO 1430
 1470 IF R$="Y" THEN LET DEN=INT (RND*D)+1
 1480 IF R$="Y" THEN LET A=DEN/2
 1490 IF R$="Y" THEN LET B=INT A
 1500 IF R$="Y" AND A<>B THEN GOTO 1470
 1510 IF R$="Y" AND DEN<NUM THEN GOTO 1410
 1520 IF R$="N" THEN PRINT AT 10,0;"ENTER WHOLE NUMBER: ";
 1530 IF R$="N" THEN INPUT WHOLE
 1540 IF R$="N" THEN PRINT WHOLE
 1550 IF R$="N" THEN PRINT ,,"ENTER NUMERATOR: ";
 1560 IF R$="N" THEN INPUT NUM
 1570 IF R$="N" THEN PRINT NUM
 1580 IF R$="N" THEN PRINT ,,"ENTER DENOMINATOR: ";
 1590 IF R$="N" THEN INPUT DEN
 1600 IF R$="N" THEN PRINT DEN
 1610 IF R$="N" THEN PAUSE 100
 1620 CLS 
 1630 PRINT AT 0,0;"%P%R%O%B%L%E%M%.%.%Y%O%U%R% %A%N%S%W%E%R%.%.%M%Y% %A%N%S%W%E%R"
 1640 PRINT AT 5,0;WHOLE
 1650 PRINT AT 4,3;NUM
 1660 PRINT AT 5,2;"''''''''"
 1670 PRINT AT 6,3;DEN
 1680 PRINT AT 10,0;"ENTER NUMERATOR: ";
 1690 INPUT HNUM
 1700 PRINT HNUM
 1710 PRINT ,,"ENTER DENOMINATOR: ";
 1720 INPUT HDEN
 1730 PRINT HDEN
 1740 PRINT AT 4,13;HNUM;AT 5,12;"''''''''";AT 6,13;HDEN
 1750 LET CNUM=(WHOLE*DEN)+NUM
 1760 PRINT AT 4,25;CNUM;AT 5,24;"''''''''";AT 6,25;DEN
 1770 IF CNUM=HNUM AND DEN=HDEN THEN PRINT AT 14,0;"%Y%O%U% %A%G%R%E%E% %W%I%T%H% %M%E%,% %Y%O%U% %A%R%E% %R%I%G%H%T"
 1780 IF CNUM=HNUM AND DEN=HDEN THEN LET RI=RI+1
 1790 IF CNUM<>HNUM OR DEN<>HDEN THEN LET WR=WR+1
 1800 IF CNUM<>HNUM OR DEN<>HDEN THEN PRINT AT 14,0;"%Y%O%U% %A%R%E% %W%R%O%N%G%,% %T% %H% %I% %N% %K%.%.%."
 1810 LET Q=Q+1
 1820 PRINT AT 16,0;"NUMBER QUESTIONS COMPLETED: ";Q
 1830 PRINT "NUMBER CORRECT: ";RI
 1840 PRINT "NUMBER WRONG: ";WR
 1850 IF Q<P THEN PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE..."
 1860 IF Q<P THEN PAUSE 4E4
 1870 IF Q<P THEN GOTO 1400
 1880 IF Q=P THEN PRINT AT 21,0;"END OF QUESTIONS, PRESS ANY KEY"
 1890 PAUSE 4E4
 1900 RUN 
 1910 REM % % % % % % % % % % % % % % % % % % % % % % % 
 1920 LET Q=0
 1930 LET WR=0
 1940 LET RI=0
 1950 REM IMPROPER TO MIXED
 1960 LET NUM=0
 1970 LET DEN=0
 1980 CLS 
 1990 PRINT AT 10,0;"...IMPROPER FRACTION TO MIXED      NUMERAL..."
 2000 PAUSE 100
 2010 CLS 
 2020 PRINT AT 10,0;"HOW MANY QUESTIONS PLEASE?: ";
 2030 INPUT P
 2040 PRINT P
 2050 PAUSE 100
 2060 CLS 
 2070 PRINT AT 10,0;"DO YOU WANT THE COMPUTER TO",,,"GIVE YOU THE QUESTIONS (Y/N)? ";
 2080 INPUT R$
 2090 PRINT R$
 2100 PAUSE 100
 2110 CLS 
 2120 IF R$="Y" THEN PRINT AT 9,0;"LARGEST NUMERATOR TO USE: ";
 2130 IF R$="Y" THEN INPUT N
 2140 IF R$="Y" THEN PRINT N
 2150 IF R$="Y" THEN PRINT AT 11,0;"LARGEST DENOMINATOR TO USE: ";
 2160 IF R$="Y" THEN INPUT D
 2170 IF R$="Y" THEN PRINT D
 2180 IF R$="Y" THEN PAUSE 100
 2190 CLS 
 2200 IF R$="Y" THEN LET NUM=INT (RND*N)+1
 2210 IF R$="Y" THEN LET DEN=INT (RND*D)+1
 2220 IF R$="Y" AND DEN>NUM THEN GOTO 2200
 2230 IF R$="N" THEN PRINT AT 2,0;"REMEMBER, NUMERATOR MUST BE",,,"LARGER THAN DENOMINATOR."
 2240 IF R$="N" THEN PAUSE 120
 2250 IF R$="N" THEN PRINT AT 9,0;"PLEASE ENTER NUMERATOR: ";
 2260 IF R$="N" THEN INPUT NUM
 2270 IF R$="N" THEN PRINT NUM
 2280 IF R$="N" THEN PRINT AT 11,0;"PLEASE ENTER DENOMINATOR: ";
 2290 IF R$="N" THEN INPUT DEN
 2300 IF R$="N" THEN PRINT DEN
 2310 IF R$="N" THEN PAUSE 100
 2320 CLS 
 2330 IF R$="N" AND NUM<=DEN THEN PRINT AT 18,0;"%F%O%L%L%O%W% %D%I%R%E%C%T%I%O%N%S% %P%L%E%A%S%E%.%.%."
 2340 IF R$="N" AND NUM<=DEN THEN PAUSE 120
 2350 IF R$="N" AND NUM<=DEN THEN GOTO 2230
 2360 PRINT "%P%R%O%B%L%E%M%.%.%Y%O%U%R% %A%N%S%W%E%R%.%.%M%Y% %A%N%S%W%E%R"
 2370 PRINT AT 3,2;NUM;AT 4,1;"''''''";AT 5,2;DEN
 2380 PRINT AT 10,0;"ENTER WHOLE NUMBER: ";
 2390 INPUT HWHOLE
 2400 PRINT HWHOLE
 2410 PRINT ,,"ENTER NUMERATOR: ";
 2420 INPUT HNUM
 2430 PRINT HNUM
 2440 PRINT ,,"ENTER DENOMINATOR: ";
 2450 INPUT HDEN
 2460 PRINT HDEN
 2470 PRINT AT 4,11;HWHOLE;AT 3,15;HNUM;AT 4,14;"''''''";AT 5,15;HDEN
 2480 LET CWHOLE=INT (NUM/DEN)
 2490 LET QUOT=NUM/DEN
 2500 LET REM=QUOT-INT (NUM/DEN)
 2510 LET CNUM=INT (REM*DEN+.5)
 2520 PRINT AT 4,25;CWHOLE;AT 3,29;CNUM;AT 4,28;"''''''";AT 5,29;DEN
 2530 LET Q=Q+1
 2540 PRINT AT 16,0;"NUMBER QUESTIONS COMPLETED: ";Q
 2550 IF CWHOLE=HWHOLE AND CNUM=HNUM AND DEN=HDEN THEN LET RI=RI+1
 2560 IF CWHOLE<>HWHOLE OR CNUM<>HNUM OR DEN<>HDEN THEN LET WR=WR+1
 2570 PRINT "NUMBER CORRECT: ";RI
 2580 PRINT "NUMBER WRONG: ";WR
 2590 IF Q<P THEN PRINT AT 21,0;"PRESS ANY KEY TO CONTINUE..."
 2600 IF Q<P THEN PAUSE 4E4
 2610 IF Q<P THEN GOTO 2190
 2620 IF Q=P THEN PRINT AT 21,0;"THIS ROUND OVER, PRESS A KEY..."
 2630 IF Q=P THEN PAUSE 4E4
 2640 RUN 
 2650 SAVE "FRACTION%S"
 2651 SLOW 
 2652 CLS 
 2660 RUN 
 8999 REM %D%E%L%E%T%E% %B%E%L%O%W% %I%F% %Y%O%U% %D%O% %N%O%T% %H%A%V%E% %F%A%S%T%L%O%A%D%.
 9000 DIM T$(24)
 9010 LET T$="-"
 9020 RAND USR 32685
 9030 LET T$="%P"
 9040 RAND USR 32685
 9050 RUN 
 
  10 REM %M%R%.% %S%W%E%I%T%Z%E%R% %A%P%R%I%L%/%M%A%Y% %1%9%8%8
  20 LET R=0
  30 REM   %G%O%T%O% %3%0% %T%O% %R%E%S%T%A%R%T% %T%O% %S%A%V%E% %V%A%L%U%E% %I%N% %M%E%M%O%R%Y
  40 LET K=1
  50 FAST 
  60 CLS 
  70 LET A=0
  80 LET S=0
  90 LET D=0
 100 LET M=0
 110 LET P=1
 120 PRINT "*THE TIMEX COMPUTER CALCULATOR*"
 130 FOR X=1 TO 15
 140 PRINT AT X,5;": ";AT X,25;" :"
 150 NEXT X
 160 FOR X=5 TO 25
 170 PRINT AT 1,X;".."
 180 PRINT AT 15,X;"''"
 190 NEXT X
 200 PRINT AT 7,8;"7";AT 7,11;"8";AT 7,14;"9";AT 7,17;"%DIVIDE"
 210 PRINT AT 9,8;"4";AT 9,11;"5";AT 9,14;"6";AT 9,17;"%MULTIPLY"
 220 PRINT AT 11,8;"1";AT 11,11;"2";AT 11,14;"3";AT 11,17;"%SUBTRACT"
 230 PRINT AT 13,8;"0";AT 13,11;"%EQUAL";AT 13,17;"%ADD"
 240 PRINT AT 5,8;"%CLEAR";AT 5,16;"<%O>FF"
 250 FOR X=8 TO 18
 260 PRINT AT 2,X;"-";AT 4,X;"-"
 270 NEXT X
 280 SLOW 
 290 FOR X=1 TO 2
 300 PRINT AT 2,20;"T";AT 3,21;"I";AT 4,22;"M";AT 3,23;"E";AT 2,24;"X"
 310 PRINT AT 2,20;"%T";AT 3,21;"%I";AT 4,22;"%M";AT 3,23;"%E";AT 2,24;"%X"
 320 NEXT X
 330 REM INPUT AREA
 340 DIM I(10)
 350 DIM Q$(10)
 360 PRINT AT 16,0;"ENTER NUMBER, ONE DIGIT AT A    TIME, THEN OPERATION AFTER EACH NUMBER %I%N%C%L%U%D%I%N%G THE LAST ENTRY THEN PRESS EQUAL FOR ANSWER."
 370 PRINT "ENTER <%E> AND THEN <%V> TO SHOW  CURRENT VALUE OF MEMORY."
 380 LET I$=INKEY$
 390 IF I$="O" THEN GOTO 2000
 400 IF I$="C" THEN GOTO 590
 410 IF I$="A" THEN GOSUB 930
 420 IF I$="S" THEN GOSUB 1080
 430 IF I$="M" THEN GOSUB 1240
 440 IF I$="D" THEN GOSUB 1400
 450 IF I$="E" THEN GOSUB 1580
 460 IF I$="9" THEN LET I=9
 470 IF I$="8" THEN LET I=8
 480 IF I$="7" THEN LET I=7
 490 IF I$="6" THEN LET I=6
 500 IF I$="5" THEN LET I=5
 510 IF I$="4" THEN LET I=4
 520 IF I$="3" THEN LET I=3
 530 IF I$="2" THEN LET I=2
 540 IF I$="1" THEN LET I=1
 550 IF I$="0" THEN LET I=0
 560 IF I$<"0" OR I$>"9" THEN GOTO 380
 570 IF I=7 THEN PRINT AT 7,8;"%7"
 580 IF I=7 THEN PRINT AT 7,8;"7"
 590 IF I$="C" THEN PRINT AT 5,8;"%C%L%E%A%R"
 600 IF I$="C" THEN PRINT AT 5,8;"CLEAR"
 610 IF I$="C" THEN GOTO 800
 620 IF I=8 THEN PRINT AT 7,11;"%8"
 630 IF I=8 THEN PRINT AT 7,11;"8"
 640 IF I=9 THEN PRINT AT 7,14;"%9"
 650 IF I=9 THEN PRINT AT 7,14;"9"
 660 IF I=6 THEN PRINT AT 9,14;"%6"
 670 IF I=6 THEN PRINT AT 9,14;"6"
 680 IF I=5 THEN PRINT AT 9,11;"%5"
 690 IF I=5 THEN PRINT AT 9,11;"5"
 700 IF I=4 THEN PRINT AT 9,8;"%4"
 710 IF I=4 THEN PRINT AT 9,8;"4"
 720 IF I=3 THEN PRINT AT 11,14;"%3"
 730 IF I=3 THEN PRINT AT 11,14;"3"
 740 IF I=2 THEN PRINT AT 11,11;"%2"
 750 IF I=2 THEN PRINT AT 11,11;"2"
 760 IF I=1 THEN PRINT AT 11,8;"%1"
 770 IF I=1 THEN PRINT AT 11,8;"1"
 780 IF I=0 THEN PRINT AT 13,8;"%0"
 790 IF I=0 THEN PRINT AT 13,8;"0"
 800 IF I$="C" THEN GOTO 30
 810 PRINT AT 3,8+P;I;
 820 LET I(P)=I
 830 FAST 
 840 FOR N=1 TO P
 850 LET Q$(N)=STR$ I(N)
 860 NEXT N
 870 LET P=P+1
 880 IF P=10 THEN PRINT AT 2,7;"  %O%V%E%R%F%L%O%W  "
 890 IF P=10 THEN PAUSE 250
 900 IF P=10 THEN GOTO 30
 910 SLOW 
 920 GOTO 380
 930 REM %A%D%D
 940 LET O$="A"
 950 FOR F=1 TO 6
 960 PRINT AT 13,17;"+       "
 970 PRINT AT 13,17;"%+% % % % % % % "
 980 NEXT F
 990 PRINT AT 13,17;"%ADD     "
 1000 LET A=A+VAL Q$
 1010 PRINT AT 3,9;"          "
 1020 LET P=1
 1030 LET S=9999999999
 1040 LET D=9999999999
 1050 LET M=9999999999
 1060 LET Q$=""
 1070 RETURN 
 1080 REM %S%U%B
 1090 FOR F=1 TO 6
 1100 PRINT AT 11,17;"-       "
 1110 PRINT AT 11,17;"%-% % % % % % % "
 1120 NEXT F
 1130 PRINT AT 11,17;"%SUBTRACT"
 1140 IF K=1 THEN LET S1=VAL Q$
 1150 IF K>1 THEN LET S=S1-VAL Q$
 1160 PRINT AT 3,9;"          "
 1170 LET P=1
 1180 LET K=K+1
 1190 LET A=9999999999
 1200 LET D=9999999999
 1210 LET M=9999999999
 1220 LET Q$=""
 1230 RETURN 
 1240 REM %M%U%L%T
 1250 FOR F=1 TO 6
 1260 PRINT AT 9,17;"X       "
 1270 PRINT AT 9,17;"%X% % % % % % % "
 1280 NEXT F
 1290 IF K=1 THEN LET M1=VAL Q$
 1300 IF K>1 THEN LET M=M1*VAL Q$
 1310 LET K=K+1
 1320 PRINT AT 9,17;"%MULTIPLY"
 1330 PRINT AT 3,9;"          "
 1340 LET P=1
 1350 LET A=9999999999
 1360 LET S=9999999999
 1370 LET D=9999999999
 1380 LET Q$=""
 1390 RETURN 
 1400 REM %D%I%V
 1410 FOR F=1 TO 6
 1420 PRINT AT 7,17;"/       "
 1430 PRINT AT 7,17;"%/% % % % % % % "
 1440 NEXT F
 1450 IF K=1 THEN LET D1=VAL Q$
 1460 IF K>1 THEN LET D=D1/VAL Q$
 1470 IF K>1 THEN LET D=INT (100*D+.05)/100
 1480 LET K=K+1
 1490 PRINT AT 7,17;"%DIVIDE  "
 1500 PRINT AT 3,9;"          "
 1510 LET P=1
 1520 LET A=9999999999
 1530 LET S=9999999999
 1540 LET M=9999999999
 1550 LET Q$=""
 1560 RETURN 
 1570 STOP 
 1580 REM %E%Q%U%A%L
 1590 FOR F=1 TO 8
 1600 PRINT AT 13,11;"%=% % % % "
 1610 PRINT AT 13,11;"=    "
 1620 NEXT F
 1630 PRINT AT 13,11;"%EQUAL"
 1640 IF A<9999999999 THEN PRINT AT 3,9;A
 1650 IF M<9999999999 THEN PRINT AT 3,9;M
 1660 IF D<9999999999 THEN PRINT AT 3,9;D
 1670 IF S<9999999999 THEN PRINT AT 3,9;S
 1680 PRINT AT 16,0;"M=ADD TO MEMORY                 L=SUBTRACT FROM MEMORY          C=CONTINUE OPERATION            R=RUN AGAIN (NOTE:ERASES MEMORY)"
 1690 PRINT "V=CURRENT VALUE OF MEMORY       P/S=<P> PRINT MEMORY/<S> SCREEN"
 1700 IF INKEY$="" THEN GOTO 1700
 1710 IF INKEY$="V" THEN PRINT AT 3,6;"%M->";R
 1720 IF INKEY$="R" THEN RUN 
 1730 IF INKEY$="C" THEN GOTO 30
 1740 IF INKEY$="M" THEN GOTO 1790
 1750 IF INKEY$="L" THEN GOTO 1890
 1760 IF INKEY$="P" THEN LPRINT ,,;"->:";R
 1770 IF INKEY$="S" THEN COPY 
 1780 GOTO 1680
 1790 REM %M%E%M%O%R%Y ADD
 1800 IF A<9999999999 THEN LET R=R+A
 1810 IF S<9999999999 THEN LET R=R+S
 1820 IF D<9999999999 THEN LET R=R+D
 1830 IF M<9999999999 THEN LET R=R+M
 1840 PRINT AT 3,6;"             "
 1850 PRINT AT 3,6;"%M->";R
 1860 GOTO 1680
 1870 PRINT AT 3,6;"             "
 1880 GOTO 30
 1890 REM %M%E%M%O%R%Y SUBTRACT
 1900 IF A<>9999999999 THEN LET R=R-A
 1910 IF S<>9999999999 THEN LET R=R-S
 1920 IF M<>9999999999 THEN LET R=R-M
 1930 IF D<>9999999999 THEN LET R=R-D
 1940 PRINT AT 3,6;"             "
 1950 PRINT AT 3,6;"%M->";R
 1960 GOTO 1680
 1970 PRINT AT 3,6;"             "
 1980 GOTO 30
 1990 STOP 
 2000 CLS 
 2010 PRINT AT 8,0;"DO YOU WANT TO QUIT (Y/N)?"
 2020 IF INKEY$="" THEN GOTO 2020
 2030 IF INKEY$<>"Y" THEN GOTO 30
 2040 IF INKEY$="Y" THEN PRINT ,,,,"IF STORING OVER ONE MONTH PLEASE",,"REMOVE BATTERIES..."
 2050 STOP 
 2060 SAVE "TIMEX CALCULATOR%."
 2070 RUN 
 
   1 GOTO 2060
  10 REM %T%Y%P%E%D% %N%O%V%E%M%B%E%R% %3%/%4%-%1%9%8%4
  20 CLS 
  30 RAND 
  40 SLOW 
  50 DIM I$(10,10)
  60 LET RI=0
  70 LET WR=0
  80 LET K=0
  90 REM %D%I%R%E%C%T%I%O%N%S% %S%E%C%T%I%O%N
 100 PRINT AT 10,7;"%W%O%R%D% %P%R%O%B%L%E%M%S"
 110 PAUSE 200
 120 PRINT AT 19,0;"PLEASE ENTER YOUR NAME",,,"(LESS THAN 8 LETTERS PLEASE)"
 130 INPUT N$
 140 IF LEN N$>7 THEN GOTO 120
 150 CLS 
 160 PRINT AT 1,0;"%D%I%R%E%C%T%I%O%N%S: SOLVE EACH OF THE ",,,"FOLLOWING QUESTIONS.  READ VERY",,,"CAREFULLY :";N$
 170 PRINT ,,"REMEMBER TO USE PENCIL AND ",,,"PAPER TO SOLVE THESE PROBLEMS."
 180 PRINT ,,"YOU DON 'T HAVE TO ENTER THE WORD",,"WITH YOUR ANSWER BECAUSE I WILL ",,"PROVIDE THE CORRECT WORD."
 190 PRINT ,,"ONLY ENTER NUMBERS FOR ANSWERS."
 200 PRINT AT 21,2;"PRESS ANY KEY TO CONTINUE"
 210 PAUSE 1000
 220 CLS 
 230 PRINT AT 10,0;"HOW MANY PROBLEMS ?",,,"(2 TO 25 PROBLEMS ONLY)"
 240 INPUT P
 250 IF P<2 OR P>25 THEN GOTO 230
 260 CLS 
 270 PRINT AT 10,0;"WHAT IS THE LARGEST NUMBER YOU",,,"WISH TO WORK WITH ?"
 280 PRINT ,,"(MORE THAN 1 AND LESS THAN",,,"10,000 PLEASE)"
 290 INPUT N
 300 IF N<2 OR N>9999 THEN GOTO 270
 310 CLS 
 320 FOR M=1 TO 21
 330 PRINT "% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "
 340 NEXT M
 350 FOR U=1 TO 20 STEP 2
 360 PRINT AT U,2;"THANK YOU VERY MUCH   ";N$
 370 PRINT 
 380 NEXT U
 390 PAUSE 100
 400 CLS 
 410 PRINT AT 4,0;"YOU HAVE SELECTED ";P;" PROBLEMS",,,;"TO SOLVE."
 420 PRINT ,,"YOU HAVE SELECTED ";N;" AS",,,"YOUR LARGEST NUMBER."
 430 PRINT ,,"AND YOUR NAME IS: ";N$
 440 PRINT ,,"I KNOW MUCH MORE ABOUT YOU",,,N$;" BUT I CAN 'T PRINT IT",,,"ON A TV."
 450 PRINT AT 21,2;"PRESS ANY KEY TO CONTINUE"
 460 PAUSE 1000
 470 GOTO 700
 480 REM %R%A%N%D%O%M% %N%U%M%B%E%R%S
 490 LET N1=INT (RND*N)+1
 500 LET N2=INT (RND*N)+1
 510 IF N1<2 OR N2<2 THEN GOTO 490
 520 IF N1<N2 THEN GOTO 490
 530 LET K=K+1
 540 IF K=(P+1) THEN GOTO 1480
 550 PRINT AT 1,7;"%Q%U%E%S%T%I%O%N%  ";K
 560 REM %N%O%U%N%S% %L%I%S%T%I%N%G
 570 LET I$(1)="COMPUTERS"
 580 LET I$(6)="ORANGES"
 590 LET I$(7)="PENS"
 600 LET I$(8)="STICKERS"
 610 LET I$(9)="DOLLARS"
 620 LET I$(10)="WATCHES"
 630 LET I$(2)="APPLES"
 640 LET I$(3)="TRUCKS"
 650 LET I$(4)="PENCILS"
 660 LET I$(5)="BOOKS"
 670 RAND 
 680 LET A=INT (RND*10)+1
 690 RETURN 
 700 CLS 
 710 GOSUB 490
 720 REM %S%T%A%R%T% %O%F% %Q%U%E%S%T%I%O%N%S
 730 PRINT AT 8,0;"IF A PERSON HAD ";N1;" ";I$(A);AT 10,0;"AND ";N$;" HAD ";N2;" ";I$(A);AT 12,0;"HOW MANY WOULD THEY HAVE";AT 14,0;"ALTOGETHER ?"
 740 INPUT R
 750 LET C=N1+N2
 760 GOSUB 1050
 770 CLS 
 780 GOSUB 490
 790 PRINT AT 8,0;"IF ";N$;" HAD ";N1;" ";I$(A);AT 10,0;"AND (S)HE LOST ";N2;AT 12,0;"HOW MANY WERE LEFT."
 800 INPUT R
 810 LET C=N1-N2
 820 GOSUB 1050
 830 CLS 
 840 GOSUB 490
 844 REM   %C%H%A%N%G%E% %T%H%E% %1%0% %I%N% %R%N%D% %F%O%R% %D%I%F%F%E%R%E%N%T% %F%A%C%T%O%R%S
 845 LET N2=INT (RND*10)+1
 850 PRINT AT 8,0;N$;", IF YOU HAD ";N1;AT 10,0;I$(A);" HOW MANY WOULD YOU";AT 12,0;"HAVE IF YOU HAD ";N2;" TIMES";AT 14,0;"AS MANY ?"
 860 INPUT R
 870 LET C=N1*N2
 880 GOSUB 1050
 890 CLS 
 900 GOSUB 490
 910 REM   %I%N% %L%I%N%E% %9%2%0% % %C%H%A%N%G%E% % % %T%H%E% %1%0%0% %I%N% %R%N%D% % % %F%O%R% %D%I%F%F%E%R%E%N%T% %D%I%V%I%S%O%R%S
 940 LET N2=INT (RND*10)+1
 945 IF N2>N1 THEN GOTO 920
 949 PRINT AT 8,0;"IF ";N$;" HAD ";N1;" ";I$(A);AT 10,0;"AND GAVE EQUAL AMOUNTS";AT 12,0;"TO ";N2;" FRIENDS HOW MANY";AT 14,0;"WOULD EACH FRIEND HAVE ?"
 950 PRINT AT 17,0;"(TO THE NEAREST WHOLE NUMBER",,,"ONLY ";N$;")"
 960 INPUT R
 970 PRINT AT 17,0;"                              ",,,"                         "
 980 LET C=N1/N2
 990 LET C=INT (C+.5)
 1000 GOSUB 1050
 1010 GOSUB 490
 1020 IF K<(P+1) THEN GOTO 730
 1030 STOP 
 1040 REM %C%H%E%C%K%I%N%G% %A%N%S%W%E%R
 1050 IF R=C THEN LET RI=RI+1
 1060 IF R=C THEN PRINT AT 19,0;"--------------------------------"
 1070 PRINT AT 18,0;"YOUR ANSWER IS: ";R;" ";I$(A)
 1080 IF R<>C THEN PRINT AT 19,0;"--------------------------------"
 1090 IF R<>C THEN PRINT AT 20,0;"%W%R%O%N%G-ANSWER: ";C;" ";I$(A)
 1100 IF R=C THEN PRINT AT 20,0;"ANSWER IS CORRECT: ";N$
 1110 IF R<>C THEN LET WR=WR+1
 1120 REM SCORE
 1130 PAUSE 300
 1140 CLS 
 1150 REM %S%C%O%R%E%B%O%A%R%D% %S%C%R%E%E%N
 1160 PRINT AT 4,0;"--------------------------------"
 1170 PRINT AT 0,7;N$;" YOUR SCORE"
 1180 PRINT AT 3,10;"%T%O%T%A%L%=% %  ";RI+WR
 1190 PRINT AT 3,23;P-(RI+WR);" TO GO"
 1200 PRINT AT 6,10;"%C%O%R%R%E%C%T%= ";RI
 1210 PRINT AT 8,10;"%W%R%O%N%G%=% %  ";WR
 1220 PRINT AT 10,0;"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "
 1230 PRINT AT 16,0;"% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % "
 1240 REM %G%R%A%D%E% %A%S%S%I%G%N
 1250 LET GR=(RI/(RI+WR))*100
 1260 IF GR>=90 THEN LET G$="AN ""A"": EXCELLENT"
 1270 IF GR>=80 AND GR<90 THEN LET G$="A ""B"": ABOVE AVERAGE"
 1280 IF GR>=70 AND GR<80 THEN LET G$="A ""C"": AVERAGE"
 1290 IF GR>=60 AND GR<70 THEN LET G$="A ""D"": BELOW AVERAGE, TRY HARDER"
 1300 IF GR<60 THEN LET G$="AN ""E"": TERRIBLE, YOU NEED HELP"
 1310 PRINT AT 12,0;"YOU 'RE CURRENT GRADE:";AT 14,0;G$
 1320 PAUSE 150
 1330 IF K=P THEN PRINT AT 18,0;"YOU ARE DONE,  ",N$,"GIVE SOMEONE ELSE A TURN. PRESS ANY KEY TO  CONTINUE."
 1340 IF K=P THEN PAUSE 4E4
 1350 IF K=P THEN RUN 
 1360 IF K<>P THEN CLS 
 1370 REM %C%O%M%M%E%N%T% %S%E%C%T%I%O%N
 1380 IF K=2 THEN GOSUB 1500
 1390 IF K=4 THEN GOSUB 1550
 1400 IF K=1 THEN GOSUB 1590
 1410 IF K=6 THEN GOSUB 1630
 1420 IF K=10 THEN GOSUB 1670
 1430 IF K>5 AND GR>=90 THEN GOSUB 1980
 1440 IF K>5 AND GR<70 THEN GOSUB 2020
 1450 RETURN 
 1460 SAVE "WORD PROBLEMS VARIATIO%N"
 1471 RUN 2
 1480 GOTO 1330
 1490 REM %C%O%M%M%E%N%T% %S%E%C%T%I%O%N
 1500 CLS 
 1510 PRINT AT 10,0;N$;" I LOVE MATHEMATICS."
 1520 PAUSE 200
 1530 CLS 
 1540 RETURN 
 1550 PRINT AT 10,0;"MR. SWEITZER TAUGHT ME WHEN I ",,,"WAS IN FOURTH GRADE."
 1560 PAUSE 300
 1570 CLS 
 1580 RETURN 
 1590 PRINT AT 10,0;"WELL YOU AT LEAST FINISHED ONE",,,"QUESTION WITHOUT RUINING THE",,,"PROGRAM."
 1600 PAUSE 300
 1610 CLS 
 1620 RETURN 
 1630 PRINT AT 10,0;"I WOULD RATHER BE HERE WITH YOU,",,N$;" THAN WITH AN %I%B%M",,,"%O%R% %C%O%M%M%O%D%O%R%E% %C%O%M%P%U%T%E%R%."
 1640 PAUSE 350
 1650 CLS 
 1660 RETURN 
 1670 PRINT AT 10,0;"I THINK, NO WAIT, I KNOW I CAN",,,"COMPUTE FASTER THAN YOU."
 1680 PAUSE 350
 1690 CLS 
 1700 PRINT AT 10,0;"I CAN READ YOUR THOUGHTS AND ",,,"YOU REALLY THINK YOU CAN BEAT ",,,"ME AT MATHEMATICS.  HOG WASH."
 1710 PAUSE 450
 1720 CLS 
 1730 PRINT AT 2,0;"OK, IF YOU THINK YOU A LOWLY ",,,"HUMAN BY THE NAME OF: ";N$,,,"CAN WORK MATH PROBLEMS FASTER",,,"THAN ME, A TIMEX, PLEASE PRESS",,,"THE LETTER ""Y"" BUT IF YOU ARE",,,"CHICKEN AS I KNOW YOU TO BE",,,"PRESS THE LETTER ""N""."
 1740 PRINT AT 21,0;"OK, PRESS (Y/N) KEY HUMAN"
 1750 IF INKEY$="" THEN GOTO 1750
 1760 IF INKEY$<>"Y" THEN RETURN 
 1770 CLS 
 1780 PRINT AT 3,0;"GET READY, I WILL GIVE YOU ONLY",,,"ONE PROBLEM SO BE CAREFUL."
 1790 PRINT ,,"BY THE WAY I WILL BE SOLVING THE",,"SAME PROBLEM AT THE SAME TIME."
 1800 PRINT ,,"IF YOU FINISH FIRST (NEVER) THEN",,"QUICKLY LOOK AT MY SCREEN TO ",,,"SEE IF I HAVE FINISHED (I WILL",,,"HAVE)."
 1810 PAUSE 1000
 1820 CLS 
 1830 PRINT "HERE 'S THE PROBLEM. BY THE WAY",,,"THIS WILL NOT CHANGE YOUR TOTAL",,,"NUMBER OF QUESTION OR GRADE",,,"BECAUSE NO HUMAN HAS EVER WON."
 1840 PAUSE 500
 1850 LET RAN=INT (RND*1000000)+1
 1860 LET RAN1=INT (RND*1000000)+1
 1870 IF RAN1<10 OR RAN<100 THEN GOTO 1850
 1880 PRINT AT 9,0;RAN;" X ";RAN1;" = "
 1890 FAST 
 1900 LET ANSWER=RAN*RAN1
 1910 PRINT AT 12,0;"ANSWER IS: ";ANSWER
 1920 SLOW 
 1930 PRINT AT 15,0;"SEE, I TOLD YOU I AM FASTER THAN",,"ANY HUMAN."
 1940 PRINT AT 21,0;"RETURNING TO PROGRAM IN 6 SEC."
 1950 PAUSE 600
 1960 CLS 
 1970 RETURN 
 1980 PRINT AT 9,0;"I THOUGHT YOU WOULD DO WELL ",,,"BECAUSE YOU HAVE MR. SWEITZER",,,"FOR MATHEMATICS."
 1990 PAUSE 300
 2000 CLS 
 2010 RETURN 
 2020 PRINT AT 8,0;"WHAT SEEMS TO BE THE TROUBLE",,,"I NEVER DID THAT POORLY EVEN ",,,"WHEN ALL MY CIRCUITS AND ",,,"MICROPROCESSOR SHORTED OUT."
 2030 PAUSE 400
 2040 CLS 
 2050 RETURN 
 2060 PRINT AT 8,0;"%I%N% %L%I%N%E% %9%2%0% % % %C%H%A%N%G%E% %T%H%E% %1%0%0%,%E%T%C%I%N% %R%N%D% %F%O%R% %D%I%F%F%E%R%E%N%T% %D%I%V%I%S%O%R%S% % % "
 2065 PRINT AT 11,0;"%I%N% %L%I%N%E% %8%4%5% %C%H%A%N%G%E% %T%H%E% %1%0%,%E%T%C%.%I%N%R%N%D% %F%O%R% %D%I%F%F%E%R%E%N%T% %S%E%C%O%N%D% %F%A%C%T%O%R%S"
 2070 PAUSE 800
 2080 CLS 
 2090 RUN 2

Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.

Scroll to Top