PCjs Machines

Home of the original IBM PC emulator for browsers.

Logo

PC-SIG Diskette Library (Disk #595)

[PCjs Machine "ibm5150"]

Waiting for machine "ibm5150" to load....

Information about “PROGRAMMING INTRO”

This is a handy and interesting tool for getting acquainted with the
world of microcomputers and programming.

It has an easily-understood tutorial on computers and does a good job on
BASIC -- introducing the beginner to the elemental concepts of the
language.  A big plus is a series of practice sessions so you can
actually see the programs operate!

A set of simple games are included that will engage you in a lot of
keyboard practice.  They include a simple word processor and several
number games as well as varying levels of anagrams.
File Descriptions:

PRINT    BAS  PRINTING FUN program.
MISSING  BAS  MISSING WORD program.
MATH     BAS  MATH program.
MENU     BAS  Main menu for the system.
TYPE     BAS  Typing practice program.
MPG      BAS  M.P.G. program.
PRINTING BAS  Printing program.
REPORT   DAT  Report data file.
GOTO     BAS   -- 8.
BTMENU   BAS   -- 7.
GR       BAS   -- 6.
SCRAMBLE BAS   -- 5.
READDATA BAS   -- 4.
IFTHEN   BAS   -- 3.
INPUT    BAS   -- 2.
LET      BAS  Command -- 1.
BASIC    BAS  BASIC programming section.
MODES    BAS  Modes program.
GUIDE    BAS  Guide program.
SUPSCRAM BAS  Superscam program.
WURD     BAS  WURD program.
COUNTING BAS  Counting program.
SPELLING BAS  Spelling skill program.
GUESS    BAS  Guess my number exercise.
FORNEXT  BAS   -- 9.
CHAIRMAN BAS  Climb the corporate ladder.
DOCSWAN  ARC  Archived version.
DOCSWAN  BAS  BASIC program.
TYPING   BAS  Typing skills program.

BASIC.BAS

10 REM 19:04:16  2/24/1985
20 CLS
30 FOR I =1 TO 33
60 LOCATE 5,I:PRINT" A BASIC TUTORIAL";
70 FOR D =1 TO 10 :NEXT D
80 NEXT I
90 PRINT TAB(38);"FOR THE"
100 PRINT TAB(33);"LANGUAGE OF BASIC
110 PRINT:PRINT:PRINT
120 FOR A =1 TO 39
130 PRINT "<>";
140 NEXT A
150 PRINT:PRINT:PRINT:PRINT
160 PRINT "                          A SELF-PACED LEARNING PROGRAM
170 PRINT
180 PRINT "                               by  Mark A. Swanson
190 PRINT "
200 PRINT
210 PRINT:PRINT:PRINT
220 PRINT "************************  DOC SWAN Learning Series (sm)  *********************"
230 FOR I=1 TO 2000 :NEXT I
240 CLS
250 PRINT "WELCOME !!!
260 PRINT
270 PRINT "         You have just openned the door to hours of fun, creativity,
280 PRINT "         and productivity by choosing to learn the powerfull BASIC
290 PRINT "         computer language.
300 PRINT
310 PRINT "         Many people are intimidated by new languages and so is the
320 PRINT "         case with computer languages.  What they don't realize is
330 PRINT "         that BASIC is designed to be just that - basic.
340 PRINT
350 PRINT "         You'll find that using BASIC is even more straight forward
360 PRINT "         than the English we use every day.  You'll use simple words
370 PRINT "         with which to tell the computer what you want it to do.
380 PRINT
390 PRINT "         When you have finished this 'mini-course', and have a few
400 PRINT "         hours of practice under your belt, you'll be programming
410 PRINT "         up a storm.  Here are a few tips to help the learning process..."
420 PRINT
430 PRINT "         1.  Read each section carefully to insure comprehension.
440 PRINT "         2.  Practice after each session.
450 PRINT "         3.  Relax, take your time, and ENJOY !
460 PRINT:PRINT
470 INPUT  "          PRESS THE  [RETURN]  KEY FOR THE TUTORIAL MAIN MENU ",Z$
480 LOAD"B:BTMENU.BAS",R

BTMENU.BAS

10 ' MARK A. SWANSON         19:35:44  2/27/1985
20 CLS
30 PRINT "           ";:FOR A=1 TO 58:PRINT CHR$(176);:NEXT A
40 PRINT "           ░               THE BASIC TUTORIAL MENU                  ░
50 PRINT "           ░                                                        ░
60 PRINT "           ░                                                        ░
70 PRINT "           ░   [1]  BASIC GUIDE                [6]  FOR / NEXT      ░
80 PRINT "           ░                                                        ░
90 PRINT "           ░   [2]  PRINT                      [7]  INPUT           ░
100 PRINT "           ░                                                        ░
110 PRINT "           ░   [3]  MODES OF OPERATION         [8]  IF / THEN       ░
120 PRINT "           ░                                                        ░
130 PRINT "           ░   [4]  GOTO                       [9]  READ / DATA     ░
140 PRINT "           ░                                                        ░
150 PRINT "           ░   [5]  LET                       [10]  GOSUB / RETURN  ░
160 PRINT "           ░                                                        ░
170 PRINT "           ░                                                        ░
180 PRINT "           ░                       Q   QUIT                         ░
190 PRINT "           ";:FOR A=1 TO 58:PRINT CHR$(176);:NEXT A
200 PRINT:PRINT:PRINT:PRINT
210 INPUT "               PRESS THE NUMBER FOR THE LESSON YOU WOULD LIKE ";Z$
220 IF Z$="1" THEN LOAD"B:GUIDE.BAS",R
230 IF Z$="2" THEN LOAD"B:PRINT.BAS",R
240 IF Z$="3" THEN LOAD"B:MODES.BAS",R
250 IF Z$="4" THEN LOAD"B:GOTO.BAS",R
260 IF Z$="5" THEN LOAD"B:LET.BAS",R
270 IF Z$="6" THEN LOAD"B:FORNEXT.BAS",R
280 IF Z$="7" THEN LOAD"B:INPUT.BAS",R
290 IF Z$="8" THEN LOAD"B:IFTHEN.BAS",R
300 IF Z$="9" THEN LOAD"B:READDATA.BAS",R
310 IF Z$="10" THEN LOAD"B:GR.BAS",R
320 IF Z$="Q" THEN LOAD"B:MENU.BAS",R
330 PRINT "INVALID RESPONSE ..............> TRY AGAIN ":GOTO 210

CHAIRMAN.BAS

10 CLS
20 CLS
30 COB=0
40 FOR A=1 TO 30:PRINT:NEXT A
50 PRINT TAB(28);"  CHAIRMAN OF THE BOARD
60 FOR A=1 TO 4
70 CP=0:CPU=0:R=1:TDP=0:S=0:W=0:DP=0
80 PRINT TAB(30);CHR$(177);TAB(50);CHR$(177)
90 PRINT TAB(30);CHR$(177);:FOR L=1 TO 20:PRINT CHR$(177);:NEXT L:PRINT
100 RANDOMIZE 2000
110 PRINT TAB(30);CHR$(177);TAB(50);CHR$(177)
120 PRINT TAB(30);CHR$(177);TAB(50);CHR$(177)
130 NEXT A
140 PRINT
150 IF COB=1 THEN GOTO 4950
160 FOR A=1 TO 500:NEXT A
170 PRINT "                            A GAME OF UPS AND DOWNS
180 PRINT "                      ON A VERY SLIPPERY CORPORATE LADDER !
190 PRINT
200 PRINT "                              by Mark A. Swanson
210 PRINT "                                copyright 1983
220 CP=0:DP=0
230 R=1
240 FOR A=1 TO 2000:NEXT A
250 CLS
260 PRINT "OBJECT OF THE GAME:
270 PRINT "To become the Chairman of the Board with the most confidence in the
280 PRINT "fewest turns.
290 PRINT
300 PRINT "HOW TO PLAY:
310 PRINT "You will be presented with various corporate type situations to
320 PRINT "which you will respond with [Y]es or [N]o or points.
330 PRINT
340 PRINT "POINTS:
350 PRINT "* Confidence Points - Increased or decreased at the end of each
360 PRINT "situation (week). Used when asking for a promotion.
370 PRINT "* Brownie Points - Increased or decreased in correlation to Confidence
380 PRINT "Points. Used for getting out of 'special' situations.
390 PRINT
400 PRINT "OPTIONS:
410 PRINT "* Ask For A Promotion - If Confidence points are above 0, you may
420 PRINT "ask for a promotion at the end of the week. The probability of
430 PRINT "getting it increases as you acquire more Confidence Points.200
440 PRINT "points will guarantee a promotion.
450 PRINT
460 PRINT "                        Press [RETURN] to continue "
470 A=1:K$=INKEY$:WHILE K$="":A=A+1:K$=INKEY$:WEND
480 CLS
490 PRINT
500 PRINT "* The Big Risk - Only an option if your Confidence Points fall below 0."
510 PRINT "You may ask the 'big wigs' to reinstate neutral status....reset
520 PRINT "confidence points back to 0 from the deficit. If you are not
530 PRINT "reinstated you are fired altogether. Use only when Confidence
540 PRINT "Points are way into the negative or you are closing in on 20
550 PRINT "situations without a promotion and don't have enough points to
560 PRINT "get one anyway.
570 PRINT
580 PRINT "* Ranks and Rungs on the Corporate Ladder:
590 PRINT
600 PRINT "1 Mailroom Clerk
610 PRINT "2 Mailroom Manager
620 PRINT "3 Plant Manager
630 PRINT "4 President
640 PRINT "5 CHAIRMAN of the BOARD !
650 PRINT
660 PRINT "That's all I'm going to tell you. The rest you'll find out.
670 PRINT:PRINT:PRINT
680 INPUT "                          Press [RETURN] to begin ";Z
690 CLS
700 RANDOMIZE A
710 IF S>20 THEN GOTO 5130
720 RESTORE
730 X=1
740 Z=INT(62*RND(1))+1
750 IF R=1 AND Z<23 THEN GOTO 800
760 IF R=2 AND Z>19 AND Z<43 THEN GOTO 1480
770 IF R=3 AND Z>39 AND Z<63 THEN GOTO 2150
780 IF R=4 THEN GOTO 2810
790 GOTO 740
800 REM ***** MAILROOM CLERK SITUATIONS *****
810 DATA A,B,C,0
820 IF Z>20 THEN GOTO 3210
830 FOR A=1 TO Z
840 READ S$,S1$,S2$,C:NEXT A
850 READ S$,S1$,S2$,C
860 DATA WHILE BEING CLUMSY AT THE AUTOMATIC LETTER OPENER
870 DATA YOU OPENED YOUR FINGER INSTEAD OF THE LETTER. TAKE THE DAY OFF
880 DATA WITHOUT PAY ! LOSE 20 CONFIDENCE POINTS.,-20
890 DATA YOUR SUPERVISOR JUST FOUND OUT THAT YOU HAVEN'T BEEN TRAINED ON THE
900 DATA AUTOMATIC LETTER OPENER. YOU ARE ORDERED TO USE YOUR LUNCH HOUR TO
910 DATA LEARN. LOSE 5 CONFIDENCE POINTS.,-5
920 DATA THE DAILY MAIL TRUCK IS SIX HOURS LATE AND SINCE YOU ARE A MERE SLAVE
930 DATA THE ENTIRE BLAME FOR THE POST OFFICE'S TARDINESS IS PUT ON YOU. LOSE
940 DATA 15 CONFIDENCE POINTS.,-15
950 DATA YOU SPILLED A CUP OF COFFEE ON A LETTER TO A BIG SHOT IN THE COMPANY
960 DATA AND WHEN WIPING IT OFF YOU ALSO WIPED OFF THE BIG SHOT'S NAME.
970 DATA BOY WAS THAT DUMB ! LOSE 25 CONFIDENCE POINTS.,-25
980 DATA THE CORPORATE OFFICE IS SENDING A RECORD AMOUNT OF DIVIDENDS TO
990 DATA STOCKHOLDERS. TOO BAD YOU MIXED UP THE ZIP CODE SORTING ! ALMOST
1000 DATA ALL OF THE MAIL CAME BACK. LOSE 40 CONFIDENCE POINTS.,-40
1010 DATA THE MAILROOM SUPERVISOR CAME IN EARLY AND FOUND YOU HARD AT WORK !
1020 DATA BELIEVE IT OR NOT HE DIDN'T REALIZE THAT YOU WERE TRYING TO FIX THE
1030 DATA NEW LETTER OPENER YOU BROKE YESTERDAY. GAIN 40 CONFIDENCE POINTS.,40
1040 DATA THERE IS ONLY ONE THING IN THE WORLD BETTER THAN A DAY OFF.......
1050 DATA THAT'S TELLING YOUR BOSS THAT HE IS RUNNING THE DEPARTMENT ALL WRONG
1060 DATA AND HE THANKS YOU FOR YOUR INPUT. GAIN 50 CONFIDENCE POINTS !,50
1070 DATA WELL..... A RED LETTER FRIDAY ! ALL OF THE MAIL WENT OUT ON TIME AND
1080 DATA YOU GOT THE INCOMING MAIL TO THE RIGHT EXECUTIVES - ALL WEEK !
1090 DATA GAIN 50 CONFIDENCE POINTS !!!,50
1100 DATA THE TEMPERMENTAL LETTER OPENER HAS BEEN REPLACED WITH A NEW ONE.
1110 DATA IT DOES A GREAT JOB AND IS OPENING LETTERS AT RECORD SPEED ! (LET'S
1120 DATA HOPE IT LASTS THIS TIME !). GAIN 20 CONFIDENCE POINTS.,20
1130 DATA THE MAILROOM SUPERVISOR JUST GOT A PROMOTION ! HE HAS THE CRAZY IDEA
1140 DATA THAT YOUR GOOD (?) WORK HELPED HIM GET IT. YOU GUESSED IT.........
1150 DATA YOU'VE JUST BEEN PROMOTED TO HIS JOB !!!,0
1160 DATA YOUR SPEED AND EFFICIENCY HAS GONE UNNOTICED UNTIL NOW. YOU HAVE
1170 DATA JUST BEEN VOTED 'THE MOST IMPROVED MAILROOM CLERK OF THE MONTH' !
1180 DATA GAIN 40 CONFIDENCE POINTS.,40
1190 DATA WHILE ON YOUR BREAK YOU PICKED THE LOCK TO THE EXECUTIVE WASHROOM (TO
1200 DATA SEE HOW THE 'BIG SHOTS' LIVE). WHILE IN THE 'EXECUTIVE' STALL YOU
1210 DATA OVERHEARD TALK OF UPCOMING PROMOTIONS ! GAIN 30 CONFIDENCE POINTS.,30
1220 DATA YOU JUST GOT A RAISE ! YOU CAN NOW ENROLL IN THOSE NIGHT CLASSES
1230 DATA YOU'VE BEEN UNABLE TO AFFORD. SOON THE ENGLISH LANGUAGE WON'T BE
1240 DATA YOUR BIGGEST BARRIER TO SUCCESS. GAIN 50 CONFIDENCE POINTS !,50
1250 DATA A NEW COMPUTER HAS JUST BEEN INSTALLED IN THE MAILROOM. CONSEQUENTLY
1260 DATA THE MAIL IS BEING ROUTED AT THREE TIMES THE NORMAL RATE. THE CHAIRMAN
1270 DATA OF THE BOARD IS VERY PLEASED ! GAIN 20 CONFIDENCE POINTS.,20
1280 DATA YOUR WIFE DIDN'T KNOW THAT IT IS AGAINST COMPANY POLICY FOR NON
1290 DATA EMPLOYEES TO BE IN THE MAILROOM WHEN SHE VISITED YOU TODAY. IT'S A
1300 DATA GOOD THING THE BOSS HAD THE DAY OFF ! GAIN 10 CONFIDENCE POINTS., 10
1310 DATA YOU JUST SAW ONE OF YOUR CO-WORKERS OPEN AN 'OUT GOING' LETTER.
1320 DATA HE STEALS A RETIREE'S PENSION CHECK AND STASHES IT IN HIS POCKET. YOU
1330 DATA TURN HIM IN. HE'S FIRED AND YOU GAIN 50 CONFIDENCE POINTS !,50
1340 DATA OK.... SO YOU'RE A WORK-AHOLIC ! YOUR WIFE IS THREATENING DIVORCE ON
1350 DATA GROUNDS OF NEGLIGENCE AND YOUR KIDS CONFUSE YOU WITH THE MILKMAN !
1360 DATA YOUR BOSS LOVES YOUR 6am-7pm WORK SCHEDULE. GAIN 20 POINTS.,20
1370 DATA THE ZIP CODE SORTING SYSTEM COULD STAND SOME IMPROVEMENTS AND YOU
1380 DATA PROPOSE SOME VERY INNOVATIVE IDEAS FOR STREAMLINING THE OPERATION.
1390 DATA YOUR CREATIVE SUGGESTIONS ARE APPRECIATED. GAIN 10 CONFIDENCE PTS.,20
1400 DATA GLAD TO HERE YOU HAD A WONDERFUL WEEKEND - COMPLETE WITH A MONDAY
1410 DATA MORNING HANGOVER. YOU 'DOWN' A COUPLE OF ASPIRIN AND SLITHER IN TO
1420 DATA THE MAIL ROOM - 3 HOURS LATE ! LOSE 20 CONFIDENCE POINTS.,-20
1430 DATA A GIRL SCOUT CAME INTO THE MAILROOM SELLING COOKIES. YOU IMMEDIATELY
1440 DATA SCREAM AT HER FOR BEING IN AN UNAUTHORIZED AREA AND THROW HER OUT.
1450 DATA TOO BAD SHE IS THE VICE PRESIDENT'S NIECE ! LOSE 40 CONFIDENCE PTS,-40
1460 IF S=20 THEN GOTO 5130
1470 CP=CP+C:GOTO 4550
1480 REM ***** MAILROOM MANAGER SITUATIONS *****
1490 IF Z>39 THEN GOTO 3210
1500 READ S$,S1$,S2$,C
1510 FOR A=1 TO Z:READ S$,S1$,S2$,C:NEXT A
1520 READ S$,S1$,S2$,C
1530 DATA YOU HAVE JUST HIRED A NEW MAILROOM CLERK. HE'S BRIGHT AND CREATIVE.
1540 DATA THERE IS ONLY ONE PROBLEM - HE GETS SO BORED AT WORK THAT HE FALLS
1550 DATA ASLEEP ON THE JOB. YOU HAVE TO TAKE UP THE SLACK. LOSE 10 POINTS.,-10
1560 DATA YOU DECIDED TO ENTER THE FOOTBALL POOL WITH THE OTHER MANAGERS IN THE
1570 DATA COMPANY. YOU WON ! TOO BAD THE OTHER MANAGERS ARE VERY POOR LOSERS.
1580 DATA THE PLANT MANAGER - YOUR BOSS - IS ONE THEM ! LOSE 40 POINTS.,-40
1590 DATA SOMEONE'S CAR IS IN YOUR PARKING SPOT. YOU ARE INFURIATED AND CALL A
1600 DATA TOW TRUCK. ONE OF THE MAILROOM CLERKS ASKS WHY THE PRESIDENT'S CAR
1610 DATA IS BEING TOWED AWAY. LOSE 70 CONFIDENCE POINTS.,-70
1620 DATA THE AUTOMATIC LETTER OPENER IS BECOMING A REAL PAIN. YOU DECIDED TO
1630 DATA ORDER A NEW ONE AND SEND THE OLD ONE BACK IMMEDIATELY. THE COMPANY
1640 DATA FEELS BAD ABOUT THE LAST ONE - THIS ONE'S FREE !. GAIN 40 POINTS.,40
1650 DATA THE MAILROOM CLERKS ARE THREATENING TO QUIT IF THEY DON'T GET A RAISE
1660 DATA REAL SOON. YOU DECIDE TO CALL THEIR BLUFF. THEY WEREN'T BLUFFING.
1670 DATA IT'S NOT EASY DOING THE WORK OF 5 PEOPLE ! LOSE 30 CONFIDENCE PTS,-30
1680 DATA THE PLANT MANAGER ASKED YOU PLAY GOLF THIS SATURDAY. WOW ! WHAT A
1690 DATA CHANCE TO BUTTER HIM UP. YOU LET HIM WIN BY A MILE. TOO BAD HE
1700 DATA HATES POOR GOLFERS. LOSE 40 CONFIDENCE POINTS.,-40
1710 DATA THE MORALE IN THE MAILROOM IS WORSENING. THE CLERKS RESENT YOUR NEW
1720 DATA PROMOTION AND ARE MAKING YOUR LIFE MISERABLE BY SENDING YOUR MEMOS
1730 DATA BACK MARKED 'ADDRESS UNKNOWN'. LOSE 20 CONFIDENCE POINTS.,-20
1740 DATA YOU'VE BEEN ELECTED CHAIRMAN OF THE COMPANY BLOOD DRIVE AND YOU WANT
1750 DATA YOU'RE DEPARTMENT TO DONATE THE MOST. 10 BRIBES AND 10 QUARTS LATER
1760 DATA YOU WORKERS ARE PASSED OUT ON THE MAILROOM FLOOR. LOSE 30 POINTS.,-30
1770 DATA THE PLANT MANAGER HAS SURVEYED THE EFFICIENCY OF ALL THE COMPANY'S
1780 DATA MAILROOMS. YOURS IS THE BEST ! THERE IS NO ACCOUNTING FOR TASTE.
1790 DATA GAIN 80 CONFIDENCE POINTS !,80
1800 DATA THE MORALE IN THE MAILROOM HAS BEEN GRADUALLY IMPROVING EVER SINCE
1810 DATA YOU GAVE YOUR CLERKS AN EXTRA 15 MINUTES FOR LUNCH. THE THREATS HAVE
1820 DATA EVEN STOPPED ! GAIN 50 CONFIDENCE POINTS.,50
1830 DATA YOU CATCH A MAILROOM CLERK HIDING IN THE EXECUTIVE WASHROOM STALL.
1840 DATA UPPER MANAGEMENT IS PLEASED THAT YOU'VE PUT A STOP TO PROMOTION INFO
1850 DATA 'LEAKS' BY SPIES. GAIN 40 CONFIDENCE POINTS.,40
1860 DATA YOU BUMPED INTO THE VICE PRESIDENT WHILE ON HIS WAY TO MEET WITH THE
1870 DATA CHAIRMAN AFTER A 3 MARTINI AND ONION BURGER LUNCH. YOU OFFER HIM A
1880 DATA BREATH MINT. HE IS VERY GRATEFUL ! GAIN 50 CONFIDENCE POINTS.,50
1890 DATA IT'S A BEAUTIFUL DAY ! THE SUN IS SHINING AND EVERYONE IS IN A GREAT
1900 DATA MOOD - INCLUDING THE PRESIDENT - WHO FOR NO REAL SANE REASON SAID
1910 DATA THAT HE LIKED YOUR NEW SOCKS. GAIN 10 CONFIDENCE POINTS.,10
1920 DATA A LUCKY BREAK - JUST WHEN THE PLANT MANAGER WAS THINKING THAT ALL
1930 DATA YOU DO IS SIT AROUND AND DO NOTHING.... YOU GET TENDONITIS. YOU MUST
1940 DATA BE WORKING HARDER THAN THEY THOUGHT ! GAIN 30 CONFIDENCE POINTS.,30
1950 DATA A TON OF MAIL CAME IN AND HALF OF YOUR CREW CALLED IN SICK. DESPITE
1960 DATA THE LACK OF HELP AND A SINKING FEELING - YOU SKIP YOUR BREAKS AND
1970 DATA LUNCH - AND THE MAIL GOES THROUGH. WHEW ! GAIN 20 CONFIDENCE PTS.,20
1980 DATA THE MARKETING MANAGER HAD AN IDEA FOR A MASS MAIL PROMOTION AND
1990 DATA WANTED YOU INPUT ON ATTRACTIVE MAIL PACKAGING. THEY ARE BEGINNING TO
2000 DATA REALIZE YOUR BROAD POTENTIAL. GAIN 40 CONFIDENCE POINTS.,40
2010 DATA YOUR WIFE GOT HER FIRST OPPORTUNITY TO COOK FOR YOUR BOSS (PLANT MGR)
2020 DATA SO SHE COOKS TASMANIAN WOMBAT WITH PICKLED PIGEON TOES. YOU GUESSED
2030 DATA IT....... IT'S HIS FAVORITE DISH. (oh boy) GAIN 30 CONFIDENCE PTS.,30
2040 DATA YOU INTERVIEW 2 JOB APPLICANTS FOR THE MAILROOM. ONE IS A BRIGHT GUY
2050 DATA WITH EXPERIENCE AND THE OTHER IS THE PRESIDENT'S NEPHEW AND IS NOT SO
2060 DATA BRIGHT. POOF ! WHEW....ONLY A DREAM. GAIN 20 CONFIDENCE POINTS.,20
2070 DATA THE PLANT MANAGER ASKS YOU TO PLAY RACQUET BALL AFTER WORK. YOU
2080 DATA ACCEPT. 2 MINUTES INTO THE GAME YOUR BOSS FALLS DOWN. YOU MISSED THE
2090 DATA BALL BUT YOUR FOREHAND TO THE HEAD WAS FANTASTIC ! LOSE 50 POINTS.,-50
2100 DATA THE COMPANY HAS ENROLLED YOU IN THEIR 'CORPORATE RIGAMAROLE AND
2110 DATA POLICIES' (C.R.A.P.) SEMINAR. SOON YOU WILL FEEL TOTALLY ASS-IMILATED
2120 DATA INTO THE CORPORATION. GAIN 50 CONFIDENCE POINTS.,50
2130 IF S=20 THEN GOTO 5130
2140 CP=CP+C:GOTO 4550
2150 REM ***** PLANT MANAGER SITUATIONS *****
2160 IF Z>59 THEN GOTO 3210
2170 FOR A=1 TO Z:READ S$,S1$,S2$,C:NEXT A
2180 READ S$,S1$,S2$,C
2190 DATA THE LIGHTS HAVE GONE OUT IN THE WHOLE BUILDING AND IT'S YOUR JOB TO
2200 DATA GET THEM BACK ON. YOU CALL THE MAINTENANCE CREW. NO ONE THERE.......
2210 DATA YOU SENT THEM OUT EARLY FOR DONUTS. LOSE 40 CONFIDENCE POINTS.,-40
2220 DATA A MEETING TO DISCUSS THE POTENTIAL OF A NEW MAILROOM CLERK HAS BEEN
2230 DATA CALLED. YOU KNOW THE BOY AND VOTE TO PROMOTE - BEFORE YOU REALIZE
2240 DATA THAT THIS IS A DISCIPLINARY MEETING. LOSE 50 CONFIDENCE POINTS.,-50
2250 DATA YOU PUT IN A REQUEST TO HAVE YOUR OFFICE PAINTED YOUR FAVORITE SHADE
2260 DATA OF 'EXECUTIVE BLUE'. THE VICE PRESIDENT DOESN'T APPRECIATE THE WASTE
2270 DATA OF MONEY - OR THE COLOR ! LOSE 30 CONFIDENCE POINTS.,-30
2280 DATA A NEW SECRETARY HAS BEEN ASSIGNED TO YOU. SHE USED TO WORK FOR THE
2290 DATA VICE PRESIDENT AND CAN TELL YOU ALL SORTS OF THINGS ABOUT HIM. THIS
2300 DATA COULD COME IN REAL HANDY DOWN THE ROAD. GAIN 40 CONFIDENCE POINTS.,40
2310 DATA YOU'VE BEEN SENT TO THE 'NATIONAL MANAGER'S CONVENTION' IN MIAMI.
2320 DATA DURING THE SPECIAL AWARDS DINNER YOU WON THE COVETED 'DIP' AWARD
2330 DATA (THAT'S DIRECTORS OF INGENIOUS PROGRESS). GAIN 50 CONFIDENCE PTS.,50
2340 DATA YOUR OLD STOMPING GROUNDS (THE MAILROOM) IS IN TROUBLE AGAIN. THAT
2350 DATA OLD LETTER OPENER IS ON THE PUTZ AND GUESS WHO VOLUNTEERS TO HELP ?
2360 DATA (AND RIGHT IN FRONT OF THE VICE PRESIDENT). GAIN 30 POINTS.,30
2370 DATA THE FASTEST TRACK TO A PROMOTION IS THROUGH THE VICE PRESIDENT'S FAT
2380 DATA STOMACH. ITS A GOOD THING HE'S AS CRAZY ABOUT WOMBAT AND PIGEON TOES
2390 DATA AS THE OLD PLANT MANAGER ! GAIN 50 CONFIDENCE POINTS.,50
2400 DATA WITH THE SAME VIM AND VIGOR YOU SHOWED IN THE MAILROOM YOU PUT IN TO
2410 DATA EFFECT AN EFFICIENCY PLAN FOR THE WHOLE COMPANY. ITS A SHAME THAT NOT
2420 DATA EVERYONE CAN USE AUTOMATIC LETTER OPENERS ! LOSE 70 POINTS.,-70
2430 DATA SALES ARE DOWN BY 50% AND PRODUCTION IS UP BY 200%. THE PRESIDENT
2440 DATA ASKS YOU TO DO THE 'LAYOFF' HONORS. YOU JUST MADE 40 ENEMIES - BUT
2450 DATA ONE VERY GOOD FRIEND (THE PRESIDENT). GAIN 50 CONFIDENCE PTS.,50
2460 DATA WORD GOT TO THE CHAIRMAN THAT YOU WERE OFFERED A POSITION WITH A
2470 DATA PRESTIGIOUS COMPANY. YOU TELL THE CHAIRMAN THAT YOUR HEART IS HERE.
2480 DATA HE DOESN'T KNOW IT MEANT A 50% PAY CUT ! GAIN 30 CONFIDENCE PTS.,30
2490 DATA YOUR BROTHER IN LAW IS A GOVERNMENT CONTRACTOR AND HE OWES YOU 100
2500 DATA DOLLARS. YOU DECIDE TO ACCEPT A 1 MILLION DOLLAR CONTRACT FOR THE
2510 DATA COMPANY IN LIEU OF THE DEBT. GAIN 80 CONFIDENCE POINTS !,80
2520 DATA THE COMPANY IS GROWING AND GETTING CROWDED. YOU TURN THE SECRETARY
2530 DATA LOUNGE INTO AN EXECUTIVE BILLIARD ROOM WHICH MADE BIG POINTS WITH
2540 DATA THE UPPER MANAGEMENT. THAT'S EXECUTIVE SMARTS ! GAIN 20 POINTS.,20
2550 DATA BOY ARE YOU A SCAM ARTIST ! I THOUGHT THE OLD 'SLEEPING BAG IN THE
2560 DATA OFFICE' TRICK WENT OUT WITH MANUAL TYPEWRITERS ! THE PRESIDENT
2570 DATA ACTUALLY THINKS YOU WORK THROUGH THE NIGHT. GAIN 40 POINTS.,40
2580 DATA HAVE YOU EVER HAD A NIGHTMARE ABOUT GOING TO WORK WITHOUT YOUR PANTS
2590 DATA ON ? YOU ARE AWAKE NOW SO WHAT'S YOUR EXCUSE !?!
2600 DATA GIVE THEM THE COOK'S TOUR. GAIN 20 CONFIDENCE POINTS.,20
2610 DATA THE VICE PRESIDENT'S KID AND HER 5th GRADE CLASS ARE HAVING A FIELD
2620 DATA TRIP AND OUT OF THE KINDNESS OF YOUR HEART (HA HA) YOU OFFER TO
2630 DATA GIVE THEM THE COOK'S TOUR. GAIN 20 CONFIDENCE POINTS.,20
2640 DATA THE MAILROOM MANAGER IS A REAL DUD ! HE CAN'T DO ANYTHING RIGHT.
2650 DATA THE REAL PROBLEM IS THAT YOU TAUGHT HIM EVERYTHING HE KNOWS !
2660 DATA LOSE 40 CONFIDENCE POINTS.,-40
2670 DATA NOW THAT SALES ARE UP AND PRODUCTION IS DOWN YOU SUGGEST ROBOTICS TO
2680 DATA HELP STREAMLINE. THE WORKERS ARE READY TO KILL YOU BUT THE PRESIDENT
2690 DATA LIKES YOUR HIGH TECH THINKING. GAIN 10 CONFIDENCE POINTS.,10
2700 DATA YOU'VE BEEN A LITTLE LESS THAN POPULAR WITH THE PLANT SUBORDINATES.
2710 DATA TO CHANGE THAT YOU ANNOUNCE A COMPANY PARTY. EVERYONE LOVES A BIG
2720 DATA PARTY (ESPECIALLY THE CHAIRMAN). GAIN 50 CONFIDENCE POINTS.,50
2730 DATA THE CHAIRMAN OF THE BOARD CAME IN TO YOUR OFFICE AND CAUGHT YOU
2740 DATA READING 'HOW TO SUCCEED IN BUSINESS WITHOUT REALLY TRYING'. BOY DO
2750 DATA YOU LIKE TO TAKE CHANCES ! LOSE 60 CONFIDENCE POINTS.,-60
2760 DATA A FRIEND AT ANOTHER COMPANY GAVE YOU A VERY INTERESTING BOOK TO READ
2770 DATA TITLED 'HOW TO SUCCEED IN BUSINESS WITHOUT REALLY TRYING'. THIS
2780 DATA JUST MIGHT SPEED THINGS UP A BIT. GAIN 90 CONFIDENCE POINTS.,90
2790 IF S=20 THEN GOTO 5130
2800 CP=CP+C:GOTO 4550
2810 REM ***** PRESIDENT SITUATIONS *****
2820 CLS
2830 PRINT "OK, You made it this far. By now you realize that your climb to
2840 PRINT"the top has been a function of sheer luck. You are tired of the
2850 PRINT"bad breaks, dishonest co-employees, and brown-nosers. You just
2860 PRINT"want to be CHAIRMAN of the BOARD !
2870 PRINT
2880 PRINT"The stockholders are holding a meeting to asses the value of the
2890 PRINT"current chairman. If they throw him out, you are the most likely
2900 PRINT"successor. They're not dumb, though. They want to look at your
2910 PRINT"performance record to see if you can 'cut it'.
2920 PRINT
2930 PRINT"They will base their votes on your total accumulated confidence
2940 PRINT"points from your mailroom days to the present. Yes, we've been
2950 PRINT"keeping score ! They will also look at the number of weeks it has
2960 PRINT"taken you to attain your position. This will tell them if you gained
2970 PRINT" the presidency by work or by 'ASSUMED SIMPLE SENIORITY' (ass).
2980 PRINT
2990 PRINT"If the stockholders find you unqualified, they will vote for your
3000 PRINT"demotion to give you more time to gain confidence and experience.
3010 PRINT
3020 PRINT"Oh, by the way... the board is may also be impressed by the number of
3030 PRINT"brownie points you have remaining. This shows them that you stayed out
3040 PRINT"out of trouble.
3050 PRINT
3060 INPUT "                                PRESS [RETURN] FOR THE VOTE ";V
3070 CLS
3080 VF=INT(TCP/W)*100+(TDP*10):VA=INT(10000-VF)
3090 FOR I=10 TO VF STEP 100
3100 PRINT " ******* PROMOTE ******
3110 PRINT " ";I
3120 FOR A=1 TO 10:NEXT A
3130 CLS
3140 IF I=10000 THEN GOTO 3160
3150 NEXT I
3160 PRINT "FINAL TALLY ................................."
3170 PRINT "                                   PROMOTE";VF;" DEMOTE";VA
3180 FOR A=1 TO 2000:NEXT A
3190 IF VF>VA THEN CLS:GOTO 4900
3200 PRINT "                            SORRY, BACK TO PLANT MANAGER !":R=3:S=0:FOR A=1 TO 1000:NEXT A:GOTO 690
3210 REM ***** SPECIAL COIN FLIP SITUATIONS ***
3220 SP=SP+1
3230 PRINT "                              'CALLED ON THE CARPET' #";SP
3240 PRINT
3250 IF SP=1 THEN GOTO 3340
3260 IF SP=2 THEN GOTO 3430
3270 IF SP=3 THEN GOTO 3560
3280 IF SP=4 THEN GOTO 3650
3290 IF SP=5 THEN GOTO 3750
3300 IF SP=6 THEN GOTO 3840
3310 IF SP>6 THEN GOTO 3930
3320 FOR B=1 TO 1000:NEXT B
3330 GOTO 690
3340 PRINT "YOUR WIFE JUST CALLED FOR YOU AT WORK. YOU'RE NOT THERE....NEITHER IS YOUR
3350 PRINT "SECRETARY ! "
3360 PRINT :PRINT "WHEN YOU GET HOME, WHAT WILL YOU TELL YOUR WIFE..........."
3370 PRINT
3380 PRINT " [1] IT WAS NOON WHEN YOU CALLED AND EVERYONE WAS AT LUNCH"
3390 PRINT " [2] OK, OK..... SO I'M IN LOVE WITH MY SECRETARY. SO WHAT ?!?"
3400 PRINT " [3] WE WERE AT A JEWELRY STORE LOOKING FOR A DIAMOND FOR YOU.
3410 PRINT " [4] NOTHING.....MY WIFE LIKES A LITTLE MYSTERY IN A MARRIAGE."
3420 GOTO 3960
3430 REM
3440 PRINT "RUMOR HAS IT THERE'S AN EMBEZZLEMENT SCHEME GOING DOWN. ONE OF YOUR
3450 PRINT "CO-WORKERS TOLD THE CHAIRMAN THAT YOU ARE INVOLVED. A MEETING HAS
3460 PRINT "BEEN CALLED AND YOU'RE THE GUEST OF HONOR.
3470 PRINT
3480 PRINT "WHAT WILL YOU TELL THEM AT THE MEETING ....................
3490 PRINT
3500 PRINT " [1] NOTHING. THERE'S ALWAYS THE FIFTH AMENDMENT, YOU KNOW.
3510 PRINT " [2] EVERYTHING - ABOUT AS MUCH AS A GRAPE KNOWS ABOUT IT.
3520 PRINT " [3] THAT I'VE BEEN FRAMED AND MY FEELINGS ARE HURT.....ALOT.
3530 PRINT " [4] I'LL CONFESS. MAYBE THEY'LL RESPECT MY HONESTY.
3540 PRINT
3550 GOTO 3960
3560 PRINT "THE CHAIRMAN IS IN A REAL BIND. HIS WIFE'S BIRTHDAY IS TOMORROW AND
3570 PRINT "HE'S ASKED YOU WHAT YOU THINK SHE WOULD LIKE.
3580 PRINT "WHAT WILL YOU SUGGEST ...
3590 PRINT
3600 PRINT " [1] FLOWERS. ALL WOMEN LOVE FLOWERS (AND THEY'RE CHEAP !).
3610 PRINT " [2] NOTHING.... I DON'T EVEN WANT TO GET INVOLVED !
3620 PRINT " [3] A DIAMOND NECKLACE. (CLICHE BUT EFFECTIVE !)
3630 PRINT " [4] A LIFE TIME MEMBERSHIP AT 'EATER'S ANONYMOUS' !
3640 GOTO 3960
3650 PRINT "YOU NARROWLY ESCAPED THE EMBEZZLEMENT CHARGE BY YOUR CO-WORKER, AND
3660 PRINT "NOW YOU'VE BEEN ACCUSED OF HARASSING HIM IN RETALIATION. A SPECIAL
3670 PRINT "HEARING HAS BEEN CONVENED TO HEAR YOUR SIDE.
3680 PRINT "WHAT WILL YOU TELL THE HEARING BOARD ...
3690 PRINT
3700 PRINT " [1] NOTHING..... BACK TO THE OLD FIFTH AMENDMENT !
3710 PRINT " [2] NOT TRUE ! YOU'D KILL BEFORE YOU'D HARASS ANYONE.
3720 PRINT " [3] NOT TRUE ! THE DEATH THREATS WERE TO HIS CHILDREN !
3730 PRINT " [4] OK, OK. BUT HE'S MEAN AND HE MADE ME CRY !
3740 GOTO 3960
3750 PRINT "BOY, ONE THING AFTER ANOTHER. THAT EMBEZZLING CO-WORKER TOLD THE
3760 PRINT "CHAIRMAN THAT HE FOUND A BOTTLE OF WHISKEY IN YOUR DESK DRAWER.
3770 PRINT "BACK TO THE OLD HEARING BOARD ! WHAT WILL YOU SAY THIS TIME ???
3780 PRINT
3790 PRINT " [1] HEY, WHAT'S HE DOING DRINKING IN 'MY' OFFICE ???
3800 PRINT " [2] MEDICINAL PURPOSES ONLY (HIC..)
3810 PRINT " [3] IT WAS A PRESENT FOR THE CHAIRMAN...YEAH...THAT'S IT.
3820 PRINT " [4] BOY... DO I NEED A DRINK !
3830 GOTO 3960
3840 PRINT "THE ACCOUNTING DEPARTMENT WANTS TO SEE YOU ABOUT THE MILEAGE ON
3850 PRINT "YOUR COMPANY CAR. I MEAN REALLY, 5000 MILES IN APRIL ? YOU BETTER
3860 PRINT "MAKE THIS A GOOD ONE !
3870 PRINT
3880 PRINT " [1] I HAVE A LONG COMMUTE.
3890 PRINT " [2] I TOOK A WRONG TURN AT THE SECOND LIGHT.
3900 PRINT " [3] THE CHAIRMAN WANTED CUBAN CIGARS !
3910 PRINT " [4] WELL, ITS 3000 MILES LESS THAN LAST MONTH !
3920 GOTO 3960
3930 REM A BOTTLE IS FOUND IN YOUR DESK
3940 REM AT A CONVENTION
3950 REM HIRE YOUR WHOLE FAMILY
3960 REM ***** SPECIAL SITUATION RESPONSE *****
3970 PRINT
3980 IF SP>6 THEN PRINT " ITS GOTTEN TO THE POINT THAT YOU DON'T EVEN KNOW WHAT
3990 IF SP>6 THEN PRINT " YOU'VE DONE. SOMEONE OUT THERE DOESN'T LIKE YOU !!!
4000 IF SP>6 THEN PRINT "               OH WELL, TAKE A WILD GUESS...
4010 PRINT
4020 INPUT "                          SELECT 1,2,3, OR 4 (and pray !) ", SR
4030 PRINT
4040 ZZ=INT(4*RND(1))+1:FOR A=1 TO 1000:NEXT A
4050 IF ZZ=SR THEN PRINT "                                  WHEW !"
4060 IF ZZ=SR THEN PRINT:PRINT TAB(20);"GAIN 100 CONFIDENCE POINTS !":CP=CP+100
4070 IF ZZ=SR THEN FOR A=1 TO 1000:NEXT A:GOTO 690
4080 PRINT
4090 PRINT "UH OH...... I DON'T THINK THAT'S GOING TO WORK .....
4100 IF TDP<1 THEN PRINT"OOOPS.... NO BROWNIE POINTS TO HELP YOU EITHER ! LOSE 100 CONFIDENCE POINTS ":CP=CP-100:FOR A=1 TO 2000:NEXT A:GOTO 690
4110 PRINT "YOU HAVE";TDP;"BROWNIE POINTS. HOW MANY DO YOU WANT TO USE ?"
4120 INPUT " ";DPU
4130 IF DPU>TDP THEN PRINT "YOU DON'T HAVE THAT MANY BROWNIE POINTS !":GOTO 4110
4140 ZZ=INT(100*RND(1))+1:FOR A=1 TO 1000:NEXT A
4150 IF ZZ<25 AND DPU>0 AND DPU<4 THEN GOTO 4210
4160 IF ZZ<50 AND DPU>3 AND DPU<9 THEN GOTO 4210
4170 IF ZZ<75 AND DPU>8 AND DPU<13 THEN GOTO 4210
4180 IF ZZ<101 AND DPU>12 THEN GOTO 4210
4190 PRINT " SORRY......";DPU;"BROWNIE POINTS WEREN'T ENOUGH THIS TIME. LOSE 50 CONFIDENCE POINTS.":TDP=TDP-DPU:FOR A=1 TO 2000:NEXT A:CP=CP-50: GOTO 690
4200 GOTO 690
4210 REM ***** GOT OUT OF THE SPECIAL SITUATION *****
4220 PRINT:PRINT
4230 PRINT "                     WHEW ! NOW THAT WAS A LUCKY BREAK !
4240 TDP=TDP-DPU:CP=CP+100
4250 PRINT
4260 PRINT "                        GAIN 100 CONFIDENCE POINTS !"
4270 FOR A=1 TO 3000:NEXT A:GOTO 690
4280 REM ***** ASKED FOR A PROMOTION *****
4290 PR=INT(100*RND(1))+1
4300 IF CPU>0 AND CPU<21 AND PR<10 THEN R=R+1:CP=CP-CPU:GOTO 4450
4310 IF CPU>19 AND CPU<41 AND PR<20 THEN R=R+1:CP=CP-CPU:GOTO 4450
4320 IF CPU>40 AND CPU<61 AND PR<30 THEN R=R+1:CP=CP-CPU:GOTO 4450
4330 IF CPU>60 AND CPU<81 AND PR<40 THEN R=R+1:CP=CP-CPU:GOTO 4450
4340 IF CPU>80 AND CPU<101 AND PR<50 THEN R=R+1:CP=CP-CPU:GOTO 4450
4350 IF CPU>100 AND CPU<121 AND PR<60 THEN R=R+1:CP=CP-CPU:GOTO 4450
4360 IF CPU>120 AND CPU<141 AND PR<70 THEN R=R+1:CP=CP-CPU:GOTO 4450
4370 IF CPU>140 AND CPU<161 AND PR<80 THEN R=R+1:CP=CP-CPU:GOTO 4450
4380 IF CPU>160 AND CPU<181 AND PR<90 THEN R=R+1:CP=CP-CPU:GOTO 4450
4390 IF CPU>180 AND PR<101 THEN R=R+1:CP=CP-CPU:GOTO 4450
4400 PRINT
4410 PRINT "           WELL..... YOU TRIED ..... AND WELL.... MAYBE NEXT TIME !"
4420 FOR A=1 TO 3000:NEXT A
4430 CP=CP-CPU
4440 GOTO 690
4450 REM ***** YOU GOT THE PROMOTION YOU ASKED FOR *****
4460 FOR A=1 TO 1000:NEXT A
4470 CLS
4475 PRINT:PRINT:PRINT:PRINT:PRINT
4480 FOR A=1 TO 79:PRINT CHR$(2);:NEXT A
4490 PRINT
4500 PRINT "                      Y O U          G O T           I T ! ! ! !
4501 PRINT
4505 FOR A=1 TO 79:PRINT CHR$(2);:NEXT A
4510 PRINT:PRINT:PRINT
4520 FOR A=1 TO 1300:NEXT A
4530 S=0:CP=0
4540 GOTO 690
4550 REM ******************************************************************* **
4560 S=S+1:W=W+1
4570 PRINT TAB(27);CHR$(177);" CHAIRMAN OF THE BOARD ";TAB(52);CHR$(177)
4580 PRINT:PRINT:PRINT:PRINT
4590 FOR A=1 TO 79:PRINT CHR$(223);:NEXT A
4600 PRINT
4610 DP=C*0.1
4620 TDP=TDP+DP
4630 PRINT " RANK                     POINTS
4640 PRINT
4650 IF R=1 THEN RANK$="MAILROOM CLERK"
4660 IF R=2 THEN RANK$="MAILROOM MANAGER"
4670 IF R=3 THEN RANK$="PLANT MANAGER"
4680 IF R=5 THEN GOTO 4900
4690 PRINT RANK$;TAB(26);"BROWNIE PTS = ";TDP;TAB(50);"CONFIDENCE PTS = ";CP
4700 PRINT:PRINT
4710 FOR A=1 TO 79:PRINT CHR$(248);:NEXT A
4720 PRINT TAB(20);"SITUATION #";S;TAB(46);"WEEK #";W
4730 PRINT:PRINT
4740 PRINT " ";S$
4750 PRINT " ";S1$
4760 PRINT " ";S2$
4770 PRINT
4780 FOR A=1 TO 79:PRINT CHR$(223);:NEXT A
4790 TCP=TCP+CP
4800 IF Z=10 THEN R=2:CP=0:INPUT "          PRESS [RETURN] TO CLIMB UP THE CORPORATE LADDER !!!!! ",ZZ:S=0:GOTO 690
4810 IF CP>0 THEN INPUT "             WOULD YOU LIKE TO ASK FOR A PROMOTION (Y or N) ";P$
4820 IF CP<1 THEN INPUT "                   WANT TO TAKE THE 'BIG RISK' (Y or N) ";BR$:IF BR$="Y" THEN GOTO 5510
4830 IF CP<1 AND BR$="N" THEN GOTO 690
4840 IF P$="N" OR P$="NO" THEN GOTO 690
4850 INPUT "                     CONFIDENCE PTS TO USE = ";CPU
4860 IF CPU<1 THEN PRINT " TRYING TO CHEAT THE COMPUTER, HUH ? LOSE 20 CONFIDENCE POINTS !":CP=CP-20:FOR A=1 TO 3000:NEXT A:GOTO 690
4870 IF CP<CPU THEN PRINT "YOU DON'T HAVE THAT MANY POINTS ! LOSE 10 CONFIDENCE PTS FOR LOOKING FOOLISH !":CP=CP-10:FOR A=1 TO 3000:NEXT A:GOTO 690
4880 FOR A=1 TO 3000:NEXT A:
4890 GOTO 4280
4900 REM ******* CHAIRMAN OF THE BOARD !!! ********
4910 CLS
4920 CLS
4930 COB=1
4940 FOR A=1 TO 1840:PRINT CHR$(177);:NEXT A
4950 IF W<=10 THEN RATE$="THE ABSOLUTE WIZARD BUSINESSMAN"
4960 IF W>10 AND W<16 THEN RATE$="SUPER CHAIRMAN"
4970 IF W>15 AND W<21 THEN RATE$="A TRUE BIG SHOT"
4980 IF W>20 AND W<26 THEN RATE$="BUSINESS PRO"
4990 IF W>25 AND W<36 THEN RATE$="QUICK CLIMBER"
5000 IF W>35 AND W<56 THEN RATE$="DECISION MAKER"
5010 IF W>55 AND W<76 THEN RATE$="NOVICE CLIMBER"
5020 IF W>75 THEN RATE$="RUNG DUNG"
5030 PRINT
5040 PRINT "                                 YOU TOOK";W;"WEEKS"
5050 PRINT
5060 PRINT "                     YOU HAVE ATTAINED THE TITLE OF ";RATE$
5070 PRINT
5080 REM ***** TRY AGAIN ? *****
5090 FOR A=1 TO 1000:NEXT A
5100 INPUT "                       WELL DONE, SIR. TRY AGAIN (Y or N) ";TA$
5110 IF TA$="Y" THEN GOTO 10
5120 IF TA$="N" THEN LOAD"B:MENU.BAS",R
5130 REM ***** TO MUCH TIME HAS PAST ROUTINE *****
5140 PRINT " SINCE LIFE IS SOMETIMES A 'CRAP SHOOT' AND BY THE LOOKS OF THINGS
5150 PRINT " YOU'VE BEEN ROLLING SNAKE EYES, THE CORPORATION HAS DECIDED TO
5160 PRINT " TO GIVE YOU A CHANCE TO GET THINGS MOVING OR FIRE YOU FOR EITHER
5170 PRINT " LACK OF GUTS (NOT ASKING FOR A PROMOTION) OR LACK OF BRAINS
5180 PRINT " (MAKING TOO MANY DUMB MISTAKES). YOU MAY ROLL THE PROVERBIAL
5190 PRINT " DICE, AND SHOULD YOU ROLL A 7 OR 11 COMBINATION, YOU'LL AUTOMATICALLY
5200 PRINT " BE PROMOTED TO THE NEXT RANK. ROLL DOUBLE SIXES AND YOU WILL BE
5210 PRINT " THE NEW CHAIRMAN OF THE BOARD !!!!. GOOD LUCK.............
5220 PRINT:PRINT:PRINT
5230 INPUT " PRESS [RETURN] TO ROLL FOR A PROMOTION OR TERMINATION ";Q
5240 J=INT(6*RND(1))+1:K=INT(6*RND(1))+1
5250 PRINT:PRINT
5260 CLS
5270 PRINT TAB(35);J;TAB(45);K
5280 FOR A=1 TO 1000:NEXT A
5290 IF J+K=11 THEN R=R+1:CP=O:GOTO 5410
5300 IF J+K=7 THEN R=R+1:CP=0:GOTO 5410
5310 IF J=6 AND K=6 THEN GOTO 4900
5320 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
5330 PRINT " UH............ LADY LUCK IS NOT EXACTLY YOUR BEST FRIEND !"
5340 PRINT
5350 PRINT "            YOU MAY START AT THE BOTTOM AGAIN OR LEAVE YHE COMPANY
5360 PRINT " ALTOGETHER....................sorry..........."
5370 PRINT
5380 INPUT " PRESS [RETURN] TO CLEAN OUT YOUR DESK OR [P] TO TRY AGAIN ";PLAY$
5390 IF PLAY$="P" THEN GOTO 10 ELSE CLS:LOAD"B:MENU.BAS",R
5400 CLS
5410 REM ***** YOU ROLLED A SEVEN OR ELEVEN *****
5420 FOR A=1 TO 1000:NEXT A
5430 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
5440 FOR A=1 TO 160:PRINT CHR$(177);:NEXT A
5450 PRINT:PRINT:PRINT
5460 PRINT " YOU LUCKY STIFF, YOU !!!
5470 PRINT
5480 FOR A=1 TO 3000:NEXT A
5490 S=0
5500 GOTO 690
5510 REM ***** BIG RISK *****
5520 PRINT
5530 PRINT "    PLEASE STAND BY - THE 'BIG SHOTS' ARE CONSIDERING YOUR WORTH........"
5540 FOR A=1 TO 3000:NEXT A
5550 ZZZ=INT(100*RND(1))+1
5560 IF ZZZ<25 THEN GOTO 5590
5570 PRINT "                     WELL........ YOU PULLED IT OFF !!!
5580 FOR A=1 TO 1000:NEXT A:TDP=0:CP=0:GOTO 690
5590 PRINT " THE CHAIRMAN OF THE BOARD DOESN'T SCRAPE BARRELS":FOR A=1 TO 1000:NEXT A
5600 LOCATE 23,5:INPUT " WOULD YOU CARE TO BE REINCARNATED AS A MAILROOM CLERK AGAIN ";TA$
5610 IF TA$="Y" THEN GOTO 10
5620 LOAD"B:MENU.BAS",R

COUNTING.BAS

10 REM  BY MARK A. SWANSON  5/1/83  BELLEVUE, WA.
20 ' DOC SWAN LEARNING SERIES
30 CLS
40 PRINT:PRINT:PRINT
50 FOR I=1 TO 14
60 READ L$
70 PRINT TAB(39);I;:PRINT L$
80 FOR S=1 TO 200:NEXT S
90 NEXT I
100 DATA C,O,U,N,T,I,N,G,,F,U,N,,!
110 PRINT:PRINT:PRINT
120 PRINT TAB(32);"by  Mark A. Swanson"
130 FOR P=1 TO 300:NEXT P
140 FOR B=1 TO 28:PRINT:NEXT B
150 CLS
160 PRINT "                 WELCOME !"
170 PRINT
180 PRINT "                 THIS IS A PROGRAM THAT WILL HELP YOU COUNT HIGHER"
190 PRINT "                 AND FASTER THAN EVER !
200 PRINT:PRINT
210 PRINT "                 I'LL ASK FOUR QUESTIONS BEFORE EACH ROUND:"
220 PRINT
230 PRINT "           1. UPPER LIMIT ?   TYPE IN HOW HIGH YOU'LD LIKE TO COUNT.
240 PRINT
250 PRINT "           2. COUNT BY ?      WOULD YOU LIKE TO COUNT BY 1's, 2's"
260 PRINT "                              4's, 10's, 6.03452's, etc.
270 PRINT "                              SIMPLY TYPE 1 or 2 or 4 or 10  etc...
280 PRINT
290 PRINT "           3. SPEED ?         HOW FAST DO YOU WANT TO COUNT ?  TYPE
300 PRINT "                              IN A NUMBER (1 to 5).  1 IS SLOWEST,
310 PRINT "                              5 IS FASTEST.
320 PRINT
330 PRINT "           4. DIRECTION ?     WOULD YOU LIKE TO COUNT FORWARD OR
340 PRINT "                              BACKWARD ? PRESS  F or B.
350 PRINT:PRINT
360 INPUT "                           PRESS [RETURN] TO BEGIN ";I
370 CLS
380 INPUT "UPPER LIMIT ";X
390 INPUT "COUNT BY:  (1's  2's  3's  10's  etc.) ";Y
400 INPUT "SPEED:  (SLOWEST - 1  2  3  4  5 - FASTEST) ";Z
410 INPUT "DIRECTION: F or B ";D$
420 IF Z=1 THEN Z=1000
430 IF Z=2 THEN Z=750
440 IF Z=3 THEN Z=500
450 IF Z=4 THEN Z=250
460 IF Z=5 THEN Z=100
470 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
480 FOR T=1 TO 300:NEXT T
490 IF D$="F" THEN GOSUB 580
500 IF D$="B" THEN GOSUB 630
510 FOR C=1 TO 500:NEXT C
520 PRINT:PRINT:PRINT:PRINT
530 PRINT "      AGAIN ?   [S] same as before   [RETURN] different   [Q] quit    ":X$=INPUT$(1)
540 CLS
550 IF X$="Q" THEN PRINT TAB(32);"SEE YOU SOON !":LOAD"B:MENU",R
560 IF X$="S" THEN GOTO 490
570 GOTO 370
580 FOR I=Y TO X STEP Y
590 PRINT I;
600 FOR J=1 TO Z:NEXT J
610 NEXT I
620 RETURN
630 FOR I=X TO Y STEP-Y
640 PRINT I;
650 FOR J=1 TO Z:NEXT J
660 NEXT I
670 RETURN

BASIC.BAS

10 REM 19:04:16  2/24/1985
20 CLS
30 FOR I =1 TO 33
60 LOCATE 5,I:PRINT" A BASIC TUTORIAL";
70 FOR D =1 TO 10 :NEXT D
80 NEXT I
90 PRINT TAB(38);"FOR THE"
100 PRINT TAB(33);"LANGUAGE OF BASIC
110 PRINT:PRINT:PRINT
120 FOR A =1 TO 39
130 PRINT "<>";
140 NEXT A
150 PRINT:PRINT:PRINT:PRINT
160 PRINT "                          A SELF-PACED LEARNING PROGRAM
170 PRINT
180 PRINT "                               by  Mark A. Swanson
190 PRINT "
200 PRINT
210 PRINT:PRINT:PRINT
220 PRINT "************************  DOC SWAN Learning Series (sm)  *********************"
230 FOR I=1 TO 2000 :NEXT I
240 CLS
250 PRINT "WELCOME !!!
260 PRINT
270 PRINT "         You have just openned the door to hours of fun, creativity,
280 PRINT "         and productivity by choosing to learn the powerfull BASIC
290 PRINT "         computer language.
300 PRINT
310 PRINT "         Many people are intimidated by new languages and so is the
320 PRINT "         case with computer languages.  What they don't realize is
330 PRINT "         that BASIC is designed to be just that - basic.
340 PRINT
350 PRINT "         You'll find that using BASIC is even more straight forward
360 PRINT "         than the English we use every day.  You'll use simple words
370 PRINT "         with which to tell the computer what you want it to do.
380 PRINT
390 PRINT "         When you have finished this 'mini-course', and have a few
400 PRINT "         hours of practice under your belt, you'll be programming
410 PRINT "         up a storm.  Here are a few tips to help the learning process..."
420 PRINT
430 PRINT "         1.  Read each section carefully to insure comprehension.
440 PRINT "         2.  Practice after each session.
450 PRINT "         3.  Relax, take your time, and ENJOY !
460 PRINT:PRINT
470 INPUT  "          PRESS THE  [RETURN]  KEY FOR THE TUTORIAL MAIN MENU ",Z$
480 LOAD"B:BTMENU.BAS",R

BTMENU.BAS

10 ' MARK A. SWANSON         19:35:44  2/27/1985
20 CLS
30 PRINT "           ";:FOR A=1 TO 58:PRINT CHR$(176);:NEXT A
40 PRINT "           ░               THE BASIC TUTORIAL MENU                  ░
50 PRINT "           ░                                                        ░
60 PRINT "           ░                                                        ░
70 PRINT "           ░   [1]  BASIC GUIDE                [6]  FOR / NEXT      ░
80 PRINT "           ░                                                        ░
90 PRINT "           ░   [2]  PRINT                      [7]  INPUT           ░
100 PRINT "           ░                                                        ░
110 PRINT "           ░   [3]  MODES OF OPERATION         [8]  IF / THEN       ░
120 PRINT "           ░                                                        ░
130 PRINT "           ░   [4]  GOTO                       [9]  READ / DATA     ░
140 PRINT "           ░                                                        ░
150 PRINT "           ░   [5]  LET                       [10]  GOSUB / RETURN  ░
160 PRINT "           ░                                                        ░
170 PRINT "           ░                                                        ░
180 PRINT "           ░                       Q   QUIT                         ░
190 PRINT "           ";:FOR A=1 TO 58:PRINT CHR$(176);:NEXT A
200 PRINT:PRINT:PRINT:PRINT
210 INPUT "               PRESS THE NUMBER FOR THE LESSON YOU WOULD LIKE ";Z$
220 IF Z$="1" THEN LOAD"B:GUIDE.BAS",R
230 IF Z$="2" THEN LOAD"B:PRINT.BAS",R
240 IF Z$="3" THEN LOAD"B:MODES.BAS",R
250 IF Z$="4" THEN LOAD"B:GOTO.BAS",R
260 IF Z$="5" THEN LOAD"B:LET.BAS",R
270 IF Z$="6" THEN LOAD"B:FORNEXT.BAS",R
280 IF Z$="7" THEN LOAD"B:INPUT.BAS",R
290 IF Z$="8" THEN LOAD"B:IFTHEN.BAS",R
300 IF Z$="9" THEN LOAD"B:READDATA.BAS",R
310 IF Z$="10" THEN LOAD"B:GR.BAS",R
320 IF Z$="Q" THEN LOAD"B:MENU.BAS",R
330 PRINT "INVALID RESPONSE ..............> TRY AGAIN ":GOTO 210

CHAIRMAN.BAS

10 CLS
20 CLS
30 COB=0
40 FOR A=1 TO 30:PRINT:NEXT A
50 PRINT TAB(28);"  CHAIRMAN OF THE BOARD
60 FOR A=1 TO 4
70 CP=0:CPU=0:R=1:TDP=0:S=0:W=0:DP=0
80 PRINT TAB(30);CHR$(177);TAB(50);CHR$(177)
90 PRINT TAB(30);CHR$(177);:FOR L=1 TO 20:PRINT CHR$(177);:NEXT L:PRINT
100 RANDOMIZE 2000
110 PRINT TAB(30);CHR$(177);TAB(50);CHR$(177)
120 PRINT TAB(30);CHR$(177);TAB(50);CHR$(177)
130 NEXT A
140 PRINT
150 IF COB=1 THEN GOTO 4950
160 FOR A=1 TO 500:NEXT A
170 PRINT "                            A GAME OF UPS AND DOWNS
180 PRINT "                      ON A VERY SLIPPERY CORPORATE LADDER !
190 PRINT
200 PRINT "                              by Mark A. Swanson
210 PRINT "                                copyright 1983
220 CP=0:DP=0
230 R=1
240 FOR A=1 TO 2000:NEXT A
250 CLS
260 PRINT "OBJECT OF THE GAME:
270 PRINT "To become the Chairman of the Board with the most confidence in the
280 PRINT "fewest turns.
290 PRINT
300 PRINT "HOW TO PLAY:
310 PRINT "You will be presented with various corporate type situations to
320 PRINT "which you will respond with [Y]es or [N]o or points.
330 PRINT
340 PRINT "POINTS:
350 PRINT "* Confidence Points - Increased or decreased at the end of each
360 PRINT "situation (week). Used when asking for a promotion.
370 PRINT "* Brownie Points - Increased or decreased in correlation to Confidence
380 PRINT "Points. Used for getting out of 'special' situations.
390 PRINT
400 PRINT "OPTIONS:
410 PRINT "* Ask For A Promotion - If Confidence points are above 0, you may
420 PRINT "ask for a promotion at the end of the week. The probability of
430 PRINT "getting it increases as you acquire more Confidence Points.200
440 PRINT "points will guarantee a promotion.
450 PRINT
460 PRINT "                        Press [RETURN] to continue "
470 A=1:K$=INKEY$:WHILE K$="":A=A+1:K$=INKEY$:WEND
480 CLS
490 PRINT
500 PRINT "* The Big Risk - Only an option if your Confidence Points fall below 0."
510 PRINT "You may ask the 'big wigs' to reinstate neutral status....reset
520 PRINT "confidence points back to 0 from the deficit. If you are not
530 PRINT "reinstated you are fired altogether. Use only when Confidence
540 PRINT "Points are way into the negative or you are closing in on 20
550 PRINT "situations without a promotion and don't have enough points to
560 PRINT "get one anyway.
570 PRINT
580 PRINT "* Ranks and Rungs on the Corporate Ladder:
590 PRINT
600 PRINT "1 Mailroom Clerk
610 PRINT "2 Mailroom Manager
620 PRINT "3 Plant Manager
630 PRINT "4 President
640 PRINT "5 CHAIRMAN of the BOARD !
650 PRINT
660 PRINT "That's all I'm going to tell you. The rest you'll find out.
670 PRINT:PRINT:PRINT
680 INPUT "                          Press [RETURN] to begin ";Z
690 CLS
700 RANDOMIZE A
710 IF S>20 THEN GOTO 5130
720 RESTORE
730 X=1
740 Z=INT(62*RND(1))+1
750 IF R=1 AND Z<23 THEN GOTO 800
760 IF R=2 AND Z>19 AND Z<43 THEN GOTO 1480
770 IF R=3 AND Z>39 AND Z<63 THEN GOTO 2150
780 IF R=4 THEN GOTO 2810
790 GOTO 740
800 REM ***** MAILROOM CLERK SITUATIONS *****
810 DATA A,B,C,0
820 IF Z>20 THEN GOTO 3210
830 FOR A=1 TO Z
840 READ S$,S1$,S2$,C:NEXT A
850 READ S$,S1$,S2$,C
860 DATA WHILE BEING CLUMSY AT THE AUTOMATIC LETTER OPENER
870 DATA YOU OPENED YOUR FINGER INSTEAD OF THE LETTER. TAKE THE DAY OFF
880 DATA WITHOUT PAY ! LOSE 20 CONFIDENCE POINTS.,-20
890 DATA YOUR SUPERVISOR JUST FOUND OUT THAT YOU HAVEN'T BEEN TRAINED ON THE
900 DATA AUTOMATIC LETTER OPENER. YOU ARE ORDERED TO USE YOUR LUNCH HOUR TO
910 DATA LEARN. LOSE 5 CONFIDENCE POINTS.,-5
920 DATA THE DAILY MAIL TRUCK IS SIX HOURS LATE AND SINCE YOU ARE A MERE SLAVE
930 DATA THE ENTIRE BLAME FOR THE POST OFFICE'S TARDINESS IS PUT ON YOU. LOSE
940 DATA 15 CONFIDENCE POINTS.,-15
950 DATA YOU SPILLED A CUP OF COFFEE ON A LETTER TO A BIG SHOT IN THE COMPANY
960 DATA AND WHEN WIPING IT OFF YOU ALSO WIPED OFF THE BIG SHOT'S NAME.
970 DATA BOY WAS THAT DUMB ! LOSE 25 CONFIDENCE POINTS.,-25
980 DATA THE CORPORATE OFFICE IS SENDING A RECORD AMOUNT OF DIVIDENDS TO
990 DATA STOCKHOLDERS. TOO BAD YOU MIXED UP THE ZIP CODE SORTING ! ALMOST
1000 DATA ALL OF THE MAIL CAME BACK. LOSE 40 CONFIDENCE POINTS.,-40
1010 DATA THE MAILROOM SUPERVISOR CAME IN EARLY AND FOUND YOU HARD AT WORK !
1020 DATA BELIEVE IT OR NOT HE DIDN'T REALIZE THAT YOU WERE TRYING TO FIX THE
1030 DATA NEW LETTER OPENER YOU BROKE YESTERDAY. GAIN 40 CONFIDENCE POINTS.,40
1040 DATA THERE IS ONLY ONE THING IN THE WORLD BETTER THAN A DAY OFF.......
1050 DATA THAT'S TELLING YOUR BOSS THAT HE IS RUNNING THE DEPARTMENT ALL WRONG
1060 DATA AND HE THANKS YOU FOR YOUR INPUT. GAIN 50 CONFIDENCE POINTS !,50
1070 DATA WELL..... A RED LETTER FRIDAY ! ALL OF THE MAIL WENT OUT ON TIME AND
1080 DATA YOU GOT THE INCOMING MAIL TO THE RIGHT EXECUTIVES - ALL WEEK !
1090 DATA GAIN 50 CONFIDENCE POINTS !!!,50
1100 DATA THE TEMPERMENTAL LETTER OPENER HAS BEEN REPLACED WITH A NEW ONE.
1110 DATA IT DOES A GREAT JOB AND IS OPENING LETTERS AT RECORD SPEED ! (LET'S
1120 DATA HOPE IT LASTS THIS TIME !). GAIN 20 CONFIDENCE POINTS.,20
1130 DATA THE MAILROOM SUPERVISOR JUST GOT A PROMOTION ! HE HAS THE CRAZY IDEA
1140 DATA THAT YOUR GOOD (?) WORK HELPED HIM GET IT. YOU GUESSED IT.........
1150 DATA YOU'VE JUST BEEN PROMOTED TO HIS JOB !!!,0
1160 DATA YOUR SPEED AND EFFICIENCY HAS GONE UNNOTICED UNTIL NOW. YOU HAVE
1170 DATA JUST BEEN VOTED 'THE MOST IMPROVED MAILROOM CLERK OF THE MONTH' !
1180 DATA GAIN 40 CONFIDENCE POINTS.,40
1190 DATA WHILE ON YOUR BREAK YOU PICKED THE LOCK TO THE EXECUTIVE WASHROOM (TO
1200 DATA SEE HOW THE 'BIG SHOTS' LIVE). WHILE IN THE 'EXECUTIVE' STALL YOU
1210 DATA OVERHEARD TALK OF UPCOMING PROMOTIONS ! GAIN 30 CONFIDENCE POINTS.,30
1220 DATA YOU JUST GOT A RAISE ! YOU CAN NOW ENROLL IN THOSE NIGHT CLASSES
1230 DATA YOU'VE BEEN UNABLE TO AFFORD. SOON THE ENGLISH LANGUAGE WON'T BE
1240 DATA YOUR BIGGEST BARRIER TO SUCCESS. GAIN 50 CONFIDENCE POINTS !,50
1250 DATA A NEW COMPUTER HAS JUST BEEN INSTALLED IN THE MAILROOM. CONSEQUENTLY
1260 DATA THE MAIL IS BEING ROUTED AT THREE TIMES THE NORMAL RATE. THE CHAIRMAN
1270 DATA OF THE BOARD IS VERY PLEASED ! GAIN 20 CONFIDENCE POINTS.,20
1280 DATA YOUR WIFE DIDN'T KNOW THAT IT IS AGAINST COMPANY POLICY FOR NON
1290 DATA EMPLOYEES TO BE IN THE MAILROOM WHEN SHE VISITED YOU TODAY. IT'S A
1300 DATA GOOD THING THE BOSS HAD THE DAY OFF ! GAIN 10 CONFIDENCE POINTS., 10
1310 DATA YOU JUST SAW ONE OF YOUR CO-WORKERS OPEN AN 'OUT GOING' LETTER.
1320 DATA HE STEALS A RETIREE'S PENSION CHECK AND STASHES IT IN HIS POCKET. YOU
1330 DATA TURN HIM IN. HE'S FIRED AND YOU GAIN 50 CONFIDENCE POINTS !,50
1340 DATA OK.... SO YOU'RE A WORK-AHOLIC ! YOUR WIFE IS THREATENING DIVORCE ON
1350 DATA GROUNDS OF NEGLIGENCE AND YOUR KIDS CONFUSE YOU WITH THE MILKMAN !
1360 DATA YOUR BOSS LOVES YOUR 6am-7pm WORK SCHEDULE. GAIN 20 POINTS.,20
1370 DATA THE ZIP CODE SORTING SYSTEM COULD STAND SOME IMPROVEMENTS AND YOU
1380 DATA PROPOSE SOME VERY INNOVATIVE IDEAS FOR STREAMLINING THE OPERATION.
1390 DATA YOUR CREATIVE SUGGESTIONS ARE APPRECIATED. GAIN 10 CONFIDENCE PTS.,20
1400 DATA GLAD TO HERE YOU HAD A WONDERFUL WEEKEND - COMPLETE WITH A MONDAY
1410 DATA MORNING HANGOVER. YOU 'DOWN' A COUPLE OF ASPIRIN AND SLITHER IN TO
1420 DATA THE MAIL ROOM - 3 HOURS LATE ! LOSE 20 CONFIDENCE POINTS.,-20
1430 DATA A GIRL SCOUT CAME INTO THE MAILROOM SELLING COOKIES. YOU IMMEDIATELY
1440 DATA SCREAM AT HER FOR BEING IN AN UNAUTHORIZED AREA AND THROW HER OUT.
1450 DATA TOO BAD SHE IS THE VICE PRESIDENT'S NIECE ! LOSE 40 CONFIDENCE PTS,-40
1460 IF S=20 THEN GOTO 5130
1470 CP=CP+C:GOTO 4550
1480 REM ***** MAILROOM MANAGER SITUATIONS *****
1490 IF Z>39 THEN GOTO 3210
1500 READ S$,S1$,S2$,C
1510 FOR A=1 TO Z:READ S$,S1$,S2$,C:NEXT A
1520 READ S$,S1$,S2$,C
1530 DATA YOU HAVE JUST HIRED A NEW MAILROOM CLERK. HE'S BRIGHT AND CREATIVE.
1540 DATA THERE IS ONLY ONE PROBLEM - HE GETS SO BORED AT WORK THAT HE FALLS
1550 DATA ASLEEP ON THE JOB. YOU HAVE TO TAKE UP THE SLACK. LOSE 10 POINTS.,-10
1560 DATA YOU DECIDED TO ENTER THE FOOTBALL POOL WITH THE OTHER MANAGERS IN THE
1570 DATA COMPANY. YOU WON ! TOO BAD THE OTHER MANAGERS ARE VERY POOR LOSERS.
1580 DATA THE PLANT MANAGER - YOUR BOSS - IS ONE THEM ! LOSE 40 POINTS.,-40
1590 DATA SOMEONE'S CAR IS IN YOUR PARKING SPOT. YOU ARE INFURIATED AND CALL A
1600 DATA TOW TRUCK. ONE OF THE MAILROOM CLERKS ASKS WHY THE PRESIDENT'S CAR
1610 DATA IS BEING TOWED AWAY. LOSE 70 CONFIDENCE POINTS.,-70
1620 DATA THE AUTOMATIC LETTER OPENER IS BECOMING A REAL PAIN. YOU DECIDED TO
1630 DATA ORDER A NEW ONE AND SEND THE OLD ONE BACK IMMEDIATELY. THE COMPANY
1640 DATA FEELS BAD ABOUT THE LAST ONE - THIS ONE'S FREE !. GAIN 40 POINTS.,40
1650 DATA THE MAILROOM CLERKS ARE THREATENING TO QUIT IF THEY DON'T GET A RAISE
1660 DATA REAL SOON. YOU DECIDE TO CALL THEIR BLUFF. THEY WEREN'T BLUFFING.
1670 DATA IT'S NOT EASY DOING THE WORK OF 5 PEOPLE ! LOSE 30 CONFIDENCE PTS,-30
1680 DATA THE PLANT MANAGER ASKED YOU PLAY GOLF THIS SATURDAY. WOW ! WHAT A
1690 DATA CHANCE TO BUTTER HIM UP. YOU LET HIM WIN BY A MILE. TOO BAD HE
1700 DATA HATES POOR GOLFERS. LOSE 40 CONFIDENCE POINTS.,-40
1710 DATA THE MORALE IN THE MAILROOM IS WORSENING. THE CLERKS RESENT YOUR NEW
1720 DATA PROMOTION AND ARE MAKING YOUR LIFE MISERABLE BY SENDING YOUR MEMOS
1730 DATA BACK MARKED 'ADDRESS UNKNOWN'. LOSE 20 CONFIDENCE POINTS.,-20
1740 DATA YOU'VE BEEN ELECTED CHAIRMAN OF THE COMPANY BLOOD DRIVE AND YOU WANT
1750 DATA YOU'RE DEPARTMENT TO DONATE THE MOST. 10 BRIBES AND 10 QUARTS LATER
1760 DATA YOU WORKERS ARE PASSED OUT ON THE MAILROOM FLOOR. LOSE 30 POINTS.,-30
1770 DATA THE PLANT MANAGER HAS SURVEYED THE EFFICIENCY OF ALL THE COMPANY'S
1780 DATA MAILROOMS. YOURS IS THE BEST ! THERE IS NO ACCOUNTING FOR TASTE.
1790 DATA GAIN 80 CONFIDENCE POINTS !,80
1800 DATA THE MORALE IN THE MAILROOM HAS BEEN GRADUALLY IMPROVING EVER SINCE
1810 DATA YOU GAVE YOUR CLERKS AN EXTRA 15 MINUTES FOR LUNCH. THE THREATS HAVE
1820 DATA EVEN STOPPED ! GAIN 50 CONFIDENCE POINTS.,50
1830 DATA YOU CATCH A MAILROOM CLERK HIDING IN THE EXECUTIVE WASHROOM STALL.
1840 DATA UPPER MANAGEMENT IS PLEASED THAT YOU'VE PUT A STOP TO PROMOTION INFO
1850 DATA 'LEAKS' BY SPIES. GAIN 40 CONFIDENCE POINTS.,40
1860 DATA YOU BUMPED INTO THE VICE PRESIDENT WHILE ON HIS WAY TO MEET WITH THE
1870 DATA CHAIRMAN AFTER A 3 MARTINI AND ONION BURGER LUNCH. YOU OFFER HIM A
1880 DATA BREATH MINT. HE IS VERY GRATEFUL ! GAIN 50 CONFIDENCE POINTS.,50
1890 DATA IT'S A BEAUTIFUL DAY ! THE SUN IS SHINING AND EVERYONE IS IN A GREAT
1900 DATA MOOD - INCLUDING THE PRESIDENT - WHO FOR NO REAL SANE REASON SAID
1910 DATA THAT HE LIKED YOUR NEW SOCKS. GAIN 10 CONFIDENCE POINTS.,10
1920 DATA A LUCKY BREAK - JUST WHEN THE PLANT MANAGER WAS THINKING THAT ALL
1930 DATA YOU DO IS SIT AROUND AND DO NOTHING.... YOU GET TENDONITIS. YOU MUST
1940 DATA BE WORKING HARDER THAN THEY THOUGHT ! GAIN 30 CONFIDENCE POINTS.,30
1950 DATA A TON OF MAIL CAME IN AND HALF OF YOUR CREW CALLED IN SICK. DESPITE
1960 DATA THE LACK OF HELP AND A SINKING FEELING - YOU SKIP YOUR BREAKS AND
1970 DATA LUNCH - AND THE MAIL GOES THROUGH. WHEW ! GAIN 20 CONFIDENCE PTS.,20
1980 DATA THE MARKETING MANAGER HAD AN IDEA FOR A MASS MAIL PROMOTION AND
1990 DATA WANTED YOU INPUT ON ATTRACTIVE MAIL PACKAGING. THEY ARE BEGINNING TO
2000 DATA REALIZE YOUR BROAD POTENTIAL. GAIN 40 CONFIDENCE POINTS.,40
2010 DATA YOUR WIFE GOT HER FIRST OPPORTUNITY TO COOK FOR YOUR BOSS (PLANT MGR)
2020 DATA SO SHE COOKS TASMANIAN WOMBAT WITH PICKLED PIGEON TOES. YOU GUESSED
2030 DATA IT....... IT'S HIS FAVORITE DISH. (oh boy) GAIN 30 CONFIDENCE PTS.,30
2040 DATA YOU INTERVIEW 2 JOB APPLICANTS FOR THE MAILROOM. ONE IS A BRIGHT GUY
2050 DATA WITH EXPERIENCE AND THE OTHER IS THE PRESIDENT'S NEPHEW AND IS NOT SO
2060 DATA BRIGHT. POOF ! WHEW....ONLY A DREAM. GAIN 20 CONFIDENCE POINTS.,20
2070 DATA THE PLANT MANAGER ASKS YOU TO PLAY RACQUET BALL AFTER WORK. YOU
2080 DATA ACCEPT. 2 MINUTES INTO THE GAME YOUR BOSS FALLS DOWN. YOU MISSED THE
2090 DATA BALL BUT YOUR FOREHAND TO THE HEAD WAS FANTASTIC ! LOSE 50 POINTS.,-50
2100 DATA THE COMPANY HAS ENROLLED YOU IN THEIR 'CORPORATE RIGAMAROLE AND
2110 DATA POLICIES' (C.R.A.P.) SEMINAR. SOON YOU WILL FEEL TOTALLY ASS-IMILATED
2120 DATA INTO THE CORPORATION. GAIN 50 CONFIDENCE POINTS.,50
2130 IF S=20 THEN GOTO 5130
2140 CP=CP+C:GOTO 4550
2150 REM ***** PLANT MANAGER SITUATIONS *****
2160 IF Z>59 THEN GOTO 3210
2170 FOR A=1 TO Z:READ S$,S1$,S2$,C:NEXT A
2180 READ S$,S1$,S2$,C
2190 DATA THE LIGHTS HAVE GONE OUT IN THE WHOLE BUILDING AND IT'S YOUR JOB TO
2200 DATA GET THEM BACK ON. YOU CALL THE MAINTENANCE CREW. NO ONE THERE.......
2210 DATA YOU SENT THEM OUT EARLY FOR DONUTS. LOSE 40 CONFIDENCE POINTS.,-40
2220 DATA A MEETING TO DISCUSS THE POTENTIAL OF A NEW MAILROOM CLERK HAS BEEN
2230 DATA CALLED. YOU KNOW THE BOY AND VOTE TO PROMOTE - BEFORE YOU REALIZE
2240 DATA THAT THIS IS A DISCIPLINARY MEETING. LOSE 50 CONFIDENCE POINTS.,-50
2250 DATA YOU PUT IN A REQUEST TO HAVE YOUR OFFICE PAINTED YOUR FAVORITE SHADE
2260 DATA OF 'EXECUTIVE BLUE'. THE VICE PRESIDENT DOESN'T APPRECIATE THE WASTE
2270 DATA OF MONEY - OR THE COLOR ! LOSE 30 CONFIDENCE POINTS.,-30
2280 DATA A NEW SECRETARY HAS BEEN ASSIGNED TO YOU. SHE USED TO WORK FOR THE
2290 DATA VICE PRESIDENT AND CAN TELL YOU ALL SORTS OF THINGS ABOUT HIM. THIS
2300 DATA COULD COME IN REAL HANDY DOWN THE ROAD. GAIN 40 CONFIDENCE POINTS.,40
2310 DATA YOU'VE BEEN SENT TO THE 'NATIONAL MANAGER'S CONVENTION' IN MIAMI.
2320 DATA DURING THE SPECIAL AWARDS DINNER YOU WON THE COVETED 'DIP' AWARD
2330 DATA (THAT'S DIRECTORS OF INGENIOUS PROGRESS). GAIN 50 CONFIDENCE PTS.,50
2340 DATA YOUR OLD STOMPING GROUNDS (THE MAILROOM) IS IN TROUBLE AGAIN. THAT
2350 DATA OLD LETTER OPENER IS ON THE PUTZ AND GUESS WHO VOLUNTEERS TO HELP ?
2360 DATA (AND RIGHT IN FRONT OF THE VICE PRESIDENT). GAIN 30 POINTS.,30
2370 DATA THE FASTEST TRACK TO A PROMOTION IS THROUGH THE VICE PRESIDENT'S FAT
2380 DATA STOMACH. ITS A GOOD THING HE'S AS CRAZY ABOUT WOMBAT AND PIGEON TOES
2390 DATA AS THE OLD PLANT MANAGER ! GAIN 50 CONFIDENCE POINTS.,50
2400 DATA WITH THE SAME VIM AND VIGOR YOU SHOWED IN THE MAILROOM YOU PUT IN TO
2410 DATA EFFECT AN EFFICIENCY PLAN FOR THE WHOLE COMPANY. ITS A SHAME THAT NOT
2420 DATA EVERYONE CAN USE AUTOMATIC LETTER OPENERS ! LOSE 70 POINTS.,-70
2430 DATA SALES ARE DOWN BY 50% AND PRODUCTION IS UP BY 200%. THE PRESIDENT
2440 DATA ASKS YOU TO DO THE 'LAYOFF' HONORS. YOU JUST MADE 40 ENEMIES - BUT
2450 DATA ONE VERY GOOD FRIEND (THE PRESIDENT). GAIN 50 CONFIDENCE PTS.,50
2460 DATA WORD GOT TO THE CHAIRMAN THAT YOU WERE OFFERED A POSITION WITH A
2470 DATA PRESTIGIOUS COMPANY. YOU TELL THE CHAIRMAN THAT YOUR HEART IS HERE.
2480 DATA HE DOESN'T KNOW IT MEANT A 50% PAY CUT ! GAIN 30 CONFIDENCE PTS.,30
2490 DATA YOUR BROTHER IN LAW IS A GOVERNMENT CONTRACTOR AND HE OWES YOU 100
2500 DATA DOLLARS. YOU DECIDE TO ACCEPT A 1 MILLION DOLLAR CONTRACT FOR THE
2510 DATA COMPANY IN LIEU OF THE DEBT. GAIN 80 CONFIDENCE POINTS !,80
2520 DATA THE COMPANY IS GROWING AND GETTING CROWDED. YOU TURN THE SECRETARY
2530 DATA LOUNGE INTO AN EXECUTIVE BILLIARD ROOM WHICH MADE BIG POINTS WITH
2540 DATA THE UPPER MANAGEMENT. THAT'S EXECUTIVE SMARTS ! GAIN 20 POINTS.,20
2550 DATA BOY ARE YOU A SCAM ARTIST ! I THOUGHT THE OLD 'SLEEPING BAG IN THE
2560 DATA OFFICE' TRICK WENT OUT WITH MANUAL TYPEWRITERS ! THE PRESIDENT
2570 DATA ACTUALLY THINKS YOU WORK THROUGH THE NIGHT. GAIN 40 POINTS.,40
2580 DATA HAVE YOU EVER HAD A NIGHTMARE ABOUT GOING TO WORK WITHOUT YOUR PANTS
2590 DATA ON ? YOU ARE AWAKE NOW SO WHAT'S YOUR EXCUSE !?!
2600 DATA GIVE THEM THE COOK'S TOUR. GAIN 20 CONFIDENCE POINTS.,20
2610 DATA THE VICE PRESIDENT'S KID AND HER 5th GRADE CLASS ARE HAVING A FIELD
2620 DATA TRIP AND OUT OF THE KINDNESS OF YOUR HEART (HA HA) YOU OFFER TO
2630 DATA GIVE THEM THE COOK'S TOUR. GAIN 20 CONFIDENCE POINTS.,20
2640 DATA THE MAILROOM MANAGER IS A REAL DUD ! HE CAN'T DO ANYTHING RIGHT.
2650 DATA THE REAL PROBLEM IS THAT YOU TAUGHT HIM EVERYTHING HE KNOWS !
2660 DATA LOSE 40 CONFIDENCE POINTS.,-40
2670 DATA NOW THAT SALES ARE UP AND PRODUCTION IS DOWN YOU SUGGEST ROBOTICS TO
2680 DATA HELP STREAMLINE. THE WORKERS ARE READY TO KILL YOU BUT THE PRESIDENT
2690 DATA LIKES YOUR HIGH TECH THINKING. GAIN 10 CONFIDENCE POINTS.,10
2700 DATA YOU'VE BEEN A LITTLE LESS THAN POPULAR WITH THE PLANT SUBORDINATES.
2710 DATA TO CHANGE THAT YOU ANNOUNCE A COMPANY PARTY. EVERYONE LOVES A BIG
2720 DATA PARTY (ESPECIALLY THE CHAIRMAN). GAIN 50 CONFIDENCE POINTS.,50
2730 DATA THE CHAIRMAN OF THE BOARD CAME IN TO YOUR OFFICE AND CAUGHT YOU
2740 DATA READING 'HOW TO SUCCEED IN BUSINESS WITHOUT REALLY TRYING'. BOY DO
2750 DATA YOU LIKE TO TAKE CHANCES ! LOSE 60 CONFIDENCE POINTS.,-60
2760 DATA A FRIEND AT ANOTHER COMPANY GAVE YOU A VERY INTERESTING BOOK TO READ
2770 DATA TITLED 'HOW TO SUCCEED IN BUSINESS WITHOUT REALLY TRYING'. THIS
2780 DATA JUST MIGHT SPEED THINGS UP A BIT. GAIN 90 CONFIDENCE POINTS.,90
2790 IF S=20 THEN GOTO 5130
2800 CP=CP+C:GOTO 4550
2810 REM ***** PRESIDENT SITUATIONS *****
2820 CLS
2830 PRINT "OK, You made it this far. By now you realize that your climb to
2840 PRINT"the top has been a function of sheer luck. You are tired of the
2850 PRINT"bad breaks, dishonest co-employees, and brown-nosers. You just
2860 PRINT"want to be CHAIRMAN of the BOARD !
2870 PRINT
2880 PRINT"The stockholders are holding a meeting to asses the value of the
2890 PRINT"current chairman. If they throw him out, you are the most likely
2900 PRINT"successor. They're not dumb, though. They want to look at your
2910 PRINT"performance record to see if you can 'cut it'.
2920 PRINT
2930 PRINT"They will base their votes on your total accumulated confidence
2940 PRINT"points from your mailroom days to the present. Yes, we've been
2950 PRINT"keeping score ! They will also look at the number of weeks it has
2960 PRINT"taken you to attain your position. This will tell them if you gained
2970 PRINT" the presidency by work or by 'ASSUMED SIMPLE SENIORITY' (ass).
2980 PRINT
2990 PRINT"If the stockholders find you unqualified, they will vote for your
3000 PRINT"demotion to give you more time to gain confidence and experience.
3010 PRINT
3020 PRINT"Oh, by the way... the board is may also be impressed by the number of
3030 PRINT"brownie points you have remaining. This shows them that you stayed out
3040 PRINT"out of trouble.
3050 PRINT
3060 INPUT "                                PRESS [RETURN] FOR THE VOTE ";V
3070 CLS
3080 VF=INT(TCP/W)*100+(TDP*10):VA=INT(10000-VF)
3090 FOR I=10 TO VF STEP 100
3100 PRINT " ******* PROMOTE ******
3110 PRINT " ";I
3120 FOR A=1 TO 10:NEXT A
3130 CLS
3140 IF I=10000 THEN GOTO 3160
3150 NEXT I
3160 PRINT "FINAL TALLY ................................."
3170 PRINT "                                   PROMOTE";VF;" DEMOTE";VA
3180 FOR A=1 TO 2000:NEXT A
3190 IF VF>VA THEN CLS:GOTO 4900
3200 PRINT "                            SORRY, BACK TO PLANT MANAGER !":R=3:S=0:FOR A=1 TO 1000:NEXT A:GOTO 690
3210 REM ***** SPECIAL COIN FLIP SITUATIONS ***
3220 SP=SP+1
3230 PRINT "                              'CALLED ON THE CARPET' #";SP
3240 PRINT
3250 IF SP=1 THEN GOTO 3340
3260 IF SP=2 THEN GOTO 3430
3270 IF SP=3 THEN GOTO 3560
3280 IF SP=4 THEN GOTO 3650
3290 IF SP=5 THEN GOTO 3750
3300 IF SP=6 THEN GOTO 3840
3310 IF SP>6 THEN GOTO 3930
3320 FOR B=1 TO 1000:NEXT B
3330 GOTO 690
3340 PRINT "YOUR WIFE JUST CALLED FOR YOU AT WORK. YOU'RE NOT THERE....NEITHER IS YOUR
3350 PRINT "SECRETARY ! "
3360 PRINT :PRINT "WHEN YOU GET HOME, WHAT WILL YOU TELL YOUR WIFE..........."
3370 PRINT
3380 PRINT " [1] IT WAS NOON WHEN YOU CALLED AND EVERYONE WAS AT LUNCH"
3390 PRINT " [2] OK, OK..... SO I'M IN LOVE WITH MY SECRETARY. SO WHAT ?!?"
3400 PRINT " [3] WE WERE AT A JEWELRY STORE LOOKING FOR A DIAMOND FOR YOU.
3410 PRINT " [4] NOTHING.....MY WIFE LIKES A LITTLE MYSTERY IN A MARRIAGE."
3420 GOTO 3960
3430 REM
3440 PRINT "RUMOR HAS IT THERE'S AN EMBEZZLEMENT SCHEME GOING DOWN. ONE OF YOUR
3450 PRINT "CO-WORKERS TOLD THE CHAIRMAN THAT YOU ARE INVOLVED. A MEETING HAS
3460 PRINT "BEEN CALLED AND YOU'RE THE GUEST OF HONOR.
3470 PRINT
3480 PRINT "WHAT WILL YOU TELL THEM AT THE MEETING ....................
3490 PRINT
3500 PRINT " [1] NOTHING. THERE'S ALWAYS THE FIFTH AMENDMENT, YOU KNOW.
3510 PRINT " [2] EVERYTHING - ABOUT AS MUCH AS A GRAPE KNOWS ABOUT IT.
3520 PRINT " [3] THAT I'VE BEEN FRAMED AND MY FEELINGS ARE HURT.....ALOT.
3530 PRINT " [4] I'LL CONFESS. MAYBE THEY'LL RESPECT MY HONESTY.
3540 PRINT
3550 GOTO 3960
3560 PRINT "THE CHAIRMAN IS IN A REAL BIND. HIS WIFE'S BIRTHDAY IS TOMORROW AND
3570 PRINT "HE'S ASKED YOU WHAT YOU THINK SHE WOULD LIKE.
3580 PRINT "WHAT WILL YOU SUGGEST ...
3590 PRINT
3600 PRINT " [1] FLOWERS. ALL WOMEN LOVE FLOWERS (AND THEY'RE CHEAP !).
3610 PRINT " [2] NOTHING.... I DON'T EVEN WANT TO GET INVOLVED !
3620 PRINT " [3] A DIAMOND NECKLACE. (CLICHE BUT EFFECTIVE !)
3630 PRINT " [4] A LIFE TIME MEMBERSHIP AT 'EATER'S ANONYMOUS' !
3640 GOTO 3960
3650 PRINT "YOU NARROWLY ESCAPED THE EMBEZZLEMENT CHARGE BY YOUR CO-WORKER, AND
3660 PRINT "NOW YOU'VE BEEN ACCUSED OF HARASSING HIM IN RETALIATION. A SPECIAL
3670 PRINT "HEARING HAS BEEN CONVENED TO HEAR YOUR SIDE.
3680 PRINT "WHAT WILL YOU TELL THE HEARING BOARD ...
3690 PRINT
3700 PRINT " [1] NOTHING..... BACK TO THE OLD FIFTH AMENDMENT !
3710 PRINT " [2] NOT TRUE ! YOU'D KILL BEFORE YOU'D HARASS ANYONE.
3720 PRINT " [3] NOT TRUE ! THE DEATH THREATS WERE TO HIS CHILDREN !
3730 PRINT " [4] OK, OK. BUT HE'S MEAN AND HE MADE ME CRY !
3740 GOTO 3960
3750 PRINT "BOY, ONE THING AFTER ANOTHER. THAT EMBEZZLING CO-WORKER TOLD THE
3760 PRINT "CHAIRMAN THAT HE FOUND A BOTTLE OF WHISKEY IN YOUR DESK DRAWER.
3770 PRINT "BACK TO THE OLD HEARING BOARD ! WHAT WILL YOU SAY THIS TIME ???
3780 PRINT
3790 PRINT " [1] HEY, WHAT'S HE DOING DRINKING IN 'MY' OFFICE ???
3800 PRINT " [2] MEDICINAL PURPOSES ONLY (HIC..)
3810 PRINT " [3] IT WAS A PRESENT FOR THE CHAIRMAN...YEAH...THAT'S IT.
3820 PRINT " [4] BOY... DO I NEED A DRINK !
3830 GOTO 3960
3840 PRINT "THE ACCOUNTING DEPARTMENT WANTS TO SEE YOU ABOUT THE MILEAGE ON
3850 PRINT "YOUR COMPANY CAR. I MEAN REALLY, 5000 MILES IN APRIL ? YOU BETTER
3860 PRINT "MAKE THIS A GOOD ONE !
3870 PRINT
3880 PRINT " [1] I HAVE A LONG COMMUTE.
3890 PRINT " [2] I TOOK A WRONG TURN AT THE SECOND LIGHT.
3900 PRINT " [3] THE CHAIRMAN WANTED CUBAN CIGARS !
3910 PRINT " [4] WELL, ITS 3000 MILES LESS THAN LAST MONTH !
3920 GOTO 3960
3930 REM A BOTTLE IS FOUND IN YOUR DESK
3940 REM AT A CONVENTION
3950 REM HIRE YOUR WHOLE FAMILY
3960 REM ***** SPECIAL SITUATION RESPONSE *****
3970 PRINT
3980 IF SP>6 THEN PRINT " ITS GOTTEN TO THE POINT THAT YOU DON'T EVEN KNOW WHAT
3990 IF SP>6 THEN PRINT " YOU'VE DONE. SOMEONE OUT THERE DOESN'T LIKE YOU !!!
4000 IF SP>6 THEN PRINT "               OH WELL, TAKE A WILD GUESS...
4010 PRINT
4020 INPUT "                          SELECT 1,2,3, OR 4 (and pray !) ", SR
4030 PRINT
4040 ZZ=INT(4*RND(1))+1:FOR A=1 TO 1000:NEXT A
4050 IF ZZ=SR THEN PRINT "                                  WHEW !"
4060 IF ZZ=SR THEN PRINT:PRINT TAB(20);"GAIN 100 CONFIDENCE POINTS !":CP=CP+100
4070 IF ZZ=SR THEN FOR A=1 TO 1000:NEXT A:GOTO 690
4080 PRINT
4090 PRINT "UH OH...... I DON'T THINK THAT'S GOING TO WORK .....
4100 IF TDP<1 THEN PRINT"OOOPS.... NO BROWNIE POINTS TO HELP YOU EITHER ! LOSE 100 CONFIDENCE POINTS ":CP=CP-100:FOR A=1 TO 2000:NEXT A:GOTO 690
4110 PRINT "YOU HAVE";TDP;"BROWNIE POINTS. HOW MANY DO YOU WANT TO USE ?"
4120 INPUT " ";DPU
4130 IF DPU>TDP THEN PRINT "YOU DON'T HAVE THAT MANY BROWNIE POINTS !":GOTO 4110
4140 ZZ=INT(100*RND(1))+1:FOR A=1 TO 1000:NEXT A
4150 IF ZZ<25 AND DPU>0 AND DPU<4 THEN GOTO 4210
4160 IF ZZ<50 AND DPU>3 AND DPU<9 THEN GOTO 4210
4170 IF ZZ<75 AND DPU>8 AND DPU<13 THEN GOTO 4210
4180 IF ZZ<101 AND DPU>12 THEN GOTO 4210
4190 PRINT " SORRY......";DPU;"BROWNIE POINTS WEREN'T ENOUGH THIS TIME. LOSE 50 CONFIDENCE POINTS.":TDP=TDP-DPU:FOR A=1 TO 2000:NEXT A:CP=CP-50: GOTO 690
4200 GOTO 690
4210 REM ***** GOT OUT OF THE SPECIAL SITUATION *****
4220 PRINT:PRINT
4230 PRINT "                     WHEW ! NOW THAT WAS A LUCKY BREAK !
4240 TDP=TDP-DPU:CP=CP+100
4250 PRINT
4260 PRINT "                        GAIN 100 CONFIDENCE POINTS !"
4270 FOR A=1 TO 3000:NEXT A:GOTO 690
4280 REM ***** ASKED FOR A PROMOTION *****
4290 PR=INT(100*RND(1))+1
4300 IF CPU>0 AND CPU<21 AND PR<10 THEN R=R+1:CP=CP-CPU:GOTO 4450
4310 IF CPU>19 AND CPU<41 AND PR<20 THEN R=R+1:CP=CP-CPU:GOTO 4450
4320 IF CPU>40 AND CPU<61 AND PR<30 THEN R=R+1:CP=CP-CPU:GOTO 4450
4330 IF CPU>60 AND CPU<81 AND PR<40 THEN R=R+1:CP=CP-CPU:GOTO 4450
4340 IF CPU>80 AND CPU<101 AND PR<50 THEN R=R+1:CP=CP-CPU:GOTO 4450
4350 IF CPU>100 AND CPU<121 AND PR<60 THEN R=R+1:CP=CP-CPU:GOTO 4450
4360 IF CPU>120 AND CPU<141 AND PR<70 THEN R=R+1:CP=CP-CPU:GOTO 4450
4370 IF CPU>140 AND CPU<161 AND PR<80 THEN R=R+1:CP=CP-CPU:GOTO 4450
4380 IF CPU>160 AND CPU<181 AND PR<90 THEN R=R+1:CP=CP-CPU:GOTO 4450
4390 IF CPU>180 AND PR<101 THEN R=R+1:CP=CP-CPU:GOTO 4450
4400 PRINT
4410 PRINT "           WELL..... YOU TRIED ..... AND WELL.... MAYBE NEXT TIME !"
4420 FOR A=1 TO 3000:NEXT A
4430 CP=CP-CPU
4440 GOTO 690
4450 REM ***** YOU GOT THE PROMOTION YOU ASKED FOR *****
4460 FOR A=1 TO 1000:NEXT A
4470 CLS
4475 PRINT:PRINT:PRINT:PRINT:PRINT
4480 FOR A=1 TO 79:PRINT CHR$(2);:NEXT A
4490 PRINT
4500 PRINT "                      Y O U          G O T           I T ! ! ! !
4501 PRINT
4505 FOR A=1 TO 79:PRINT CHR$(2);:NEXT A
4510 PRINT:PRINT:PRINT
4520 FOR A=1 TO 1300:NEXT A
4530 S=0:CP=0
4540 GOTO 690
4550 REM ******************************************************************* **
4560 S=S+1:W=W+1
4570 PRINT TAB(27);CHR$(177);" CHAIRMAN OF THE BOARD ";TAB(52);CHR$(177)
4580 PRINT:PRINT:PRINT:PRINT
4590 FOR A=1 TO 79:PRINT CHR$(223);:NEXT A
4600 PRINT
4610 DP=C*0.1
4620 TDP=TDP+DP
4630 PRINT " RANK                     POINTS
4640 PRINT
4650 IF R=1 THEN RANK$="MAILROOM CLERK"
4660 IF R=2 THEN RANK$="MAILROOM MANAGER"
4670 IF R=3 THEN RANK$="PLANT MANAGER"
4680 IF R=5 THEN GOTO 4900
4690 PRINT RANK$;TAB(26);"BROWNIE PTS = ";TDP;TAB(50);"CONFIDENCE PTS = ";CP
4700 PRINT:PRINT
4710 FOR A=1 TO 79:PRINT CHR$(248);:NEXT A
4720 PRINT TAB(20);"SITUATION #";S;TAB(46);"WEEK #";W
4730 PRINT:PRINT
4740 PRINT " ";S$
4750 PRINT " ";S1$
4760 PRINT " ";S2$
4770 PRINT
4780 FOR A=1 TO 79:PRINT CHR$(223);:NEXT A
4790 TCP=TCP+CP
4800 IF Z=10 THEN R=2:CP=0:INPUT "          PRESS [RETURN] TO CLIMB UP THE CORPORATE LADDER !!!!! ",ZZ:S=0:GOTO 690
4810 IF CP>0 THEN INPUT "             WOULD YOU LIKE TO ASK FOR A PROMOTION (Y or N) ";P$
4820 IF CP<1 THEN INPUT "                   WANT TO TAKE THE 'BIG RISK' (Y or N) ";BR$:IF BR$="Y" THEN GOTO 5510
4830 IF CP<1 AND BR$="N" THEN GOTO 690
4840 IF P$="N" OR P$="NO" THEN GOTO 690
4850 INPUT "                     CONFIDENCE PTS TO USE = ";CPU
4860 IF CPU<1 THEN PRINT " TRYING TO CHEAT THE COMPUTER, HUH ? LOSE 20 CONFIDENCE POINTS !":CP=CP-20:FOR A=1 TO 3000:NEXT A:GOTO 690
4870 IF CP<CPU THEN PRINT "YOU DON'T HAVE THAT MANY POINTS ! LOSE 10 CONFIDENCE PTS FOR LOOKING FOOLISH !":CP=CP-10:FOR A=1 TO 3000:NEXT A:GOTO 690
4880 FOR A=1 TO 3000:NEXT A:
4890 GOTO 4280
4900 REM ******* CHAIRMAN OF THE BOARD !!! ********
4910 CLS
4920 CLS
4930 COB=1
4940 FOR A=1 TO 1840:PRINT CHR$(177);:NEXT A
4950 IF W<=10 THEN RATE$="THE ABSOLUTE WIZARD BUSINESSMAN"
4960 IF W>10 AND W<16 THEN RATE$="SUPER CHAIRMAN"
4970 IF W>15 AND W<21 THEN RATE$="A TRUE BIG SHOT"
4980 IF W>20 AND W<26 THEN RATE$="BUSINESS PRO"
4990 IF W>25 AND W<36 THEN RATE$="QUICK CLIMBER"
5000 IF W>35 AND W<56 THEN RATE$="DECISION MAKER"
5010 IF W>55 AND W<76 THEN RATE$="NOVICE CLIMBER"
5020 IF W>75 THEN RATE$="RUNG DUNG"
5030 PRINT
5040 PRINT "                                 YOU TOOK";W;"WEEKS"
5050 PRINT
5060 PRINT "                     YOU HAVE ATTAINED THE TITLE OF ";RATE$
5070 PRINT
5080 REM ***** TRY AGAIN ? *****
5090 FOR A=1 TO 1000:NEXT A
5100 INPUT "                       WELL DONE, SIR. TRY AGAIN (Y or N) ";TA$
5110 IF TA$="Y" THEN GOTO 10
5120 IF TA$="N" THEN LOAD"B:MENU.BAS",R
5130 REM ***** TO MUCH TIME HAS PAST ROUTINE *****
5140 PRINT " SINCE LIFE IS SOMETIMES A 'CRAP SHOOT' AND BY THE LOOKS OF THINGS
5150 PRINT " YOU'VE BEEN ROLLING SNAKE EYES, THE CORPORATION HAS DECIDED TO
5160 PRINT " TO GIVE YOU A CHANCE TO GET THINGS MOVING OR FIRE YOU FOR EITHER
5170 PRINT " LACK OF GUTS (NOT ASKING FOR A PROMOTION) OR LACK OF BRAINS
5180 PRINT " (MAKING TOO MANY DUMB MISTAKES). YOU MAY ROLL THE PROVERBIAL
5190 PRINT " DICE, AND SHOULD YOU ROLL A 7 OR 11 COMBINATION, YOU'LL AUTOMATICALLY
5200 PRINT " BE PROMOTED TO THE NEXT RANK. ROLL DOUBLE SIXES AND YOU WILL BE
5210 PRINT " THE NEW CHAIRMAN OF THE BOARD !!!!. GOOD LUCK.............
5220 PRINT:PRINT:PRINT
5230 INPUT " PRESS [RETURN] TO ROLL FOR A PROMOTION OR TERMINATION ";Q
5240 J=INT(6*RND(1))+1:K=INT(6*RND(1))+1
5250 PRINT:PRINT
5260 CLS
5270 PRINT TAB(35);J;TAB(45);K
5280 FOR A=1 TO 1000:NEXT A
5290 IF J+K=11 THEN R=R+1:CP=O:GOTO 5410
5300 IF J+K=7 THEN R=R+1:CP=0:GOTO 5410
5310 IF J=6 AND K=6 THEN GOTO 4900
5320 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
5330 PRINT " UH............ LADY LUCK IS NOT EXACTLY YOUR BEST FRIEND !"
5340 PRINT
5350 PRINT "            YOU MAY START AT THE BOTTOM AGAIN OR LEAVE YHE COMPANY
5360 PRINT " ALTOGETHER....................sorry..........."
5370 PRINT
5380 INPUT " PRESS [RETURN] TO CLEAN OUT YOUR DESK OR [P] TO TRY AGAIN ";PLAY$
5390 IF PLAY$="P" THEN GOTO 10 ELSE CLS:LOAD"B:MENU.BAS",R
5400 CLS
5410 REM ***** YOU ROLLED A SEVEN OR ELEVEN *****
5420 FOR A=1 TO 1000:NEXT A
5430 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
5440 FOR A=1 TO 160:PRINT CHR$(177);:NEXT A
5450 PRINT:PRINT:PRINT
5460 PRINT " YOU LUCKY STIFF, YOU !!!
5470 PRINT
5480 FOR A=1 TO 3000:NEXT A
5490 S=0
5500 GOTO 690
5510 REM ***** BIG RISK *****
5520 PRINT
5530 PRINT "    PLEASE STAND BY - THE 'BIG SHOTS' ARE CONSIDERING YOUR WORTH........"
5540 FOR A=1 TO 3000:NEXT A
5550 ZZZ=INT(100*RND(1))+1
5560 IF ZZZ<25 THEN GOTO 5590
5570 PRINT "                     WELL........ YOU PULLED IT OFF !!!
5580 FOR A=1 TO 1000:NEXT A:TDP=0:CP=0:GOTO 690
5590 PRINT " THE CHAIRMAN OF THE BOARD DOESN'T SCRAPE BARRELS":FOR A=1 TO 1000:NEXT A
5600 LOCATE 23,5:INPUT " WOULD YOU CARE TO BE REINCARNATED AS A MAILROOM CLERK AGAIN ";TA$
5610 IF TA$="Y" THEN GOTO 10
5620 LOAD"B:MENU.BAS",R

COUNTING.BAS

10 REM  BY MARK A. SWANSON  5/1/83  BELLEVUE, WA.
20 ' DOC SWAN LEARNING SERIES
30 CLS
40 PRINT:PRINT:PRINT
50 FOR I=1 TO 14
60 READ L$
70 PRINT TAB(39);I;:PRINT L$
80 FOR S=1 TO 200:NEXT S
90 NEXT I
100 DATA C,O,U,N,T,I,N,G,,F,U,N,,!
110 PRINT:PRINT:PRINT
120 PRINT TAB(32);"by  Mark A. Swanson"
130 FOR P=1 TO 300:NEXT P
140 FOR B=1 TO 28:PRINT:NEXT B
150 CLS
160 PRINT "                 WELCOME !"
170 PRINT
180 PRINT "                 THIS IS A PROGRAM THAT WILL HELP YOU COUNT HIGHER"
190 PRINT "                 AND FASTER THAN EVER !
200 PRINT:PRINT
210 PRINT "                 I'LL ASK FOUR QUESTIONS BEFORE EACH ROUND:"
220 PRINT
230 PRINT "           1. UPPER LIMIT ?   TYPE IN HOW HIGH YOU'LD LIKE TO COUNT.
240 PRINT
250 PRINT "           2. COUNT BY ?      WOULD YOU LIKE TO COUNT BY 1's, 2's"
260 PRINT "                              4's, 10's, 6.03452's, etc.
270 PRINT "                              SIMPLY TYPE 1 or 2 or 4 or 10  etc...
280 PRINT
290 PRINT "           3. SPEED ?         HOW FAST DO YOU WANT TO COUNT ?  TYPE
300 PRINT "                              IN A NUMBER (1 to 5).  1 IS SLOWEST,
310 PRINT "                              5 IS FASTEST.
320 PRINT
330 PRINT "           4. DIRECTION ?     WOULD YOU LIKE TO COUNT FORWARD OR
340 PRINT "                              BACKWARD ? PRESS  F or B.
350 PRINT:PRINT
360 INPUT "                           PRESS [RETURN] TO BEGIN ";I
370 CLS
380 INPUT "UPPER LIMIT ";X
390 INPUT "COUNT BY:  (1's  2's  3's  10's  etc.) ";Y
400 INPUT "SPEED:  (SLOWEST - 1  2  3  4  5 - FASTEST) ";Z
410 INPUT "DIRECTION: F or B ";D$
420 IF Z=1 THEN Z=1000
430 IF Z=2 THEN Z=750
440 IF Z=3 THEN Z=500
450 IF Z=4 THEN Z=250
460 IF Z=5 THEN Z=100
470 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
480 FOR T=1 TO 300:NEXT T
490 IF D$="F" THEN GOSUB 580
500 IF D$="B" THEN GOSUB 630
510 FOR C=1 TO 500:NEXT C
520 PRINT:PRINT:PRINT:PRINT
530 PRINT "      AGAIN ?   [S] same as before   [RETURN] different   [Q] quit    ":X$=INPUT$(1)
540 CLS
550 IF X$="Q" THEN PRINT TAB(32);"SEE YOU SOON !":LOAD"B:MENU",R
560 IF X$="S" THEN GOTO 490
570 GOTO 370
580 FOR I=Y TO X STEP Y
590 PRINT I;
600 FOR J=1 TO Z:NEXT J
610 NEXT I
620 RETURN
630 FOR I=X TO Y STEP-Y
640 PRINT I;
650 FOR J=1 TO Z:NEXT J
660 NEXT I
670 RETURN

DOCSWAN.BAS

10 CLS:KEY OFF
20 PRINT
30 PRINT
40 PRINT"     Hi..........
50 PRINT
60 PRINT"          Thanks for ordering the DOC SWAN Learning Series - Featuring
70 PRINT"          sound educational programs for all ages.
80 PRINT:PRINT
90 PRINT"          This series has been used in the home and in schools around
100 PRINT"          the U.S.A. and abroad.  Program listings are found in 'The
110 PRINT"          Computer Curriculum Guide' available to schools nationwide.
120 PRINT:PRINT
130 PRINT"          Please copy and share these programs freely.  If you find
140 PRINT"          value in this disk, we ask that you send a modest donation
150 PRINT"          of $10.00 towards development of future educational products.
160 PRINT
170 PRINT"          Send check or money order to:   Mark A. Swanson
180 PRINT"                                          11390 N.E. 91st St.
190 PRINT"                                          Kirkland, WA. 98033
200 PRINT
210 PRINT"                                  Thank you
220 PRINT
230 PRINT"          Press any key to continue.....";INPUT$(1)
240 CLS
250 PRINT:PRINT
260 PRINT"  Here are a few things to know about the DOC SWAN Learning Series...
270 PRINT:PRINT:PRINT
280 PRINT"            -->     Most of the time you need to push the [RETURN] key
290 PRINT"                    after typing in your responses.  Make your selection and
291 PRINT"                    wait before pushing [RETURN].
300 PRINT
310 PRINT"            -->     This disk is intended to be run in DRIVE B with your
320 PRINT"                    BASIC disk in DRIVE A.
330 PRINT
340 PRINT"            -->     If you get lost in a program, simply press the [CTRL]
350 PRINT"                    and [SCROLL LOCK] keys at the same time to end the program.
360 PRINT"                    Then, push [F3]. This will return you to the main menu.
380 PRINT:PRINT:PRINT:PRINT:PRINT
390 PRINT "            When you're ready, please press [RETURN] for the main menu  ";INPUT$(1)
400 LOAD"B:MENU.BAS",R

FORNEXT.BAS

10 ' MARK A. SWANSON     02-27-1985  20:22:35
20 CLS
30 PRINT:PRINT:PRINT
50 PRINT TAB(40);10;"F"
60 FOR A=9 TO 1 STEP -1
70 READ A$
80 PRINT TAB(40);A;" ";A$
90 FOR I=1 TO 100:NEXT I
100 NEXT A
110 DATA O,R, ,/, ,N,E,X,T
120 PRINT
130 PRINT "------------------------------------------------------------------------------"
140 PRINT:PRINT:PRINT
150 PRINT "                                      FOR / NEXT
160 PRINT
170 PRINT "                           THE STATEMENT YOU CAN 'COUNT' ON
180 FOR A=1 TO 2000:NEXT A
190 CLS
200 PRINT "             FOR/NEXT is a nifty STATEMENT that has three uses.....
210 PRINT
220 PRINT "                          1.  To delay program flow or pause
230 PRINT "                          2.  To count numbers, forward or backwards
240 PRINT "                          3.  To PRINT mulitple STRING data
250 PRINT
260 PRINT "             We'll look at all of these individually and show how FOR/NEXT
270 PRINT "             can be used to 'dress up' a program and save programming
280 PRINT "             time.
290 PRINT
300 PRINT "             But first, how it works.....  FOR/NEXT is actually two
310 PRINT "             statements (on their own lines).  We use FOR/NEXT
320 PRINT "             to create a controlled loop.  A controlled loop consists
330 PRINT "             of a starting point and specified goal (the FOR part of
340 PRINT "             the statement), and the signal to continue and ultimately
350 PRINT "             end the loop (the NEXT part of the statement).  And,
360 PRINT "             depending on the particular use, there can be another
370 PRINT "             statement in between FOR and NEXT that is executed as
380 PRINT "             many times as is indicated in the FOR part.
390 PRINT
400 PRINT "             Before total confusion sets in, let's have a look at how
410 PRINT "             FOR/NEXT is set up for each of the three uses listed above.
420 PRINT
430 INPUT "                   PRESS [RETURN] TO CONTINUE  [Q] MAIN BTMENU ",Z$
440 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
450 CLS
460 PRINT "                              FOR/NEXT AS A DELAY
470 PRINT
480 PRINT "          What is meant by DELAY is a pause or interuption in the
490 PRINT "          program where evrything comes to a complete halt.  This is
500 PRINT "          the purest form of FOR/NEXT where the computer is instructed
510 PRINT "          to cease operation while it counts to itself to a specified
520 PRINT "          number.  Here's an example.....
530 PRINT
540 PRINT "                              10 FOR A=1 TO 2000
550 PRINT "                              20 NEXT A
560 PRINT
570 PRINT "          In line 10, the computer sets the scene to count from 1 to
580 PRINT "          2000.  Notice that we have a modified use of LET, where 'A'
590 PRINT "          is being used to store the numbers 1 through 2000.
600 PRINT
610 PRINT "          In line 20, the computer is instructed to get the NEXT 'A'
620 PRINT "          to be found back in line 10.  Thus, the loop begins.
630 PRINT
640 PRINT "          When the computer has registered all of the numbers (counted
650 PRINT "          to 2000), there is no 'NEXT A', as they have all been used up.
660 PRINT "          So, the computer moves on to the next line in the program or
670 PRINT "          ends if no more lines exist.
680 PRINT
690 INPUT "           PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
700 IF Z$="P" THEN GOTO 190
710 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
720 CLS
730 PRINT "             Delays are useful in a variety of situations.  In the
740 PRINT "             openning of this lesson you saw a countdown along with
750 PRINT "             the letters of FOR/NEXT.  FOR/NEXT was used to 'slow down'
760 PRINT "             the countdown by instructing the computer to count to one
770 PRINT "             hundred between each number and letter.
780 PRINT
790 PRINT "             We'll run an example of the delaying ability of FOR/NEXT.
800 PRINT
810 PRINT "                                    10 FOR T=1 TO 2000
820 PRINT "                                    20 NEXT T
830 PRINT
840 PRINT "             Type RUN and press [RETURN] to start the program.  Note
850 PRINT "             how long it takes to finish counting and hence, allow the
860 PRINT "             the rest of this page to be printed.  OK - Type RUN and
870 PRINT "             press [RETURN]";:INPUT " ",X$
880 IF X$="RUN" THEN FOR A=1 TO 2000:NEXT A
890 IF X$<>"RUN" THEN PRINT "TRY AGAIN - TYPE RUN AND PRESS [RETURN]":INPUT X$:GOTO 880
900 PRINT
910 PRINT "            You made it !  As you can see, the computer counts to
920 PRINT "            itself at a very fast clip.  An 'internal' count like this
930 PRINT "            one to 2000 takes about 5 seconds.
940 PRINT:PRINT:PRINT
950 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
960 IF Z$="P" THEN GOTO 450
970 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
980 CLS
990 PRINT "                            FOR/NEXT AS A NUMBER COUNTER
1000 PRINT
1010 PRINT "            We know that the computer can count from and to a specified
1020 PRINT "            number (i.e  1 to 2000).  Well, why not have the computer
1030 PRINT "            PRINT the numbers as it counts ?  This is accomplished
1040 PRINT "            with the addition of a PRINT statement.  Here's how.....
1050 PRINT
1060 PRINT "                               10 FOR G=1 TO 5
1070 PRINT "                               20 PRINT G
1080 PRINT "                               30 NEXT G
1090 PRINT
1100 INPUT "            Ok, type RUN and press [RETURN] to see what happens ",Z$
1110 IF Z$="RUN" THEN FOR G=1 TO 5:PRINT TAB(40); G:NEXT G
1120 IF Z$<>"RUN" THEN INPUT "TRY AGAIN - Type RUN and press [RETURN] ",Z$:GOTO 1110
1130 FOR A=1 TO 500:NEXT A:PRINT
1140 PRINT "           We can also count 'by' numbers. That is, the computer can
1150 PRINT "           count to 10 by 2's or 3's or even 6.45375's, with the STEP
1160 PRINT "           function added on.
1170 PRINT:PRINT
1180 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1190 IF Z$="P" THEN GOTO 720
1200 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1210 CLS
1220 PRINT "           Below is a program that uses STEP to count to 10 by 2's.....
1230 PRINT "                 (note the comma (,) after the K in line 20)
1240 PRINT
1250 PRINT "                               10 FOR K=2 TO 10 STEP 2
1260 PRINT "                               20 PRINT K,
1270 PRINT "                               30 NEXT K
1280 PRINT
1290 INPUT "           Again, type RUN and press [RETURN]  ",Z$
1300 PRINT
1310 IF Z$="RUN" THEN FOR K=2 TO 10 STEP 2:PRINT K,:NEXT K
1320 IF Z$<>"RUN" THEN INPUT "TRY AGAIN - Type RUN and press [RETURN] ",Z$:GOTO 1310
1330 FOR A=1 TO 500:NEXT A
1340 PRINT:PRINT:PRINT
1350 PRINT "           Now let's make the computer count backwards.....
1360 PRINT
1370 PRINT "                               10 FOR A=20 TO 1 STEP -1
1380 PRINT "                               20 PRINT A;
1390 PRINT
1400 INPUT "           Type RUN and press [RETURN]  ",Z$:PRINT
1410 FOR A=20 TO 1 STEP -1:PRINT A;:NEXT A
1420 FOR A=1 TO 500:NEXT A
1430 PRINT:PRINT:PRINT
1440 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1450 IF Z$="P" THEN GOTO 980
1460 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1470 CLS
1480 PRINT "                       FOR/NEXT TO PRINT MULTIPLE DATA
1490 PRINT
1500 PRINT "            FOR/NEXT can cause the computer to repeatedly PRINT data
1510 PRINT "            as many times as is specified in the FOR line.
1520 PRINT
1530 PRINT "                               10 FOR J=1 TO 3
1540 PRINT "                               20 PRINT ''HI THERE !''
1550 PRINT "                               30 NEXT J
1560 PRINT
1570 INPUT "           Type RUN and press [RETURN] ",Z$
1580 PRINT
1590 PRINT "                                HI THERE !
1600 PRINT "                                HI THERE !
1610 PRINT "                                HI THERE !
1620 PRINT
1630 FOR A=1 TO 500:NEXT A
1640 PRINT "           Instead of PRINTing a variable (in this case 'J'), the
1650 PRINT "           computer was instructed to print the STRING (HI THERE !).
1660 PRINT:PRINT:PRINT:PRINT
1670 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1680 IF Z$="P" THEN GOTO 1210
1690 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1700 CLS
1710 PRINT "                            ALL IN ONE PACKAGE.....
1720 PRINT
1730 PRINT "            As a sort of 'grand finale' we'll use each application of
1740 PRINT "            FOR/NEXT all in one program.  When we combine FOR/NEXT loops,
1750 PRINT "            we NEST them, and thus call them NESTED LOOPS.
1760 PRINT
1770 PRINT "                              10 FOR R=1 TO 5
1780 PRINT "                              20 PRINT R;''BASIC''
1790 PRINT "                              30 FOR S=1 TO 500
1800 PRINT "                              40 NEXT S
1810 PRINT "                              50 NEXT R
1820 PRINT
1830 PRINT "           Lines 20, 30, and 40 are all enclosed in the main loop and
1840 PRINT "           will be repeated 5 times.
1850 PRINT
1860 PRINT "           Line 20 will PRINT the number stored to the VARIABLE 'R'
1870 PRINT "           and, on the same line, the STRING 'BASIC'.
1880 PRINT
1890 PRINT "           Lines 30 and 40 will cause a pause (for an internal count
1900 PRINT "           to 500).
1910 PRINT:PRINT:PRINT
1920 INPUT "          PRESS [RETURN TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1930 IF Z$="P" THEN GOTO 1470
1940 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1950 CLS
1960 INPUT "Type RUN and press [RETURN] to see the NESTED LOOP program  ",Z$
1970 PRINT
1980 FOR A=1 TO 5
1990 PRINT A;"BASIC"
2000 FOR T=1 TO 500:NEXT T
2010 NEXT A
2020 FOR A=1 TO 1000:NEXT A
2030 PRINT
2040 PRINT "------------------------------------------------------------------------------"
2050 PRINT "IN SUMMARY.....
2060 PRINT
2070 PRINT "          1.  FOR/NEXT has three uses:
2080 PRINT "            a. pause   b. count numbers   c. repeat STRING data
2090 PRINT "          2.  A NESTED LOOP is a combination of FOR/NEXT loops
2100 PRINT
2110 PRINT "------------------------------------------------------------------------------"
2120 PRINT "FOR PRACTICE.....
2130 PRINT
2140 PRINT "          1.  Try each application separately, then combine them
2150 PRINT:PRINT
2160 INPUT "            PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
2170 IF Z$="P" THEN GOTO 1700
2180 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
2190 CLS
2200 PRINT "              To begin practicing, type NEW and press [RETURN]
2210 PRINT
2220 PRINT "    To get back to lessons, type LOAD''B:BTMENU.BAS'',R AND PRESS [RETURN]
2230 PRINT
2240 PRINT "        Remember to use quotations instead of double apostrophies ('')
2250 PRINT "------------------------------------------------------------------------------"

GOTO.BAS

10 CLS
30 FOR A=1 TO 260:PRINT "GOTO";:NEXT A
40 PRINT:PRINT:PRINT:PRINT
50 PRINT "                                      G O T O"
60 PRINT "                                      -------
70 PRINT
80 PRINT "                                 THE INFINITE LOOP
90 PRINT "                                        AND
100 PRINT "                                 BASIC TRAFFIC COP
110 FOR A=1 TO 2000:NEXT A
120 CLS
130 PRINT "            As the title graphics show us, GOTO can be alot of fun to
140 PRINT "            use.  As the title suggests, GOTO is an important tool in
150 PRINT "            controlling the direction of a program.  We'll show how this
160 PRINT "            is accomplished and give some pointers on using GOTO to its
170 PRINT "            fullest.
180 PRINT:PRINT
190 PRINT "            GOTO is a STATEMENT just like PRINT.  GOTO requires an
200 PRINT "            argument like PRINT only the argument is a LINE NUMBER,
210 PRINT "            not a STRING (name, letter, etc.) or a mathematical
220 PRINT "            operation (1+1, 4*3.2, etc.).
230 PRINT
240 PRINT "            GOTO acts like a program 'traffic cop' because it directs
250 PRINT "            the program flow and is used to jump from one line number
260 PRINT "            to another.
270 PRINT "
280 PRINT "            GOTO can best be illustrated by using it in a program
290 PRINT "            with PRINT.
300 PRINT:PRINT:PRINT:PRINT
310 INPUT "                PRESS [RETURN] TO CONTINUE  or  [Q] MAIN BTMENU ",Z$
320 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
330 CLS
340 PRINT "         Here's an example of GOTO illustrating its 'jumping around'
350 PRINT "         ability.....
360 PRINT "
370 PRINT "                         10 PRINT ''GOTO''
380 PRINT "                         20 GOTO 50
390 PRINT "                         30 PRINT ''JUMP''
400 PRINT "                         40 GOTO 70
410 PRINT "                         50 PRINT ''CAN''
420 PRINT "                         60 GOTO 30
430 PRINT "                         70 PRINT ''AROUND''
440 PRINT
450 PRINT "         The output would be.....
460 PRINT
470 PRINT "                         GOTO
480 PRINT "                         CAN
490 PRINT "                         JUMP
500 PRINT "                         AROUND
510 PRINT
520 PRINT "        The program flow goes like this:
530 PRINT "        10 to 20 to 50 to 60 to 30 to 40 to 70.  The computer tries to
540 PRINT "        move in a sequential order but GOTO interupts and reroutes it.
550 PRINT:PRINT
560 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
570 IF Z$="P" THEN GOTO 120
580 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
590 CLS
600 PRINT "         GOTO can also be used to repeat a line number and its contents
610 PRINT "         as in a program that can repeat your name - over and over
620 PRINT "         again.  This is using GOTO as an INFINITE LOOP.  For example....
625 PRINT
630 PRINT "                            10 PRINT ''POLLY PROGRAMMER''
640 PRINT "                            20 GOTO 10
650 PRINT
660 PRINT "         In this program, the computer is instructed to PRINT exactly
670 PRINT "         what is enclosed in the quotations (Polly Programmer).  When
680 PRINT "         the computer executes line 10 and moves to on to line 20, it
690 PRINT "         is instructed to GOTO line 10 and hence PRINT the name again.
700 PRINT "         The computer again moves on to line 20 and again is directed
710 PRINT "         to line 10 - again and again.
720 PRINT "
730 PRINT "         We'll illustrate this for you (in a shortened version) so you
740 PRINT "         can get the real feel for this STATEMENT.  By the way, to stop
750 PRINT "         an infinite loop in progress, you press [ctrl]--C (control c)
760 PRINT "         which breaks or stops the program execution.
770 PRINT "
780 PRINT "         Let's imagine the we typed RUN, and you need to press [RETURN]
790 PRINT "         to start the program.....
800 PRINT:PRINT
810 INPUT "      PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
820 IF Z$="P" THEN GOTO 590
830 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
840 CLS
850 PRINT "HERE WE GO...................................................
860 PRINT:PRINT:PRINT
870 FOR A=1 TO 1000:NEXT A
880 FOR A=1 TO 100:PRINT "POLLY PROGRAMMER":NEXT A
890 PRINT:PRINT:PRINT
900 FOR A=1 TO 500:NEXT A
910 PRINT "           Hi again.  Just for the fun of it, let's add a punctuation
920 PRINT "           to the end of line 10.  A semi-colon (;) tells the computer
930 PRINT "           to print what ever is next on the same line as the previous
940 PRINT "           ARGUMENT.  In this case, 'Polly Programmer' will be PRINTed
950 PRINT "           over and over on the same line until the line is full in
960 PRINT "           which case the next line fills up.  The openning graphics
970 PRINT "           used a semi-colon to make this interesting effect.
980 PRINT
990 PRINT "           Let's again assume we typed RUN and you need to press the
1000 PRINT "           [RETURN] key to execute the program.
1010 PRINT
1020 PRINT "                                10 PRINT ''POLLY PROGRAMMER'';"
1030 PRINT "                                20 GOTO 10
1040 PRINT:PRINT
1050 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1060 IF Z$="P" THEN GOTO 840
1070 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1080 CLS
1090 PRINT "HERE WE GO AGAIN..............................................
1100 PRINT:PRINT:PRINT
1110 FOR A=1 TO 1000:NEXT A
1120 FOR A=1 TO 40:PRINT "POLLY PROGRAMMER";:NEXT A
1130 PRINT:PRINT:PRINT
1140 FOR A=1 TO 500:NEXT A
1150 PRINT "           Again we limited the number of times 'POLLY PROGRAMMER' was
1160 PRINT "           PRINTed (using a different statement to be discussed later).
1170 PRINT "           For example purposes though, you can see how GOTO works.
1180 PRINT "           GOTO works with other STATEMENTS as well which will be
1190 PRINT "           be covered in later lessons.
1200 PRINT
1210 PRINT "______________________________________________________________________________"
1220 PRINT "IN SUMMARY.....
1230 PRINT
1240 PRINT "            1.  GOTO directs the program flow by:
1250 PRINT "              a.  jumping from one line number to another
1260 PRINT "              b.  creating an infinite loop, stopped by [CTRL]-[C]
1270 PRINT
1280 PRINT "_____________________________________________________________________________"
1290 PRINT "FOR PRACTICE.....
1300 PRINT
1310 PRINT "            1.  Try variations of the two sample programs just used
1320 PRINT:PRINT
1330 INPUT "            PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1340 IF Z$="P" THEN GOTO 1080
1350 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1360 CLS
1370 PRINT "             Type NEW followed by [RETURN] to begin practicing.
1380 PRINT
1390 PRINT "             To get back to lessons type LOAD''B:BTMENU.BAS'',R
1400 PRINT
1410 PRINT "          As always, use quotations instead of double apostrophies
1420 PRINT
1430 PRINT "-----------------------------------------------------------------------------"

GR.BAS

10 CLS: ' MARK A. SWANSON     19:15:29  2/27/1985
20 PRINT:PRINT:PRINT:PRINT
30 PRINT "                                                   -\ /-
40 PRINT "          __________|--|              /---\          |       |------|
50 PRINT "         |             |_____________|     |_________|_______|      |
60 PRINT "        |     *        |                      ||                    |
70 PRINT "        |    /()\      |                      ||                    |
80 PRINT "        |     ``       |       GOSUB &        ||    THE COMPUTER    |
90 PRINT "        |              |                      ||                    |
100 PRINT "        |              |       RETURN         ||    HOMING PIGEON   |
110 PRINT "       |               |                      ||                    |
120 PRINT "       |               |                      ||                    |
130 PRINT "       |               |                      ||                    |
140 PRINT "       |               |                      ||                    |
150 PRINT "       |_______________|______________________||____________________|
160 FOR A =1 TO 2000:NEXT A
170 CLS
180 PRINT "         GOSUB/RETURN is almost identical to GOTO in that the computer
190 PRINT "         is instructed to go to another line number and resume
200 PRINT "         operation.  The one difference is that GOSUB/RETURN has a
210 PRINT "         memory.
220 PRINT
230 PRINT "        Let's look at what each of these statements do:
240 PRINT
250 PRINT "        GOSUB - sends the computer to the specified line number in
260 PRINT "                the program (example: GOSUB 150).
270 PRINT
280 PRINT "        RETURN - sends the computer back to the line following the
290 PRINT "                 last GOSUB encountered to continue normally.
300 PRINT
310 PRINT "       OK, so now that we know what each one does, let's see how and
320 PRINT "       why we use GOSUB/RETURN in a program.
330 PRINT:PRINT:PRINT:PRINT:PRINT
340 INPUT "                  PRESS [RETURN] TO CONTINUE OR [Q] MAIN BTMENU ",Z$
350 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
360 CLS
370 PRINT "       GOSUB/RETURN is most often used when there is a great deal of
380 PRINT "       repetition in a program.  For example, imagine you want to
390 PRINT "       write a program that would allow the user to look at the
400 PRINT "       instructions at any time and from any point in the program.
410 PRINT
420 PRINT "       Normally, you would have to rewrite the instructions for every
430 PRINT "       time the user may want them.  Or, you could have a SUBROUTINE
440 PRINT "       for the instructions.  This way, you only write them once.
450 PRINT "       Access could be provided by GOTO.  Then if the user wants to
460 PRINT "       see the instuctions, a GOTO statement will direct the computer
470 PRINT "       to the appropriate line number.  Uh oh..... there's still a
480 PRINT "       problem.  You need another GOTO statement at the end of the
490 PRINT "       instructions subroutine to get the user back to the regular
500 PRINT "       part of the program.  That will work fine - once.  Ater that,
510 PRINT "       the same 'send it back' GOTO statement would be outdated.
520 PRINT "       You will continually go back to the first place where access
530 PRINT "       to the subroutine was allowed, even though you may now be
540 PRINT "       accessing from a different part of the main program.
550 PRINT:PRINT:PRINT:PRINT
560 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
570 IF Z$="P" THEN GOTO 170
580 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
590 CLS
600 PRINT "      GOSUB/RETURN will handle this problem easily.  Remember, GOSUB
610 PRINT "      sends the computer to the subroutine (like GOTO).  Now, RETURN
620 PRINT "      will take over to send the computer back to where the last
630 PRINT "      GOSUB was encountered.  That's why we call GOSUB/RETURN the
640 PRINT "      computer 'homing pigeon'.  It always returns the computer to
650 PRINT "      its point of origin.
660 PRINT "      Here is a simple use of GOSUB/RETURN.  Note that we wouldn't
670 PRINT "      normally use these powerful ststements for such a simple
680 PRINT "      operation, but the below example illustrates the process.
690 PRINT
700 PRINT "                         10 PRINT '' HI '';
710 PRINT "                         20 GOSUB 100
720 PRINT "                         30 PRINT '' HELLO '';
730 PRINT "                         40 GOSUB 100
740 PRINT "                         50 END
750 PRINT "                         100 PRINT '' THERE ''
760 PRINT "                         110 RETURN
770 PRINT
780 INPUT "     Type RUN and press [RETURN] to see the output. ",R$
790 PRINT
800 PRINT "                         HI THERE
810 PRINT "                         HELLO THERE
820 PRINT
830 INPUT "     PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
840 IF Z$="P" THEN GOTO 360
850 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
860 CLS
870 PRINT "      If you were to watch the computer do each line in the program,
880 PRINT "      it would go like this...
890 PRINT
900 PRINT "                         10 PRINT '' HI '';
910 PRINT "                         20 GOSUB 100
920 PRINT "                         100 PRINT '' THERE ''
930 PRINT "                         110 RETURN
940 PRINT "                         30 PRINT '' HELLO '';
950 PRINT "                         40 GOSUB 100
960 PRINT "                         100 PRINT '' THERE ''
970 PRINT "                         110 RETURN
980 PRINT "                         50 END
990 PRINT
1000 PRINT "             output -->  HI THERE
1010 PRINT "                         HELLO THERE
1020 PRINT
1030 PRINT:PRINT:PRINT:PRINT:PRINT
1040 INPUT "      PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1050 IF Z$="P" THEN GOTO 590
1060 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1070 CLS
1080 PRINT "      Notice that we had to put END in the program after the last
1090 PRINT "      GOSUB statement.  This is done to prevent the computer from
1100 PRINT "      entering the subroutine without the direction of another
1110 PRINT "      GOSUB.  Without END or another 'diversion' the computer would
1120 PRINT "      'fall through' into the subroutine, encounter RETURN, and
1130 PRINT "      display the message 'RETURN WITHOUT GOSUB'.  In other words,
1140 PRINT "      every RETURN must have a corresponding GOSUB.
1150 PRINT
1160 PRINT "      The best way to become comfortable with GOSUB/RETURN is to do
1170 PRINT "      a number of practice programs.  You'll soon find that this is
1180 PRINT "      a great tool for longer programs.
1190 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1200 INPUT "      PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1210 PRINT "IN SUMMARY...
1220 IF Z$="P" THEN GOTO 860
1230 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1240 CLS
1250 PRINT "IN SUMMARY...
1260 PRINT
1270 PRINT "          1.  GOSUB/RETURN works like GOTO except RETURN remembers
1280 PRINT "              where the it came from and returns to that point.
1290 PRINT "          2.  GOSUB/RETURN is useful for repetitious subroutines.
1300 PRINT
1310 PRINT "------------------------------------------------------------------------------"
1320 PRINT "FOR PRACTICE...
1330 PRINT
1340 PRINT "          1.  Take out the END or other 'diversions' in the programs
1350 PRINT "              to see what happens.
1360 PRINT "          2.  Modify programs using GOTO to use GOSUB/RETURN.
1370 PRINT "          3.  Create your own programs using GOSUB/RETURN.
1380 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1390 INPUT "      PRESS [RETURN] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1400 IF Z$="P" THEN GOTO 1070
1410 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1420 CLS
1430 PRINT "    To get back to lessons, type LOAD''B:BTMENU.BAS'',R and press [RETURN]
1440 PRINT "                                     ^             ^
1450 PRINT "      Don't forget to use quotations instead of double apostrophies.
1460 PRINT
1470 PRINT "                   To practice, type NEW and press [RETURN]
1480 PRINT "------------------------------------------------------------------------------"

GUESS.BAS

10 CLS
30 FOR I=1 TO 280:PRINT "? ";:NEXT I
40 PRINT:PRINT:PRINT
50 PRINT "                             ???????????????????
60 PRINT "                             ? GUESS MY NUMBER ?
70 PRINT "                             ???????????????????
71 PRINT:PRINT
72 PRINT"                             by  Mark A. Swanson
80 FOR I=1 TO 1000:NEXT I
100 TPNB=0:TPNA=0:TPTS=0
110 CLS
120 PRINT:PRINT
130 PRINT"        HI !    WELCOME TO 'GUESS MY NUMBER'.
140 PRINT
150 PRINT"        THIS IS A MODIFIED VERSION OF THE OLD
160 PRINT"        FAVORITE.  THE COMPUTER THINKS OF A
170 PRINT"        NUMBER (you decide the upper limit)
180 PRINT"        AND YOU HAVE TO GUESS WHAT IT IS !
190 PRINT
200 PRINT"        THE COMPUTER EVEN KEEPS SCORE FOR A
210 PRINT"        ONE OR TWO PLAYER GAME.
220 PRINT
230 PRINT"        IN THE TWO PLAYER GAMES, THE PLAYERS
240 PRINT"        TRADE OFF WHO GETS TO GO FIRST (in
250 PRINT"        the name of fair play!).
260 PRINT
270 PRINT"        GOOD LUCK AND MAY THE BEST GUESSER WIN !
280 PRINT:PRINT
290 PRINT"               PRESS RETURN TO BEGIN
300 X=1
310 K$=INKEY$
320 WHILE K$=""
330 X=X+1
340 K$=INKEY$
350 WEND
360 CLS
370 PRINT"     PRESS  [1] (one player game)  or  [2] (two player game)  ";:PL$=INPUT$(1)
380 IF PL$="1" THEN GOTO 430
390 PRINT:PRINT:PRINT
400 GM=0
405 PRINT
410 INPUT "PLAYER #1 - TYPE YOUR NAME AND PRESS [RETURN] ";NA$
415 PRINT
420 INPUT "PLAYER #2 - TYPE YOUR NAME AND PRESS [RETURN] ";NB$
430 RANDOMIZE X
440 GM=GM+1
450 CLS
460 INPUT "WHAT IS THE HIGHEST YOU WANT THE NUMBERS TO GO ";LI
470 NM=INT(LI*RND(1))+1
480 CN=0:PNA=0:PNB=0
490 PRINT
500 PRINT"............... I'M THINKING OF A NUMBER BETWEEN 1 AND";LI
510 PRINT
520 IF PL$="2" THEN GOTO 990
530 INPUT "WHAT IS YOUR GUESS ";GU
540 CN=CN+1
550 IF GU>NM THEN PRINT:PRINT"MY NUMBER IS LOWER":FOR I=1 TO 500:NEXT:GOTO 530
560 IF GU<NM THEN PRINT:PRINT"MY NUMBER IS HIGHER":FOR I=1 TO 500:NEXT:GOTO 530
570 CLS
580 PRINT"                               GAME  #";GM
590 PRINT:PRINT:PRINT
600 PRINT"                          YOU   GOT   IT   !!!!!!!!!!!
602 FOR I=1 TO 1000:NEXT
610 PRINT:PRINT
720 IF PL$="1" THEN PRINT TAB(24);"YOU GOT MY NUMBER IN";CN;"GUESSES !
730 IF PL$="2" AND PNA=0 THEN PRINT TAB(24);"YOU GOT MY NUMBER IN";NBW;"GUESSES !
740 IF PL$="2" AND PNB=0 THEN PRINT TAB(24);"YOU GOT MY NUMBER IN";NAW;"GUESSES !
750 PRINT
760 TPNA=TPNA+PNA
770 TPNB=TPNB+PNB
780 PTS=100-(10*CN)+10
790 TPTS=TPTS+PTS
800 IF PL$="1" THEN PRINT"                       YOUR SCORE IS";PTS
810 IF PL$="1" THEN PRINT"                       YOUR TOTAL IS";TPTS
820 IF PL$="1" THEN GOTO 880
830 IF PL$="2" THEN PRINT"                       ";NA$;"'S SCORE IS";PNA
840 IF PL$="2" THEN PRINT"                       ";NB$;"'S SCORE IS";PNB
850 PRINT
860 PRINT"                       ";NA$;"'S TOTAL IS";TPNA
870 PRINT"                       ";NB$;"'S TOTAL IS";TPNB
880 FOR I=1 TO 2000:NEXT:PRINT:PRINT:PRINT:PRINT:PRINT
890 PRINT"     PRESS   [S] (same set up)  [RETURN] (different)  [Q] (quit) ";:A$=INPUT$(1)
900 NAW=0:NBW=0
910 IF A$="S" THEN GOTO 440
920 IF A$="Q" THEN GOTO 960
930 GM=0:TPTS=0:PTS=0:TPNA=0:TPNB=0:GOTO 360
940 CLS
950 PRINT TAB(37);"SO LONG !!!
960 LOAD"B:MENU.BAS",R
970 PRINT:PRINT
980 PRINT
990 IF GM=2 OR GM=4 OR GM=6 OR GM=8 OR GM=10 OR GM=12 OR GM=14 OR GM=16 THEN GOTO 1040
1000 PRINT:PRINT"WHAT'S YOUR GUESS ";NA$;"";:INPUT GU
1010 IF GU=NM THEN NAW=NAW+1:PNA=100-(10*NAW)+10:PNB=0:GOTO 570
1020 IF GU<NM THEN NAW=NAW+1:PRINT:PRINT"MY NUMBER IS HIGHER":FOR I=1 TO 500:NEXT
1030 IF GU>NM THEN NAW=NAW+1:PRINT:PRINT"MY NUMBER IS LOWER":FOR I=1 TO 500:NEXT
1040 PRINT:PRINT"WHAT'S YOUR GUESS ";NB$;"";:INPUT GU
1050 IF GU=NM THEN NBW=NBW+1:PNB=100-(10*NBW)+10:PNA=0:GOTO 570
1060 IF GU<NM THEN NBW=NBW+1:PRINT:PRINT"MY NUMBER IS HIGHER":FOR I=1 TO 500:NEXT:GOTO 1000
1070 IF GU>NM THEN NBW=NBW+1:PRINT:PRINT"MY NUMBER IS LOWER":FOR I=1 TO 500:NEXT:GOTO 1000

GUIDE.BAS

10 ' MARK A. SWANSON    19:19:51  2/27/1985
20 CLS
30 PRINT "                       CHART OF APPLICATIONS AND STATEMENTS
40 PRINT:PRINT
50 PRINT :PRINT:PRINT:PRINT
60 PRINT "                This guide is designed to provide you with the BASIC
70 PRINT "                features needed to perform the applications covered
80 PRINT "                in the lessons.  Listed are the COMMANDS and STATEMENTS
90 PRINT "                followed by the uses and the proper syntax.
100 PRINT
110 PRINT "                When the appropriate STATEMENT or COMMAND has been
120 PRINT "                found, refer to the MAIN BTMENU for the respective lesson.
125 PRINT
126 PRINT "                Also included in this guide is an ASCII table.
130 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
140 INPUT "                   PRESS [RETURN] TO CONTINUE  [Q] MAIN BTMENU ",Z$
150 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
160 CLS
170 PRINT "COMMAND    USES                     SYNTAX
180 PRINT "----------------------------------------------------------------------------
190 PRINT "RUN
200 PRINT"          Starts program            1. RUN
210 PRINT "          currently in memory.      2. RUN [starting line #]
220 PRINT
230 PRINT "LIST
240 PRINT "          Displays program lines    1. LIST
250 PRINT "          currently in memory.      2. LIST [starting line #]
260 PRINT
270 PRINT "NEW
280 PRINT "         Erases program currently   1. NEW
290 PRINT "         in memory (will not erase
300 PRINT "         programs on disk).
310 PRINT
320 PRINT "REM      Allows programmer to type  1. REM [text]
330 PRINT "         notes on program lines.
340 PRINT "         Seen only when program is
350 PRINT "         listed.
360 PRINT:PRINT
370 INPUT "               PRESS [RETURN] FOR STATEMENTS  [Q] MAIN BTMENU ",Z$
380 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
390 CLS
400 PRINT "STATEMENT  USES                   SYNTAX
410 PRINT "-----------------------------------------------------------------------------
420 PRINT "PRINT
430 PRINT "          Displays information.       1. PRINT
440 PRINT "                                      2. PRINT [data]
450 PRINT
460 PRINT "GOTO
470 PRINT "          Directs program flow to     1. GOTO [staring line #]
480 PRINT "          specified line number.
490 PRINT
500 PRINT "LET
510 PRINT "          Labels and stores data      1. LET [data] = [data]
520 PRINT "          for later retrieval and
530 PRINT "          processing.
540 PRINT
550 PRINT "FOR/NEXT
560 PRINT "          Counts and displays         1. FOR [variable] = [start #]
570 PRINT "          numbers; Causes a pause        TO [end #] : NEXT [variable]
580 PRINT "          or delay; Causes repeated   2. FOR [variable] = [start #]
590 PRINT "          output.                        TO [end #] STEP [increment #] :
600 PRINT "                                         NEXT [variable]
610 PRINT
620 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUSE PAGE  [Q] MAIN BTMENU ",Z$
630 IF Z$="P" THEN GOTO 160
640 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
650 CLS
660 PRINT "STATEMENT  USES                        SYNTAX
670 PRINT "-----------------------------------------------------------------------------"
680 PRINT "INPUT
690 PRINT "           Asks for, labels, and       1. INPUT [text in quotes] ;
700 PRINT "           stores user defined data.      [variable]
710 PRINT
720 PRINT "IF/THEN
730 PRINT "           Acts upon data according    1. IF [condition] THEN [action]
740 PRINT
750 PRINT "READ/DATA
760 PRINT "           Retrieves multiple data.    1. READ [variable]
770 PRINT "           Allows for storage of          DATA [data separated by commas]
780 PRINT "           large amounts of data in
790 PRINT "           a common area of the
800 PRINT "           program.
810 PRINT
820 PRINT "GOSUB/RETURN
830 PRINT "           Directs program flow to      1. GOSUB [line #]
840 PRINT "           a specified line number.        RETURN
850 PRINT:PRINT
860 INPUT " PRESS [RETURN] ASCII TABLE    PRESS [P] PREVIOUS PAGE    [Q] MAIN BTMENU ",Z$
870 IF Z$="P" THEN GOTO 390
880 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
890 CLS:PRINT "                    ASCII TABLE OF SYMBOLS & CHARACTERS
900 PRINT:PRINT
910 PRINT "To use these characters in a program use PRINT with CHR$ ......
920 PRINT
930 PRINT "PRINT CHR$(X)                     Example --->    PRINT CHR$(177)
940 PRINT "X is the ASCII number                             ▒
945 FOR DELAY=1 TO 2000:NEXT
950 PRINT
960 LOCATE 8,1:FOR A=1 TO 78:PRINT CHR$(205);:NEXT
965 FOR A=1 TO 6:PRINT A;CHR$(A);" ";:NEXT
970 FOR A=15 TO 28:PRINT A;CHR$(A);" ";:NEXT A
975 FOR A=33 TO 255:PRINT A;CHR$(A);" ";:NEXT A :PRINT
980 INPUT "                     PRESS [P] PREVIOUS PAGE    [Q] MAIN BTMENU ",Z$
990 IF Z$="P" THEN GOTO 650
1000 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R ELSE GOTO 980

IFTHEN.BAS

10 REM MARK A. SWANSON    20:48:25   02-24-85
20 CLS
30 FOR A=1 TO 48 :PRINT "WHAT IF ? ";:NEXT A
40 PRINT "------------------------------------------------------------------------------"
50 PRINT:PRINT:PRINT
60 PRINT "                                 I F   /   T H E N
70 PRINT
80 PRINT "                              THE COMPUTER'S DETECTIVE
90 FOR A=1 TO 2000:NEXT A
100 CLS
110 PRINT "           IF/THEN is actually two STATEMENTS on the same line.  We use
120 PRINT "           IF/THEN when we need to define and act upon certain conditions
130 PRINT "           in a program.  Let's use IF/THEN with INPUT.....
140 PRINT
150 PRINT "               10 INPUT ''HOW OLD ARE YOU '';A
160 PRINT "               20 IF A<16 THEN PRINT ''YOU PROBABLY HAVE A BIKE''
170 PRINT "               30 IF A=>16 THEN PRINT ''YOU'RE OLD ENOUGH TO DRIVE''
180 PRINT
190 PRINT "           Line 10 holds the INPUT question and the VARIABLE 'A'.
200 PRINT
210 X=0
220 PRINT "           Line 20 holds the first IF/THEN STATEMENTs.  IF 'A' is less
230 PRINT "           than 16 (the age we typed in is stored to 'A'), THEN the
240 PRINT "           computer is instructed to PRINT ''YOU PROBABLY HAVE A BIKE''.
250 PRINT
260 PRINT "           Line 30 holds the second IF/THEN STATEMENTs.  IF 'A' is equal
270 PRINT "           to or greater than 16, THEN the computer is instructed to
280 PRINT "           PRINT ''YOU'RE OLD ENOUGH TO DRIVE''.
290 PRINT:PRINT "   Try this one.....
300 IF X=1 THEN PRINT:PRINT:PRINT:PRINT:PRINT
310 INPUT "                          HOW OLD ARE YOU ";A
320 IF A<16 THEN PRINT TAB(27);"YOU PROBABLY HAVE A BIKE"
330 IF A=>16 THEN PRINT TAB(27);"YOU'RE OLD ENOUGH TO DRIVE"
340 FOR A=1 TO 1000:NEXT A
350 PRINT:PRINT
360 IF X=1 THEN CLS:GOTO 430
370 INPUT "                  PRESS [RETURN] TO CONTINUE  [Q] MAIN BTMENU ";Z$
380 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
390 CLS
400 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
410 X=1:PRINT "Try it again but answer differently to obtain the other response.....":PRINT:GOTO 300
420 CLS
430 PRINT "            The previous example involved numbers.  What about using
440 PRINT "            IF/THEN with STRING data ?  All of the same rules apply
450 PRINT "            here as with other STATEMENTS where STRING data is stored.
460 PRINT "            The VARIABLE must have a '$' at the end, and the data must
470 PRINT "            be enclosed in quotes.  Here's an example.....
480 PRINT
490 PRINT "                 10 INPUT ''WHAT'S YOUR FAVORITE FOOD '';F$
500 PRINT "                 20 IF F$=''STEAK'' THEN PRINT ''YUM YUM !''
510 PRINT "                 30 PRINT ''YUK...YOU PROBABLY LIKE QUICHE !''
520 PRINT:PRINT
530 PRINT "            Note the '$' in lines 10 and 20.  Note the quotations in
540 PRINT "            all of the lines.  If you answer 'STEAK', the computer will
550 PRINT "            respond with 'YUM YUM !'.  If you answer with anything
560 PRINT "            else, the computer passes over line 20 and checks to see
570 PRINT "            what line 30 holds.  In line 30 there is no condition
580 PRINT "            required - only a PRINT statement.  So, the computers does
590 PRINT "            as it is told and PRINTs 'YUK...YOU PROBABLY LIKE QUICHE'.
600 PRINT
610 PRINT:PRINT
620 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
630 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
640 IF Z$="P" THEN GOTO 100
650 CLS
660 PRINT "            There is one problem - even if you were to answer with
670 PRINT "            'STEAK', the computer would still print line 30 since there
680 PRINT "            is no condition required.  So, we either need a condition
690 PRINT "            in line 30 (30 IF F$<>''STEAK'' THEN PRINT ''YUK...YOU PROBABLY
700 PRINT "            LIKE QUICHE !''), or a diversion in line 20.  How about our
710 PRINT "            'traffic cop' - GOTO ?  If we put a colon at the end of line
720 PRINT "            20, it is legal to put another STATEMENT on the same line.
730 PRINT
740 PRINT "            Here again is the program with the addition to line 20 and
750 PRINT "            a new line so the computer has somewhere to GOTO.
760 PRINT
770 PRINT "                   10 INPUT ''WHAT'S YOUR FAVORITE FOOD '';F$
780 PRINT "                   20 IF F$=''STEAK'' THEN PRINT ''YUM YUM !'':GOTO 40
790 PRINT "                   30 PRINT ''YUK...YOU PROBABLY LIKE QUICHE''
800 PRINT "                   40 END
810 PRINT
820 PRINT "Now you try it.....
830 FOR A=1 TO 2
840 IF A=2 THEN PRINT "Ok, change your answer.....
850 INPUT "                         WHAT'S YOUR FAVORITE FOOD ";F$
860 IF F$="STEAK" THEN PRINT TAB(26);"YUM YUM !":GOTO 880
870 PRINT "                         YUK...YOU PROBABLY LIKE QUICHE !"
880 NEXT A
890 PRINT
900 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
910 IF Z$="P" THEN GOTO 420
920 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
930 CLS
940 PRINT "            IF/THEN has a couple tricks we can use to 'short cut' our
950 PRINT "            programming.   These tricks are called OR, AND, and ELSE.
960 PRINT "            They are used on the IF/THEN line.  Here's an example.....
970 PRINT
980 PRINT "                  10 INPUT ''HOW OLD ARE YOU '';A
990 PRINT "                  20 IF A<16 OR A>80 THEN PRINT ''YOU CAN'T DRIVE''
1000 PRINT
1010 PRINT "            An answer of less than 16 or more than 80 will PRINT the
1020 PRINT "            response 'YOU CAN'T DRIVE'.
1030 PRINT
1040 PRINT "                  20 IF A<16 AND A>6 THEN PRINT ''GOT A BIKE ?''
1050 PRINT
1060 PRINT "            An answer between 6 and 16 will PRINT the response 'GOT
1070 PRINT "            A BIKE ?'
1080 PRINT
1090 PRINT "                  20 IF A=>16 THEN PRINT ''YOU DRIVE'' ELSE PRINT ''YOU RIDE''
1100 PRINT
1110 PRINT "            An answer of more than 16 will PRINT 'YOU DRIVE', OTHERWISE
1120 PRINT "            (if less than 16), PRINT ''YOU RIDE''.
1130 PRINT:PRINT:PRINT
1140 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1150 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1160 IF Z$="P" THEN GOTO 650
1170 CLS
1180 PRINT "            The IF part of the STATEMENTs is always used in reference
1190 PRINT "            to a VARIABLE.  The THEN part, however, can be used with
1200 PRINT "            almost every other STATEMENT and COMMAND in BASIC.
1210 PRINT
1220 PRINT "            Below are some sample IF/THEN STATEMENTs.....
1230 PRINT
1240 PRINT "                    IF T=35 THEN PRINT ''HI THERE''
1250 PRINT "                    IF A$=''CAR'' THEN PRINT G
1260 PRINT "                    IF I=J THEN GOTO 20
1270 PRINT "                    IF D=60 THEN LET X=2
1280 PRINT "                    IF Z$=''PAUSE'' THEN FOR A=1 TO 1000:NEXT A
1290 PRINT "                    IF S<10 THEN INPUT ''NAME '';N$
1300 PRINT "                    IF B=>50 THEN W=5 ELSE W=10
1310 PRINT "                    IF C<>100 OR D=45 THEN PRINT ''HI'' ELSE PRINT ''GOOD BYE''
1320 PRINT "                    IF J$=''Y'' THEN LOAD''B:BTMENU.BAS'',R
1330 PRINT "                    IF F$=''TRUE'' AND Y=3 THEN GOTO 80
1340 PRINT:PRINT:PRINT:PRINT
1350 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1360 IF Z$="P" THEN GOTO 930
1370 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1380 CLS
1390 PRINT "IN SUMMARY..........
1400 PRINT
1410 PRINT "        1.  IF/THEN allows conditions to be set and acted upon
1420 PRINT "          a. IF sets the conditions
1430 PRINT "          b. THEN acts upon the condition with any BASIC STATEMENT or COMMAND
1440 PRINT
1450 PRINT "        2.  Other IF/THEN 'helpers' are:
1460 PRINT "          a. OR
1470 PRINT "          b. AND
1480 PRINT "          c. ELSE
1490 PRINT
1500 PRINT "------------------------------------------------------------------------------"
1510 PRINT "FOR PRACTICE..........
1520 PRINT
1530 PRINT "        1.  Try all variations of IF/THEN
1540 PRINT
1550 PRINT "        2.  Create a program and continue to build on that program using
1560 PRINT "            more INPUT and IF/THEN STATEMENTs.
1570 PRINT:PRINT:PRINT
1580 INPUT "           PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1590 IF Z$="P" THEN GOTO 1170
1600 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1610 CLS
1620 PRINT "                   To practice, type NEW and press [RETURN]
1630 PRINT "               To get back to lessons, type LOAD''B:BTMENU.BAS'',R
1640 PRINT
1650 PRINT "         Remember to use quotations instead of double apostrophies ('')
1660 PRINT "------------------------------------------------------------------------------"

INPUT.BAS

10 REM MARK A. SWANSON    20:43:15   02-24-85
20 CLS
30 FOR A=1 TO 312:PRINT " ? ";:NEXT A
40 PRINT "------------------------------------------------------------------------------"
50 PRINT:PRINT
60 PRINT "                                    I N P U T
70 PRINT
80 PRINT "                       THE QUESTION TO ALL OF YOUR ANSWERS
90 FOR A=1 TO 2000:NEXT A
100 CLS
110 PRINT "            If you've ever wondered how a computer can not only ask
120 PRINT "            us a question, but respond as well, wonder no more !
130 PRINT
140 PRINT "            INPUT is a STATEMENT that allows a request for data to be
150 PRINT "            'put in' to the computer's memory.  With this powerfull
160 PRINT "            STATEMENT we can communicate (and to stretch the truth a
170 PRINT "            bit, converse) with the computer.  Below is an example....
180 PRINT
190 PRINT "                              Go ahead and answer.....
200 PRINT
210 INPUT "                          WHAT IS YOUR NAME, FRIEND ";N$
220 PRINT "                          HI, ";N$
230 PRINT:PRINT:PRINT
240 FOR A=1 TO 1000:NEXT A
250 PRINT "            As you can see ";N$;", I now know your name and can use
260 PRINT "            it throughout this lesson if I want to !  Let's see how
270 PRINT "            this STATEMENT looks.
280 PRINT:PRINT:PRINT
290 INPUT "                PRESS [RETURN] TO CONTINUE     [Q] MAIN BTMENU ";Z$
291 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
300 CLS
310 PRINT "                      10 INPUT ''WHAT IS YOUR NAME, FRIEND '';N$
320 PRINT "                      20 PRINT ''HI, '';N$"
330 PRINT
340 PRINT "            This may look complicated, but it isn't.  Let's disect it.
350 PRINT
360 PRINT "            Line 10 holds the INPUT STATEMENT.  Notice that the question
370 PRINT "            is typed in just as we would like it, except we leave out
380 PRINT "            question mark (?).  The computer will automatically place
390 PRINT "            the '?' at the end (where the semi-colon is).  Quotations
400 PRINT "            are necessary as with the PRINT STATEMENT.  At the end of
410 PRINT "            the line a VARIABLE is used to store the answer.  Our answer
420 PRINT "            is a STRING (a word or letter) so the '$' is added.
430 PRINT
440 PRINT "            Line 20 PRINTs the response.  Note that the semi-colon
450 PRINT "            separates the STRING from the VARIABLE (N$).  Remember,
460 PRINT "            a semi-colon tells the computer to PRINT the following
470 PRINT "            data right after the preceding data (on the same line if
480 PRINT "            there is enough room on the screen).  In short, the computer
490 PRINT "            is instructed to PRINT two things - the STRING (HI, ) and
500 PRINT "            the data stored to the VARIABLE N$ (";N$;")."
510 PRINT:PRINT
520 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
530 IF Z$="P" THEN GOTO 100
540 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
550 CLS
560 PRINT "           Now we'll use INPUT with numbers (no STRINGs attached !).
570 PRINT
580 PRINT "                        10 INPUT ''HOW OLD ARE YOU '';A
590 PRINT "                        20 PRINT ''YOU ARE '';A;'' YEARS OLD''
600 PRINT
610 PRINT "          Line 10 is typed in just like the previous program with one
620 PRINT "          exception - the '$' sign is left off the VARIABLE 'A'.
630 PRINT
640 PRINT "          Line 20 is set up just like line 20 in the previous program
650 PRINT "          with the additional STRING at the end (''YEARS OLD'').  Again
660 PRINT "          we used semi-colons to separate the data to be PRINTed.
670 PRINT
680 PRINT "          Ok, go ahead and answer again.....
690 PRINT
700 INPUT "                             HOW OLD ARE YOU ";A
710 PRINT "                             YOU ARE ";A;" YEARS OLD"
720 PRINT:PRINT
730 FOR A=1 TO 1000:NEXT A
740 PRINT "          If you were to type a STRING (letter or word) instead of a
750 PRINT "          number (as is required by the VARIABLE 'A') the message
760 PRINT "          '?redo from start' would appear and allow you to re-enter a number.
770 PRINT:PRINT
780 INPUT "        PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
790 IF Z$="P" THEN GOTO 300
800 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
810 CLS
820 PRINT "           Here's an example of some fancy programming.....
830 PRINT
840 PRINT "                 10 INPUT ''WHAT IS YOUR NAME '';NM$
850 PRINT "                 20 PRINT ''HI, '';NM$
860 PRINT "                 30 PRINT ''TYPE 3 NUMBERS AND I'LL PRINT THE AVERAGE''
870 PRINT "                 40 INPUT ''1ST NUMBER '';A
880 PRINT "                 50 INPUT ''2ND NUMBER '';B
890 PRINT "                 60 INPUT ''3RD NUMBER '';C
900 PRINT "                 70 PRINT (A+B+C)/3
910 PRINT
920 PRINT "          Take a good look at this program, line for line, so you will
930 PRINT "          understand what each STATEMENT will do.   Ok, now answer
940 PRINT "          the questions.....
950 PRINT
960 INPUT "                    WHAT IS YOUR NAME ";NM$
970 PRINT "                    HI ";NM$
980 PRINT "                    TYPE 3 NUMBERS AND I'LL PRINT THE AVERAGE
990 INPUT "                    1ST NUMBER ";A
1000 INPUT "                    2ND NUMBER ";B
1010 INPUT "                    3RD NUMBER ";C
1020 PRINT "                   ";(A+B+C)/3
1030 PRINT
1040 PRINT "          What would you add to line 70 to have the computer PRINT
1050 PRINT "          'THE AVERAGE IS;(A+B+C)/3' ?  {PRINT ''THE AVERAGE IS'';(A+B+C)/3}
1060 PRINT
1070 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1080 IF Z$="P" THEN GOTO 550
1090 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1100 CLS
1110 PRINT "IN SUMMARY.......
1120 PRINT
1130 PRINT "            1.  INPUT instructs the computer to accept and store data
1140 PRINT "                in response to user defined questions and inquiries
1150 PRINT
1160 PRINT "            2.  The format is:  STATEMENT ''ARGUMENT'';VARIABLE
1170 PRINT "                       example>  INPUT ''NAME PLEASE'';N$
1180 PRINT
1190 PRINT "------------------------------------------------------------------------------"
1200 PRINT "FOR PRACTICE.......
1210 PRINT
1220 PRINT "            1.  Create programs like the examples using.....
1230 PRINT "              a.  STRING data as responses
1240 PRINT "              b.  NUMBER data as responses
1250 PRINT
1260 PRINT "            2.  Create a program using INPUT with FOR/NEXT and GOTO
1270 PRINT:PRINT:PRINT:PRINT:PRINT
1280 INPUT "           PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1290 IF Z$="P" THEN GOTO 810
1300 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1310 CLS
1320 PRINT "                             To practice, type NEW
1330 PRINT "               To get back to lessons, type LOAD''B:BTMENU.BAS'',R
1340 PRINT
1350 PRINT "        Remember to use quotations instead of double appostrophies ('')
1360 PRINT "------------------------------------------------------------------------------"

LET.BAS

10 REM MARK A. SWANSON     20:41:32  02-24-85
20 CLS
30 FOR A=1 TO 50:PRINT "       L E T   ";:NEXT A
40 PRINT
50 PRINT "------------------------------------------------------------------------------"
60 PRINT:PRINT:PRINT:PRINT
70 PRINT "                                       LET
80 PRINT:PRINT
90 PRINT "                             A STATEMENT FOR STORAGE
100 FOR A=1 TO 2000:NEXT A
110 CLS
120 PRINT "            LET is a versitile STATEMENT used for storing STRINGS and
130 PRINT "            numeric values.  Without LET, the computer assumes that
140 PRINT "            only LINE NUMBERS and their data are to be stored.  LET
150 PRINT "            can be used with almost every other STATEMENT, but we will
160 PRINT "            only use it with PRINT and GOTO in this lesson and then
170 PRINT "            apply it with new STATEMENTs in later lessons.
180 PRINT
190 PRINT "            The best way to understand LET is to use it in a simple
200 PRINT "            program.....
210 PRINT
220 PRINT "                                    10 LET A=106
230 PRINT "                                    20 PRINT A
240 PRINT
250 PRINT "            The output would be.....
260 PRINT
270 PRINT "                                    106
280 PRINT
290 PRINT "            The computer was instructed to store the number '106' as
300 PRINT "            'A'.  Then, as instructed in line 20, the computer PRINTed
310 PRINT "            the VALUE of 'A' - which is '106'.
320 PRINT:PRINT
330 INPUT "                   PRESS [RETURN] TO CONTINUE  or  [Q] MAIN BTMENU ",Z$
340 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
350 CLS
360 PRINT "            We can use LET to do math problems, as is illustrated in
370 PRINT "            the following example.....
380 PRINT
390 PRINT "                                      10 LET A=24*17
400 PRINT "                                      20 PRINT A
410 PRINT
420 PRINT "            The output would be.....
430 PRINT
440 PRINT "                                      408
450 PRINT
460 PRINT "            The computer was instructed to store the VALUE of '24 X 17'.
470 PRINT "            Then, as instructed in line 20, the VALUE was PRINTed - 408.
480 PRINT
490 PRINT "            The letter used for storing VALUES is called the VARIABLE.
500 PRINT "            We used the VARIABLE 'A', however any letter or combination
510 PRINT "            of letters is acceptable.
520 PRINT:PRINT:PRINT:PRINT
530 INPUT "           PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
540 IF Z$="P" THEN GOTO 110
550 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
560 CLS
570 PRINT "           Now, we'll use LET with STRINGs (letters, words, anything
580 PRINT "           that is to be PRINTed or stored verbatim).  A minor addition
590 PRINT "           to the format is necessary.  Whenever a STRING is to be stored,
600 PRINT "           a dollar sign ($) has to be added to the VARIABLE.  This makes
610 PRINT "           it a STRING VARIABLE.  Another example.....
620 PRINT
630 PRINT "                                  10 LET G$=''BASIC IS FUN''
640 PRINT "                                  20 PRINT G$
650 PRINT
660 PRINT "           The output would be.....
670 PRINT
680 PRINT "                                  BASIC IS FUN
690 PRINT
700 PRINT "           Notice that the data was enclosed in quotations.  Remember,
710 PRINT "           whenever we store a STRING, the data must be enclosed in
720 PRINT "           quotations.
730 PRINT:PRINT:PRINT:PRINT
740 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
750 IF Z$="P" THEN GOTO 350
760 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
770 CLS
780 PRINT "           If you can remember back to the GOTO lesson, we used the
790 PRINT "           semi-colon (;) to PRINT data horizontally instead of
800 PRINT "           vertically.  The following are examples of how to use the
810 PRINT "           semi-colon with LET and PRINT.....
820 PRINT
830 PRINT "                               10 LET T=18
840 PRINT "                               20 LET R=15
850 PRINT "                               30 PRINT ''THE ANSWER IS '';T+R
860 PRINT "                   output..... THE ANSWER IS 33
870 PRINT:PRINT
880 PRINT "                               10 LET W$=''WORDS''
890 PRINT "                               20 LET M$=''MY''
900 PRINT "                               30 LET T$=''TOGETHER''
910 PRINT "                               40 LET R$=''RUN''
920 PRINT "                               50 PRINT M$;W$;R$;T$
930 PRINT "                   output..... MYWORDSRUNTOGETHER
940 PRINT
950 PRINT "           You can create your own variations of these when you practice.
960 PRINT:PRINT:PRINT
970 INPUT "           PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
980 IF Z$="P" THEN GOTO 560
990 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1000 CLS
1010 PRINT "IN SUMMARY.....
1020 PRINT
1030 PRINT "      1.  LET instructs the computer to store numeric values and STRINGs
1040 PRINT "          to a VARIABLE.
1050 PRINT "      2.  A dollar sign ($) must be added to the VARIABLE when storing
1060 PRINT "          STRINGs and the data must be enclosed in quotations.
1070 PRINT
1080 PRINT "------------------------------------------------------------------------------"
1090 PRINT "FOR PRACTICE.....
1100 PRINT
1110 PRINT "      1.  Try variations of the previous examples.
1120 PRINT "      2.  Combine STRINGs and numeric values in one program.
1130 PRINT "      3.  Try a program using a comma (,) instead of a semi-colon (;).
1140 PRINT
1150 PRINT "------------------------------------------------------------------------------"
1160 PRINT:PRINT:PRINT:PRINT:PRINT
1170 INPUT "             PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU " ,Z$
1180 IF Z$="P" THEN GOTO 770
1190 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1200 CLS
1210 PRINT "               To begin practicing, type NEW, followed by [RETURN]
1220 PRINT
1230 PRINT "Try this program.....
1240 PRINT "                           10 LET A=A+1
1250 PRINT "                           20 PRINT A
1260 PRINT "                           30 GOTO 10
1270 PRINT
1280 PRINT "           To stop this program, press [CTRL]-[C] (at same time)
1290 PRINT
1300 PRINT " Remember, when using STRINGs, use quotations instead of double apostrophies.
1310 PRINT "-------------------------------------------------------------------------------"

MATH.BAS

10  REM  BY MARK A. SWANSON  5/1/83  BELLEVUE, WA.
20 RAND$=RIGHT$(TIME$,2)
21 RAND=VAL(RAND$)
22 RANDOMIZE RAND
30 CLS
40 FOR I=1 TO 40
50 PRINT "+ - X  %  ";:NEXT I
60 PRINT:PRINT:PRINT:PRINT:PRINT
70 PRINT TAB(35);"MATH  FUN"
80 PRINT:PRINT
90 PRINT TAB(29);"by  Mark A. Swanson
100 FOR I=1 TO 1000:NEXT I
110 CLS
120 FOR I=1 TO 500:NEXT I
130 PRINT "                     THIS IS A PROGRAM TO TEST YOUR MATH ABILITY"
140 PRINT:PRINT:PRINT
150 PRINT "                              THE PROBLEMS WILL INVOLVE :"
160 PRINT
170 PRINT "                 ADDITION  SUBTRACTION  MULTIPLICATION  &  DIVISION "
180 PRINT:PRINT:PRINT:PRINT
190 PRINT "                     THE PROBLEMS WILL LOOK LIKE THESE EXAMPLES :"
200 PRINT "                     2 + 3 = ?   3 - 1 = ?   4 X 5 = ?   6 % 2 = ?"
210 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
220 INPUT "                             PRESS [RETURN] TO CONTINUE ",I
230 CLS
240 PRINT "                 TO GET STARTED, YOU WILL BE ASKED 3 QUESTIONS:"
250 PRINT:PRINT
260 PRINT "           NUMBER FAMILY ?    ONE OF THE 2 NUMBERS IN EACH EQUATION
270 PRINT "                              WILL BE THE SAME THROUGHOUT THE SET.
280 PRINT "                              EXAMPLE - 1+2=?  4+2=?  9+2=?  3+2=? etc.
290 PRINT "                              YOU CHOOSE THE NUMBER TO REMAIN CONSTANT.":PRINT
300 PRINT "                              IF A CONSTANT NUMBER IS NOT DESIRED,
310 PRINT "                              TYPE A '0' AND BOTH NUMBERS WILL BE
320 PRINT "                              RANDOM.
330 PRINT
340 PRINT "           UPPER LIMIT ?      THE NUMBER YOU TYPE HERE WILL SET THE
350 PRINT "                              UPPER LIMIT FOR THE OTHER NUMBER IN THE
360 PRINT "                              EQUATION WHICH WILL BE A RANDOM NUMBER
370 PRINT "                              FROM 1 TO THE UPPER LIMIT YOU CHOOSE.
380 PRINT:
390 PRINT "           OPERATION ?        CHOOSE THE NUMBER NEXT TO THE OPERATION
400 PRINT "                              OF YOUR CHOICE:
410 PRINT "                              ADD, SUBTRACT, MULTIPLY, or DIVIDE."
420 PRINT:PRINT:INPUT "                              PRESS [RETURN] TO CONTINUE ",CONTINUE
430 R=1
490 CLS
491 LOCATE 23,30:PRINT "TYPE   999   FOR HELP"
495 LOCATE 1,1
500 INPUT "NUMBER FAMILY ";X
505 IF X=999 THEN GOTO 230
510 IF X=0 THEN INPUT "NO NUMBER FAMILY - UPPER LIMIT #1 ";L1
515 IF L1=999 THEN GOTO 230
520 IF X=0 THEN LOCATE 3,20:INPUT "UPPER LIMIT #2 ";LI:IF LI=999 THEN GOTO 230 ELSE X1=1:GOTO 540
525 IF LI=999 THEN GOTO 230
530 INPUT "UPPER LIMIT ";LI
535 IF LI=999 THEN GOTO 230
540 INPUT "OPERATION -  1-ADDITION   2-SUBTRACTION   3-MULTIPLICATION   4-DIVISION ";M
550 PRINT:PRINT:PRINT:PRINT
560 PRINT "                IF YOU GET STUCK, TYPE  '999' FOR THE ANSWER
570 FOR I=1 TO 500:NEXT I
580 PRINT
590 IF X=0 THEN X=INT(L1*RND(1))+1
600 ON M GOTO 610,730,860,980
610 CR=0
620 CW=0
630 FOR I=1 TO 10
640 CHK=0
650 GOSUB 1100
660 PRINT NM;"+";X;"=  ";:INPUT A
670 IF A=999 THEN PRINT "The Correct Answer Is ";NM+X:GOTO 700
680 IF A=NM+X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
690 IF A <>NM+X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 660
700 NEXT I
710 GOSUB 1140
720 GOTO 610
730 CR=0
740 CW=0
750 FOR I=1 TO 10
760 CHK=0
770 GOSUB 1100
780 CHK=0
790 PRINT NM;" - ";X" =   ";:INPUT A
800 IF A=999 THEN PRINT "The Correct Answer Is ";NM-X:GOTO 830
810 IF A=NM-X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
820 IF A<>NM-X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 790
830 NEXT I
840 GOSUB 1140
850 GOTO 730
860 CR=0
870 CW=0
880 FOR I=1 TO 10
890 GOSUB 1100
900 CHK=0
910 PRINT NM;" X ";X" =  ";:INPUT A
920 IF A=999 THEN PRINT "The Correct Answer Is ";NM*X:GOTO 950
930 IF A=NM*X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
940 IF A<>NM*X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 910
950 NEXT I
960 GOSUB 1140
970 GOTO 860
980 CR=0:CW=0
990 FOR I=1 TO 10
1000 CHK=0
1010 GOSUB 1100
1020 NM=INT(NM/X)*X
1030 PRINT NM;" % ";X" =  ";:INPUT A
1040 IF A=999 THEN PRINT "The Correct Answer Is ";NM/X:GOTO 1070
1050 IF A=NM/X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
1060 IF A<>NM/X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 1030
1070 NEXT I
1080 GOSUB 1140
1090 GOTO 980
1100 CLOSE R
1110 IF X1=1 THEN X=INT(L1*RND(1))+1
1120 NM=INT(LI*RND(1))+1
1130 RETURN
1140 CLS
1150 PRINT "                           YOU WERE CORRECT ";CR;" TIMES !"
1160 PRINT "                           YOU WERE WRONG ";CW;" TIMES"
1170 PRINT
1180 FOR I=1 TO 800:NEXT I
1190 IF CR=10 OR CW=0 THEN GOTO 1260
1200 IF CR=>8 OR CW=<1 THEN PRINT "YOU DID VERY WELL !!!"
1210 PRINT
1220 INPUT "           WOULD YOU LIKE TO CONTINUE IN THIS CATEGORY (Y or N) ? ",B$
1230 IF B$="Y" THEN CLS:RETURN
1240 INPUT "           WOULD YOU LIKE TO QUIT OR TRY SOME NEW NUMBERS ? (Q or N) ",C$
1250 IF C$="N" THEN GOTO 490
1255 LOAD"B:MENU.BAS",R
1260 CLS
1270 PRINT
1280 PRINT "                 XXX                                    XXX"
1290 PRINT "               XXX  XXX                              XXX  XXX"
1300 PRINT "                XXX  XXX                            XXX  XXX"
1310 PRINT "                 XXX   XXX                        XXX   XXX"
1320 PRINT "                  XXX    XXX                    XXX    XXX"
1330 PRINT "                   XXX     XXX                XXX    XXX
1340 PRINT "                    XXX      XXXXXXXXXXXXXXXXXX    XXX"
1350 PRINT "                   XXX                              XXX
1360 PRINT "                  XXX                                XXX
1370 PRINT "                 XXX       /                  \       XXX
1380 PRINT "                 XXX         <>             <>        XXX
1390 PRINT "             :----------------------------------------------:
1400 PRINT "             |                                              |
1410 PRINT "             |                THAT'S TERIFFIC !             |
1420 PRINT "             |                                              |
1430 PRINT "             |                 A PERFECT SCORE              |
1440 PRINT "             |                                              |
1450 PRINT "             |______________________________________________|
1460 PRINT:PRINT
1470 GOTO 1210
1 SCREEN 0,0
10 KEY 3, "LOAD"+CHR$(34)+"B:MENU"+CHR$(34)+CHR$(44)+"R"+CHR$(13)
20 KEY OFF
30 REM BY MARK A. SWANSON  5/1/83  BELLEVUE,WA.
40 CLS
50 LOCATE 10,25:PRINT "BE SURE THE [CAPS LOCK] IS ON
60 FOR A=1 TO 2000:NEXT A
70 CLS
100 PRINT
110 PRINT
120 PRINT
130 PRINT "                                  WELCOME TO
140 PRINT "                                     THE
150 PRINT
160 PRINT "
170 PRINT "                              D O C    S W A N
180 PRINT "
190 PRINT "                              LEARNING  SERIES
200 PRINT:PRINT:PRINT
210 PRINT "                             BY MARK A. SWANSON
221 PRINT "                             11390 N.E. 91st St.
222 PRINT "                             Kirkland, WA. 98033
223 PRINT:PRINT:PRINT
230 PRINT "                         Help Support Educational Fun!
250 PRINT
260 FOR I = 1 TO 3000:NEXT
270 CLS
280 PRINT "            *        *       ********      *      *      *      *"
290 PRINT "   DOC      **      **       *             * *    *      *      *     DOC "
300 PRINT "   SWAN     * *    * *       ********      *  *   *      *      *     SWAN"
310 PRINT "            *  *  *  *       *             *    * *       *    *"
320 PRINT "            *   **   *       ********      *      *        ****"
330 PRINT
340 PRINT"     ─────────────────────────              ───────────────────────────"
350 PRINT"        LETTERS & LANGUAGE                         NUMBERS & MATH
360 PRINT"     =========================              ==========================="
370 PRINT
380 PRINT"  [1] SPELLING FUN  [4] SUPER SCRAM       [7] COUNTING FUN     [9]  MPG
390 PRINT"  [2] PRINTING FUN  [5] SCRAMBLER         [8] GUESS MY NUMBER  [10] MATH FUN
400 PRINT"  [3] MISSING WORD  [6] WURD
410 PRINT
420 PRINT"     ──────────────────────────             ────────────────────────────"
430 PRINT"     *     HOW TO PROGRAM     *             *  KEYBOARD SKILL BUILDER  *
440 PRINT"     ==========================             ============================
450 PRINT"
460 PRINT"      [11]  THE BASIC TUTORIAL                    [12]  TYPING FUN
470 PRINT
480 PRINT"                                  [Q]  QUIT
490 PRINT
500 PRINT
510 PRINT "                            WHAT WOULD YOU LIKE ?";
520 INPUT " ",P$
530 CLS
540 IF P$="Q" THEN CLS:PRINT:PRINT:PRINT:PRINT "SEE YOU NEXT TIME................":GOTO 710
550 LOCATE 10,26:PRINT "YOUR SELECTION IS NOW LOADING
560 PRINT:PRINT
570 PRINT"                                 [CAPS LOCK] ON ?
580 IF P$="1" THEN LOAD"B:SPELLING.BAS",R
590 IF P$="2" THEN LOAD"B:PRINTING.BAS",R
600 IF P$="3" THEN LOAD"B:MISSING.BAS",R
610 IF P$="4" THEN LOAD"B:SUPSCRAM.BAS",R
620 IF P$="5" THEN LOAD"B:SCRAMBLE.BAS",R
630 IF P$="6" THEN LOAD"B:WURD.BAS",R
650 IF P$="7" THEN LOAD"B:COUNTING.BAS",R
660 IF P$="8" THEN LOAD"B:GUESS.BAS",R
670 IF P$="9" THEN LOAD"B:MPG.BAS",R
680 IF P$="10" THEN LOAD"B:MATH.BAS",R
690 IF P$="11" THEN LOAD"B:BASIC.BAS",R
700 IF P$="12" THEN LOAD"B:TYPE.BAS",R
710 END

MISSING.BAS

2 CLS
3 FOR A=1 TO 28:PRINT"    MISSING ____       _______ WORD  ";:NEXT A
4 PRINT:PRINT:PRINT
5 PRINT TAB(28);"by   MARK A. SWANSON"
10 FOR I=1 TO 1500:NEXT I
11 CLS
12 PRINT TAB(18);"BEFORE WE BEGIN, PLEASE TELL ME YOUR NAME";:INPUT NM$
13 PRINT:PRINT:PRINT:PRINT:PRINT
14 PRINT "                 HI ";NM$;". I'M GOING TO SHOW YOU SOME SENTENCES."
15 PRINT "                 YOUR JOB IS TO FILL IN THE MISSING WORDS."
16 PRINT:PRINT:INPUT "              WHEN YOU ARE READY TO BEGIN, PRESS THE [RETURN] KEY ";Z
19 CLS
20 PRINT:PRINT:PRINT
21 RESTORE
22 TC=0:TW=0
30 PRINT "  3 LETTER WORDS      4 LETTER WORDS      5 LETTER WORDS         TOUGHIES"
31 PRINT "    ENDING IN:           ENDING IN:          ":PRINT
32 PRINT "  A    AT             F     AKE           K    EASY            P    ?
33 PRINT "  B    AR             G     OOK           L    EASY
34 PRINT "  C    AN             H     ATE           M    AVERAGE        ==========="
35 PRINT "  D    AG             I     ARE           N    AVERAGE
36 PRINT "  E    OG             J     EAR           O    HARDER          Q     QUIT
37 PRINT:PRINT
40 PRINT "              IF YOU GET STUCK TYPE  '?'  FOR THE MISSING WORD"
65 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
66 PRINT "         PLEASE SELECT FROM THE LETTERS BELOW AND PRESS [RETURN]
67 PRINT
68 INPUT "          A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, or Q  ",CH$
70 IF CH$="A" THEN GOTO 99
71 IF CH$="B" THEN GOTO 180
72 IF CH$="C" THEN GOTO 280
73 IF CH$="D" THEN GOTO 380
74 IF CH$="E" THEN GOTO 480
75 IF CH$="F" THEN GOTO 780
76 IF CH$="G" THEN GOTO 880
77 IF CH$="H" THEN GOTO 980
78 IF CH$="I" THEN GOTO 1080
79 IF CH$="J" THEN GOTO 1180
80 IF CH$="K" THEN GOTO 1280
81 IF CH$="L" THEN GOTO 1380
82 IF CH$="M" THEN GOTO 1480
83 IF CH$="N" THEN GOTO 1580
84 IF CH$="O" THEN GOTO 1680
85 IF CH$="P" THEN GOTO 1780
86 IF CH$="Q" THEN LOAD"B:MENU",R
99 CLS
100 PRINT "THE _ _ _  FLEW OUT OF THE DARK CAVE.":GOSUB 2000
110 PRINT "THE _ _ _  CHASED THE MOUSE OUT OF THE HOUSE.":GOSUB 2000
120 PRINT "WE ALWAYS WIPE OUR FEET ON THE _ _ _ .":GOSUB 2000
130 PRINT "OUR DOG IS _ _ _ BECAUSE HE EATS TOO MUCH.":GOSUB 2000
140 PRINT "THE MAN'S _ _ _ BLEW OFF HIS HEAD IN A WINDSTORM.":GOSUB 2000
150 PRINT "SOMETIMES WE ALL DESERVE A NICE _ _ _ ON THE BACK.":GOSUB 2000
160 PRINT "A _ _ _ IS REALLY A BIG MOUSE.":GOSUB 2000
165 GOSUB 2050
170 GOTO 19
180 CLS
190 FOR I=1 TO 7:READ MW$:NEXT I
200 PRINT "THE MEN WERE SPREADING _ _ _ ON THE NEW ROOF.":GOSUB 2000
210 PRINT "MOM AND DAD WENT FOR A DRIVE IN THEIR NEW _ _ _ .":GOSUB 2000
220 PRINT" _ _ _ IS A CONFLICT BETWEEN TWO COUNTRIES.":GOSUB 2000
230 PRINT "BUTTER FINGER IS MY FAVORITE CANDY _ _ _ .":GOSUB 2000
240 PRINT "I COULDN'T GET THE LID OFF THE _ _ _ OF PEANUT BUTTER.":GOSUB 2000
250 PRINT "THE BIRDS WERE TOO _ _ _ AWAY TO SEE.":GOSUB 2000
260 PRINT "WE PLAYED GOLF ON A _ _ _ THREE COURSE.":GOSUB 2000
265 GOSUB 2050
270 GOTO 19
280 CLS
290 FOR I=1 TO 14:READ W$:NEXT I
300 PRINT "THE _ _ _ WAS VERY TALL AND HAD BROWN HAIR.":GOSUB 2000
310 PRINT "EVERYONE GETS A _ _ _ IN THE SUMMER.":GOSUB 2000
320 PRINT "THE LITTLE ENGINE SAID 'I THINK I _ _ _ '.":GOSUB 2000
330 PRINT "WHEN IT'S HOT IN THE HOUSE, I TURN ON THE _ _ _ .":GOSUB 2000
340 PRINT "WE _ _ _ AS FAST AS WE COULD WHEN WE SAW THE ICE CREAM MAN.":GOSUB 2000
350 PRINT "DAD FRIED SOME EGGS IN THE _ _ _ .":GOSUB 2000
360 PRINT "THE TEACHERS PUT A _ _ _ ON BRINGING PETS TO SCHOOL.":GOSUB 2000
365 GOSUB 2050
370 GOTO 19
380 CLS
390 FOR I=1 TO 21:READ MW$:NEXT I
400 PRINT "MOM USED A _ _ _ TO WIPE UP THE SPILLED MILK.":GOSUB 2000
410 PRINT "WE ALWAYS PLAY _ _ _ AT RECESS.":GOSUB 2000
420 PRINT "LAST HALLOWEEN, I GOT A BIG _ _ _ OF CANDY.":GOSUB 2000
430 PRINT "A HAPPY DOG WILL _ _ _ HIS TAIL.":GOSUB 2000
440 PRINT "ANOTHER NAME FOR A JOKE IS A _ _ _ .":GOSUB 2000
450 PRINT "THE FARMER'S HORSE IS AN OLD _ _ _ .":GOSUB 2000
460 PRINT "THE HAMMOCK STARTED TO _ _ _ WHEN DAD CLIMBED IN.":GOSUB 2000
465 GOSUB 2050
470 GOTO 19
480 CLS
490 FOR I=1 TO 28:READ MW$:NEXT I
500 PRINT "MY _ _ _ BARKS ALL THE TIME.":GOSUB 2000
510 PRINT "DAD CHOPPED UP THE _ _ _ FOR FIREWOOD.":GOSUB 2000
520 PRINT "THE _ _ _ WAS SO THICK THAT WE COULDN'T SEE THE SIDEWALK.":GOSUB 2000
530 PRINT "SOME PEOPLE _ _ _ TO KEEP PHYSICALLY FIT.":GOSUB 2000
540 PRINT "WE CALL OUR _ _ _ BY YELLING 'SOOOEEE SOOOEEE'.":GOSUB 2000
550 PRINT "A _ _ _ IS A KIND OF SWAMP.":GOSUB 2000
560 PRINT "THE GEARS WOULDN'T TURN BECAUSE A _ _ _ WAS BROKEN.":GOSUB 2000
565 GOSUB 2050
570 GOTO 19
780 CLS
790 FOR I=1 TO 35:READ MW$:NEXT I
800 PRINT "I LOVE TO EAT _ _ _ _ ON MY BIRTHDAY.":GOSUB 2000
810 PRINT "AFTER SCHOOL, WE ARE ALL GOING SWIMMING IN THE _ _ _ _ .":GOSUB 2000
820 PRINT "MOM SAID IF WE ARE GOOD, SHE'LL _ _ _ _ SOME COOKIES.":GOSUB 2000
830 PRINT "THE MAN USED A _ _ _ _ TO GET THE LEAVES OF HIS LAWN.":GOSUB 2000
840 PRINT "THE BOY WAS GOING TO _ _ _ _ THE BALL WITHOUT ASKING.":GOSUB 2000
850 PRINT "I HOPE THE RARE STAMP I FOUND ISN'T A _ _ _ _ .":GOSUB 2000
860 PRINT "OCEAN LINERS MAKE AN AWFULLY LARGE _ _ _ _ .":GOSUB 2000
865 GOSUB 2050
870 GOTO 19
880 CLS
890 FOR I=1 TO 42:READ MW$:NEXT I
900 PRINT "THE GIRL _ _ _ _ THE BALL WITHOUT ASKING.":GOSUB 2000
910 PRINT "I LIKE TO READ A GOOD _ _ _ _ BEFORE BEDTIME.":GOSUB 2000
920 PRINT "THE FISH ATE THE WORM RIGHT OFF THE _ _ _ _ .":GOSUB 2000
930 PRINT "IF WE _ _ _ _ LONG ENOUGH WE COULD FIND ALMOST ANYTHING.":GOSUB 2000
940 PRINT "I'LL BET YOUR GRANDMOTHER IS A GREAT _ _ _ _ .":GOSUB 2000
950 PRINT "WE ALWAYS EAT BREAKFAST IN THE KITCHEN _ _ _ _ .":GOSUB 2000
960 PRINT "IN CHESS, THE HORSE IS ALSO CALLED THE _ _ _ _ .":GOSUB 2000
965 GOSUB 2050
970 GOTO 19
980 CLS
990 FOR I=1 TO 49:READ MW$:NEXT I
1000 PRINT "THE BOY AND GIRL WENT OUT ON THEIR FIRST _ _ _ _ .":GOSUB 2000
1010 PRINT "THE COWS GOT OUT WHEN SOMEONE LEFT THE _ _ _ _ OPEN.":GOSUB 2000
1020 PRINT "I LOST THE _ _ _ _ TO ONE OF MY PAIRS OF SOCKS.":GOSUB 2000
1030 PRINT "MOM GETS UPSET IF I'M _ _ _ _ FOR DINNER.":GOSUB 2000
1040 PRINT "THE OPPOSITE OF LOVE IS _ _ _ _ .":GOSUB 2000
1050 PRINT "AT THE _ _ _ _ WE'RE GOING, WE'LL NEVER GET THERE.":GOSUB 2000
1060 PRINT "SOME SAY IT WAS _ _ _ _ THAT BROUGHT US TOGETHER.":GOSUB 2000
1065 GOSUB 2050
1070 GOTO 19
1080 CLS
1090 FOR I=1 TO 56:READ MW$:NEXT I
1100 PRINT "SOME PEOPLE DO SOME SILLY THINGS ON A _ _ _ _ .":GOSUB 2000
1110 PRINT "THE PLANE _ _ _ _ WAS $150.00.":GOSUB 2000
1120 PRINT "I REALLY _ _ _ _ ABOUT YOU.":GOSUB 2000
1130 PRINT "A FEMALE HORSE IS CALLED A _ _ _ _ .":GOSUB 2000
1140 PRINT "MY FRIEND FOUND A _ _ _ _ OLD COIN.":GOSUB 2000
1150 PRINT "OLD MOTHER HUBBARD HAD _ _ _ _ CUPBOARDS.":GOSUB 2000
1160 PRINT "A RABBIT IS SOMETIMES CALLED A _ _ _ _ .":GOSUB 2000
1165 GOSUB 2050
1170 GOTO 19
1180 CLS
1190 FOR I=1 TO 63:READ MW$:NEXT I
1200 PRINT " _ _ _ _ IS WHAT YOU FEEL WHEN YOU'RE FRIGHTENED.":GOSUB 2000
1210 PRINT "I KNEW SHE WAS CRYING BECAUSE I SAW A _ _ _ _ IN HER EYE.":GOSUB 2000
1220 PRINT "IF YOU GO TO YELLOWSTONE PARK YOU'LL SEE A _ _ _ _ .":GOSUB 2000
1230 PRINT "A _ _ _ _ IS A KIND OF FRUIT.":GOSUB 2000
1240 PRINT "THE OPPOSITE OF FAR IS _ _ _ _ .":GOSUB 2000
1250 PRINT "WHEN I WRITE MY GRANDMOTHER, I START WITH _ _ _ _ GRANDMA.":GOSUB 2000
1260 PRINT "MOST PEOPLE _ _ _ _ WARM CLOTHES IN THE WINTER.":GOSUB 2000
1265 GOSUB 2050
1270 GOTO 19
1280 CLS
1290 FOR I=1 TO 70:READ MW$:NEXT I
1300 PRINT "IT'S A GOOD IDEA TO WASH YOUR _ _ _ _ _ BEFORE YOU EAT.":GOSUB 2000
1310 PRINT "DURING A TRAFFIC JAM PEOPLE HONK THEIR _ _ _ _ _ .":GOSUB 2000
1320 PRINT "ALWAYS _ _ _ _ _ YOUR MOUTH WHEN YOU COUGH.":GOSUB 2000
1330 PRINT "THE BABY WAS SUCKING HIS _ _ _ _ _ .":GOSUB 2000
1340 PRINT "THE OPPOSITE OF DAY IS _ _ _ _ _ .":GOSUB 2000
1350 PRINT "A GAME IS PLAYED FAIRLY IF EVERYONE FOLLOWS THE _ _ _ _ _ .":GOSUB 2000
1360 PRINT "I LIKE TO SING _ _ _ _ _ AROUND A CAMPFIRE.":GOSUB 2000
1365 GOSUB 2050
1370 GOTO 19
1380 CLS
1390 FOR I=1 TO 77:READ MW$:NEXT I
1400 PRINT "MOUNTAINEERS LIKE TO _ _ _ _ _ MOUNTAINS.":GOSUB 2000
1410 PRINT "A _ _ _ _ _ WEARS MAKE-UP AND DOES FUNNY THINGS AT A CIRCUS.":GOSUB 2000
1420 PRINT "THE OPPOSITE OF WHITE IS _ _ _ _ _ .":GOSUB 2000
1430 PRINT "E.T. _ _ _ _ _ HOME.":GOSUB 2000
1440 PRINT "DAD ALWAYS TELLS ME A _ _ _ _ _ BEFORE BEDTIME.":GOSUB 2000
1450 PRINT "IT IS POLITE TO _ _ _ _ _ WHEN A LADY ENTERS THE ROOM.":GOSUB 2000
1460 PRINT "_ _ _ _ _ CHRISTMAS TO ALL.":GOSUB 2000
1465 GOSUB 2050
1470 GOTO 19
1480 CLS
1490 FOR I=1 TO 84:READ MW$:NEXT I
1500 PRINT "THE OPPOSITE OF A FROWN IS A _ _ _ _ _ .":GOSUB 2000
1510 PRINT "OREGON IS A _ _ _ _ _ .":GOSUB 2000
1520 PRINT "DAD HAS A _ _ _ _ _ DRIVER IN HIS WORKSHOP.":GOSUB 2000
1530 PRINT "I REALLY HAD TO PUT ON THE _ _ _ _ _ TO SLOW DOWN.":GOSUB 2000
1540 PRINT "THE FIREMAN SOUNDED HIS _ _ _ _ _ ON HIS WAY TO THE FIRE.":GOSUB 2000
1550 PRINT "WE SAW A LOG _ _ _ _ _ IN THE WOODS.":GOSUB 2000
1560 PRINT "I'M A REAL _ _ _ _ _ BEAVER.":GOSUB 2000
1565 GOSUB 2050
1570 GOTO 19
1580 CLS
1590 FOR I=1 TO 91:READ MW$:NEXT I
1600 PRINT "EVERYONE HAS HEARD OF THE JOLLY GREEN _ _ _ _ _ .":GOSUB 2000
1610 PRINT "IF YOU TURN ON THE RADIO YOU'LL HEAR _ _ _ _ _ .":GOSUB 2000
1620 PRINT "TONY THE _ _ _ _ _ IS ON TELEVISION COMMERCIALS.":GOSUB 2000
1630 PRINT "SIX O'CLOCK IS VERY _ _ _ _ _ IN THE MORNING.":GOSUB 2000
1640 PRINT "I BOUGHT A NEW _ _ _ _ _ BULB FOR MY CAMERA.":GOSUB 2000
1650 PRINT "I'LL TAKE A BIG _ _ _ _ _ OF ICE CREAM, PLEASE!":GOSUB 2000
1660 PRINT "THE OPPOSITE OF ALWAYS IS _ _ _ _ _ .":GOSUB 2000
1665 GOSUB 2050
1670 GOTO 19
1680 CLS
1690 FOR I=1 TO 98:READ MW$:NEXT I
1700 PRINT "I USE A _ _ _ _ _ TO DRAW STRAIGHT LINES.":GOSUB 2000
1710 PRINT "A RAISIN IS ACTUALLY A DRIED _ _ _ _ _ .":GOSUB 2000
1720 PRINT "SOME PRANKS AREN'T VERY _ _ _ _ _ .":GOSUB 2000
1730 PRINT "THE MAN _ _ _ _ _ OUR PIANO.":GOSUB 2000
1740 PRINT "SOME INDIANS STILL _ _ _ _ _ BASKETS.":GOSUB 2000
1750 PRINT "I FILLED MY _ _ _ _ _ WITH LOTS OF FOOD.":GOSUB 2000
1760 PRINT "A LARGE GROUP OF PEOPLE IS CALLED A _ _ _ _ _ .":GOSUB 2000
1765 GOSUB 2050
1770 GOTO 19
1780 CLS
1790 FOR I=1 TO 105:READ MW$:NEXT I
1800 PRINT "A MAJOR ROAD IS CALLED A _ _ _ _ _ _ _ . ":GOSUB 2000
1810 PRINT "THE ARMY HAS PLENTY OF _ _ _ _ _ _ _ _ .":GOSUB 2000
1820 PRINT "THE FALLEN TREE HELPED US CROSS THE _ _ _ _ _ _ .":GOSUB 2000
1830 PRINT "WE WENT TO THE THEATER TO WATCH THE _ _ _ _ _ _ _ . ":GOSUB 2000
1840 PRINT "THE _ _ _ _ _ _ _ _ PERFORMED SOME GREAT TRICKS.":GOSUB 2000
1850 PRINT "I WANT TO _ _ _ _ _ _ AROUND THE WORLD. ":GOSUB 2000
1860 PRINT "PEOPLE WHO WON'T GIVE IN ARE _ _ _ _ _ _ _ _ .":GOSUB 2000
1865 GOSUB 2050
1870 GOTO 19
2000 READ MW$
2010 PRINT:INPUT "WHAT IS THE MISSING WORD ";GU$
2015 IF GU$="?" THEN PRINT MW$:GOTO 2040
2020 IF GU$= MW$ THEN PRINT "THAT'S RIGHT ";NM$:TC=TC+1
2030 IF GU$<>MW$ THEN PRINT "NOT QUITE.....TRY AGAIN !":TW=TW+1:GOTO 2010
2040 PRINT:RETURN
2050 CLS
2060 PRINT TAB(20);"HERE IS HOW YOU DID, ";NM$;"................"
2070 PRINT:PRINT:PRINT
2080 PRINT TAB(20); "YOU WERE CORRECT ";TC;" TIMES "
2090 PRINT:PRINT TAB(20);"YOU WERE INCORRECT ";TW;" TIMES"
2091 PRINT:PRINT:PRINT
2092 IF TC=7 AND TW=0 THEN PRINT TAB(24);"HEY ";NM$
2093 IF TC=7 AND TW=0 THEN PRINT TAB(24);"A PERFECT SCORE !!!"
2100 FOR A=1 TO 2500:NEXT A
2110 RETURN
2120 DATA BAT,CAT,MAT,FAT,HAT,PAT,RAT
2130 DATA TAR,CAR,WAR,BAR,JAR,FAR,PAR
2140 DATA MAN,TAN,CAN,FAN,RAN,PAN,BAN
2150 DATA RAG,TAG,BAG,WAG,GAG,NAG,SAG
2160 DATA DOG,LOG,FOG,JOG,HOG,BOG,COG
2180 DATA CAKE,LAKE,BAKE,RAKE,TAKE,FAKE,WAKE
2190 DATA TOOK,BOOK,HOOK,LOOK,COOK,NOOK,ROOK
2200 DATA DATE,GATE,MATE,LATE,HATE,RATE,FATE
2210 DATA DARE,FARE,CARE,MARE,RARE,BARE,HARE
2220 DATA FEAR,TEAR,BEAR,PEAR,NEAR,DEAR,WEAR
2230 DATA HANDS,HORNS,COVER,THUMB,NIGHT,RULES,SONGS
2240 DATA CLIMB,CLOWN,BLACK,PHONE,STORY,STAND,MERRY
2250 DATA SMILE,STATE,SCREW,BRAKE,SIREN,CABIN,EAGER
2260 DATA GIANT,MUSIC,TIGER,EARLY,FLASH,SCOOP,NEVER
2270 DATA RULER,GRAPE,FUNNY,TUNED,WEAVE,PLATE,CROWD
2280 DATA HIGHWAY,SOLDIERS,STREAM,MATINEE,MAGICIAN,TRAVEL,STUBBORN
2290 RETURN

MODES.BAS

10 CLS
30 PRINT:PRINT
40 PRINT "                                     THE  MODES
50 PRINT
60 PRINT "                                         OF
70 PRINT
80 PRINT "                                     OPERATION
90 PRINT:PRINT:PRINT
100 PRINT "                                       ------
110 PRINT "            ---------------------------- or --------------------------
120 PRINT "                                       ------
130 PRINT:PRINT:PRINT
140 PRINT "                                  A  QUESTION  OF
150 PRINT
160 PRINT "                                        OF
170 PRINT
180 PRINT "                                [RUN]  OR  [RETURN]
190 FOR A=1 TO 2500:NEXT A
200 CLS
210 PRINT "                             THE TWO MODES OF OPERATION
220 PRINT:PRINT
230 PRINT "                                   1.  IMMEDIATE
240 PRINT
250 PRINT "                                   2.  PROGRAMMING
260 PRINT:PRINT:PRINT
270 PRINT "             A computer operates in 'modes'.  A particular mode
280 PRINT "             simply signifies when commands and statements are to
290 PRINT "             be executed.  An easy way to remember the difference is
300 PRINT "             that in IMMEDIATE MODE the commands or statements are
310 PRINT "             executed by pressing the [RETURN] key, whereas in the
320 PRINT "             PROGRAMMING MODE the word RUN must be typed in order for
330 PRINT "             commands or statements (usually several) to be executed
340 PRINT "             or 'run'.
350 PRINT:PRINT:PRINT
360 INPUT "         PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",Z$
370 IF Z$="P" THEN 10
380 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
390 CLS
400 PRINT "                                THE IMMEDIATE MODE
410 PRINT:PRINT
420 PRINT "        This mode can also be thought of as the 'calculator' mode because"
430 PRINT "        you need only type the necessary information followed by a [RETURN]"
440 PRINT "        or in the calculator's case, an '=' sign.
450 PRINT
460 PRINT "        We used the IMMEDIATE MODE in the examples in lesson 1 (PRINT).
470 PRINT "       First, we typed in what we wanted the computer to do (PRINT).
480 PRINT "       Second, we typed in the 'ARGUMENT' (1+1).  Third, we pressed the
490 PRINT "       [RETURN] key to make it all happen.
500 PRINT
510 PRINT "       COMMANDS are used more commonly in the IMMEDIATE mode than are
520 PRINT "       STATEMENTS.  An example is the COMMAND 'RUN'.  We type in in at
530 PRINT "       the IMMEDIATE MODE, followed by [RETURN], to execute or start a program.
540 PRINT
550 PRINT "                       ***   EXAMPLES OF IMMEDIATE MODE   ***
560 PRINT
570 PRINT "        PRINT ''HI THERE ! ''  [RETURN]           PRINT 3+3/2   [RETURN]
580 PRINT:PRINT:PRINT
590 INPUT "         PRESS [RETURN] TO CONTINUE OR [P] PREVIOUS PAGE OR [Q] MAIN BTMENU ",Z$
600 IF Z$="P" THEN GOTO 200
610 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
620 CLS
630 PRINT "                                THE PROGRAMMING MODE
640 PRINT:PRINT:PRINT:PRINT:PRINT
650 PRINT "            Now we're getting to the heart of using BASIC to a much
660 PRINT "            greater potential.  This is where real programming takes
670 PRINT "            place !
680 PRINT
690 PRINT "            Remember, a PROGRAM is a list of instructions in sequential
700 PRINT "            numeric order that the computer can 'read' and hence carry
710 PRINT "            out after the COMMAND [RUN] has been typed and the [RETURN]
720 PRINT "            key pressed.
730 PRINT
740 PRINT "            RUN is typed in at the IMMEDIATE mode which means ....
750 PRINT "            we start the PROGRAM from the IMMEDIATE mode.
760 PRINT:PRINT:PRINT:PRINT:PRINT
770 INPUT "        PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",Z$
780 IF Z$="P" THEN GOTO 390
790 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
800 CLS
810 PRINT
820 PRINT "            So how do we get into the PROGRAMMING mode ?  Simply by
830 PRINT "            prefacing our instructions with a number (herein referred
840 PRINT "            to as a LINE NUMBER).  When we press the [RETURN] key to
850 PRINT "            signal to the computer the end of our instruction line
860 PRINT "            and that we now want it stored in the computer's memory,
870 PRINT "            the computer responds by merely placing the cursor on
880 PRINT "            the next line down.  the computer did not carry out your
890 PRINT "            instructions (after pushing [RETURN]) because it assumed
900 PRINT "            you had more instructions to type in.
910 PRINT
920 PRINT "            Let's look at an example of the PROGRAMMING mode using
930 PRINT "            the PRINT statement.
940 PRINT:PRINT
950 PRINT "                               10 PRINT ''HELLO THERE''"
960 PRINT "                               20 PRINT ''HOW ARE YOU ?''"
970 PRINT "                               30 END
980 PRINT:PRINT:PRINT
990 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1000 IF Z$="P" THEN GOTO 620
1010 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1020 CLS
1030 PRINT "                We'll take another look at the sample PROGRAM...
1040 PRINT
1050 PRINT "            1st thing the computer does.......  10 PRINT ''HELLO THERE''"
1060 PRINT "            2nd thing the computer does.......  20 PRINT ''HOW ARE YOU ?''"
1070 PRINT "            3rd - signals END of program......  30 END
1080 PRINT
1090 PRINT "            Output............................  HELLO THERE
1100 PRINT "                                                HOW ARE YOU ?
1110 PRINT
1120 PRINT "            So you see, the PROGRAMMING mode allows us to type in
1130 PRINT "            multiple instructions in the order in which we want them
1140 PRINT "            to be executed (acted upon).
1150 PRINT
1160 PRINT "            This particular lesson you're using was written in the
1170 PRINT "            PROGRAMMING mode and has about 150 lines of instructions,
1180 PRINT "            all of which are prefaced with LINE NUMBERS.
1190 PRINT:PRINT:PRINT:PRINT:PRINT
1200 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1210 IF Z$="P" THEN GOTO 800
1220 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1230 CLS
1240 PRINT "            You may be wondering why the numbers 10, 20, and 30 were
1250 PRINT "            used instead of 1, 2, & 3.  Often times we need to add a
1260 PRINT "            line or two to a program, which is one way to EDIT or change"
1270 PRINT "            the program after it has been entered.  By numbering in
1280 PRINT "            increments of 10 we can insert up to 9 additional lines
1290 PRINT "            of program between each original increment.
1300 PRINT
1310 PRINT "            Let's use the same sample program as an example of simple
1320 PRINT "            EDITing.
1330 PRINT
1340 PRINT "                             10 PRINT ''HELLO THERE''"
1350 PRINT "                             20 PRINT ''HOW ARE YOU ?''"
1360 PRINT "                             30 END
1370 PRINT
1380 PRINT "             We'll add a line 15....
1390 PRINT
1400 PRINT "                             15 PRINT ''I FEEL GREAT !''"
1410 PRINT:PRINT:PRINT:PRINT
1420 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1430 IF Z$="P" THEN GOTO 1020
1440 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1450 CLS
1460 PRINT "             To see our new list of program lines, we type LIST and
1470 PRINT "             here's what we get.....
1480 PRINT:PRINT
1490 PRINT "                               10 PRINT ''HELLO THERE''"
1500 PRINT "                               15 PRINT ''I FEEL GREAT !''"
1510 PRINT "                               20 PRINT ''HOW ARE YOU ?''"
1520 PRINT "                               30 END
1530 PRINT
1540 PRINT "            The computer automatically inserted the new line into the
1550 PRINT "            proper seqential order.  This time when we type RUN and
1560 PRINT "            press RETURN we get.....
1570 PRINT
1580 PRINT "                                  HELLO THERE
1590 PRINT "                                  I FEEL GREAT !
1600 PRINT "                                  HOW ARE YOU ?
1610 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1620 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1630 IF Z$="P" THEN GOTO 1230
1640 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1650 CLS
1660 PRINT "   IN SUMMARY...........
1670 PRINT
1680 PRINT "             1.  Immediate mode can work like a calculator
1690 PRINT "             2.  Immediate mode commands
1700 PRINT "               a. RUN - starts the program, runs the program
1710 PRINT "               b. LIST - displays program listing
1720 PRINT "               c. NEW - clears memory, erases program
1730 PRINT "             3.  Immediate mode execution - press RETURN
1740 PRINT "             4.  Program mode execution - type RUN, then press RETURN
1750 PRINT "             5.  In program mode, line numbers preface statements
1760 PRINT "             6.  Program mode allows multiple statements to be run
1770 PRINT "                 (executed) in sequential order
1780 PRINT
1790 PRINT "------------------------------------------------------------------------------"
1800 PRINT "   FOR PRACTICE.........
1810 PRINT
1820 PRINT "             1.  Create your own 3 or 4 line program using PRINT
1830 PRINT "             2.  Use increments of 10 for line numbers
1840 PRINT "             3.  EDIT by adding new lines
1850 PRINT:PRINT
1860 INPUT "            PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1870 IF Z$="P" THEN GOTO 1450
1880 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1890 CLS
1900 PRINT "* Remember to press [RETURN] after each line to signal computer that you
1910 PRINT "are ready to move on.
1920 PRINT "* Remember to type RUN and press [RETURN] to run program.
1930 PRINT "* LIST will display the program's line numbers and instructions.
1940 PRINT "* NEW will clear the memory and erase previous programs from computer's memory.
1950 PRINT
1960 PRINT "To get back to lessons, type LOAD''B:BTMENU.BAS'',R
1970 PRINT "------------------------------------------------------------------------------"
1980 PRINT "                       To begin, type NEW and press [RETURN]

MPG.BAS

1 CLS
10 DIM TRCK(2,104)
20 ' LOCATE C,R:PRINT CHR$(27)+CHR$(61)+CHR$(R+32)+CHR$(C+32)
30 :REM█ RANGE 1
40 SX=56
50 FOR J=1 TO 31:TRCK(1,J)= SX:SX=SX-1:TRCK(2,J)= 2:NEXT J
55 :REM█ RANGE 2
60 FOR J=32 TO 49:READ TRCK(1,J):NEXT J
70 DATA 24,23,21,20,19,18,17,16,14,14,14,14,16,17,18,19,20,21
90 FOR J=32 TO 49:READ TRCK(2,J):NEXT J
100 DATA 3,3,3,3,4,4,5,6,7,8,9,10,11,12,13,13,14,14
110 :REM█ RANGE 3
120 SX=23:FOR J=50 TO 85:TRCK(1,J)= SX:SX=SX+1:NEXT J
130 TRCK(2,50)= 14:TRCK(2,51)= 14:FOR J=52 TO 83:TRCK(2,J)= 15:NEXT J
140 TRCK(2,84)= 14:TRCK(2,85)= 14
150 :REM█ RANGE 4
160 FOR J=86 TO 104:READ TRCK(1,J):NEXT J
170 DATA 61,62,63,64,65,66,67,67,67,67,66,65,64,63,62,61,59,57,56
180 FOR J=86 TO 104:READ TRCK(2,J):NEXT J
190 DATA 14,14,13,13,12,11,10,9,8,7,6,5,4,4,3,3,3,3,2
200 :REM█ PROGRAM MPG
210 CL$= CHR$(26)
220 CLS
230 FOR A=10 TO 30
250 FOR D=1 TO 40:NEXT D
260 NEXT A
270 CLS
280 FOR I=1 TO 30:PRINT "   o==o*";:NEXT I
290 PRINT:PRINT:PRINT
300 PRINT "            ===           ===       =============      ============"
310 PRINT "            == =         = ==       ==         ==      ==        =="
320 PRINT "            ==  =       =  ==       ==         ==      ==        =="
330 PRINT "            ==   =     =   ==       ==         ==      =="
340 PRINT "            ==    =   =    ==       =============      =="
350 PRINT "            ==     = =     ==       ==                 ==      ===="
360 PRINT "            ==      =      ==       ==                 ==        =="
370 PRINT "            ==             ==       ==                 ==        =="
380 PRINT "            ==             ==       ==                 ============"
390 PRINT:PRINT:PRINT
400 PRINT "                           by      Mark A. Swanson
410 FOR I=1 TO 1000:NEXT I
420 CLS
430 PRINT "                           WELCOME TO THE WINDIANAPOLIS 20 !"
440 CN=0
450 PRINT:PRINT:PRINT:PRINT
460 PRINT "      THIS IS A RACE BETWEEN YOU AND YOUR OPPONENT TO SEE WHO WILL GET "
470 PRINT "      THE FARTHEST ON A TANK OF GAS.  THE COURSE IS 20 MILES."
480 PRINT:PRINT
490 PRINT "      THE ONLY PROBLEM IS THAT HIGH WINDS, CHARACTERISTIC OF WINDIANAPOLIS,"
500 PRINT "      MAY AFFECT THE PERFORMANCE OF YOUR CAR."
510 PRINT:PRINT
520 PRINT "      THE CAR THAT GOES THE FARTHEST WINS."
530 PRINT:PRINT:PRINT
540 PRINT "                                 G O O D   L U C K !!!"
550 PRINT:PRINT:PRINT
560 TI=0:TJ=0:TWI=0:TWJ=0:TTI=0:TTJ=0:BI=0:BJ=0:JG=0:IG=0:SBI=0:SBJ=0
570 INPUT "                             PRESS  [RETURN] TO CONTINUE ",T$
580 CLS
590 PRINT "                          PLEASE TYPE THE NAMES OF THE DRIVERS"
600 PRINT:PRINT:PRINT
610 TJ=0:TI=0
620 BI=0:SBI=0:SMI=0:BJ=0:SBJ=0:SMJ=0
630 INPUT "CAR 1   NAME: ";A$
640 INPUT "CAR 2   NAME: ";B$
670 X$=RIGHT$(TIME$,2)
680 X=VAL(X$)
690 RANDOMIZE X
730 CLS
735 RACE=RACE+1
740 PRINT "        PRESS    1 (BETTING INSTRUCTIONS)   2 (TO BET)   3 (NO BET) ":F$=INPUT$(1)
750 IF F$="1" THEN GOTO 1780
760 IF F$="2" THEN GOTO 1970
770 IF F$="3" THEN BI=0:BJ=0:SBI=0:SBJ=0:IG=0:JG=0:GOTO 780
780 CLS
790 FOR I=1 TO 500:NEXT I
800 PRINT "        #####   #####       #        ####    #      #"
810 PRINT "        #   #   #          # #       #   #    #    #"
820 PRINT "        ####    #####     #   #      #    #    #  #"
830 PRINT "        #   #   #        #######     #   #      ##"
840 PRINT "        #    #  #####   #       #    ####       ##   ## ## ## ##"
850 FOR I=1 TO 500 :NEXT I
860 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
870 PRINT "                   #########     #########      ##########"
880 PRINT "                   #             #                   #"
890 PRINT "                   #             #                   #"
900 PRINT "                    ########     #########           #"
910 PRINT "                           #     #                   #"
920 PRINT "                           #     #                   #"
930 PRINT "                   ########      #########           #    ## ## ##"
940 FOR I=1 TO 500:NEXT I
950 CLS
960 PRINT:PRINT:PRINT:PRINT
970 PRINT "                    ##################          #################"
980 PRINT "                   ##                ##        ##               ##"
990 PRINT "                   ##                ##        ##               ##"
1000 PRINT "                   ##                          ##               ##"
1010 PRINT "                   ##                          ##               ##"
1020 PRINT "                   ##                          ##               ##"
1030 PRINT "                   ##                          ##               ##"
1040 PRINT "                   ##         #########        ##               ##"
1050 PRINT "                   ##                ##        ##               ##"
1060 PRINT "                   ##                ##        ##               ##"
1070 PRINT "                   ##                ##        ##               ##"
1080 PRINT "                    ##################          #################"
1090 CLS
1100 ' LOCATE 1,1:FOR A=1 TO 30:PRINT CHR$(177);:NEXT A:PRINT "WINDYANAPOLIS 20":LOCATE 1,46:FOR A=1 TO 30:PRINT CHR$(177);:NEXT A:PRINT:PRINT:PRINT
1101 PRINT:PRINT:PRINT
1110 PRINT"                    ««««««««««««««««««««««««««««««««««««««««
1120 PRINT"                   *                                        *
1130 PRINT"                  *                                          * "
1140 PRINT"                 *                                            *
1150 PRINT"                *                                              *
1160 PRINT"                *                                              *
1170 PRINT"                 *                                            *  "
1180 PRINT"                  *                                          *
1190 PRINT"                   *                                        *"
1200 PRINT"                    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
1210 CLOSE X:GS1=INT(80*RND(1))+1:CLOSE X+1:GS2=INT(80*RND(1))+1
1220 CLOSE X+2:NUM=INT(100*RND(1))+1
1225 IF GS1<20 THEN GS1=20
1226 IF GS2<20 THEN GS2=20
1230 IF NUM<51 THEN DL1=2:DL2=3
1240 IF NUM>50 THEN DL2=2:DL1=3
1250 IF GS1>GS2 THEN LPS=GS1 ELSE LPS=GS2
1260 X1=TRCK(1,15):Y1=TRCK(2,15):X2=X1:Y2=Y1-1
1270 PT1=15:PT2=15:I=0:J=0:ONI=0:ONJ=0
1285 LOCATE 10,27:PRINT A$:LOCATE 10,50:PRINT B$
1286 LOCATE 12,36:PRINT "RACE #";RACE
1290 FOR N=1 TO LPS
1295 LOCATE 11,27:PRINT STR$(ONI):LOCATE 11,50:PRINT STR$(ONJ)
1300 IF N>GS1 THEN DL1=0
1310 IF N>GS2 THEN DL2=0
1320 LOCATE Y1,X1:PRINT LEFT$(A$,1):LOCATE Y2,X2:PRINT LEFT$(B$,1)
1330 FOR T=1 TO 40:NEXT T
1340 LOCATE Y1,X1:PRINT " ":LOCATE Y2,X2:PRINT " "
1350 PT1=PT1+DL1:PT2=PT2+DL2
1360 IF PT1>103 THEN PT1=1
1370 IF PT2>103 THEN PT2=1
1380 X1=TRCK(1,PT1):Y1=TRCK(2,PT1):X2=TRCK(1,PT2):Y2=TRCK(2,PT2)
1385 I=I+DL1:J=J+DL2
1386 ONI=INT(I/10):ONJ=INT(J/10)
1390 NEXT N
1400 LOCATE Y1,X1 :PRINT LEFT$(A$,1):LOCATE Y2,X2:PRINT LEFT$(B$,1)
1420 FOR T=1 TO 400:NEXT T
1425 I=INT(I/10):J=INT(J/10)
1431 PRINT:PRINT
1432 LOCATE 16,10:PRINT "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  MPG SCOREBOARD  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
1440 PRINT
1450 IF I>J THEN DI=I-J: LOCATE 6,28:PRINT A$;" WINS BY ";DI;" MILES !":TI=TI+DI
1460 IF J>I THEN DJ=J-I:LOCATE 6,28 :PRINT B$;" WINS BY ";DJ;" MILES !":TJ=TJ+DJ
1470 IF I=J THEN LOCATE 6,36:PRINT "ITS A TIE !"
1480 TBI=BI:TBJ=BJ
1490 IF J>I THEN TBJ=BJ ELSE TBJ=0-BJ
1500 IF I>J THEN TBI=BI ELSE TBI=0-BI
1510 IF J=I THEN BJ=0 AND BI=0
1520 IF JG=DJ OR JG=DI THEN STJ=10*SBJ ELSE STJ=-SBJ*0.1
1530 IF IG=DI OR IG=DJ THEN STI=10*SBI ELSE STI=-SBI*0.1
1540 TTI%=STI+TBI
1550 TTJ%=STJ+TBJ
1560 TWI%=TWI%+TTI%:TWJ%=TWJ%+TTJ%
1580 PRINT
1590 LOCATE 18,10:PRINT A$;" HAS ";TI;" POINTS
1600 LOCATE 18,49:PRINT B$;" HAS ";TJ;" POINTS";
1610 IF TI>2*TJ THEN LOCATE 8,30:PRINT "HEY ";B$;"...GET GOING !"
1620 IF TJ>2*TI THEN LOCATE 8,30:PRINT "BETTER HUSTLE ";A$;" !
1640 LOCATE 20,1:PRINT A$;TAB(10);"BET TO WIN $:";BI:LOCATE 20,29:PRINT"SPREAD $:";SBI:LOCATE 20,45:PRINT"SPREAD GUESS:";IG:LOCATE 20,63:PRINT"| TOTAL  $";TWI%
1650 LOCATE 21,1:PRINT B$;TAB(10);"BET TO WIN $:";BJ:LOCATE 21,29:PRINT"SPREAD $:";SBJ:LOCATE 21,45:PRINT"SPREAD GUESS:";JG:LOCATE 21,63:PRINT"| TOTAL  $";TWJ%
1660 PRINT
1670 LOCATE 23,5:PRINT "PRESS   [1] (ANOTHER RACE)   [2] (NEW RACE/DRIVERS)  [3] (QUIT) ";
1680 X$=INPUT$(1)
1690 IF X$="1" THEN GOTO 730
1700 IF X$="2" THEN RACE=0:GOTO 420
1710 CLS
1720 FOR A=10 TO 30
1730 LOCATE 6,A:PRINT" GOOD BYE FROM WINDIANAPOLIS---- o===o*"
1740 FOR D=1 TO 40:NEXT D
1760 NEXT A
1765 CLS
1770 LOAD"B:MENU.BAS",R
1780 CLS
1790 PRINT "                                  BETTING INSTRUCTIONS"
1800 PRINT:PRINT:PRINT
1810 PRINT "YOU MAY BET ON YOUR CAR TWO WAYS:"
1820 PRINT:PRINT"1)   BET THAT YOUR CAR WILL WIN"
1830 PRINT"2)   BET THE MILE DIFFERENCE (SPREAD) BETWEEN CARS"
1840 PRINT:PRINT:PRINT:
1850 PRINT "* BETTING ON YOUR CAR TO WIN:"
1860 PRINT "PLACE YOUR BET WHEN PROMPTED BEFORE EACH RACE."
1870 PRINT:PRINT
1880 PRINT "* BETTING ON THE MILES SPREAD BETWEEN CARS:"
1890 PRINT "WHEN PROMPTED, PLACE YOUR BET WITH THE DOLLAR AMOUNT AND MILES SPREAD."
1900 PRINT "MILES SPREAD PAYOFF IS 10 X SPREAD BET.  LOSS IS -10% OF SPREAD BET."
1910 PRINT
1930 PRINT "                             MAXIMUM POINT SPREAD IS 19"
1931 PRINT
1940 PRINT "                            WOULD YOU LIKE TO BET ? (Y/N)":C$=INPUT$(1)
1950 IF C$="N" THEN GOTO 730
1960 CLS
1970 CLS
1980 PRINT "                                  BETTING WINDOW"
1990 PRINT:PRINT:PRINT:PRINT:PRINT
2000 PRINT A$
2010 INPUT "TO WIN: $1 TO $1000  ";BI
2020 PRINT
2030 INPUT "BY # MILES:  $ AMOUNT  ";SBI
2040 INPUT "             # OF MILES  ";IG
2050 PRINT:PRINT
2060 PRINT B$
2070 INPUT "TO WIN: $1 TO $1000  ";BJ
2080 PRINT
2090 INPUT "BY # MILES:  $ AMOUNT  ";SBJ
2100 INPUT "             # OF MILES  ";JG
2110 GOTO 780

PRINT.BAS

20 CLS
30 PRINT "                              GETTING STARTED WITH
40 PRINT "                                     PRINT
50 PRINT:PRINT
60 PRINT "           PRINT is the most common of the basic statements and we
70 PRINT "           cover it now because we'll use it often in other examples.
80 PRINT
90 PRINT "           PRINT is used to make the computer display information on
100 PRINT "           the monitor (tv screen).  We are constantly being asked to
110 PRINT "           PRINT our name on applications, bills, etc. and we know
120 PRINT "           that PRINT means to write or 'display' our name.  The
130 PRINT "           computer does the same thing with two differences.
140 PRINT "           1) We have to tell the computer exactly what to print.
150 PRINT "           2) The computer PRINTs on a screen, not paper.
160 PRINT
170 PRINT "           We'll look at how PRINT works with an easy example.
180 PRINT:PRINT:PRINT
190 PRINT "                           PRESS [RETURN] TO CONTINUE "
200 INPUT "                              OR [Q] FOR MAIN BTMENU ",A$
210 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
220 CLS
230 PRINT "           To illustrate PRINT, lets make the computer write (display)
240 PRINT "           a name on the monitor.  Remember - to make the computer
250 PRINT "           PRINT, we have to tell it exactly what to PRINT.
260 PRINT:PRINT
270 PRINT "                      The format for PRINT is as follows...
280 PRINT:PRINT
290 PRINT "                         PRINT ''MY NAME IS JOHN SMITH''
300 PRINT "                               ^                      ^
310 PRINT "                (NOTE: use quotations instead of apostrophies)
320 PRINT:PRINT:PRINT
330 PRINT "           We are essentially asking the computer to 'quote' us.
340 PRINT "           That is why we must use quotations around the part called
350 PRINT "           the ARGUMENT.  Remember, PRINT is called the STATEMENT.
360 PRINT
370 PRINT "           When we want the computer to actually PRINT the ARGUMENT,
380 PRINT "           the RETURN key must be pushed (unless we are in the
390 PRINT "           programming mode - to be discussed later).
400 PRINT
410 INPUT "       PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",A$
420 IF A$="P" THEN GOTO 10
430 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
440 CLS
450 PRINT "           Here's what will happen using the previous example...
460 PRINT:PRINT:PRINT:PRINT
470 PRINT "                       PRINT ''MY NAME IS JOHN SMITH'' [RETURN]
480 PRINT "                       MY NAME IS JOHN SMITH
490 PRINT:PRINT:PRINT:PRINT
500 PRINT "           A breakdown of the process is...
510 PRINT
520 PRINT "           1)  Type - PRINT ''MY NAME IS JOHN SMITH''
530 PRINT "           2)  Press the RETURN key
540 PRINT "           3)  The computer displays - MY NAME IS JOHN SMITH
550 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
560 INPUT "       PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",A$
570 IF A$="P" THEN GOTO 220
580 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
590 CLS
600 PRINT "          We just used PRINT to print a name.  Names are made with
610 PRINT "          letters, of course. And, because we used letters we had
620 PRINT "          to make the computer print those exact letters in the
630 PRINT "          exact order we typed them in.  So really, the computer
640 PRINT "          was copying us !
650 PRINT
660 PRINT "          What if we wanted to have the computer PRINT the value of
670 PRINT "          something, like a math equation.  We would be turning our
680 PRINT "          computer into a very expensive calculator.  Well, now
690 PRINT "          we're using numbers and we don't want the computer to just
700 PRINT "          copy what we type.  We want answers !  We want the VALUE
710 PRINT "          of what we typed in.  So..... we drop the QUOTATIONS.
720 PRINT
730 PRINT "          Let's look at an example..............
740 PRINT:PRINT
750 PRINT "                             PRINT 1+3     [RETURN]
760 PRINT "                             4
770 PRINT
780 PRINT "          We simply told the the computer what to do and it did it.
790 PRINT "          We said, 'PRINT the value of 1 + 3' and the computer
800 PRINT "          printed 4.  Note that we don't even need an 'equal' sign.
810 PRINT
820 INPUT "       PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",Z$
830 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
840 IF Z$="P" THEN GOTO 440
850 CLS
860 PRINT "        Ok, just for the fun of it see if you can guess the output of
870 PRINT "        the following program......
880 PRINT:PRINT
890 PRINT "                              PRINT ''3*2+14''
900 PRINT:PRINT
910 INPUT "                              ENTER YOUR ANSWER ";X$
920 IF X$="48" THEN PRINT "Nope, you mixed up the order of operations.  Anyway, there's another problem. Try again.":GOTO 910
930 IF X$="20" THEN PRINT "Well, you have the math correct but there's another problem.":GOTO 910
940 IF X$="3*2+14" THEN PRINT "That's right ! You remembered that quotations force a verbatim response." ELSE PRINT "The quotations mean that the response will be PRINTed verbatim.":GOTO 910
950 PRINT:PRINT:PRINT
960 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
970 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
980 IF Z$="P" THEN GOTO 590
990 PRINT:PRINT
1000 CLS
1010 PRINT "                IN SUMMARY......................
1020 PRINT:PRINT:PRINT
1030 PRINT "     1)  PRINT is a STATEMENT used to display information on the monitor
1040 PRINT
1050 PRINT "     2)  You must tell the computer exactly what to PRINT
1060 PRINT
1070 PRINT "     3)  To PRINT something verbatim, quotations must be used
1080 PRINT
1090 PRINT "     4)  The RETURN key must be pushed to execute the STATEMENT (immediate mode)
1100 PRINT
1110 PRINT "-------------------------------------------------------------------------------"
1120 PRINT "                                FOR PRACTICE
1130 PRINT:PRINT
1140 PRINT "     1.  Experiment by PRINTing names, letters, characters with varying
1150 PRINT "         spaces.  How many characters will fit on a line ?
1160 PRINT "     2.  Try some math equations. (+ is add, - is subtract, * is multiply,
1170 PRINT "         and / is divide)
1180 PRINT:PRINT
1190 INPUT "PRESS [Z] TO CLEAR SCREEN FOR PRACTICE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",A$
1200 IF A$="P" THEN GOTO 850
1210 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
1220 CLS
1230 PRINT "To get back to lessons type -   LOAD''B:BTMENU.BAS'',R
1240 PRINT "                                    ^             ^
1250 PRINT "                         use quotations instead of apostrophies
1260 PRINT
1270 PRINT " Examples of PRINT:
1280 PRINT "                               PRINT ''BASIC IS FUN !''   [RETURN]
1290 PRINT "                               BASIC IS FUN !
1300 PRINT
1310 PRINT "                               PRINT 45*2+10-5          [RETURN]
1320 PRINT "                               95
1330 PRINT
1340 PRINT"-----------------------------------------------------------------------------"
1350 NEW

PRINTING.BAS

10 CLS
20 PRINT "WELCOME TO PRINTING FUN !
30 PRINT
40 PRINT "      THIS IS A MINI WORD PROCESSOR THAT WILL LET YOU TYPE LETTERS
50 PRINT "      OR NOTES OR ANYTHING YOU WANT !
60 PRINT
70 FOR A=1 TO 79:PRINT CHR$(177);:NEXT A
80 PRINT:PRINT
90 PRINT "      TO PRINT ON THE SCREEN ONLY > SIMPLY TYPE AWAY
100 PRINT
110 PRINT "      TO PRINT ON YOUR PRINTER ONE LINE AT A TIME > PRESS [CTRL]-[PRTSC]
120 PRINT "      KEYS AT THE SAME TIME
130 PRINT
140 PRINT "      TO PRINT EVERYTHING ON THE SCREEN > PRESS [SHFT]-[PRTSC] AT THE SAME
150 PRINT
151 FOR A=1 TO 79:PRINT CHR$(177);:NEXT A
152 PRINT:PRINT
160 PRINT "       USE THE BACKSPACE KEY TO ERASE WHAT YOU ALREADY TYPED ON THE LINE
170 PRINT
180 PRINT "       USE THE SPACE BAR TO MAKE BLANK SPACES
190 PRINT
193 PRINT "       TO QUIT > PRESS  [@]  (PRESS [SHFT]-[2] KEYS TOGETHER).
194 PRINT "       YOU MUST BE AT THE BEGINNING OF THE LINE TO QUIT.
195 PRINT
210 INPUT "              PLEASE TELL ME YOUR NAME, THEN PRESS [RETURN]  ",NM$
220 CLS
230 LOCATE 23,1:PRINT "TYPED BY ";NM$;:LOCATE 23,25:PRINT "LINE#";ROW;"  SPACE#";1 :LOCATE 23,69:PRINT DATE$
240 FOR ROW=1 TO 20
250 FOR LEFTMARGIN=1 TO 20:LOCATE LEFTMARGIN,1:PRINT CHR$(8):NEXT LEFTMARGIN
260 FOR RIGHTMARGIN=1 TO 20:LOCATE RIGHTMARGIN,80:PRINT CHR$(8):NEXT RIGHTMARGIN
270 LOCATE ROW,2:PRINT STRING$(78," ")
280 LOCATE ROW+1,2:FOR LINES=3 TO 79:PRINT CHR$(22);:NEXT LINES:LOCATE 23,46:PRINT "LINES LEFT =";20-ROW
290 FOR COL=2 TO 79
300 LOCATE ROW,COL:PRINT CHR$(95);" "
310 LOCATE 23,1:PRINT "TYPED BY ";NM$;:LOCATE 23,25:PRINT "LINE#";ROW;"  SPACE#";COL-1:LOCATE 23,69:PRINT DATE$
320 K$=INPUT$(1)
321 IF COL=2 AND K$="@" THEN CLS:INPUT "QUIT or START OVER (Q or S) ";E$:IF E$="S" THEN GOTO 195 ELSE LOAD"B:MENU.BAS",R
330 IF K$=CHR$(8) THEN LOCATE ROW,COL-1:IF COL<3 THEN COL=2 ELSE COL=COL-2 :PRINT" "
340 IF K$=CHR$(13) THEN LOCATE ROW,COL:PRINT " "
350 IF K$=CHR$(13) THEN LOCATE ROW+1,1: PRINT STRING$(79," "):COL=79:GOTO 380
360 LOCATE ROW,COL:IF K$<>CHR$(8) THEN PRINT K$
370 NEXT COL
380 NEXT ROW
390 LOCATE 22,22:INPUT "▒▒▒▒▒▒ PRESS [RETURN] TO START OVER ▒▒▒▒▒▒  ",STARTOVER
400 GOTO 220

READDATA.BAS

10 REM  MARK A. SWANSON   20:53:20   02-24-85
20 CLS
30 FOR A=1 TO 36
40 PRINT "  READ/DATA\/\/READ\DATA  ";
50 NEXT A
60 PRINT "-------------------------------------------------------------------------------"
70 PRINT:PRINT
80 PRINT "                                   READ / DATA
90 PRINT
100 PRINT "                            THE COMPUTER'S LIBRARIAN
110 FOR A=1 TO 2000:NEXT A
120 CLS
130 PRINT "           READ/DATA is a STATEMENT that acts like a librarian.  We use
140 PRINT "           it to store alot of DATA on one or more lines in the program
150 PRINT "           and then READ that DATA individually or in groups.  So actually
160 PRINT "           we have two STATEMENTs - each on their own line or lines.
170 PRINT
180 PRINT "           Here is what READ/DATA might look like in a program.....
190 PRINT
200 PRINT "                                10 READ A
210 PRINT "                                20 PRINT A
220 PRINT "                                30 DATA 12
230 PRINT
240 PRINT "           The output would be >  12
250 PRINT
260 PRINT "           Line 10 instructs the computer to READ and store the contents
270 PRINT "           of the DATA in line 30 to the VARIABLE 'A'.  Line 20 holds
280 PRINT "           the STATEMENT that PRINTs the DATA that was stored to the
290 PRINT "           VARIABLE 'A'.
300 PRINT:PRINT:PRINT:PRINT
310 INPUT "                PRESS [RETURN] TO CONTINUE  OR  [Q] MAIN BTMENU ";Z$
320 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
330 CLS
340 PRINT "           Obviously, it would have been easier to use LET to store the
350 PRINT "           number 12 (LET A=12).  READ/DATA, therefore, is used more
360 PRINT "           frequently with larger amounts of data that is to be stored
370 PRINT "           to a single or multiple VARIABLEs.  Let's see how READ/DATA
380 PRINT "           would work for a large group of DATA with a single VARIABLE.....
390 PRINT
400 PRINT "                   10 FOR A=1 TO 10
410 PRINT "                   20 READ T$
420 PRINT "                   30 PRINT T$,
430 PRINT "                   40 NEXT A
440 PRINT "                   50 DATA JOHN,POLLY,GEORGE,RAY,BILL,SUE,VAL,JIM,LEO,GREG
450 PRINT
460 INPUT "           Ok, type 'RUN' and press [RETURN] to make it work.... ",Z$
470 PRINT
480 IF Z$<>"RUN" THEN PRINT "TRY AGAIN.....":GOTO 460
490 RESTORE
500 FOR A=1 TO 10
510 READ T$
520 PRINT T$,
530 NEXT A
540 DATA JOHN,POLLY,GEORGE,RAY,BILL,SUE,VAL,JIM,LEO,GREG
550 FOR A=1 TO 500:NEXT A
560 PRINT
570 PRINT "           Since we have only one VARIABLE and 10 'pieces' of DATA,
580 PRINT "           we need to enclose READ T$ and PRINT T$ in a FOR/NEXT loop.
590 PRINT "           We had 10 pieces of DATA so we needed a FOR/NEXT count to 10.
600 PRINT:PRINT
610 INPUT "        PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
620 IF Z$="P" THEN GOTO 120
630 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
640 CLS
650 PRINT "        Before we look at the other variations of READ/DATA, let's
660 PRINT "        establish some rules by which to follow when using READ/DATA
670 PRINT "        in a program.....
680 PRINT:PRINT
690 PRINT "        1.  READ must be located before any other use of the corresponding
700 PRINT "            VARIABLE is initiated.
710 PRINT
720 PRINT "        2.  DATA may be located anywhere in the program.
730 PRINT
740 PRINT "        3.  The number of DATA pieces READ is determined by the number of
750 PRINT "            VARIABLEs following the READ STATEMENT (this will be covered
760 PRINT "            shortly).
770 PRINT
780 PRINT "        4.  If the DATA is to be READ more than once, RESTORE must be
790 PRINT "            used to reset the VARIABLE back to 0 before each pass.
800 PRINT:PRINT:PRINT:PRINT:PRINT
810 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
820 IF Z$="P" THEN GOTO 330
830 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
840 CLS
850 PRINT "         Here are the common ways READ/DATA may be used (with output).
860 PRINT
870 PRINT "                           10 READ A,B,C
880 PRINT "                           20 PRINT A,B,C
890 PRINT "                           30 DATA 24,16,89
900 PRINT "               output----> 24          16          89
910 PRINT
920 PRINT "                           10 FOR A=1 TO 3
930 PRINT "                           20 READ A$,B$
940 PRINT "                           30 PRINT A$,B$
950 PRINT "                           40 NEXT A
960 PRINT "                           50 DATA CAR,ROAD,BIRD,AIR,TRAIN,TRACK
970 PRINT "               output----> CAR         ROAD
980 PRINT "                           BIRD        AIR
990 PRINT "                           TRAIN       TRACK
1000 PRINT
1010 PRINT "                           10 READ A$,B
1020 PRINT "                           20 PRINT A$;'' ON '';B;'' DOLLARS IS "
1030 PRINT "                           30 PRINT (B+25)*.10
1040 PRINT "                           40 DATA INCOME TAX,100
1050 PRINT "               output----> INCOME TAX ON 100 DOLLARS IS
1060 PRINT "                           12.50
1070 PRINT
1080 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1090 IF Z$="P" THEN GOTO 640
1100 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1110 CLS
1120 PRINT "        If you didn't take a good look at the previous examples, go
1130 PRINT "        back now and analyze the programs so you can predict what each
1140 PRINT "        program will do.
1150 PRINT
1160 PRINT "        Below is an example using RESTORE with READ/DATA.  RESTORE is
1170 PRINT "        used to clear the READ storage of DATA so that the DATA can be
1180 PRINT "        stored and used again.  If another pass is attempted to READ
1190 PRINT "        the DATA more than once (without RESTORE), you will get the 'OUT
1200 PRINT "        OF DATA' message.  This, by the way, will also happen if you have
1210 PRINT "        more READ variables than DATA pieces.  The computer simply runs
1220 PRINT "        out of data.
1230 PRINT
1240 PRINT "                            10 RESTORE
1250 PRINT "                            20 READ A
1260 PRINT "                            30 PRINT A;
1270 PRINT "                            40 GOTO 10
1280 PRINT "                            50 DATA 1,2,3,4,5
1290 PRINT "                output----> 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 .....
1300 PRINT
1310 PRINT "        The RESTORE allows the DATA to be PRINTed over and over via GOTO 10
1320 PRINT "        in line 40.
1330 PRINT:PRINT
1340 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1350 IF Z$="P" THEN GOTO 840
1360 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1370 CLS
1380 PRINT "IN SUMMARY................
1390 PRINT
1400 PRINT "       1.  READ/DATA allows large amounts of DATA to be stored and utilized.":PRINT
1410 PRINT "       2.  READ must be located on a line before the the associated PRINT
1420 PRINT "           statement or other statements which use the DATA are encountered.":PRINT
1430 PRINT "       3.  RESTORE must be used if the DATA is to be READ more than once.
1440 PRINT
1450 PRINT "------------------------------------------------------------------------------"
1460 PRINT "FOR PRACTICE.............
1470 PRINT
1480 PRINT "       1.  Try the sample programs in the workbook.":PRINT
1490 PRINT "       2.  Once you have RUN a READ/DATA program a couple of times,
1500 PRINT "           change the DATA or add more and adjust the READ statement
1510 PRINT "           to accomodate the changes.":PRINT
1520 PRINT "       3.  Create a program using as many statements previously learned.":PRINT
1530 PRINT:PRINT
1540 INPUT "         PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1550 IF Z$="P" THEN GOTO 1110
1560 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1570 CLS
1580 PRINT "      To get back to lessons, type LOAD''B:BTMENU.BAS'',R AND PRESS [RETURN]
1590 PRINT "                                       ^             ^"
1600 PRINT "           Remember to use quotations instead of double apostrophies
1610 PRINT
1620 PRINT "                 To begin practice, type NEW and press [RETURN]
1630 PRINT "------------------------------------------------------------------------------"

SCRAMBLE.BAS

20 CLS
30 FOR I=1 TO 4
50 X=INT(100*RND)
60 PRINT TAB(X);"SUEB";"     OPSWX";"       BISTE";"    DHIE";"        KSEAD ";"          IDWSE  ";"  NMSAED";"              AOPEKWG";"          ARAC";
70 PRINT " SJHCX ";"LAID        ";"  EKSKJAA";"               KOALS ";
80 NEXT I
90 PRINT:PRINT
100 PRINT "==============================================================================="
110 PRINT:PRINT
120 PRINT TAB(33);"S C R A M B L E R"
130 PRINT:PRINT
140 PRINT TAB(30);"by   MARK A. SWANSON"
170 FOR I=1 TO 1000:NEXT I
180 CLS
190 INPUT "                            PLEASE TELL ME YOUR NAME ";NM$
200 PRINT:PRINT:PRINT
210 PRINT "               HI ";NM$;" ! "
220 PRINT "               I'M GOING TO SHOW YOU A WORD ON THE SCREEN THAT IS"
230 PRINT "               ALL MIXED UP.  YOUR JOB IS TO UNSCRAMBLE THE LETTERS"
240 PRINT "               AND TYPE THE CORRECT WORD ON THE KEYBOARD.  WHEN I"
250 PRINT "               THINK YOU'RE HAVING TROUBLE, I'LL GIVE YOU A CLUE."
260 PRINT:PRINT:PRINT:PRINT
270 PRINT:PRINT "                        TO QUIT AT ANY TIME PRESS  'Q'."
280 PRINT:PRINT:PRINT:PRINT:PRINT TAB(20);"WHEN YOU ARE READY TO BEGIN, PRESS [RETURN]":X$= INPUT$(1):CLS
290 RESTORE
300 CLS
310 PRINT:PRINT
320 PRINT "                              HERE ARE THE CATEGORIES"
330 PRINT
331 PRINT "==============================================================================="
332 PRINT
340 PRINT "          3 LETTER WORDS   4 LETTER WORDS   5 LETTER WORDS   TOUGHIES!"
342 PRINT
343 PRINT "            A  SET 1         D  SET 1         G  SET 1       J  SET 1"
344 PRINT "            B  SET 2         E  SET 2         H  SET 2       K  SET 2"
345 PRINT "            C  SET 3         F  SET 3         I  SET 3       L  SET 3"
346 PRINT:PRINT TAB(38);"Q  QUIT":PRINT:PRINT "==============================================================================="
347 PRINT:PRINT "                           THERE ARE 5 WORDS IN EACH SET"
348 PRINT:PRINT:PRINT
349 PRINT "                                   PLEASE CHOOSE"
350 C$= INPUT$(1)
355 CLS
360 IF C$="A" THEN 500
361 IF C$="B" THEN FOR I=1 TO 5:READ SC$,W$,C$:NEXT I:GOTO 500
362 IF C$="C" THEN FOR I=1 TO 10:READ SC$,W$,C$:NEXT I:GOTO 500
363 IF C$="D" THEN FOR I=1 TO 15:READ SC$,W$,C$:NEXT I:GOTO 500
364 IF C$="E" THEN FOR I=1 TO 20:READ SC$,W$,C$:NEXT I:GOTO 500
365 IF C$="F" THEN FOR I=1 TO 25:READ SC$,W$,C$:NEXT I:GOTO 500
366 IF C$="G" THEN FOR I=1 TO 30:READ SC$,W$,C$:NEXT I:GOTO 500
367 IF C$="H" THEN FOR I=1 TO 35:READ SC$,W$,C$:NEXT I:GOTO 500
368 IF C$="I" THEN FOR I=1 TO 40:READ SC$,W$,C$:NEXT I:GOTO 500
369 IF C$="J" THEN FOR I=1 TO 45:READ SC$,W$,C$:NEXT I:GOTO 500
370 IF C$="K" THEN FOR I=1 TO 50:READ SC$,W$,C$:NEXT I:GOTO 500
371 IF C$="L" THEN FOR I=1 TO 55:READ SC$,W$,C$:NEXT I:GOTO 500
372 IF C$="Q" THEN LOAD"B:MENU.BAS",R
500 FOR I=1 TO 5
505 TWC=0
510 PRINT
520 READ SC$,W$,C$
530 PRINT:PRINT TAB(39);SC$
540 PRINT
545 IF TWC=2 THEN TW=TW+1:PRINT:PRINT"HERE'S A CLUE....":PRINT:PRINT C$:TWC=0
550 INPUT "                            WHAT IS THE SECRET WORD ";GU$
565 IF GU$="Q" THEN LOAD"B:MENU.BAS",R
570 IF GU$<>W$ THEN TW=TW+1:TWC=TWC+1 :PRINT:PRINT TAB(30);"NOT QUITE ";NM$;". TRY AGAIN":GOTO 530
580 IF GU$= W$ THEN TC=TC+1
590 GOTO 2000
600 NEXT I
610 GOTO 4000
2000 PRINT:PRINT:PRINT "                             ========================"
2010 PRINT "                             =                      ="
2020 PRINT "                             =  Y O U  G O T  I T   ="
2030 PRINT "                             =  *****************   ="
2040 PRINT "                             =                      ="
2050 PRINT "                             ========================"
2060 FOR A=1 TO 600:NEXT A
2070 CLS
2080 GOTO 600
2090 SOUND"B:MENU.BAS",R
3000 DATA ACR,CAR,DRIVE,YBU,BUY,PAY,ESE,SEE,LOOK,TOW,TWO,COUPLE,ATE,EAT,FOOD
3001 DATA ETG,GET,HAVE,WOM,MOW,LAWN,ALY,LAY,SLEEP,ANT,TAN,SUN,OTO,TOO,ALSO
3002 DATA OBY,BOY,GIRL,TUO,OUT,IN,YMA,MAY,MONTH,ITN,TIN,METAL,PMA,MAP,GUIDE
3003 DATA RGLI,GIRL,BOY,ABTO,BOAT,WATER,DNAS,SAND,BEACH,LIWL,WILL,DESIRE
3004 DATA MHRA,HARM,HURT,ISKC,SICK,WELL,GTAO,GOAT,SHEEP,NHDA,HAND,FINGERS
3005 DATA IALS,SAIL,BOAT,DMNE,MEND,FIX,MALP,LAMP,LIGHT,PATE,TAPE,STICKY
3006 DATA LEBL,BELL,RING,AETH,HEAT,HOT,VIGE,GIVE,TAKE,ITRAS,STAIR,CLIMB
3007 DATA EVRIR,RIVER,STREAM,NSIEH,SHINE,GLOW,DRGNA,GRAND,GREAT,AENLR,LEARN,KNOW
3008 DATA KRBAE,BAKER,CAKE,TRAEW,WATER,WET,NCRAO,ACORN,NUT,ELJYL,JELLY,GRAPE
3009 DATA TSAPE,PASTE,STICKY,OFURL,FLOUR,SIFT,ICAHR,CHAIR,SIT,NUYNF,FUNNY,JOKE
3010 DATA YIDWN,WINDY,BREEZY,MACLE,CAMEL,HUMPS,LIOSRED,SOLDIER,ARMY
3011 DATA RLARCO,CORRAL,BARNYARD,KSRPEAE,SPEAKER,SOUND,LAGEE,EAGLE,BIRD
3012 DATA NGIIET,IGNITE,BURN,ARHCCTE,CATCHER,BASEBALL,LWTALE,WALLET,PURSE
3013 DATA ETLNHEPA,ELEPHANT,TRUNK,TAMLEN,MENTAL,MIND,NAPINITG,PAINTING,PICTURE
3014 DATA MACNIONN,CINNAMON,SPICE,UCARTLLAOC,CALCULATOR,COMPUTER
3015 DATA YOSUAJLE,JEALOUSY,ENVY,NNRGOATI,IGNORANT,DUMB,HEPLETEON,TELEPHONE,TALK
4000 PRINT "                            HERE IS YOUR SCORE, ";NM$
4005 TTC=TTC+TC:TTW=TTW+TW
4010 PRINT:PRINT:PRINT:PRINT
4020 PRINT "                LAST SET                        GRAND TOTAL
4030 PRINT
4040 PRINT "               CORRECT";"  ";TC;"                    ";"CORRECT";"    ";TTC
4050 PRINT "               WRONG";"    ";TW;"                    ";"WRONG";"      ";TTW
4051 PRINT:PRINT
4055 IF TW=0 THEN PRINT TAB(28);"THAT WAS A PERFECT LAST SET"
4056 IF TW=>1 AND TW<4 THEN PRINT TAB(28);"NOT A BAD LAST SET PARTNER!
4057 IF TW>8 THEN PRINT TAB(20);"YOU'RE MORE MIXED UP THAN THE WORDS !"
4058 IF TW>3 AND TW<9 THEN PRINT TAB(28);"OOPS !!! YOU'RE SLIPPING"
4060 IF TTW=0 THEN PRINT TAB(28);"WOW !!!  A PERFECT SCORE"
4070 IF TTW>0 AND TTW<4 THEN PRINT TAB(28);"YOU'RE REALLY DOING GREAT !"
4080 IF TTW>5 AND TTW<10 THEN PRINT TAB(5);"IF THIS IS YOUR SECOND SET, YOU'RE DOING OK. IF IT'S YOUR FIRST...TSK,TSK"
4085 IF TTC>20 AND TTC<41 AND TTW<5 THEN "DON'T STOP NOW !"
4086 IF TTC>40 AND TTW=>5 AND TTW<15 THEN PRINT TAB(28);"KEEP UP THE GOOD WORK !"
4087 IF TTC>60 AND TTW<5 THEN PRINT TAB(28);"YOU'RE A REAL WIZ !!!"
4095 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
4100 PRINT "                         PRESS  [RETURN]  TO CONTINUE";X$= INPUT$(1)
4150 TC=0:TW=0
4200 CLS
4300 GOTO 290

SPELLING.BAS

10 REM  BY MARK A. SWANSON  6/1/83  BELLEVUE, WA.
30 DIM TCO$(10)
40 CLS
50 FOR I=1 TO 32:PRINT "    SPELLING FUN !  ";:NEXT I
60 PRINT:PRINT"_______________________________________________________________________________"
70 PRINT:PRINT:PRINT TAB(31);"by   Mark A. Swanson"
80 FOR I=1 TO 1000:NEXT I
90 CLS
100 PRINT "                            WELCOME TO SPELLING FUN  !!!"
110 PRINT:PRINT:PRINT:PRINT
120 INPUT "                            PLEASE TELL ME YOUR NAME ";NM$
130 PRINT:PRINT:PRINT
140 PRINT "                    HI ";NM$;" !  I'M GOING TO SHOW YOU SOME WORDS AND"
150 PRINT "                    I'D LIKE YOU TO SPELL THEM.
160 PRINT:PRINT:PRINT
165 PRINT "                    BEFORE WE START, MAKE SURE THE  [CAPS LOCK]  IS ON."
166 PRINT:PRINT :PRINT
170 PRINT "                    WHEN YOU'RE READY ";NM$; ", PRESS THE RETURN KEY.";
180 INPUT " ",I$
190 CLS
200 RESTORE
210 PRINT "                                SPELLING FUN MENU"
220 PRINT:PRINT:PRINT
230 PRINT "   ========================================================================="
250 PRINT "     3 LETTER WORDS      4 LETTER WORDS      5 LETTER WORDS "
260 PRINT "       ENDING IN:           ENDING IN:            WITH           [P]  TOUGHIES":PRINT
270 PRINT "    [A]   AT            [F]    AKE          [K]    AI            [T]  TEACHER'S
280 PRINT "    [B]   AR            [G]    OOK          [L]    AE                 CHOICE
290 PRINT "    [C]   AN            [H]    ATE          [M]    OU            ==========="
300 PRINT "    [D]   AG            [I]    ARE          [N]    TT
310 PRINT "    [E]   OG            [J]    EAR          [O]    LL             Q     QUIT
320 PRINT:PRINT
330 PRINT "   =========================================================================
340 PRINT:PRINT
350 PRINT "              TO QUIT EARLY, TYPE 'Q' INSTEAD OF SPELLING THE WORD"
360 PRINT:PRINT
370 INPUT "       PLEASE PRESS THE LETTER FOR THE TYPE OF WORDS YOU'LD LIKE TO SPELL";WW$
371 IF ASC(WW$)<65 OR ASC(WW$)>91 THEN LOCATE 23,30:PRINT "PLEASE PUSH [CAPS LOCK]":FOR A=1 TO 2000:NEXT A:LOCATE 23,20:PRINT STRING$(50," "):LOCATE 22,1:GOTO 370
380 IF WW$="A" THEN GOTO 430
390 IF WW$="T" THEN GOTO 770
400 IF WW$="Q" THEN LOAD"B:MENU.BAS",R
410 N =(ASC(WW$)-65)*7:FOR I=1 TO N:READ W$:NEXT I
420 CLS
430 FOR A=1 TO 7
440 CLS
450 READ W$
460 PRINT:PRINT:PRINT
470 PRINT TAB(24);"CAN YOU SPELL.............."
480 PRINT:PRINT:PRINT
490 PRINT TAB(38);W$
500 PRINT:PRINT
510 PRINT TAB(35);:INPUT ">  ",SP$
520 IF SP$="Q" THEN GOTO 570
530 IF SP$=W$ THEN TC=TC+1:PRINT:PRINT TAB(30);"THAT'S RIGHT ";NM$:FOR I=1 TO 500:NEXT I
540 PRINT
550 IF SP$<>W$ THEN PRINT TAB(30);"TRY AGAIN ";NM$:PRINT:TW=TW+1:GOTO 490
560 NEXT A
570 CLS
580 PRINT TAB(30);"HERE IS YOUR SCORE ";NM$;" ......."
590 PRINT:PRINT:PRINT:PRINT
600 IF TW=0 THEN PRINT TAB(30);"WOW ! A PERFECT SCORE"
610 IF TW<2 AND TC>3 THEN PRINT TAB(36);"GOOD JOB !"
630 IF TW>3 THEN PRINT TAB(30);"OOPS... YOU'RE SLIPPING !"
640 PRINT:PRINT:PRINT
650 PRINT TAB(30);"CORRECT - ";TC
660 PRINT:PRINT
670 PRINT TAB(30);"INCORRECT - ";TW
680 FOR I=1 TO 2500:NEXT I
690 TC=0:TW=0
700 GOTO 190
710 REM DATA CAT,DOG,COW,CAP,BOY,BAT,COG,CAR,SAT,MAN,SEE,WIN,ASK,BAG,TOY
720 REM DATA FARM,LOOK,SEND,DARE,NEAR,HARM,TAKE,TEAR,LATE,CARE,LOVE,GATE,DOOR,CAKE
730 REM DATA MEND,COVER,NIGHT,CLOWN,RULER,GRAPE,FUNNY,PLATE,MERRY,PHONE,SMILE
740 REM DATA TIGER,STATE,BLACK,WHITE,SCOOP,HIGHWAY,SOLDIER,STREAM,MATINEE,MOTHER
750 REM DATA FATHER,MAGICIAN,STUBBORN,VEGETABLE,GIRAFFE,TRANSPORTATION,SINGLE
760 REM DATA INVITE,COMPARE,BIRTHDAY,A$,B$,C$,D$,E$
770 CLS
780 PRINT"                  PLEASE TYPE IN YOUR OWN LIST OF 10 WORDS"
790 PRINT:PRINT:PRINT:PRINT:PRINT
800 FOR J=1 TO 10:PRINT TAB(15);"WORD #";J;:INPUT TCO$(J):NEXT J
810 FOR K=1 TO 10:W$=TCO$(K):GOSUB 830:NEXT K
820 GOTO 570
830 CLS:PRINT TAB(28);"CAN YOU SPELL..........."
840 PRINT:PRINT:PRINT
850 PRINT TAB(37);W$
860 PRINT:PRINT
870 PRINT TAB(35);:INPUT SP$
880 PRINT
890 IF SP$=W$ THEN TC=TC+1:PRINT TAB(28);"THAT'S RIGHT  ";NM$:FOR A=1 TO 500:NEXT A:CLS:RETURN
900 IF SP$="Q" THEN GOTO 570
910 IF SP$<>W$ THEN TW=TW IMP 1:PRINT TAB(28);"TRY AGAIN ";NM$:GOTO 840
2120 DATA BAT,CAT,MAT,FAT,HAT,PAT,RAT
2130 DATA TAR,CAR,WAR,BAR,JAR,FAR,PAR
2140 DATA MAN,TAN,CAN,FAN,RAN,PAN,BAN
2150 DATA RAG,TAG,BAG,WAG,GAG,NAG,SAG
2160 DATA DOG,LOG,FOG,JOG,HOG,BOG,COG
2180 DATA CAKE,LAKE,BAKE,RAKE,TAKE,FAKE,WAKE
2190 DATA TOOK,BOOK,HOOK,LOOK,COOK,NOOK,ROOK
2200 DATA DATE,GATE,MATE,LATE,HATE,RATE,FATE
2210 DATA DARE,FARE,CARE,MARE,RARE,BARE,HARE
2220 DATA FEAR,TEAR,BEAR,PEAR,NEAR,DEAR,WEAR
2230 DATA TAINT,DAIRY,NAIVE,DAILY,FLAIR,PAINT,MAINLY
2240 DATA FIELD,FIERY,TIE,PHONE,STORY,STAND,MERRY
2250 DATA SMILE,STATE,SCREW,BRAKE,SIREN,CABIN,EAGER
2260 DATA GIANT,MUSIC,TIGER,EARLY,FLASH,SCOOP,NEVER
2270 DATA RULER,GRAPE,FUNNY,TUNED,WEAVE,PLATE,CROWD
2280 DATA HIGHWAY,SOLDIERS,STREAM,MATINEE,MAGICIAN,TRAVEL,STUBBORN

SUPSCRAM.BAS

10 :REM                          Concieved by Mark A. Swanson
20 :REM                            Edited by E. W. Connell
30 :REM                                  1/17/84
31 CLEAR 10000
40 DIM PVALS(26),PLR$(4),PT%(4),TPT%(4)
60 GM=0:P=0
70 HR1$="S U P E R":HR2$="S C R A M":BL$="         "
80 CLS
100 FOR N=1 TO 26:READ PVALS(N):NEXT N
110 FOR J=1 TO 30:NEXT J
120 DATA 1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10
130 DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,E,I,O
140 X1=1:Y1=21:X2=70:Y2=21
150 FOR J=1 TO 21
170 IF J=21 THEN GOTO 220
180 FOR T=1 TO 40:NEXT T
200 X1=X1+2:Y1=Y1-1:X2=X2-2:Y2=Y2-1
210 NEXT J
220 FOR T=1 TO 400:NEXT T
230 :REM█****************** INTRO
240 CLS
250 PRINT:PRINT
260 PRINT"                        Welcome to Super Scram !!!!!!":PRINT
261 PRINT
270 PRINT"        THIS IS A GAME FOR UP TO 4 PLAYERS WHERE EACH PLAYER TRIES"
280 PRINT"        TO FORM A WORD FROM A RANDOM LIST OF 10 LETTERS.":PRINT
290 PRINT"        POINTS ARE AWARDED FOR EACH LETTER USED":PRINT
300 PRINT"        YOU MAY NOT USE A LETTER MORE TIMES THAN IT APPEARS IN THE"
310 PRINT"        LIST AND IT IS UP TO THE OTHER PLAYERS TO MAKE SURE THAT"
320 PRINT"        THE LETTERS AND WORDS ARE VALID.  (KEEP ALERT !!)":PRINT
330 INPUT"             WOULD YOU LIKE TO SEE THE LETTER POINT VALUES";Y$:PRINT:PRINT
340 IF LEFT$(Y$,1)="Y" THEN GOSUB 840
360 X$=RIGHT$(TIME$,2)
370 SEED=VAL(X$)
380 RANDOMIZE SEED
420 CLS
430 INPUT"HOW MANY PLAYERS (UP TO 4)  ";PLAYERS
440 IF PLAYERS=0 THEN GOTO 430
450 IF PLAYERS>4 THEN PRINT"TOO MANY PLAYERS...":GOTO 430
460 FOR N=1 TO PLAYERS
465 PRINT
470 PRINT"PLAYER #";N;:INPUT PLR$(N)
475 PRINT
480 NEXT N
490 PRINT:PRINT
500 INPUT"HOW MANY ROUNDS OF PLAY ";ROUNDS
505 ML=0
510 IF ROUNDS=0 THEN GOTO 500
520 ML=ML+1:' FOR ML=1 TO ROUNDS
530 FOR PL=1 TO PLAYERS
540 CLS
550 PRINT TAB(23);
560 FOR I=1 TO 10
570 ICHAR=INT(128*RND(1))+1
571 IF ICHAR<65 OR ICHAR>90 THEN GOTO 570
580 PRINT CHR$(ICHAR);"  ";
590 LS$(I)=CHR$(ICHAR)
600 NEXT I
610 FOR DWN=1 TO 7:PRINT:NEXT DWN
620 PRINT TAB(20);PLR$(PL);:INPUT"  PLEASE TYPE IN YOUR WORD >",WORD$
630 LN=LEN(WORD$):PT%(PL)=0
640 FOR K%=1 TO LN
650 S$=MID$(WORD$,K%,K%)
660 P=0
670 FOR P=1 TO 10
680 IF LS$(P)=LEFT$(S$,1) THEN GOTO 720
690 NEXT P
700 PRINT"One of the letters you used is not on the list ...."
710 GOTO 620
720 NEXT K%
730 FOR J=1 TO LN
740 PT%(PL)=PT%(PL)+PVALS((ASC(MID$(WORD$,J,J))-64))
750 NEXT J
760 PRINT TAB(20);"YOUR WORD IS WORTH ";PT%(PL);" POINTS !"
770 TPT%(PL)=TPT%(PL)+PT%(PL)
780 FOR T=1 TO 1000:NEXT T
790 NEXT PL
800 ' IF ML=ROUNDS THEN ML=0 : GOSUB 920
810 GOSUB 920
820 GOTO 520: ' NEXT ML
830 END
840 :REM  POINT VALUES TABLE
850 CLS:PRINT TAB(30);"LETTER POINT VALUES"
860 PRINT:PRINT:PRINT
870 FOR J=1 TO 13
880 PRINT TAB(28);CHR$(64+J);" ";PVALS(J);TAB(46);CHR$(77+J);" ";PVALS(J+13)
890 NEXT J
900 PRINT:PRINT:PRINT:INPUT"                       Press [RETURN] to continue ....",X$
901 IF ROUNDS>0 THEN GOTO 930
910 RETURN
920 :REM  SCOREBOARD
930 CLS:PRINT TAB(22);"▒▒▒▒▒▒ SUPER SCRAM SCOREBOARD ▒▒▒▒▒▒":PRINT
940 PRINT TAB(34);"Round #";ML:FOR D=1 TO 7:PRINT:NEXT D
950 PRINT TAB(15);"NAME";TAB(40);"LAST ROUND";TAB(65);"GRAND TOTAL":PRINT:PRINT
960 FOR J=1 TO PLAYERS
970 PRINT TAB(15);PLR$(J);TAB(40);PT%(J);TAB(65);TPT%(J)
980 NEXT J
990 PRINT:PRINT:PRINT
1000 IF ML<ROUNDS THEN PRINT"PRESS  ▒ [RETURN] to (CONTINUE) ▒ [N] (NEW GAME) ▒ [L] (LETTER POINT VALUES)"
1001 IF ML=ROUNDS THEN PRINT"     PRESS      ▒ [RETURN] (NEW GAME) ▒ [L] (LETTER POINT VALUES)"
1010 PRINT"                                   [Q] (QUIT) ":Z$=INPUT$(1)
1030 IF Z$="N" THEN GOTO 10
1040 IF Z$="L" THEN GOSUB 840
1050 IF Z$="Q" THEN LOAD"B:MENU.BAS",R
1055 IF ML=>ROUNDS THEN GOTO 10
1060 GOTO 820

TYPE.BAS

10 CLS
20 OPENNING=OPENNING+1
30 GOSUB 430
40 PRINT:PRINT:PRINT
50 PRINT "    WELCOME !      I'm going to help you type faster than you ever
60 PRINT "    have before !
70 PRINT
80 PRINT "    You may type in any phrase you like, set your own time, and then"
90 PRINT "    retype your phrase as fast as you can.  I'll display the score,
100 PRINT "    time, and the characters as you type them so you can keep your
110 PRINT "    mind on your typing. After a while, you won't even need to look
120 PRINT "    at the keyboard.
121 PRINT:PRINT
122 PRINT "    I highly recommend that you find a typing book that will show you
123 PRINT "    the correct hand and finger positions when using a keyboard.  Check
124 PRINT "    your local library or book store.
130 PRINT :PRINT :PRINT
140 INPUT "                        PRESS  [RETURN] TO CONTINUE  ",GO$
150 CLS
160 PRINT "    This is an easy program to use.  All you do is type some phrases
170 PRINT "    (a bunch of letters or numbers) and the computer will remember what
180 PRINT "    you typed.  Then, on the special typing and scoreboard screen, you'll
190 PRINT "    be asked to type that phrase again.  You must be quick though,
200 PRINT "    because I'm going to time you.  You must be accurate too, because I'm
210 PRINT "    going to check to see that you typed everything correctly.
220 PRINT "
230 PRINT "    Check your score to see how well you're doing.  The LOWER the score,
240 PRINT "    the BETTER.  That means if you take too much time or make a mistake
250 PRINT "    you'll get more points.  Remember, do well and keep the score LOW !
260 PRINT "
270 PRINT "    A graph is displayed after each round so you can check your progress.
280 PRINT "    A light smiley face at the top of the bar means you made NO mistakes.
290 PRINT "    A dark face means that you made an error.  Don't worry though, you'll
300 PRINT "    see less and less of those as you practice.
310 PRINT "
320 PRINT "    After each set of rounds, the MENU will appear and you can see a
330 PRINT "    summary of your progress by choosing selection #3.  The summary can
340 PRINT "    be displayed on the screen or on a printer if you have one.
350 PRINT "
360 PRINT "
370 PRINT "
380 ' PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
390 INPUT "                   PRESS THE [RETURN] KEY WHEN READY ";ZZZ
400 CLEAR 1000
420 CLS
421 SCORE%=0:TSCORE%=0:G=0:TTA=0:TSA=0
430 LOCATE 3,20:PRINT CHR$(201):FOR A=21 TO 59:LOCATE 3,A:PRINT CHR$(205):NEXT A:LOCATE 3,60:PRINT CHR$(187)
440 LOCATE 4,20:PRINT CHR$(186);"     KEYBOARD SKILL BUILDER SERIES";:LOCATE 4,60:PRINT CHR$(186)
450 LOCATE 5,20:PRINT CHR$(200):FOR A=21 TO 59:LOCATE 5,A:PRINT CHR$(205):NEXT A:LOCATE 5,60:PRINT CHR$(188)
460 IF OPENNING=1 THEN RETURN
470 LOCATE 2,A
480 LOCATE 6,1:PRINT
490 PRINT "                            ▒▒▒▒▒  M E N U  ▒▒▒▒▒"
500 PRINT:PRINT
510 PRINT "     [1]  REPEAT SAME PHRASE           Type one phrase and repeat it
520 PRINT
530 PRINT "     [2]  DIFFERENT PHRASE EACH TIME   Several phrases are tried just once
540 PRINT
550 PRINT "     [3]  CHECK PREVIOUS RECORD        Displays a summary of your work
560 PRINT
570 PRINT "     [4]  NEW STUDENT                  Starts over and clears previous record
580 PRINT
590 PRINT "     [5]  QUIT                         Go back to main menu
600 IF ROUND=0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 4 or 5  and press [RETURN] ",SELECT$
610 IF ROUND>0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 3, 4 or 5  and press [RETURN] ",SELECT$
620 SELECT=VAL(SELECT$)
621 IF SELECT<1 OR SELECT>5 THEN LOCATE 21,55:PRINT "              ":GOTO 600
630 IF PS$=" " THEN CLOSE 1: GOTO 420
640 IF SELECT=4 THEN CLOSE 1: GOTO 10
650 IF SELECT=5 THEN CLS:CLOSE 1:LOAD"B:MENU.BAS",R
660 IF ROUND=0 AND SELECT=3 THEN LOCATE 22,27:PRINT "       NO RECORD YET              ":FOR DELAY=1 TO 1000:NEXT DELAY:LOCATE 22,27:PRINT"                                   ":SELECT=0:GOTO 621
670 IF SELECT=3 THEN GOTO 740
680 OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
690 ROUND=ROUND+1
700 ' IF SELECT=1 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
710 IF SELECT=1 THEN SELECTX=1:GOTO 780
720 ' IF SELECT=2 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
730 IF SELECT=2 THEN SELECTX=2:GOTO 860
740 IF SELECT=3 THEN LOCATE 22,20:CLOSE 1:LINE INPUT "PLEASE SELECT   [P] PRINTER  or  [S] SCREEN  ",PS$
750 IF PS$="P" OR PS$="p" THEN SELECT$="3P":GOTO 1850
760 IF PS$="S" OR PS$="s" THEN SELECT$="3S":GOTO 1850
770 IF SELECT<1 OR SELECT>2 THEN LOCATE 22,27:PRINT STRING$(53," "):GOTO 600
780 CLS: PRINT"             * Please Press the [RETURN] Key after each answer *
781 PRINT:PRINT
790 LOCATE 5,1 : PRINT "TYPE IN YOUR PHRASE (Maximum 60 characters)
800 LOCATE 6,1 : PRINT CHR$(16);:LINE INPUT " ",PHRASE$(X)
810 IF LEN(PHRASE$(X))>60 THEN LOCATE 6,2 : PRINT STRING$(78," "):LOCATE 6,40:PRINT "TOO LONG... RE-ENTER":FOR A=1 TO 300:NEXT A:LOCATE 6,40 :PRINT STRING$(25," "):GOTO 800
820 WORDLENGTH=LEN(PHRASE$(X))
830 LOCATE 8,1:LINE INPUT "REPEAT HOW MANY TIMES  (UP TO 10) ";I$
840 I=VAL(I$)
850 IF I>10 OR I<1 THEN LOCATE 8,23:PRINT STRING$(40," "):GOTO 830
860 IF SELECT=2 THEN CLS
870 IF SELECT=1 THEN GOTO 1010
880 LOCATE 1,10:LINE INPUT"HOW MANY PHRASES WOULD YOU LIKE TO TRY (UP TO 10)   ";I$
890 I=VAL(I$)
900 LOCATE 2,1:PRINT STRING$(70," ")
910 LOCATE 3,1:PRINT STRING$(70," ")
920 IF I>10 OR I<1 THEN LOCATE 1,39:PRINT STRING$(30," "):GOTO 880
930 ' DIM PHRASE$(I)
940 LOCATE 5,1:PRINT "Maximum of 60 characters, please"
950 LOCATE 7,1
960 IF SELECT=2 THEN FOR X=1 TO I
970 PRINT "TYPE PHRASE #";X;:LINE INPUT PHRASE$(X)
980 IF LEN(PHRASE$(X))>60 THEN PRINT "Maximum of 60 characters, please":GOTO 970
990 WORDLENGTH=LEN(PHRASE$(X))
1000 NEXT X
1010 LOCATE 22,1:LINE INPUT "WHAT'S THE TIME LIMIT IN SECONDS  ";TIMELIMIT$:ROUND =1:LOCATE 22,1:PRINT STRING$(70," ")
1020 TIMELIMIT=VAL(TIMELIMIT$)
1030 IF TIMELIMIT<1 OR TIMELIMIT>600 THEN ROUND=0:TIMELIMIT=0 : GOTO 1010
1040 CLS:V=9:'     V=VERTICAL AXIS OF GRAPH FOR EACH ROUND
1050 LOCATE 5,5:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1060 LOCATE 6,5:PRINT CHR$(186):LOCATE 6,8:PRINT A$:LOCATE 6,11:PRINT CHR$(186)
1070 LOCATE 7,5:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1080 LOCATE 5,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1090 LOCATE 6,70:PRINT CHR$(186);INT(N/5);:LOCATE 6,76:PRINT CHR$(186)
1100 LOCATE 7,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1110 LOCATE 12,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1120 LOCATE 13,70:PRINT CHR$(186);TSCORE%;:LOCATE 13,76:PRINT CHR$(186)
1130 LOCATE 14,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1140 LOCATE 18,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1150 LOCATE 19,70:PRINT CHR$(186);TIMELIMIT;:LOCATE 19,76:PRINT CHR$(186)
1160 LOCATE 20,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1170 LOCATE 8,71:PRINT "TIME"
1180 LOCATE 8,6:PRINT "TYPE"
1190 LOCATE 11,71:PRINT "SCORE"
1200 LOCATE 17,70:PRINT "SELECTED":LOCATE 21,71:PRINT "TIME"
1210 IF SELECT=1 THEN GOTO 1230
1220 IF SELECT=2 THEN FOR X=1 TO I :GOTO 1240
1230 IF SELECT=1 THEN FOR SELECT1=1 TO I
1240 LOCATE 2,3:PRINT STRING$(60," ")
1250 LOCATE 2,1:PRINT CHR$(16):LOCATE 2,3:PRINT PHRASE$(X)
1260 LOCATE 23,25:LINE INPUT "  PRESS [RETURN] TO BEGIN   ",Z$
1270 LOCATE 23,20:PRINT STRING$(60," "):LOCATE 3,70:PRINT"       "
1280 LOCATE 15,37:PRINT"▒READY▒":FOR D=1 TO 700:NEXT D
1290 LOCATE 15,37:PRINT"▒ SET ▒":FOR D=1 TO 700:NEXT D
1300 LOCATE 15,37:PRINT"▒▒G O▒▒":BEEP:FOR D=1 TO 150:NEXT D
1310 LOCATE 15,37:PRINT"       "
1320 GOSUB 1410
1330 PRINT:PRINT
1340 IF TIMEOUT THEN BEEP : LOCATE 5,34:PRINT "TOO LONG":W=W+1:LOCATE 10,40:PRINT " "
1350 PRINT:PRINT:PRINT
1360 BEEP:LOCATE 10,40:PRINT "  "
1370 LOCATE 3,3 : PRINT RESPONSE$
1380 GOSUB 1500
1390 LOCATE 6,27:TIME=INT(N/32):PRINT "YOUR TIME WAS";TIME;"SECONDS."
1400 GOTO 1610
1410 RESPONSE$="
1420 FOR N=1 TO TIMELIMIT*32
1430 LOCATE 6,8:PRINT A$
1440 LOCATE 6,71:PRINT INT(N/32)
1450 A$=INKEY$:IF LEN(A$)=0 THEN 1480
1460 IF ASC(A$)=13 THEN TIMEOUT%=0:RETURN
1470 RESPONSE$=RESPONSE$+A$
1480 NEXT N
1490 TIMEOUT%=1:RETURN
1500 IF RESPONSE$=PHRASE$(X) THEN LOCATE 5,32:PRINT "  EXCELLENT !":C=C+1:RETURN
1510 LOCATE 5,33:PRINT "TYPING ERROR":W=W+1
1520 LOCATE 8,6:PRINT "    "
1530 RETURN
1540 LOCATE 23,22:LINE INPUT "PRESS [RETURN] TO CONTINUE or [Q]uit  ",A$ :LOCATE 23,22:PRINT STRING$(58," "):LOCATE 3,3:PRINT STRING$(70," ")
1550 IF A$="Q" THEN CLS:CLOSE 1:GOTO 420
1560 REM
1570 IF SELECT=1 THEN NEXT SELECT1
1580 IF SELECT=2 THEN NEXT X
1590 CLOSE 1
1600 GOTO 420
1610 '          GRAPHING FUNCTION
1620 P=110:V=V+4:Q=11:R=21
1630 LOCATE 10,2:PRINT "%" :LOCATE 21,4:PRINT "ROUND >"
1640 FOR A=10 TO 20:LOCATE A,10:PRINT CHR$(22):LOCATE A,5:P=P-10:PRINT P:NEXT A
1650 FOR A=10 TO 50:LOCATE 20,A:PRINT CHR$(22):NEXT A
1660 LOCATE 21,13:PRINT "1   2   3   4   5   6   7   8   9   10 "
1670 G=TIME/TIMELIMIT*10:FOR GRAPH=20-G TO 19:LOCATE GRAPH,V:PRINT CHR$(8):NEXT GRAPH:LOCATE 9,V
1680 IF RESPONSE$=PHRASE$(X) THEN PRINT CHR$(2) ELSE PRINT CHR$(1)
1690 TT=TT+TIME
1700 LOCATE 8,V-1:PRINT TIME
1710 LOCATE 6,71:PRINT TT:LOCATE 4,71:PRINT "TOTAL"
1720 GOSUB 1760
1730 GOTO 1540
1740 LOCATE 22,1:PRINT STRING$(80," "):ROUND=0
1750 LOCATE 23,1:PRINT STRING$(80," ")
1760 TG=TG+G
1770 ' ************************************IF C=0 THEN TPERCENT=10*W:GOTO 1430
1780 '********************************TPERCENT=INT(((TG/C)*10)+(2*W)+TIMELIMIT)
1790 SCORE%=INT((TIME/TIMELIMIT)*100)+(W*(TIME/TIMELIMIT)*10)-(WORDLENGTH/TIMELIMIT)
1800 TSCORE%=INT(TSCORE%+SCORE%)
1810 LOCATE 13,71:PRINT TSCORE%
1820 W=0
1830 WRITE #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1840 RETURN
1850 CLS:OPEN "B:REPORT.DAT" FOR INPUT AS 1
1851 LOCATE 10,1:PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
1852 LOCATE 10,61 : INPUT "",NM$
1853 CLS
1855 IF SELECT$="3S" THEN PRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER"
1860 IF SELECT$="3S" THEN PRINT:PRINT "REPORT FOR: ";NM$;"     TIME: ";TIME$;"      DATE: ";DATE$:PRINT"TIME LIMIT";TIMELIMIT;"SECONDS":PRINT
1870 IF SELECT$="3S" THEN PRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":PRINT "RESPONSE":PRINT STRING$(77,"-")
1880 IF SELECT$="3P" THEN PRINT "                                 PRINTING......":LPRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER":LPRINT "REPORT FOR: ";NM$;"               TIME: ";TIME$;"      DATE: ";DATE$
1881 IF SELECT$="3P" THEN LPRINT:LPRINT "TIME LIMIT";TIMELIMIT;"SECONDS":LPRINT
1890 IF SELECT$="3P" THEN LPRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":LPRINT STRING$(77,"-")
1900 IF SELECTX=2 THEN FOR X=1 TO I
1910 INPUT #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1911 TTA=INT(TT/I):TSA=INT(TSCORE%/I)
1920 IF SELECT$="3P" THEN LPRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1930 IF SELECT$="3P" THEN LPRINT"   ";RESPONSE$
1940 IF SELECT$="3S" THEN PRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1950 IF SELECT$="3S" THEN PRINT "   ";RESPONSE$
1951 IF EOF(1) AND SELECT$="3S" THEN PRINT STRING$(77,"-")
1952 IF EOF(1) AND SELECT$="3P" THEN PRINT STRING$(77,"-")
1960 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1970 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1980 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
1990 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
2000 IF EOF(1) THEN CLOSE 1:GOTO 2040
2010 IF SELECTX=1 THEN GOTO 1910
2020 IF SELECTX=2 THEN NEXT X
2030 CLOSE 1
2040 LOCATE 24,30:LINE INPUT "PRESS [RETURN] TO CONTINUE  ",XYZ$
2050 GOTO 400

TYPING.BAS

10 CLS
20 OPENNING=OPENNING+1
30 GOSUB 430
40 PRINT:PRINT:PRINT
50 PRINT "    WELCOME !      I'm going to help you type faster than you ever
60 PRINT "    have before !
70 PRINT
80 PRINT "    You may type in any phrase you like, set your own time, and then"
90 PRINT "    retype your phrase as fast as you can.  I'll display the score,
100 PRINT "    time, and the characters as you type them so you can keep your
110 PRINT "    mind on your typing. After a while, you won't even need to look
120 PRINT "    at the keyboard.
121 PRINT:PRINT
122 PRINT "    I highly recommend that you find a typing book that will show you
123 PRINT "    the correct hand and finger positions when using a keyboard.  Check
124 PRINT "    your local library or book store.
130 PRINT :PRINT :PRINT
140 INPUT "                        PRESS  [RETURN] TO CONTINUE  ",GO$
150 CLS
160 PRINT "    This is an easy program to use.  All you do is type some phrases
170 PRINT "    (a bunch of letters or numbers) and the computer will remember what
180 PRINT "    you typed.  Then, on the special typing and scoreboard screen, you'll
190 PRINT "    be asked to type that phrase again.  You must be quick though,
200 PRINT "    because I'm going to time you.  You must be accurate too, because I'm
210 PRINT "    going to check to see that you typed everything correctly.
220 PRINT "
230 PRINT "    Check your score to see how well you're doing.  The LOWER the score,
240 PRINT "    the BETTER.  That means if you take too much time or make a mistake
250 PRINT "    you'll get more points.  Remember, do well and keep the score LOW !
260 PRINT "
270 PRINT "    A graph is displayed after each round so you can check your progress.
280 PRINT "    A light smiley face at the top of the bar means you made NO mistakes.
290 PRINT "    A dark face means that you made an error.  Don't worry though, you'll
300 PRINT "    see less and less of those as you practice.
310 PRINT "
320 PRINT "    After each set of rounds, the MENU will appear and you can see a
330 PRINT "    summary of your progress by choosing selection #3.  The summary can
340 PRINT "    be displayed on the screen or on a printer if you have one.
350 PRINT "
360 PRINT "
370 PRINT "
380 ' PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
390 INPUT "                   PRESS THE [RETURN] KEY WHEN READY ";ZZZ
400 CLEAR 1000
420 CLS
421 SCORE%=0:TSCORE%=0:G=0:TTA=0:TSA=0
430 LOCATE 3,20:PRINT CHR$(201):FOR A=21 TO 59:LOCATE 3,A:PRINT CHR$(205):NEXT A:LOCATE 3,60:PRINT CHR$(187)
440 LOCATE 4,20:PRINT CHR$(186);"     KEYBOARD SKILL BUILDER SERIES";:LOCATE 4,60:PRINT CHR$(186)
450 LOCATE 5,20:PRINT CHR$(200):FOR A=21 TO 59:LOCATE 5,A:PRINT CHR$(205):NEXT A:LOCATE 5,60:PRINT CHR$(188)
460 IF OPENNING=1 THEN RETURN
470 LOCATE 2,A
480 LOCATE 6,1:PRINT
490 PRINT "                            ▒▒▒▒▒  M E N U  ▒▒▒▒▒"
500 PRINT:PRINT
510 PRINT "     [1]  REPEAT SAME PHRASE           Type one phrase and repeat it
520 PRINT
530 PRINT "     [2]  DIFFERENT PHRASE EACH TIME   Several phrases are tried just once
540 PRINT
550 PRINT "     [3]  CHECK PREVIOUS RECORD        Displays a summary of your work
560 PRINT
570 PRINT "     [4]  NEW STUDENT                  Starts over and clears previous record
580 PRINT
590 PRINT "     [5]  QUIT                         Go back to main menu
600 IF ROUND=0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 4 or 5  and press [RETURN] ",SELECT$
610 IF ROUND>0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 3, 4 or 5  and press [RETURN] ",SELECT$
620 SELECT=VAL(SELECT$)
621 IF SELECT<1 OR SELECT>5 THEN LOCATE 21,55:PRINT "              ":GOTO 600
630 IF PS$=" " THEN CLOSE 1: GOTO 420
640 IF SELECT=4 THEN CLOSE 1: GOTO 10
650 IF SELECT=5 THEN CLS:CLOSE 1:LOAD"B:MENU.BAS",R
660 IF ROUND=0 AND SELECT=3 THEN LOCATE 22,27:PRINT "       NO RECORD YET              ":FOR DELAY=1 TO 1000:NEXT DELAY:LOCATE 22,27:PRINT"                                   ":SELECT=0:GOTO 621
670 IF SELECT=3 THEN GOTO 740
680 OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
690 ROUND=ROUND+1
700 ' IF SELECT=1 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
710 IF SELECT=1 THEN SELECTX=1:GOTO 780
720 ' IF SELECT=2 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
730 IF SELECT=2 THEN SELECTX=2:GOTO 860
740 IF SELECT=3 THEN LOCATE 22,20:CLOSE 1:LINE INPUT "PLEASE SELECT   [P] PRINTER  or  [S] SCREEN  ",PS$
750 IF PS$="P" OR PS$="p" THEN SELECT$="3P":GOTO 1850
760 IF PS$="S" OR PS$="s" THEN SELECT$="3S":GOTO 1850
770 IF SELECT<1 OR SELECT>2 THEN LOCATE 22,27:PRINT STRING$(53," "):GOTO 600
780 CLS: PRINT"             * Please Press the [RETURN] Key after each answer *
781 PRINT:PRINT
790 LOCATE 5,1 : PRINT "TYPE IN YOUR PHRASE (Maximum 60 characters)
800 LOCATE 6,1 : PRINT CHR$(16);:LINE INPUT " ",PHRASE$(X)
810 IF LEN(PHRASE$(X))>60 THEN LOCATE 6,2 : PRINT STRING$(78," "):LOCATE 6,40:PRINT "TOO LONG... RE-ENTER":FOR A=1 TO 300:NEXT A:LOCATE 6,40 :PRINT STRING$(25," "):GOTO 800
820 WORDLENGTH=LEN(PHRASE$(X))
830 LOCATE 8,1:LINE INPUT "REPEAT HOW MANY TIMES  (UP TO 10) ";I$
840 I=VAL(I$)
850 IF I>10 OR I<1 THEN LOCATE 8,23:PRINT STRING$(40," "):GOTO 830
860 IF SELECT=2 THEN CLS
870 IF SELECT=1 THEN GOTO 1010
880 LOCATE 1,10:LINE INPUT"HOW MANY PHRASES WOULD YOU LIKE TO TRY (UP TO 10)   ";I$
890 I=VAL(I$)
900 LOCATE 2,1:PRINT STRING$(70," ")
910 LOCATE 3,1:PRINT STRING$(70," ")
920 IF I>10 OR I<1 THEN LOCATE 1,39:PRINT STRING$(30," "):GOTO 880
930 ' DIM PHRASE$(I)
940 LOCATE 5,1:PRINT "Maximum of 60 characters, please"
950 LOCATE 7,1
960 IF SELECT=2 THEN FOR X=1 TO I
970 PRINT "TYPE PHRASE #";X;:LINE INPUT PHRASE$(X)
980 IF LEN(PHRASE$(X))>60 THEN PRINT "Maximum of 60 characters, please":GOTO 970
990 WORDLENGTH=LEN(PHRASE$(X))
1000 NEXT X
1010 LOCATE 22,1:LINE INPUT "WHAT'S THE TIME LIMIT IN SECONDS  ";TIMELIMIT$:ROUND =1:LOCATE 22,1:PRINT STRING$(70," ")
1020 TIMELIMIT=VAL(TIMELIMIT$)
1030 IF TIMELIMIT<1 OR TIMELIMIT>600 THEN ROUND=0:TIMELIMIT=0 : GOTO 1010
1040 CLS:V=9:'     V=VERTICAL AXIS OF GRAPH FOR EACH ROUND
1050 LOCATE 5,5:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1060 LOCATE 6,5:PRINT CHR$(186):LOCATE 6,8:PRINT A$:LOCATE 6,11:PRINT CHR$(186)
1070 LOCATE 7,5:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1080 LOCATE 5,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1090 LOCATE 6,70:PRINT CHR$(186);INT(N/5);:LOCATE 6,76:PRINT CHR$(186)
1100 LOCATE 7,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1110 LOCATE 12,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1120 LOCATE 13,70:PRINT CHR$(186);TSCORE%;:LOCATE 13,76:PRINT CHR$(186)
1130 LOCATE 14,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1140 LOCATE 18,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1150 LOCATE 19,70:PRINT CHR$(186);TIMELIMIT;:LOCATE 19,76:PRINT CHR$(186)
1160 LOCATE 20,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1170 LOCATE 8,71:PRINT "TIME"
1180 LOCATE 8,6:PRINT "TYPE"
1190 LOCATE 11,71:PRINT "SCORE"
1200 LOCATE 17,70:PRINT "SELECTED":LOCATE 21,71:PRINT "TIME"
1210 IF SELECT=1 THEN GOTO 1230
1220 IF SELECT=2 THEN FOR X=1 TO I :GOTO 1240
1230 IF SELECT=1 THEN FOR SELECT1=1 TO I
1240 LOCATE 2,3:PRINT STRING$(60," ")
1250 LOCATE 2,1:PRINT CHR$(16):LOCATE 2,3:PRINT PHRASE$(X)
1260 LOCATE 23,25:LINE INPUT "  PRESS [RETURN] TO BEGIN   ",Z$
1270 LOCATE 23,20:PRINT STRING$(60," "):LOCATE 3,70:PRINT"       "
1280 LOCATE 15,37:PRINT"▒READY▒":FOR D=1 TO 700:NEXT D
1290 LOCATE 15,37:PRINT"▒ SET ▒":FOR D=1 TO 700:NEXT D
1300 LOCATE 15,37:PRINT"▒▒G O▒▒":FOR D=1 TO 150:NEXT D
1310 LOCATE 15,37:PRINT"       "
1320 GOSUB 1410
1330 PRINT:PRINT
1340 IF TIMEOUT THEN BEEP : LOCATE 5,34:PRINT "TOO LONG":W=W+1:LOCATE 10,40:PRINT " "
1350 PRINT:PRINT:PRINT
1360 BEEP:LOCATE 10,40:PRINT "  "
1370 LOCATE 3,3 : PRINT RESPONSE$
1380 GOSUB 1500
1390 LOCATE 6,27:TIME=INT(N/32):PRINT "YOUR TIME WAS";TIME;"SECONDS."
1400 GOTO 1610
1410 RESPONSE$="
1420 FOR N=1 TO TIMELIMIT*32
1430 LOCATE 6,8:PRINT A$
1440 LOCATE 6,71:PRINT INT(N/32)
1450 A$=INKEY$:IF LEN(A$)=0 THEN 1480
1460 IF ASC(A$)=13 THEN TIMEOUT%=0:RETURN
1470 RESPONSE$=RESPONSE$+A$
1480 NEXT N
1490 TIMEOUT%=1:RETURN
1500 IF RESPONSE$=PHRASE$(X) THEN LOCATE 5,32:PRINT "  EXCELLENT !":C=C+1:RETURN
1510 LOCATE 5,33:PRINT "TYPING ERROR":W=W+1
1520 LOCATE 8,6:PRINT "    "
1530 RETURN
1540 LOCATE 23,22:LINE INPUT "PRESS [RETURN] TO CONTINUE or [Q]uit  ",A$ :LOCATE 23,22:PRINT STRING$(58," "):LOCATE 3,3:PRINT STRING$(70," ")
1550 IF A$="Q" THEN CLS:CLOSE 1:GOTO 420
1560 REM
1570 IF SELECT=1 THEN NEXT SELECT1
1580 IF SELECT=2 THEN NEXT X
1590 CLOSE 1
1600 GOTO 420
1610 '          GRAPHING FUNCTION
1620 P=110:V=V+4:Q=11:R=21
1630 LOCATE 10,2:PRINT "%" :LOCATE 21,4:PRINT "ROUND >"
1640 FOR A=10 TO 20:LOCATE A,10:PRINT CHR$(22):LOCATE A,5:P=P-10:PRINT P:NEXT A
1650 FOR A=10 TO 50:LOCATE 20,A:PRINT CHR$(22):NEXT A
1660 LOCATE 21,13:PRINT "1   2   3   4   5   6   7   8   9   10 "
1670 G=TIME/TIMELIMIT*10:FOR GRAPH=20-G TO 19:LOCATE GRAPH,V:PRINT CHR$(8):NEXT GRAPH:LOCATE 9,V
1680 IF RESPONSE$=PHRASE$(X) THEN PRINT CHR$(2) ELSE PRINT CHR$(1)
1690 TT=TT+TIME
1700 LOCATE 8,V-1:PRINT TIME
1710 LOCATE 6,71:PRINT TT:LOCATE 4,71:PRINT "TOTAL"
1720 GOSUB 1760
1730 GOTO 1540
1740 LOCATE 22,1:PRINT STRING$(80," "):ROUND=0
1750 LOCATE 23,1:PRINT STRING$(80," ")
1760 TG=TG+G
1770 ' ************************************IF C=0 THEN TPERCENT=10*W:GOTO 1430
1780 '********************************TPERCENT=INT(((TG/C)*10)+(2*W)+TIMELIMIT)
1790 SCORE%=INT((TIME/TIMELIMIT)*100)+(W*(TIME/TIMELIMIT)*10)-(WORDLENGTH/TIMELIMIT)
1800 TSCORE%=INT(TSCORE%+SCORE%)
1810 LOCATE 13,71:PRINT TSCORE%
1820 W=0
1830 WRITE #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1840 RETURN
1850 CLS:OPEN "B:REPORT.DAT" FOR INPUT AS 1
1851 LOCATE 10,1:PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
1852 LOCATE 10,61 : INPUT "",NM$
1853 CLS
1855 IF SELECT$="3S" THEN PRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER"
1860 IF SELECT$="3S" THEN PRINT:PRINT "REPORT FOR: ";NM$;"     TIME: ";TIME$;"      DATE: ";DATE$:PRINT"TIME LIMIT";TIMELIMIT;"SECONDS":PRINT
1870 IF SELECT$="3S" THEN PRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":PRINT "RESPONSE":PRINT STRING$(77,"-")
1880 IF SELECT$="3P" THEN PRINT "                                 PRINTING......":LPRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER":LPRINT "REPORT FOR: ";NM$;"               TIME: ";TIME$;"      DATE: ";DATE$
1881 IF SELECT$="3P" THEN LPRINT:LPRINT "TIME LIMIT";TIMELIMIT;"SECONDS":LPRINT
1890 IF SELECT$="3P" THEN LPRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":LPRINT STRING$(77,"-")
1900 IF SELECTX=2 THEN FOR X=1 TO I
1910 INPUT #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1911 TTA=INT(TT/I):TSA=INT(TSCORE%/I)
1920 IF SELECT$="3P" THEN LPRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1930 IF SELECT$="3P" THEN LPRINT"   ";RESPONSE$
1940 IF SELECT$="3S" THEN PRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1950 IF SELECT$="3S" THEN PRINT "   ";RESPONSE$
1951 IF EOF(1) AND SELECT$="3S" THEN PRINT STRING$(77,"-")
1952 IF EOF(1) AND SELECT$="3P" THEN PRINT STRING$(77,"-")
1960 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1970 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1980 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
1990 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
2000 IF EOF(1) THEN CLOSE 1:GOTO 2040
2010 IF SELECTX=1 THEN GOTO 1910
2020 IF SELECTX=2 THEN NEXT X
2030 CLOSE 1
2040 LOCATE 24,30:LINE INPUT "PRESS [RETURN] TO CONTINUE  ",XYZ$
2050 GOTO 400

WURD.BAS

10 REM 'WURD '  by Mark A. Swanson
20 REM          Copyright 1984
30 KEY OFF
40 SCREEN 1
50 PRINT:PRINT:PRINT
60 PRINT "              WELCOME TO
70 LOCATE 12,15:PRINT" - - - - "
80 FOR I=1 TO 500:NEXT I
90 LOCATE 12,15:PRINT" W - - - "
100 FOR I=1 TO 500:NEXT I
110 LOCATE 12,15:PRINT" W U - - "
120 FOR I=1 TO 500:NEXT I
130 LOCATE 12,15:PRINT" W U R - "
140 FOR I=1 TO 500:NEXT I
150 LOCATE 12,15:PRINT" W U R D "
160 FOR I=1 TO 1000:NEXT I
170 LOCATE 17,10:PRINT "by Mark A. Swanson
180 FOR A=1 TO 1500:NEXT A
190 LOCATE 18,10:PRINT "                 "
200 BEEP:LOCATE 17,8: INPUT "Instructions (Y or N) ";I$
210 IF I$="Y" OR I$="y" THEN GOSUB 1030
220 CLS
230 SCREEN 2
240 L=0:Z=0:A=34:PT=0:TR=0:TW=0:ROUND=0
250 CLS
260 PRINT:PRINT:PRINT
270 PRINT " PLEASE CHOOSE YOUR SKILL LEVEL:"
280 PRINT:PRINT:PRINT:PRINT
290 PRINT"                                    1   EASY    "
300 PRINT"                                    2   MEDIUM "
310 PRINT"                                    3   HARD "
320 PRINT"                                    4   EXPERT"
330 PRINT
340 PRINT"                                    5   QUIT"
350 PRINT:PRINT
360 BEEP:LOCATE 16,37:INPUT O
370 IF O=5 THEN CLS:LOAD"B:MENU.BAS",R
380 CLS:BEEP
390 INPUT "PLAYER 1:  WHAT IS THE SECRET WORD ";W$
400 B=LEN(W$)
410 PRINT:PRINT
420 L1$=LEFT$(W$,B-B+1):L2$=MID$(W$,B-B+2,1):L3$=MID$(W$,B-B+3,1):L4$=MID$(W$,B-B+4,1)
430 L5$=MID$(W$,B-B+5,1):L6$=MID$(W$,B-B+6,1):L7$=MID$(W$,B-B+7,1):L8$=MID$(W$,B-B+8,1):L9$=MID$(W$,B-B+9,1):IF B=10 THEN L10$=RIGHT$(W$,1)
440 CLS
450 PRINT "PLAYER 1, YOUR WORD IS:    ";L1$;L2$;L3$;L4$;L5$;L6$;L7$;L8$;L9$;L10$
460 BEEP:INPUT "IS THAT CORRECT ";A$
470 IF A$="NO" OR A$="N" THEN GOTO 390
480 CLS
490 PRINT "PLAYER 2, GUESS YOUR FIRST LETTER:"
500 Z=Z+1:ROUND=ROUND+1
510 ZL=20-Z
520 IF Z=21 THEN CLS:PRINT "BYE, BYE.....":FOR A=1 TO 2000:NEXT A:GOTO 910
530 REM          SETS BOARD
540 LOCATE 10,1:PRINT "USED LETTERS":LOCATE 11,1:PRINT "-----------"
550 LOCATE 10,70:PRINT "SCORE":LOCATE 11,70:PRINT "-----"
560 LOCATE 10,32:PRINT "CORRECT LETTERS":LOCATE 11,32:PRINT "---------------"
570 REM          SETS SKILL OPTIONS
580 C=INT(70-B)/2
590 IF O=2 THEN LOCATE 13,C:FOR P=1 TO B:PRINT " -";:NEXT P
600 IF O=1 THEN LOCATE 13,C:FOR P=1 TO B:PRINT " -";:NEXT P:O=5
610 REM          COMPUTES AND DISPLAYS SCORE
620 PT=TR-TW:LOCATE 13,72:PRINT PT
630 LOCATE 1,38:PRINT "ROUND"
640 LOCATE 2,39:PRINT ROUND
650 BEEP:LOCATE 16,37:INPUT G$
660 LOCATE 1,1:PRINT "                                   "
670 L=L+3 :GOSUB 980
680 IF G$=L1$ THEN A=A+1:LOCATE 13,C+1:PRINT L1$:L1$="1":GOTO 830
690 IF G$=L2$ THEN A=A+1:LOCATE 13,C+3:PRINT L2$:L2$="1":GOTO 830
700 IF G$=L3$ THEN A=A+1:LOCATE 13,C+5:PRINT L3$:L3$="1":GOTO 830
710 IF G$=L4$ THEN A=A+1:LOCATE 13,C+7:PRINT L4$:L4$="1":GOTO 830
720 IF G$=L5$ THEN A=A+1:LOCATE 13,C+9:PRINT L5$:L5$="1":GOTO 830
730 IF G$=L6$ THEN A=A+1:LOCATE 13,C+11:PRINT L6$:L6$="1":GOTO 830
740 IF G$=L7$ THEN A=A+1:LOCATE 13,C+13:PRINT L7$:L7$="1":GOTO 830
750 IF G$=L8$ THEN A=A+1:LOCATE 13,C+15:PRINT L8$:L8$="1":GOTO 830
760 IF G$=L9$ THEN A=A+1:LOCATE 13,C+17:PRINT L9$:L9$="1":GOTO 830
770 IF G$=L10$ THEN A=A+1:LOCATE 13,C+19:PRINT L10$:L10$="1":GOTO 830
780 A1=A1+1:LOCATE 12,A1+1:PRINT G$
790 LOCATE 7,30:PRINT "SORRY.... GUESS ANOTHER LETTER":TW=TW+1
800 FOR U=1 TO 1000:NEXT U :LOCATE 7,30:PRINT"                                "
810 GOSUB 940
820 GOTO 650
830 TR=TR+1
840 BEEP:LOCATE 5,20:INPUT "TYPE THE WORD OR PRESS [RETURN] TO CONTINUE";A$
850 IF O=4 THEN LOCATE 13,32:PRINT "                                        "
860 LOCATE 5,20:PRINT"                                                      "
870 IF A$=W$ THEN CLS:SCREEN 1:LOCATE 1 ,5: PRINT "YOU GOT THE WORD IN";Z;"GUESSES":GOTO 890
880 IF Z=21 GOTO 520 ELSE GOTO 940
890 LOCATE 10,17:PRINT W$
900 FOR G=1 TO 2000:NEXT G
910 CLS:BEEP:SCREEN 2:LOCATE 10,30:INPUT "PLAY AGAIN (Y/N) ";Z$
920 IF Z$="Y" OR Z$="YES" THEN Z=0:GOTO 220
930 IF Z$="N" OR Z$="NO" THEN SCREEN 0:LOAD"B:MENU.BAS",R
940 LOCATE 7,30:PRINT "YOU HAVE";ZL;"GUESSES LEFT":GOTO 500
950 REM SUBROUTINE FOR ENTERING WORD
960 IF A$=" " THEN GOTO 450
970 RETURN
980 REM              FACE LINE
990 LOCATE 22,7:FOR Q=1 TO L:PRINT CHR$(1);:NEXT Q
1000 LOCATE 22,L+8:PRINT CHR$(16)
1010 LOCATE 22,69:PRINT CHR$(15)
1020 RETURN
1030 SCREEN 2
1040 PRINT "           This is a game for two where PLAYER 1 enters a secret
1050 PRINT "           word and PLAYER 2 tries to figure it out by guessing
1060 PRINT "           letters. Remember to have PLAYER 2 look away when
1070 PRINT "           PLAYER 1 enters in the secret word. (10 LETTER MAXIMUM)
1080 PRINT
1090 PRINT "           Here are the rules:
1100 PRINT
1110 PRINT "           o   Player 2 can only guess the word when the message
1120 PRINT "               'TYPE IN THE WORD OR PRESS [RETURN]' is shown."
1130 PRINT "           o   Each correct letter earns 1 point.
1140 PRINT "           o   Each incorrect letter losses 1 point.
1150 PRINT "           o   Player 2 gets 20 guesses.
1160 PRINT
1170 PRINT "           The Display:
1180 PRINT
1190 PRINT "           o   The round is displayed at the top of the screen.
1200 PRINT "           o   The score is displayed on the right side of the screen
1210 PRINT "           o   The used letters are on the left side of the screen.
1220 PRINT "           o   A graph on the bottom shows how close you are to the
1230 PRINT "               end of your guesses.
1240 PRINT:PRINT
1250 INPUT "                         press [RETURN] to continue ";R
1260 CLS
1270 PRINT:PRINT
1280 PRINT
1290 PRINT "           The 4 Skill Options:
1300 PRINT
1310 PRINT "           1   Easy level. Each letter is displayed over the dashes.
1320 PRINT "           2   Medium level. The dashes will indicate how many letters
1330 PRINT "               but the letters are only displayed briefly.
1340 PRINT "           3   Hard level. No dashes to indicate word length but letters
1350 PRINT "               do stay in their position.
1360 PRINT "           4   Expert level. No dashes and letter only appears briefly.
1370 PRINT:PRINT:PRINT:PRINT:PRINT
1380 INPUT "                        Press [RETURN] to start the game   ",R$
1390 RETURN

DOCSWAN.BAS

10 CLS:KEY OFF
20 PRINT
30 PRINT
40 PRINT"     Hi..........
50 PRINT
60 PRINT"          Thanks for ordering the DOC SWAN Learning Series - Featuring
70 PRINT"          sound educational programs for all ages.
80 PRINT:PRINT
90 PRINT"          This series has been used in the home and in schools around
100 PRINT"          the U.S.A. and abroad.  Program listings are found in 'The
110 PRINT"          Computer Curriculum Guide' available to schools nationwide.
120 PRINT:PRINT
130 PRINT"          Please copy and share these programs freely.  If you find
140 PRINT"          value in this disk, we ask that you send a modest donation
150 PRINT"          of $10.00 towards development of future educational products.
160 PRINT
170 PRINT"          Send check or money order to:   Mark A. Swanson
180 PRINT"                                          11390 N.E. 91st St.
190 PRINT"                                          Kirkland, WA. 98033
200 PRINT
210 PRINT"                                  Thank you
220 PRINT
230 PRINT"          Press any key to continue.....";INPUT$(1)
240 CLS
250 PRINT:PRINT
260 PRINT"  Here are a few things to know about the DOC SWAN Learning Series...
270 PRINT:PRINT:PRINT
280 PRINT"            -->     Most of the time you need to push the [RETURN] key
290 PRINT"                    after typing in your responses.  Make your selection and
291 PRINT"                    wait before pushing [RETURN].
300 PRINT
310 PRINT"            -->     This disk is intended to be run in DRIVE B with your
320 PRINT"                    BASIC disk in DRIVE A.
330 PRINT
340 PRINT"            -->     If you get lost in a program, simply press the [CTRL]
350 PRINT"                    and [SCROLL LOCK] keys at the same time to end the program.
360 PRINT"                    Then, push [F3]. This will return you to the main menu.
380 PRINT:PRINT:PRINT:PRINT:PRINT
390 PRINT "            When you're ready, please press [RETURN] for the main menu  ";INPUT$(1)
400 LOAD"B:MENU.BAS",R

FILES595.TXT

---------------------------------------------------------------------------
Disk No  595  BASIC GAMES & PROGRAMMING INTRO                       v1 DS2
---------------------------------------------------------------------------
This product is a handy and interesting tool for getting acquainted with
the mico-computer.  It has an easy to follow and understand tutorial for
BASIC, introducing the beginner to the elemental concepts of the language.
There are a series of practise sessions so the user can acutually see the
programs operate.
The set of games which are included are simple, and engage the user with
a lot of keyboard interaction.  They include a simple word processor, several
number games as well as varying levels of anagrams.
For the youngster who has a computer and an honest interest in its use,
this product would be an informative and varied way to get initiated.
The product is run under the computer's BASIC inperpreter.

MENU     BAS  Main menu for the system
MATH     BAS  Math program
MISSING  BAS  Missing Word program
PRINT    BAS  Printing Fun program
REPORT   DAT  Report data file
DOC SWAN BAS  Doc Program
PRINTING BAS  Printing Program
MPG      BAS  M.P.G. Program
TYPE     BAS  Typing Practice Program
NUMBER   BAS  Number Program
NUMFUN   BAS  Number Fun Program
SPELLING BAS  Spelling Skill Program
COUNTING BAS  Counting Program
WURD     BAS  WURD Program
SUPSCRAM BAS  Superscam Program
GUIDE    BAS  Guide Program
MODES    BAS  Modes Program
BASIC    BAS  BASIC Programming Section
LET      BAS  Command - 1
INPUT    BAS          - 2
IFTHEN   BAS          - 3
READDATA BAS          - 4
SCRAMBLE BAS          - 5
GR       BAS          - 6
BTMENU   BAS          - 7
GOTO     BAS          - 8
FORNEXT  BAS          - 9
GUESS    BAS  Guess My Number Exercise
CHAIRMAN BAS  Climb the corporate ladder
DOCSWAN  ARC  Archived back-up of disk
README   1ST  Introduction text file
TYPING   BAS  Typing skill program



PC-SIG (SOFTWARE INTEREST GROUP)
1030 D DUANE AVE.
SUNNYVALE CA., 94086
PH# 408-730-9291

FORNEXT.BAS

10 ' MARK A. SWANSON     02-27-1985  20:22:35
20 CLS
30 PRINT:PRINT:PRINT
50 PRINT TAB(40);10;"F"
60 FOR A=9 TO 1 STEP -1
70 READ A$
80 PRINT TAB(40);A;" ";A$
90 FOR I=1 TO 100:NEXT I
100 NEXT A
110 DATA O,R, ,/, ,N,E,X,T
120 PRINT
130 PRINT "------------------------------------------------------------------------------"
140 PRINT:PRINT:PRINT
150 PRINT "                                      FOR / NEXT
160 PRINT
170 PRINT "                           THE STATEMENT YOU CAN 'COUNT' ON
180 FOR A=1 TO 2000:NEXT A
190 CLS
200 PRINT "             FOR/NEXT is a nifty STATEMENT that has three uses.....
210 PRINT
220 PRINT "                          1.  To delay program flow or pause
230 PRINT "                          2.  To count numbers, forward or backwards
240 PRINT "                          3.  To PRINT mulitple STRING data
250 PRINT
260 PRINT "             We'll look at all of these individually and show how FOR/NEXT
270 PRINT "             can be used to 'dress up' a program and save programming
280 PRINT "             time.
290 PRINT
300 PRINT "             But first, how it works.....  FOR/NEXT is actually two
310 PRINT "             statements (on their own lines).  We use FOR/NEXT
320 PRINT "             to create a controlled loop.  A controlled loop consists
330 PRINT "             of a starting point and specified goal (the FOR part of
340 PRINT "             the statement), and the signal to continue and ultimately
350 PRINT "             end the loop (the NEXT part of the statement).  And,
360 PRINT "             depending on the particular use, there can be another
370 PRINT "             statement in between FOR and NEXT that is executed as
380 PRINT "             many times as is indicated in the FOR part.
390 PRINT
400 PRINT "             Before total confusion sets in, let's have a look at how
410 PRINT "             FOR/NEXT is set up for each of the three uses listed above.
420 PRINT
430 INPUT "                   PRESS [RETURN] TO CONTINUE  [Q] MAIN BTMENU ",Z$
440 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
450 CLS
460 PRINT "                              FOR/NEXT AS A DELAY
470 PRINT
480 PRINT "          What is meant by DELAY is a pause or interuption in the
490 PRINT "          program where evrything comes to a complete halt.  This is
500 PRINT "          the purest form of FOR/NEXT where the computer is instructed
510 PRINT "          to cease operation while it counts to itself to a specified
520 PRINT "          number.  Here's an example.....
530 PRINT
540 PRINT "                              10 FOR A=1 TO 2000
550 PRINT "                              20 NEXT A
560 PRINT
570 PRINT "          In line 10, the computer sets the scene to count from 1 to
580 PRINT "          2000.  Notice that we have a modified use of LET, where 'A'
590 PRINT "          is being used to store the numbers 1 through 2000.
600 PRINT
610 PRINT "          In line 20, the computer is instructed to get the NEXT 'A'
620 PRINT "          to be found back in line 10.  Thus, the loop begins.
630 PRINT
640 PRINT "          When the computer has registered all of the numbers (counted
650 PRINT "          to 2000), there is no 'NEXT A', as they have all been used up.
660 PRINT "          So, the computer moves on to the next line in the program or
670 PRINT "          ends if no more lines exist.
680 PRINT
690 INPUT "           PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
700 IF Z$="P" THEN GOTO 190
710 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
720 CLS
730 PRINT "             Delays are useful in a variety of situations.  In the
740 PRINT "             openning of this lesson you saw a countdown along with
750 PRINT "             the letters of FOR/NEXT.  FOR/NEXT was used to 'slow down'
760 PRINT "             the countdown by instructing the computer to count to one
770 PRINT "             hundred between each number and letter.
780 PRINT
790 PRINT "             We'll run an example of the delaying ability of FOR/NEXT.
800 PRINT
810 PRINT "                                    10 FOR T=1 TO 2000
820 PRINT "                                    20 NEXT T
830 PRINT
840 PRINT "             Type RUN and press [RETURN] to start the program.  Note
850 PRINT "             how long it takes to finish counting and hence, allow the
860 PRINT "             the rest of this page to be printed.  OK - Type RUN and
870 PRINT "             press [RETURN]";:INPUT " ",X$
880 IF X$="RUN" THEN FOR A=1 TO 2000:NEXT A
890 IF X$<>"RUN" THEN PRINT "TRY AGAIN - TYPE RUN AND PRESS [RETURN]":INPUT X$:GOTO 880
900 PRINT
910 PRINT "            You made it !  As you can see, the computer counts to
920 PRINT "            itself at a very fast clip.  An 'internal' count like this
930 PRINT "            one to 2000 takes about 5 seconds.
940 PRINT:PRINT:PRINT
950 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
960 IF Z$="P" THEN GOTO 450
970 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
980 CLS
990 PRINT "                            FOR/NEXT AS A NUMBER COUNTER
1000 PRINT
1010 PRINT "            We know that the computer can count from and to a specified
1020 PRINT "            number (i.e  1 to 2000).  Well, why not have the computer
1030 PRINT "            PRINT the numbers as it counts ?  This is accomplished
1040 PRINT "            with the addition of a PRINT statement.  Here's how.....
1050 PRINT
1060 PRINT "                               10 FOR G=1 TO 5
1070 PRINT "                               20 PRINT G
1080 PRINT "                               30 NEXT G
1090 PRINT
1100 INPUT "            Ok, type RUN and press [RETURN] to see what happens ",Z$
1110 IF Z$="RUN" THEN FOR G=1 TO 5:PRINT TAB(40); G:NEXT G
1120 IF Z$<>"RUN" THEN INPUT "TRY AGAIN - Type RUN and press [RETURN] ",Z$:GOTO 1110
1130 FOR A=1 TO 500:NEXT A:PRINT
1140 PRINT "           We can also count 'by' numbers. That is, the computer can
1150 PRINT "           count to 10 by 2's or 3's or even 6.45375's, with the STEP
1160 PRINT "           function added on.
1170 PRINT:PRINT
1180 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1190 IF Z$="P" THEN GOTO 720
1200 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1210 CLS
1220 PRINT "           Below is a program that uses STEP to count to 10 by 2's.....
1230 PRINT "                 (note the comma (,) after the K in line 20)
1240 PRINT
1250 PRINT "                               10 FOR K=2 TO 10 STEP 2
1260 PRINT "                               20 PRINT K,
1270 PRINT "                               30 NEXT K
1280 PRINT
1290 INPUT "           Again, type RUN and press [RETURN]  ",Z$
1300 PRINT
1310 IF Z$="RUN" THEN FOR K=2 TO 10 STEP 2:PRINT K,:NEXT K
1320 IF Z$<>"RUN" THEN INPUT "TRY AGAIN - Type RUN and press [RETURN] ",Z$:GOTO 1310
1330 FOR A=1 TO 500:NEXT A
1340 PRINT:PRINT:PRINT
1350 PRINT "           Now let's make the computer count backwards.....
1360 PRINT
1370 PRINT "                               10 FOR A=20 TO 1 STEP -1
1380 PRINT "                               20 PRINT A;
1390 PRINT
1400 INPUT "           Type RUN and press [RETURN]  ",Z$:PRINT
1410 FOR A=20 TO 1 STEP -1:PRINT A;:NEXT A
1420 FOR A=1 TO 500:NEXT A
1430 PRINT:PRINT:PRINT
1440 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1450 IF Z$="P" THEN GOTO 980
1460 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1470 CLS
1480 PRINT "                       FOR/NEXT TO PRINT MULTIPLE DATA
1490 PRINT
1500 PRINT "            FOR/NEXT can cause the computer to repeatedly PRINT data
1510 PRINT "            as many times as is specified in the FOR line.
1520 PRINT
1530 PRINT "                               10 FOR J=1 TO 3
1540 PRINT "                               20 PRINT ''HI THERE !''
1550 PRINT "                               30 NEXT J
1560 PRINT
1570 INPUT "           Type RUN and press [RETURN] ",Z$
1580 PRINT
1590 PRINT "                                HI THERE !
1600 PRINT "                                HI THERE !
1610 PRINT "                                HI THERE !
1620 PRINT
1630 FOR A=1 TO 500:NEXT A
1640 PRINT "           Instead of PRINTing a variable (in this case 'J'), the
1650 PRINT "           computer was instructed to print the STRING (HI THERE !).
1660 PRINT:PRINT:PRINT:PRINT
1670 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1680 IF Z$="P" THEN GOTO 1210
1690 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1700 CLS
1710 PRINT "                            ALL IN ONE PACKAGE.....
1720 PRINT
1730 PRINT "            As a sort of 'grand finale' we'll use each application of
1740 PRINT "            FOR/NEXT all in one program.  When we combine FOR/NEXT loops,
1750 PRINT "            we NEST them, and thus call them NESTED LOOPS.
1760 PRINT
1770 PRINT "                              10 FOR R=1 TO 5
1780 PRINT "                              20 PRINT R;''BASIC''
1790 PRINT "                              30 FOR S=1 TO 500
1800 PRINT "                              40 NEXT S
1810 PRINT "                              50 NEXT R
1820 PRINT
1830 PRINT "           Lines 20, 30, and 40 are all enclosed in the main loop and
1840 PRINT "           will be repeated 5 times.
1850 PRINT
1860 PRINT "           Line 20 will PRINT the number stored to the VARIABLE 'R'
1870 PRINT "           and, on the same line, the STRING 'BASIC'.
1880 PRINT
1890 PRINT "           Lines 30 and 40 will cause a pause (for an internal count
1900 PRINT "           to 500).
1910 PRINT:PRINT:PRINT
1920 INPUT "          PRESS [RETURN TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1930 IF Z$="P" THEN GOTO 1470
1940 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1950 CLS
1960 INPUT "Type RUN and press [RETURN] to see the NESTED LOOP program  ",Z$
1970 PRINT
1980 FOR A=1 TO 5
1990 PRINT A;"BASIC"
2000 FOR T=1 TO 500:NEXT T
2010 NEXT A
2020 FOR A=1 TO 1000:NEXT A
2030 PRINT
2040 PRINT "------------------------------------------------------------------------------"
2050 PRINT "IN SUMMARY.....
2060 PRINT
2070 PRINT "          1.  FOR/NEXT has three uses:
2080 PRINT "            a. pause   b. count numbers   c. repeat STRING data
2090 PRINT "          2.  A NESTED LOOP is a combination of FOR/NEXT loops
2100 PRINT
2110 PRINT "------------------------------------------------------------------------------"
2120 PRINT "FOR PRACTICE.....
2130 PRINT
2140 PRINT "          1.  Try each application separately, then combine them
2150 PRINT:PRINT
2160 INPUT "            PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
2170 IF Z$="P" THEN GOTO 1700
2180 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
2190 CLS
2200 PRINT "              To begin practicing, type NEW and press [RETURN]
2210 PRINT
2220 PRINT "    To get back to lessons, type LOAD''B:BTMENU.BAS'',R AND PRESS [RETURN]
2230 PRINT
2240 PRINT "        Remember to use quotations instead of double apostrophies ('')
2250 PRINT "------------------------------------------------------------------------------"

GOTO.BAS

10 CLS
30 FOR A=1 TO 260:PRINT "GOTO";:NEXT A
40 PRINT:PRINT:PRINT:PRINT
50 PRINT "                                      G O T O"
60 PRINT "                                      -------
70 PRINT
80 PRINT "                                 THE INFINITE LOOP
90 PRINT "                                        AND
100 PRINT "                                 BASIC TRAFFIC COP
110 FOR A=1 TO 2000:NEXT A
120 CLS
130 PRINT "            As the title graphics show us, GOTO can be alot of fun to
140 PRINT "            use.  As the title suggests, GOTO is an important tool in
150 PRINT "            controlling the direction of a program.  We'll show how this
160 PRINT "            is accomplished and give some pointers on using GOTO to its
170 PRINT "            fullest.
180 PRINT:PRINT
190 PRINT "            GOTO is a STATEMENT just like PRINT.  GOTO requires an
200 PRINT "            argument like PRINT only the argument is a LINE NUMBER,
210 PRINT "            not a STRING (name, letter, etc.) or a mathematical
220 PRINT "            operation (1+1, 4*3.2, etc.).
230 PRINT
240 PRINT "            GOTO acts like a program 'traffic cop' because it directs
250 PRINT "            the program flow and is used to jump from one line number
260 PRINT "            to another.
270 PRINT "
280 PRINT "            GOTO can best be illustrated by using it in a program
290 PRINT "            with PRINT.
300 PRINT:PRINT:PRINT:PRINT
310 INPUT "                PRESS [RETURN] TO CONTINUE  or  [Q] MAIN BTMENU ",Z$
320 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
330 CLS
340 PRINT "         Here's an example of GOTO illustrating its 'jumping around'
350 PRINT "         ability.....
360 PRINT "
370 PRINT "                         10 PRINT ''GOTO''
380 PRINT "                         20 GOTO 50
390 PRINT "                         30 PRINT ''JUMP''
400 PRINT "                         40 GOTO 70
410 PRINT "                         50 PRINT ''CAN''
420 PRINT "                         60 GOTO 30
430 PRINT "                         70 PRINT ''AROUND''
440 PRINT
450 PRINT "         The output would be.....
460 PRINT
470 PRINT "                         GOTO
480 PRINT "                         CAN
490 PRINT "                         JUMP
500 PRINT "                         AROUND
510 PRINT
520 PRINT "        The program flow goes like this:
530 PRINT "        10 to 20 to 50 to 60 to 30 to 40 to 70.  The computer tries to
540 PRINT "        move in a sequential order but GOTO interupts and reroutes it.
550 PRINT:PRINT
560 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
570 IF Z$="P" THEN GOTO 120
580 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
590 CLS
600 PRINT "         GOTO can also be used to repeat a line number and its contents
610 PRINT "         as in a program that can repeat your name - over and over
620 PRINT "         again.  This is using GOTO as an INFINITE LOOP.  For example....
625 PRINT
630 PRINT "                            10 PRINT ''POLLY PROGRAMMER''
640 PRINT "                            20 GOTO 10
650 PRINT
660 PRINT "         In this program, the computer is instructed to PRINT exactly
670 PRINT "         what is enclosed in the quotations (Polly Programmer).  When
680 PRINT "         the computer executes line 10 and moves to on to line 20, it
690 PRINT "         is instructed to GOTO line 10 and hence PRINT the name again.
700 PRINT "         The computer again moves on to line 20 and again is directed
710 PRINT "         to line 10 - again and again.
720 PRINT "
730 PRINT "         We'll illustrate this for you (in a shortened version) so you
740 PRINT "         can get the real feel for this STATEMENT.  By the way, to stop
750 PRINT "         an infinite loop in progress, you press [ctrl]--C (control c)
760 PRINT "         which breaks or stops the program execution.
770 PRINT "
780 PRINT "         Let's imagine the we typed RUN, and you need to press [RETURN]
790 PRINT "         to start the program.....
800 PRINT:PRINT
810 INPUT "      PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
820 IF Z$="P" THEN GOTO 590
830 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
840 CLS
850 PRINT "HERE WE GO...................................................
860 PRINT:PRINT:PRINT
870 FOR A=1 TO 1000:NEXT A
880 FOR A=1 TO 100:PRINT "POLLY PROGRAMMER":NEXT A
890 PRINT:PRINT:PRINT
900 FOR A=1 TO 500:NEXT A
910 PRINT "           Hi again.  Just for the fun of it, let's add a punctuation
920 PRINT "           to the end of line 10.  A semi-colon (;) tells the computer
930 PRINT "           to print what ever is next on the same line as the previous
940 PRINT "           ARGUMENT.  In this case, 'Polly Programmer' will be PRINTed
950 PRINT "           over and over on the same line until the line is full in
960 PRINT "           which case the next line fills up.  The openning graphics
970 PRINT "           used a semi-colon to make this interesting effect.
980 PRINT
990 PRINT "           Let's again assume we typed RUN and you need to press the
1000 PRINT "           [RETURN] key to execute the program.
1010 PRINT
1020 PRINT "                                10 PRINT ''POLLY PROGRAMMER'';"
1030 PRINT "                                20 GOTO 10
1040 PRINT:PRINT
1050 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1060 IF Z$="P" THEN GOTO 840
1070 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1080 CLS
1090 PRINT "HERE WE GO AGAIN..............................................
1100 PRINT:PRINT:PRINT
1110 FOR A=1 TO 1000:NEXT A
1120 FOR A=1 TO 40:PRINT "POLLY PROGRAMMER";:NEXT A
1130 PRINT:PRINT:PRINT
1140 FOR A=1 TO 500:NEXT A
1150 PRINT "           Again we limited the number of times 'POLLY PROGRAMMER' was
1160 PRINT "           PRINTed (using a different statement to be discussed later).
1170 PRINT "           For example purposes though, you can see how GOTO works.
1180 PRINT "           GOTO works with other STATEMENTS as well which will be
1190 PRINT "           be covered in later lessons.
1200 PRINT
1210 PRINT "______________________________________________________________________________"
1220 PRINT "IN SUMMARY.....
1230 PRINT
1240 PRINT "            1.  GOTO directs the program flow by:
1250 PRINT "              a.  jumping from one line number to another
1260 PRINT "              b.  creating an infinite loop, stopped by [CTRL]-[C]
1270 PRINT
1280 PRINT "_____________________________________________________________________________"
1290 PRINT "FOR PRACTICE.....
1300 PRINT
1310 PRINT "            1.  Try variations of the two sample programs just used
1320 PRINT:PRINT
1330 INPUT "            PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1340 IF Z$="P" THEN GOTO 1080
1350 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1360 CLS
1370 PRINT "             Type NEW followed by [RETURN] to begin practicing.
1380 PRINT
1390 PRINT "             To get back to lessons type LOAD''B:BTMENU.BAS'',R
1400 PRINT
1410 PRINT "          As always, use quotations instead of double apostrophies
1420 PRINT
1430 PRINT "-----------------------------------------------------------------------------"

GR.BAS

10 CLS: ' MARK A. SWANSON     19:15:29  2/27/1985
20 PRINT:PRINT:PRINT:PRINT
30 PRINT "                                                   -\ /-
40 PRINT "          __________|--|              /---\          |       |------|
50 PRINT "         |             |_____________|     |_________|_______|      |
60 PRINT "        |     *        |                      ||                    |
70 PRINT "        |    /()\      |                      ||                    |
80 PRINT "        |     ``       |       GOSUB &        ||    THE COMPUTER    |
90 PRINT "        |              |                      ||                    |
100 PRINT "        |              |       RETURN         ||    HOMING PIGEON   |
110 PRINT "       |               |                      ||                    |
120 PRINT "       |               |                      ||                    |
130 PRINT "       |               |                      ||                    |
140 PRINT "       |               |                      ||                    |
150 PRINT "       |_______________|______________________||____________________|
160 FOR A =1 TO 2000:NEXT A
170 CLS
180 PRINT "         GOSUB/RETURN is almost identical to GOTO in that the computer
190 PRINT "         is instructed to go to another line number and resume
200 PRINT "         operation.  The one difference is that GOSUB/RETURN has a
210 PRINT "         memory.
220 PRINT
230 PRINT "        Let's look at what each of these statements do:
240 PRINT
250 PRINT "        GOSUB - sends the computer to the specified line number in
260 PRINT "                the program (example: GOSUB 150).
270 PRINT
280 PRINT "        RETURN - sends the computer back to the line following the
290 PRINT "                 last GOSUB encountered to continue normally.
300 PRINT
310 PRINT "       OK, so now that we know what each one does, let's see how and
320 PRINT "       why we use GOSUB/RETURN in a program.
330 PRINT:PRINT:PRINT:PRINT:PRINT
340 INPUT "                  PRESS [RETURN] TO CONTINUE OR [Q] MAIN BTMENU ",Z$
350 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
360 CLS
370 PRINT "       GOSUB/RETURN is most often used when there is a great deal of
380 PRINT "       repetition in a program.  For example, imagine you want to
390 PRINT "       write a program that would allow the user to look at the
400 PRINT "       instructions at any time and from any point in the program.
410 PRINT
420 PRINT "       Normally, you would have to rewrite the instructions for every
430 PRINT "       time the user may want them.  Or, you could have a SUBROUTINE
440 PRINT "       for the instructions.  This way, you only write them once.
450 PRINT "       Access could be provided by GOTO.  Then if the user wants to
460 PRINT "       see the instuctions, a GOTO statement will direct the computer
470 PRINT "       to the appropriate line number.  Uh oh..... there's still a
480 PRINT "       problem.  You need another GOTO statement at the end of the
490 PRINT "       instructions subroutine to get the user back to the regular
500 PRINT "       part of the program.  That will work fine - once.  Ater that,
510 PRINT "       the same 'send it back' GOTO statement would be outdated.
520 PRINT "       You will continually go back to the first place where access
530 PRINT "       to the subroutine was allowed, even though you may now be
540 PRINT "       accessing from a different part of the main program.
550 PRINT:PRINT:PRINT:PRINT
560 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
570 IF Z$="P" THEN GOTO 170
580 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
590 CLS
600 PRINT "      GOSUB/RETURN will handle this problem easily.  Remember, GOSUB
610 PRINT "      sends the computer to the subroutine (like GOTO).  Now, RETURN
620 PRINT "      will take over to send the computer back to where the last
630 PRINT "      GOSUB was encountered.  That's why we call GOSUB/RETURN the
640 PRINT "      computer 'homing pigeon'.  It always returns the computer to
650 PRINT "      its point of origin.
660 PRINT "      Here is a simple use of GOSUB/RETURN.  Note that we wouldn't
670 PRINT "      normally use these powerful ststements for such a simple
680 PRINT "      operation, but the below example illustrates the process.
690 PRINT
700 PRINT "                         10 PRINT '' HI '';
710 PRINT "                         20 GOSUB 100
720 PRINT "                         30 PRINT '' HELLO '';
730 PRINT "                         40 GOSUB 100
740 PRINT "                         50 END
750 PRINT "                         100 PRINT '' THERE ''
760 PRINT "                         110 RETURN
770 PRINT
780 INPUT "     Type RUN and press [RETURN] to see the output. ",R$
790 PRINT
800 PRINT "                         HI THERE
810 PRINT "                         HELLO THERE
820 PRINT
830 INPUT "     PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
840 IF Z$="P" THEN GOTO 360
850 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
860 CLS
870 PRINT "      If you were to watch the computer do each line in the program,
880 PRINT "      it would go like this...
890 PRINT
900 PRINT "                         10 PRINT '' HI '';
910 PRINT "                         20 GOSUB 100
920 PRINT "                         100 PRINT '' THERE ''
930 PRINT "                         110 RETURN
940 PRINT "                         30 PRINT '' HELLO '';
950 PRINT "                         40 GOSUB 100
960 PRINT "                         100 PRINT '' THERE ''
970 PRINT "                         110 RETURN
980 PRINT "                         50 END
990 PRINT
1000 PRINT "             output -->  HI THERE
1010 PRINT "                         HELLO THERE
1020 PRINT
1030 PRINT:PRINT:PRINT:PRINT:PRINT
1040 INPUT "      PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1050 IF Z$="P" THEN GOTO 590
1060 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1070 CLS
1080 PRINT "      Notice that we had to put END in the program after the last
1090 PRINT "      GOSUB statement.  This is done to prevent the computer from
1100 PRINT "      entering the subroutine without the direction of another
1110 PRINT "      GOSUB.  Without END or another 'diversion' the computer would
1120 PRINT "      'fall through' into the subroutine, encounter RETURN, and
1130 PRINT "      display the message 'RETURN WITHOUT GOSUB'.  In other words,
1140 PRINT "      every RETURN must have a corresponding GOSUB.
1150 PRINT
1160 PRINT "      The best way to become comfortable with GOSUB/RETURN is to do
1170 PRINT "      a number of practice programs.  You'll soon find that this is
1180 PRINT "      a great tool for longer programs.
1190 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1200 INPUT "      PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1210 PRINT "IN SUMMARY...
1220 IF Z$="P" THEN GOTO 860
1230 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1240 CLS
1250 PRINT "IN SUMMARY...
1260 PRINT
1270 PRINT "          1.  GOSUB/RETURN works like GOTO except RETURN remembers
1280 PRINT "              where the it came from and returns to that point.
1290 PRINT "          2.  GOSUB/RETURN is useful for repetitious subroutines.
1300 PRINT
1310 PRINT "------------------------------------------------------------------------------"
1320 PRINT "FOR PRACTICE...
1330 PRINT
1340 PRINT "          1.  Take out the END or other 'diversions' in the programs
1350 PRINT "              to see what happens.
1360 PRINT "          2.  Modify programs using GOTO to use GOSUB/RETURN.
1370 PRINT "          3.  Create your own programs using GOSUB/RETURN.
1380 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1390 INPUT "      PRESS [RETURN] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1400 IF Z$="P" THEN GOTO 1070
1410 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1420 CLS
1430 PRINT "    To get back to lessons, type LOAD''B:BTMENU.BAS'',R and press [RETURN]
1440 PRINT "                                     ^             ^
1450 PRINT "      Don't forget to use quotations instead of double apostrophies.
1460 PRINT
1470 PRINT "                   To practice, type NEW and press [RETURN]
1480 PRINT "------------------------------------------------------------------------------"

GUESS.BAS

10 CLS
30 FOR I=1 TO 280:PRINT "? ";:NEXT I
40 PRINT:PRINT:PRINT
50 PRINT "                             ???????????????????
60 PRINT "                             ? GUESS MY NUMBER ?
70 PRINT "                             ???????????????????
71 PRINT:PRINT
72 PRINT"                             by  Mark A. Swanson
80 FOR I=1 TO 1000:NEXT I
100 TPNB=0:TPNA=0:TPTS=0
110 CLS
120 PRINT:PRINT
130 PRINT"        HI !    WELCOME TO 'GUESS MY NUMBER'.
140 PRINT
150 PRINT"        THIS IS A MODIFIED VERSION OF THE OLD
160 PRINT"        FAVORITE.  THE COMPUTER THINKS OF A
170 PRINT"        NUMBER (you decide the upper limit)
180 PRINT"        AND YOU HAVE TO GUESS WHAT IT IS !
190 PRINT
200 PRINT"        THE COMPUTER EVEN KEEPS SCORE FOR A
210 PRINT"        ONE OR TWO PLAYER GAME.
220 PRINT
230 PRINT"        IN THE TWO PLAYER GAMES, THE PLAYERS
240 PRINT"        TRADE OFF WHO GETS TO GO FIRST (in
250 PRINT"        the name of fair play!).
260 PRINT
270 PRINT"        GOOD LUCK AND MAY THE BEST GUESSER WIN !
280 PRINT:PRINT
290 PRINT"               PRESS RETURN TO BEGIN
300 X=1
310 K$=INKEY$
320 WHILE K$=""
330 X=X+1
340 K$=INKEY$
350 WEND
360 CLS
370 PRINT"     PRESS  [1] (one player game)  or  [2] (two player game)  ";:PL$=INPUT$(1)
380 IF PL$="1" THEN GOTO 430
390 PRINT:PRINT:PRINT
400 GM=0
405 PRINT
410 INPUT "PLAYER #1 - TYPE YOUR NAME AND PRESS [RETURN] ";NA$
415 PRINT
420 INPUT "PLAYER #2 - TYPE YOUR NAME AND PRESS [RETURN] ";NB$
430 RANDOMIZE X
440 GM=GM+1
450 CLS
460 INPUT "WHAT IS THE HIGHEST YOU WANT THE NUMBERS TO GO ";LI
470 NM=INT(LI*RND(1))+1
480 CN=0:PNA=0:PNB=0
490 PRINT
500 PRINT"............... I'M THINKING OF A NUMBER BETWEEN 1 AND";LI
510 PRINT
520 IF PL$="2" THEN GOTO 990
530 INPUT "WHAT IS YOUR GUESS ";GU
540 CN=CN+1
550 IF GU>NM THEN PRINT:PRINT"MY NUMBER IS LOWER":FOR I=1 TO 500:NEXT:GOTO 530
560 IF GU<NM THEN PRINT:PRINT"MY NUMBER IS HIGHER":FOR I=1 TO 500:NEXT:GOTO 530
570 CLS
580 PRINT"                               GAME  #";GM
590 PRINT:PRINT:PRINT
600 PRINT"                          YOU   GOT   IT   !!!!!!!!!!!
602 FOR I=1 TO 1000:NEXT
610 PRINT:PRINT
720 IF PL$="1" THEN PRINT TAB(24);"YOU GOT MY NUMBER IN";CN;"GUESSES !
730 IF PL$="2" AND PNA=0 THEN PRINT TAB(24);"YOU GOT MY NUMBER IN";NBW;"GUESSES !
740 IF PL$="2" AND PNB=0 THEN PRINT TAB(24);"YOU GOT MY NUMBER IN";NAW;"GUESSES !
750 PRINT
760 TPNA=TPNA+PNA
770 TPNB=TPNB+PNB
780 PTS=100-(10*CN)+10
790 TPTS=TPTS+PTS
800 IF PL$="1" THEN PRINT"                       YOUR SCORE IS";PTS
810 IF PL$="1" THEN PRINT"                       YOUR TOTAL IS";TPTS
820 IF PL$="1" THEN GOTO 880
830 IF PL$="2" THEN PRINT"                       ";NA$;"'S SCORE IS";PNA
840 IF PL$="2" THEN PRINT"                       ";NB$;"'S SCORE IS";PNB
850 PRINT
860 PRINT"                       ";NA$;"'S TOTAL IS";TPNA
870 PRINT"                       ";NB$;"'S TOTAL IS";TPNB
880 FOR I=1 TO 2000:NEXT:PRINT:PRINT:PRINT:PRINT:PRINT
890 PRINT"     PRESS   [S] (same set up)  [RETURN] (different)  [Q] (quit) ";:A$=INPUT$(1)
900 NAW=0:NBW=0
910 IF A$="S" THEN GOTO 440
920 IF A$="Q" THEN GOTO 960
930 GM=0:TPTS=0:PTS=0:TPNA=0:TPNB=0:GOTO 360
940 CLS
950 PRINT TAB(37);"SO LONG !!!
960 LOAD"B:MENU.BAS",R
970 PRINT:PRINT
980 PRINT
990 IF GM=2 OR GM=4 OR GM=6 OR GM=8 OR GM=10 OR GM=12 OR GM=14 OR GM=16 THEN GOTO 1040
1000 PRINT:PRINT"WHAT'S YOUR GUESS ";NA$;"";:INPUT GU
1010 IF GU=NM THEN NAW=NAW+1:PNA=100-(10*NAW)+10:PNB=0:GOTO 570
1020 IF GU<NM THEN NAW=NAW+1:PRINT:PRINT"MY NUMBER IS HIGHER":FOR I=1 TO 500:NEXT
1030 IF GU>NM THEN NAW=NAW+1:PRINT:PRINT"MY NUMBER IS LOWER":FOR I=1 TO 500:NEXT
1040 PRINT:PRINT"WHAT'S YOUR GUESS ";NB$;"";:INPUT GU
1050 IF GU=NM THEN NBW=NBW+1:PNB=100-(10*NBW)+10:PNA=0:GOTO 570
1060 IF GU<NM THEN NBW=NBW+1:PRINT:PRINT"MY NUMBER IS HIGHER":FOR I=1 TO 500:NEXT:GOTO 1000
1070 IF GU>NM THEN NBW=NBW+1:PRINT:PRINT"MY NUMBER IS LOWER":FOR I=1 TO 500:NEXT:GOTO 1000

GUIDE.BAS

10 ' MARK A. SWANSON    19:19:51  2/27/1985
20 CLS
30 PRINT "                       CHART OF APPLICATIONS AND STATEMENTS
40 PRINT:PRINT
50 PRINT :PRINT:PRINT:PRINT
60 PRINT "                This guide is designed to provide you with the BASIC
70 PRINT "                features needed to perform the applications covered
80 PRINT "                in the lessons.  Listed are the COMMANDS and STATEMENTS
90 PRINT "                followed by the uses and the proper syntax.
100 PRINT
110 PRINT "                When the appropriate STATEMENT or COMMAND has been
120 PRINT "                found, refer to the MAIN BTMENU for the respective lesson.
125 PRINT
126 PRINT "                Also included in this guide is an ASCII table.
130 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
140 INPUT "                   PRESS [RETURN] TO CONTINUE  [Q] MAIN BTMENU ",Z$
150 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
160 CLS
170 PRINT "COMMAND    USES                     SYNTAX
180 PRINT "----------------------------------------------------------------------------
190 PRINT "RUN
200 PRINT"          Starts program            1. RUN
210 PRINT "          currently in memory.      2. RUN [starting line #]
220 PRINT
230 PRINT "LIST
240 PRINT "          Displays program lines    1. LIST
250 PRINT "          currently in memory.      2. LIST [starting line #]
260 PRINT
270 PRINT "NEW
280 PRINT "         Erases program currently   1. NEW
290 PRINT "         in memory (will not erase
300 PRINT "         programs on disk).
310 PRINT
320 PRINT "REM      Allows programmer to type  1. REM [text]
330 PRINT "         notes on program lines.
340 PRINT "         Seen only when program is
350 PRINT "         listed.
360 PRINT:PRINT
370 INPUT "               PRESS [RETURN] FOR STATEMENTS  [Q] MAIN BTMENU ",Z$
380 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
390 CLS
400 PRINT "STATEMENT  USES                   SYNTAX
410 PRINT "-----------------------------------------------------------------------------
420 PRINT "PRINT
430 PRINT "          Displays information.       1. PRINT
440 PRINT "                                      2. PRINT [data]
450 PRINT
460 PRINT "GOTO
470 PRINT "          Directs program flow to     1. GOTO [staring line #]
480 PRINT "          specified line number.
490 PRINT
500 PRINT "LET
510 PRINT "          Labels and stores data      1. LET [data] = [data]
520 PRINT "          for later retrieval and
530 PRINT "          processing.
540 PRINT
550 PRINT "FOR/NEXT
560 PRINT "          Counts and displays         1. FOR [variable] = [start #]
570 PRINT "          numbers; Causes a pause        TO [end #] : NEXT [variable]
580 PRINT "          or delay; Causes repeated   2. FOR [variable] = [start #]
590 PRINT "          output.                        TO [end #] STEP [increment #] :
600 PRINT "                                         NEXT [variable]
610 PRINT
620 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUSE PAGE  [Q] MAIN BTMENU ",Z$
630 IF Z$="P" THEN GOTO 160
640 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
650 CLS
660 PRINT "STATEMENT  USES                        SYNTAX
670 PRINT "-----------------------------------------------------------------------------"
680 PRINT "INPUT
690 PRINT "           Asks for, labels, and       1. INPUT [text in quotes] ;
700 PRINT "           stores user defined data.      [variable]
710 PRINT
720 PRINT "IF/THEN
730 PRINT "           Acts upon data according    1. IF [condition] THEN [action]
740 PRINT
750 PRINT "READ/DATA
760 PRINT "           Retrieves multiple data.    1. READ [variable]
770 PRINT "           Allows for storage of          DATA [data separated by commas]
780 PRINT "           large amounts of data in
790 PRINT "           a common area of the
800 PRINT "           program.
810 PRINT
820 PRINT "GOSUB/RETURN
830 PRINT "           Directs program flow to      1. GOSUB [line #]
840 PRINT "           a specified line number.        RETURN
850 PRINT:PRINT
860 INPUT " PRESS [RETURN] ASCII TABLE    PRESS [P] PREVIOUS PAGE    [Q] MAIN BTMENU ",Z$
870 IF Z$="P" THEN GOTO 390
880 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
890 CLS:PRINT "                    ASCII TABLE OF SYMBOLS & CHARACTERS
900 PRINT:PRINT
910 PRINT "To use these characters in a program use PRINT with CHR$ ......
920 PRINT
930 PRINT "PRINT CHR$(X)                     Example --->    PRINT CHR$(177)
940 PRINT "X is the ASCII number                             ▒
945 FOR DELAY=1 TO 2000:NEXT
950 PRINT
960 LOCATE 8,1:FOR A=1 TO 78:PRINT CHR$(205);:NEXT
965 FOR A=1 TO 6:PRINT A;CHR$(A);" ";:NEXT
970 FOR A=15 TO 28:PRINT A;CHR$(A);" ";:NEXT A
975 FOR A=33 TO 255:PRINT A;CHR$(A);" ";:NEXT A :PRINT
980 INPUT "                     PRESS [P] PREVIOUS PAGE    [Q] MAIN BTMENU ",Z$
990 IF Z$="P" THEN GOTO 650
1000 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R ELSE GOTO 980

IFTHEN.BAS

10 REM MARK A. SWANSON    20:48:25   02-24-85
20 CLS
30 FOR A=1 TO 48 :PRINT "WHAT IF ? ";:NEXT A
40 PRINT "------------------------------------------------------------------------------"
50 PRINT:PRINT:PRINT
60 PRINT "                                 I F   /   T H E N
70 PRINT
80 PRINT "                              THE COMPUTER'S DETECTIVE
90 FOR A=1 TO 2000:NEXT A
100 CLS
110 PRINT "           IF/THEN is actually two STATEMENTS on the same line.  We use
120 PRINT "           IF/THEN when we need to define and act upon certain conditions
130 PRINT "           in a program.  Let's use IF/THEN with INPUT.....
140 PRINT
150 PRINT "               10 INPUT ''HOW OLD ARE YOU '';A
160 PRINT "               20 IF A<16 THEN PRINT ''YOU PROBABLY HAVE A BIKE''
170 PRINT "               30 IF A=>16 THEN PRINT ''YOU'RE OLD ENOUGH TO DRIVE''
180 PRINT
190 PRINT "           Line 10 holds the INPUT question and the VARIABLE 'A'.
200 PRINT
210 X=0
220 PRINT "           Line 20 holds the first IF/THEN STATEMENTs.  IF 'A' is less
230 PRINT "           than 16 (the age we typed in is stored to 'A'), THEN the
240 PRINT "           computer is instructed to PRINT ''YOU PROBABLY HAVE A BIKE''.
250 PRINT
260 PRINT "           Line 30 holds the second IF/THEN STATEMENTs.  IF 'A' is equal
270 PRINT "           to or greater than 16, THEN the computer is instructed to
280 PRINT "           PRINT ''YOU'RE OLD ENOUGH TO DRIVE''.
290 PRINT:PRINT "   Try this one.....
300 IF X=1 THEN PRINT:PRINT:PRINT:PRINT:PRINT
310 INPUT "                          HOW OLD ARE YOU ";A
320 IF A<16 THEN PRINT TAB(27);"YOU PROBABLY HAVE A BIKE"
330 IF A=>16 THEN PRINT TAB(27);"YOU'RE OLD ENOUGH TO DRIVE"
340 FOR A=1 TO 1000:NEXT A
350 PRINT:PRINT
360 IF X=1 THEN CLS:GOTO 430
370 INPUT "                  PRESS [RETURN] TO CONTINUE  [Q] MAIN BTMENU ";Z$
380 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
390 CLS
400 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
410 X=1:PRINT "Try it again but answer differently to obtain the other response.....":PRINT:GOTO 300
420 CLS
430 PRINT "            The previous example involved numbers.  What about using
440 PRINT "            IF/THEN with STRING data ?  All of the same rules apply
450 PRINT "            here as with other STATEMENTS where STRING data is stored.
460 PRINT "            The VARIABLE must have a '$' at the end, and the data must
470 PRINT "            be enclosed in quotes.  Here's an example.....
480 PRINT
490 PRINT "                 10 INPUT ''WHAT'S YOUR FAVORITE FOOD '';F$
500 PRINT "                 20 IF F$=''STEAK'' THEN PRINT ''YUM YUM !''
510 PRINT "                 30 PRINT ''YUK...YOU PROBABLY LIKE QUICHE !''
520 PRINT:PRINT
530 PRINT "            Note the '$' in lines 10 and 20.  Note the quotations in
540 PRINT "            all of the lines.  If you answer 'STEAK', the computer will
550 PRINT "            respond with 'YUM YUM !'.  If you answer with anything
560 PRINT "            else, the computer passes over line 20 and checks to see
570 PRINT "            what line 30 holds.  In line 30 there is no condition
580 PRINT "            required - only a PRINT statement.  So, the computers does
590 PRINT "            as it is told and PRINTs 'YUK...YOU PROBABLY LIKE QUICHE'.
600 PRINT
610 PRINT:PRINT
620 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
630 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
640 IF Z$="P" THEN GOTO 100
650 CLS
660 PRINT "            There is one problem - even if you were to answer with
670 PRINT "            'STEAK', the computer would still print line 30 since there
680 PRINT "            is no condition required.  So, we either need a condition
690 PRINT "            in line 30 (30 IF F$<>''STEAK'' THEN PRINT ''YUK...YOU PROBABLY
700 PRINT "            LIKE QUICHE !''), or a diversion in line 20.  How about our
710 PRINT "            'traffic cop' - GOTO ?  If we put a colon at the end of line
720 PRINT "            20, it is legal to put another STATEMENT on the same line.
730 PRINT
740 PRINT "            Here again is the program with the addition to line 20 and
750 PRINT "            a new line so the computer has somewhere to GOTO.
760 PRINT
770 PRINT "                   10 INPUT ''WHAT'S YOUR FAVORITE FOOD '';F$
780 PRINT "                   20 IF F$=''STEAK'' THEN PRINT ''YUM YUM !'':GOTO 40
790 PRINT "                   30 PRINT ''YUK...YOU PROBABLY LIKE QUICHE''
800 PRINT "                   40 END
810 PRINT
820 PRINT "Now you try it.....
830 FOR A=1 TO 2
840 IF A=2 THEN PRINT "Ok, change your answer.....
850 INPUT "                         WHAT'S YOUR FAVORITE FOOD ";F$
860 IF F$="STEAK" THEN PRINT TAB(26);"YUM YUM !":GOTO 880
870 PRINT "                         YUK...YOU PROBABLY LIKE QUICHE !"
880 NEXT A
890 PRINT
900 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
910 IF Z$="P" THEN GOTO 420
920 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
930 CLS
940 PRINT "            IF/THEN has a couple tricks we can use to 'short cut' our
950 PRINT "            programming.   These tricks are called OR, AND, and ELSE.
960 PRINT "            They are used on the IF/THEN line.  Here's an example.....
970 PRINT
980 PRINT "                  10 INPUT ''HOW OLD ARE YOU '';A
990 PRINT "                  20 IF A<16 OR A>80 THEN PRINT ''YOU CAN'T DRIVE''
1000 PRINT
1010 PRINT "            An answer of less than 16 or more than 80 will PRINT the
1020 PRINT "            response 'YOU CAN'T DRIVE'.
1030 PRINT
1040 PRINT "                  20 IF A<16 AND A>6 THEN PRINT ''GOT A BIKE ?''
1050 PRINT
1060 PRINT "            An answer between 6 and 16 will PRINT the response 'GOT
1070 PRINT "            A BIKE ?'
1080 PRINT
1090 PRINT "                  20 IF A=>16 THEN PRINT ''YOU DRIVE'' ELSE PRINT ''YOU RIDE''
1100 PRINT
1110 PRINT "            An answer of more than 16 will PRINT 'YOU DRIVE', OTHERWISE
1120 PRINT "            (if less than 16), PRINT ''YOU RIDE''.
1130 PRINT:PRINT:PRINT
1140 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1150 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1160 IF Z$="P" THEN GOTO 650
1170 CLS
1180 PRINT "            The IF part of the STATEMENTs is always used in reference
1190 PRINT "            to a VARIABLE.  The THEN part, however, can be used with
1200 PRINT "            almost every other STATEMENT and COMMAND in BASIC.
1210 PRINT
1220 PRINT "            Below are some sample IF/THEN STATEMENTs.....
1230 PRINT
1240 PRINT "                    IF T=35 THEN PRINT ''HI THERE''
1250 PRINT "                    IF A$=''CAR'' THEN PRINT G
1260 PRINT "                    IF I=J THEN GOTO 20
1270 PRINT "                    IF D=60 THEN LET X=2
1280 PRINT "                    IF Z$=''PAUSE'' THEN FOR A=1 TO 1000:NEXT A
1290 PRINT "                    IF S<10 THEN INPUT ''NAME '';N$
1300 PRINT "                    IF B=>50 THEN W=5 ELSE W=10
1310 PRINT "                    IF C<>100 OR D=45 THEN PRINT ''HI'' ELSE PRINT ''GOOD BYE''
1320 PRINT "                    IF J$=''Y'' THEN LOAD''B:BTMENU.BAS'',R
1330 PRINT "                    IF F$=''TRUE'' AND Y=3 THEN GOTO 80
1340 PRINT:PRINT:PRINT:PRINT
1350 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1360 IF Z$="P" THEN GOTO 930
1370 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1380 CLS
1390 PRINT "IN SUMMARY..........
1400 PRINT
1410 PRINT "        1.  IF/THEN allows conditions to be set and acted upon
1420 PRINT "          a. IF sets the conditions
1430 PRINT "          b. THEN acts upon the condition with any BASIC STATEMENT or COMMAND
1440 PRINT
1450 PRINT "        2.  Other IF/THEN 'helpers' are:
1460 PRINT "          a. OR
1470 PRINT "          b. AND
1480 PRINT "          c. ELSE
1490 PRINT
1500 PRINT "------------------------------------------------------------------------------"
1510 PRINT "FOR PRACTICE..........
1520 PRINT
1530 PRINT "        1.  Try all variations of IF/THEN
1540 PRINT
1550 PRINT "        2.  Create a program and continue to build on that program using
1560 PRINT "            more INPUT and IF/THEN STATEMENTs.
1570 PRINT:PRINT:PRINT
1580 INPUT "           PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1590 IF Z$="P" THEN GOTO 1170
1600 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1610 CLS
1620 PRINT "                   To practice, type NEW and press [RETURN]
1630 PRINT "               To get back to lessons, type LOAD''B:BTMENU.BAS'',R
1640 PRINT
1650 PRINT "         Remember to use quotations instead of double apostrophies ('')
1660 PRINT "------------------------------------------------------------------------------"

INPUT.BAS

10 REM MARK A. SWANSON    20:43:15   02-24-85
20 CLS
30 FOR A=1 TO 312:PRINT " ? ";:NEXT A
40 PRINT "------------------------------------------------------------------------------"
50 PRINT:PRINT
60 PRINT "                                    I N P U T
70 PRINT
80 PRINT "                       THE QUESTION TO ALL OF YOUR ANSWERS
90 FOR A=1 TO 2000:NEXT A
100 CLS
110 PRINT "            If you've ever wondered how a computer can not only ask
120 PRINT "            us a question, but respond as well, wonder no more !
130 PRINT
140 PRINT "            INPUT is a STATEMENT that allows a request for data to be
150 PRINT "            'put in' to the computer's memory.  With this powerfull
160 PRINT "            STATEMENT we can communicate (and to stretch the truth a
170 PRINT "            bit, converse) with the computer.  Below is an example....
180 PRINT
190 PRINT "                              Go ahead and answer.....
200 PRINT
210 INPUT "                          WHAT IS YOUR NAME, FRIEND ";N$
220 PRINT "                          HI, ";N$
230 PRINT:PRINT:PRINT
240 FOR A=1 TO 1000:NEXT A
250 PRINT "            As you can see ";N$;", I now know your name and can use
260 PRINT "            it throughout this lesson if I want to !  Let's see how
270 PRINT "            this STATEMENT looks.
280 PRINT:PRINT:PRINT
290 INPUT "                PRESS [RETURN] TO CONTINUE     [Q] MAIN BTMENU ";Z$
291 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
300 CLS
310 PRINT "                      10 INPUT ''WHAT IS YOUR NAME, FRIEND '';N$
320 PRINT "                      20 PRINT ''HI, '';N$"
330 PRINT
340 PRINT "            This may look complicated, but it isn't.  Let's disect it.
350 PRINT
360 PRINT "            Line 10 holds the INPUT STATEMENT.  Notice that the question
370 PRINT "            is typed in just as we would like it, except we leave out
380 PRINT "            question mark (?).  The computer will automatically place
390 PRINT "            the '?' at the end (where the semi-colon is).  Quotations
400 PRINT "            are necessary as with the PRINT STATEMENT.  At the end of
410 PRINT "            the line a VARIABLE is used to store the answer.  Our answer
420 PRINT "            is a STRING (a word or letter) so the '$' is added.
430 PRINT
440 PRINT "            Line 20 PRINTs the response.  Note that the semi-colon
450 PRINT "            separates the STRING from the VARIABLE (N$).  Remember,
460 PRINT "            a semi-colon tells the computer to PRINT the following
470 PRINT "            data right after the preceding data (on the same line if
480 PRINT "            there is enough room on the screen).  In short, the computer
490 PRINT "            is instructed to PRINT two things - the STRING (HI, ) and
500 PRINT "            the data stored to the VARIABLE N$ (";N$;")."
510 PRINT:PRINT
520 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
530 IF Z$="P" THEN GOTO 100
540 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
550 CLS
560 PRINT "           Now we'll use INPUT with numbers (no STRINGs attached !).
570 PRINT
580 PRINT "                        10 INPUT ''HOW OLD ARE YOU '';A
590 PRINT "                        20 PRINT ''YOU ARE '';A;'' YEARS OLD''
600 PRINT
610 PRINT "          Line 10 is typed in just like the previous program with one
620 PRINT "          exception - the '$' sign is left off the VARIABLE 'A'.
630 PRINT
640 PRINT "          Line 20 is set up just like line 20 in the previous program
650 PRINT "          with the additional STRING at the end (''YEARS OLD'').  Again
660 PRINT "          we used semi-colons to separate the data to be PRINTed.
670 PRINT
680 PRINT "          Ok, go ahead and answer again.....
690 PRINT
700 INPUT "                             HOW OLD ARE YOU ";A
710 PRINT "                             YOU ARE ";A;" YEARS OLD"
720 PRINT:PRINT
730 FOR A=1 TO 1000:NEXT A
740 PRINT "          If you were to type a STRING (letter or word) instead of a
750 PRINT "          number (as is required by the VARIABLE 'A') the message
760 PRINT "          '?redo from start' would appear and allow you to re-enter a number.
770 PRINT:PRINT
780 INPUT "        PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
790 IF Z$="P" THEN GOTO 300
800 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
810 CLS
820 PRINT "           Here's an example of some fancy programming.....
830 PRINT
840 PRINT "                 10 INPUT ''WHAT IS YOUR NAME '';NM$
850 PRINT "                 20 PRINT ''HI, '';NM$
860 PRINT "                 30 PRINT ''TYPE 3 NUMBERS AND I'LL PRINT THE AVERAGE''
870 PRINT "                 40 INPUT ''1ST NUMBER '';A
880 PRINT "                 50 INPUT ''2ND NUMBER '';B
890 PRINT "                 60 INPUT ''3RD NUMBER '';C
900 PRINT "                 70 PRINT (A+B+C)/3
910 PRINT
920 PRINT "          Take a good look at this program, line for line, so you will
930 PRINT "          understand what each STATEMENT will do.   Ok, now answer
940 PRINT "          the questions.....
950 PRINT
960 INPUT "                    WHAT IS YOUR NAME ";NM$
970 PRINT "                    HI ";NM$
980 PRINT "                    TYPE 3 NUMBERS AND I'LL PRINT THE AVERAGE
990 INPUT "                    1ST NUMBER ";A
1000 INPUT "                    2ND NUMBER ";B
1010 INPUT "                    3RD NUMBER ";C
1020 PRINT "                   ";(A+B+C)/3
1030 PRINT
1040 PRINT "          What would you add to line 70 to have the computer PRINT
1050 PRINT "          'THE AVERAGE IS;(A+B+C)/3' ?  {PRINT ''THE AVERAGE IS'';(A+B+C)/3}
1060 PRINT
1070 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1080 IF Z$="P" THEN GOTO 550
1090 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1100 CLS
1110 PRINT "IN SUMMARY.......
1120 PRINT
1130 PRINT "            1.  INPUT instructs the computer to accept and store data
1140 PRINT "                in response to user defined questions and inquiries
1150 PRINT
1160 PRINT "            2.  The format is:  STATEMENT ''ARGUMENT'';VARIABLE
1170 PRINT "                       example>  INPUT ''NAME PLEASE'';N$
1180 PRINT
1190 PRINT "------------------------------------------------------------------------------"
1200 PRINT "FOR PRACTICE.......
1210 PRINT
1220 PRINT "            1.  Create programs like the examples using.....
1230 PRINT "              a.  STRING data as responses
1240 PRINT "              b.  NUMBER data as responses
1250 PRINT
1260 PRINT "            2.  Create a program using INPUT with FOR/NEXT and GOTO
1270 PRINT:PRINT:PRINT:PRINT:PRINT
1280 INPUT "           PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1290 IF Z$="P" THEN GOTO 810
1300 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1310 CLS
1320 PRINT "                             To practice, type NEW
1330 PRINT "               To get back to lessons, type LOAD''B:BTMENU.BAS'',R
1340 PRINT
1350 PRINT "        Remember to use quotations instead of double appostrophies ('')
1360 PRINT "------------------------------------------------------------------------------"

LET.BAS

10 REM MARK A. SWANSON     20:41:32  02-24-85
20 CLS
30 FOR A=1 TO 50:PRINT "       L E T   ";:NEXT A
40 PRINT
50 PRINT "------------------------------------------------------------------------------"
60 PRINT:PRINT:PRINT:PRINT
70 PRINT "                                       LET
80 PRINT:PRINT
90 PRINT "                             A STATEMENT FOR STORAGE
100 FOR A=1 TO 2000:NEXT A
110 CLS
120 PRINT "            LET is a versitile STATEMENT used for storing STRINGS and
130 PRINT "            numeric values.  Without LET, the computer assumes that
140 PRINT "            only LINE NUMBERS and their data are to be stored.  LET
150 PRINT "            can be used with almost every other STATEMENT, but we will
160 PRINT "            only use it with PRINT and GOTO in this lesson and then
170 PRINT "            apply it with new STATEMENTs in later lessons.
180 PRINT
190 PRINT "            The best way to understand LET is to use it in a simple
200 PRINT "            program.....
210 PRINT
220 PRINT "                                    10 LET A=106
230 PRINT "                                    20 PRINT A
240 PRINT
250 PRINT "            The output would be.....
260 PRINT
270 PRINT "                                    106
280 PRINT
290 PRINT "            The computer was instructed to store the number '106' as
300 PRINT "            'A'.  Then, as instructed in line 20, the computer PRINTed
310 PRINT "            the VALUE of 'A' - which is '106'.
320 PRINT:PRINT
330 INPUT "                   PRESS [RETURN] TO CONTINUE  or  [Q] MAIN BTMENU ",Z$
340 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
350 CLS
360 PRINT "            We can use LET to do math problems, as is illustrated in
370 PRINT "            the following example.....
380 PRINT
390 PRINT "                                      10 LET A=24*17
400 PRINT "                                      20 PRINT A
410 PRINT
420 PRINT "            The output would be.....
430 PRINT
440 PRINT "                                      408
450 PRINT
460 PRINT "            The computer was instructed to store the VALUE of '24 X 17'.
470 PRINT "            Then, as instructed in line 20, the VALUE was PRINTed - 408.
480 PRINT
490 PRINT "            The letter used for storing VALUES is called the VARIABLE.
500 PRINT "            We used the VARIABLE 'A', however any letter or combination
510 PRINT "            of letters is acceptable.
520 PRINT:PRINT:PRINT:PRINT
530 INPUT "           PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
540 IF Z$="P" THEN GOTO 110
550 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
560 CLS
570 PRINT "           Now, we'll use LET with STRINGs (letters, words, anything
580 PRINT "           that is to be PRINTed or stored verbatim).  A minor addition
590 PRINT "           to the format is necessary.  Whenever a STRING is to be stored,
600 PRINT "           a dollar sign ($) has to be added to the VARIABLE.  This makes
610 PRINT "           it a STRING VARIABLE.  Another example.....
620 PRINT
630 PRINT "                                  10 LET G$=''BASIC IS FUN''
640 PRINT "                                  20 PRINT G$
650 PRINT
660 PRINT "           The output would be.....
670 PRINT
680 PRINT "                                  BASIC IS FUN
690 PRINT
700 PRINT "           Notice that the data was enclosed in quotations.  Remember,
710 PRINT "           whenever we store a STRING, the data must be enclosed in
720 PRINT "           quotations.
730 PRINT:PRINT:PRINT:PRINT
740 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
750 IF Z$="P" THEN GOTO 350
760 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
770 CLS
780 PRINT "           If you can remember back to the GOTO lesson, we used the
790 PRINT "           semi-colon (;) to PRINT data horizontally instead of
800 PRINT "           vertically.  The following are examples of how to use the
810 PRINT "           semi-colon with LET and PRINT.....
820 PRINT
830 PRINT "                               10 LET T=18
840 PRINT "                               20 LET R=15
850 PRINT "                               30 PRINT ''THE ANSWER IS '';T+R
860 PRINT "                   output..... THE ANSWER IS 33
870 PRINT:PRINT
880 PRINT "                               10 LET W$=''WORDS''
890 PRINT "                               20 LET M$=''MY''
900 PRINT "                               30 LET T$=''TOGETHER''
910 PRINT "                               40 LET R$=''RUN''
920 PRINT "                               50 PRINT M$;W$;R$;T$
930 PRINT "                   output..... MYWORDSRUNTOGETHER
940 PRINT
950 PRINT "           You can create your own variations of these when you practice.
960 PRINT:PRINT:PRINT
970 INPUT "           PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
980 IF Z$="P" THEN GOTO 560
990 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1000 CLS
1010 PRINT "IN SUMMARY.....
1020 PRINT
1030 PRINT "      1.  LET instructs the computer to store numeric values and STRINGs
1040 PRINT "          to a VARIABLE.
1050 PRINT "      2.  A dollar sign ($) must be added to the VARIABLE when storing
1060 PRINT "          STRINGs and the data must be enclosed in quotations.
1070 PRINT
1080 PRINT "------------------------------------------------------------------------------"
1090 PRINT "FOR PRACTICE.....
1100 PRINT
1110 PRINT "      1.  Try variations of the previous examples.
1120 PRINT "      2.  Combine STRINGs and numeric values in one program.
1130 PRINT "      3.  Try a program using a comma (,) instead of a semi-colon (;).
1140 PRINT
1150 PRINT "------------------------------------------------------------------------------"
1160 PRINT:PRINT:PRINT:PRINT:PRINT
1170 INPUT "             PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU " ,Z$
1180 IF Z$="P" THEN GOTO 770
1190 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1200 CLS
1210 PRINT "               To begin practicing, type NEW, followed by [RETURN]
1220 PRINT
1230 PRINT "Try this program.....
1240 PRINT "                           10 LET A=A+1
1250 PRINT "                           20 PRINT A
1260 PRINT "                           30 GOTO 10
1270 PRINT
1280 PRINT "           To stop this program, press [CTRL]-[C] (at same time)
1290 PRINT
1300 PRINT " Remember, when using STRINGs, use quotations instead of double apostrophies.
1310 PRINT "-------------------------------------------------------------------------------"

MATH.BAS

10  REM  BY MARK A. SWANSON  5/1/83  BELLEVUE, WA.
20 RAND$=RIGHT$(TIME$,2)
21 RAND=VAL(RAND$)
22 RANDOMIZE RAND
30 CLS
40 FOR I=1 TO 40
50 PRINT "+ - X  %  ";:NEXT I
60 PRINT:PRINT:PRINT:PRINT:PRINT
70 PRINT TAB(35);"MATH  FUN"
80 PRINT:PRINT
90 PRINT TAB(29);"by  Mark A. Swanson
100 FOR I=1 TO 1000:NEXT I
110 CLS
120 FOR I=1 TO 500:NEXT I
130 PRINT "                     THIS IS A PROGRAM TO TEST YOUR MATH ABILITY"
140 PRINT:PRINT:PRINT
150 PRINT "                              THE PROBLEMS WILL INVOLVE :"
160 PRINT
170 PRINT "                 ADDITION  SUBTRACTION  MULTIPLICATION  &  DIVISION "
180 PRINT:PRINT:PRINT:PRINT
190 PRINT "                     THE PROBLEMS WILL LOOK LIKE THESE EXAMPLES :"
200 PRINT "                     2 + 3 = ?   3 - 1 = ?   4 X 5 = ?   6 % 2 = ?"
210 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
220 INPUT "                             PRESS [RETURN] TO CONTINUE ",I
230 CLS
240 PRINT "                 TO GET STARTED, YOU WILL BE ASKED 3 QUESTIONS:"
250 PRINT:PRINT
260 PRINT "           NUMBER FAMILY ?    ONE OF THE 2 NUMBERS IN EACH EQUATION
270 PRINT "                              WILL BE THE SAME THROUGHOUT THE SET.
280 PRINT "                              EXAMPLE - 1+2=?  4+2=?  9+2=?  3+2=? etc.
290 PRINT "                              YOU CHOOSE THE NUMBER TO REMAIN CONSTANT.":PRINT
300 PRINT "                              IF A CONSTANT NUMBER IS NOT DESIRED,
310 PRINT "                              TYPE A '0' AND BOTH NUMBERS WILL BE
320 PRINT "                              RANDOM.
330 PRINT
340 PRINT "           UPPER LIMIT ?      THE NUMBER YOU TYPE HERE WILL SET THE
350 PRINT "                              UPPER LIMIT FOR THE OTHER NUMBER IN THE
360 PRINT "                              EQUATION WHICH WILL BE A RANDOM NUMBER
370 PRINT "                              FROM 1 TO THE UPPER LIMIT YOU CHOOSE.
380 PRINT:
390 PRINT "           OPERATION ?        CHOOSE THE NUMBER NEXT TO THE OPERATION
400 PRINT "                              OF YOUR CHOICE:
410 PRINT "                              ADD, SUBTRACT, MULTIPLY, or DIVIDE."
420 PRINT:PRINT:INPUT "                              PRESS [RETURN] TO CONTINUE ",CONTINUE
430 R=1
490 CLS
491 LOCATE 23,30:PRINT "TYPE   999   FOR HELP"
495 LOCATE 1,1
500 INPUT "NUMBER FAMILY ";X
505 IF X=999 THEN GOTO 230
510 IF X=0 THEN INPUT "NO NUMBER FAMILY - UPPER LIMIT #1 ";L1
515 IF L1=999 THEN GOTO 230
520 IF X=0 THEN LOCATE 3,20:INPUT "UPPER LIMIT #2 ";LI:IF LI=999 THEN GOTO 230 ELSE X1=1:GOTO 540
525 IF LI=999 THEN GOTO 230
530 INPUT "UPPER LIMIT ";LI
535 IF LI=999 THEN GOTO 230
540 INPUT "OPERATION -  1-ADDITION   2-SUBTRACTION   3-MULTIPLICATION   4-DIVISION ";M
550 PRINT:PRINT:PRINT:PRINT
560 PRINT "                IF YOU GET STUCK, TYPE  '999' FOR THE ANSWER
570 FOR I=1 TO 500:NEXT I
580 PRINT
590 IF X=0 THEN X=INT(L1*RND(1))+1
600 ON M GOTO 610,730,860,980
610 CR=0
620 CW=0
630 FOR I=1 TO 10
640 CHK=0
650 GOSUB 1100
660 PRINT NM;"+";X;"=  ";:INPUT A
670 IF A=999 THEN PRINT "The Correct Answer Is ";NM+X:GOTO 700
680 IF A=NM+X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
690 IF A <>NM+X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 660
700 NEXT I
710 GOSUB 1140
720 GOTO 610
730 CR=0
740 CW=0
750 FOR I=1 TO 10
760 CHK=0
770 GOSUB 1100
780 CHK=0
790 PRINT NM;" - ";X" =   ";:INPUT A
800 IF A=999 THEN PRINT "The Correct Answer Is ";NM-X:GOTO 830
810 IF A=NM-X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
820 IF A<>NM-X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 790
830 NEXT I
840 GOSUB 1140
850 GOTO 730
860 CR=0
870 CW=0
880 FOR I=1 TO 10
890 GOSUB 1100
900 CHK=0
910 PRINT NM;" X ";X" =  ";:INPUT A
920 IF A=999 THEN PRINT "The Correct Answer Is ";NM*X:GOTO 950
930 IF A=NM*X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
940 IF A<>NM*X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 910
950 NEXT I
960 GOSUB 1140
970 GOTO 860
980 CR=0:CW=0
990 FOR I=1 TO 10
1000 CHK=0
1010 GOSUB 1100
1020 NM=INT(NM/X)*X
1030 PRINT NM;" % ";X" =  ";:INPUT A
1040 IF A=999 THEN PRINT "The Correct Answer Is ";NM/X:GOTO 1070
1050 IF A=NM/X THEN PRINT "CORRECT":CR=CR+1:IF CHK=1 THEN CR=CR-1
1060 IF A<>NM/X THEN PRINT "WRONG...TRY AGAIN":CW=CW+1:CHK=1:GOTO 1030
1070 NEXT I
1080 GOSUB 1140
1090 GOTO 980
1100 CLOSE R
1110 IF X1=1 THEN X=INT(L1*RND(1))+1
1120 NM=INT(LI*RND(1))+1
1130 RETURN
1140 CLS
1150 PRINT "                           YOU WERE CORRECT ";CR;" TIMES !"
1160 PRINT "                           YOU WERE WRONG ";CW;" TIMES"
1170 PRINT
1180 FOR I=1 TO 800:NEXT I
1190 IF CR=10 OR CW=0 THEN GOTO 1260
1200 IF CR=>8 OR CW=<1 THEN PRINT "YOU DID VERY WELL !!!"
1210 PRINT
1220 INPUT "           WOULD YOU LIKE TO CONTINUE IN THIS CATEGORY (Y or N) ? ",B$
1230 IF B$="Y" THEN CLS:RETURN
1240 INPUT "           WOULD YOU LIKE TO QUIT OR TRY SOME NEW NUMBERS ? (Q or N) ",C$
1250 IF C$="N" THEN GOTO 490
1255 LOAD"B:MENU.BAS",R
1260 CLS
1270 PRINT
1280 PRINT "                 XXX                                    XXX"
1290 PRINT "               XXX  XXX                              XXX  XXX"
1300 PRINT "                XXX  XXX                            XXX  XXX"
1310 PRINT "                 XXX   XXX                        XXX   XXX"
1320 PRINT "                  XXX    XXX                    XXX    XXX"
1330 PRINT "                   XXX     XXX                XXX    XXX
1340 PRINT "                    XXX      XXXXXXXXXXXXXXXXXX    XXX"
1350 PRINT "                   XXX                              XXX
1360 PRINT "                  XXX                                XXX
1370 PRINT "                 XXX       /                  \       XXX
1380 PRINT "                 XXX         <>             <>        XXX
1390 PRINT "             :----------------------------------------------:
1400 PRINT "             |                                              |
1410 PRINT "             |                THAT'S TERIFFIC !             |
1420 PRINT "             |                                              |
1430 PRINT "             |                 A PERFECT SCORE              |
1440 PRINT "             |                                              |
1450 PRINT "             |______________________________________________|
1460 PRINT:PRINT
1470 GOTO 1210
1 SCREEN 0,0
10 KEY 3, "LOAD"+CHR$(34)+"B:MENU"+CHR$(34)+CHR$(44)+"R"+CHR$(13)
20 KEY OFF
30 REM BY MARK A. SWANSON  5/1/83  BELLEVUE,WA.
40 CLS
50 LOCATE 10,25:PRINT "BE SURE THE [CAPS LOCK] IS ON
60 FOR A=1 TO 2000:NEXT A
70 CLS
100 PRINT
110 PRINT
120 PRINT
130 PRINT "                                  WELCOME TO
140 PRINT "                                     THE
150 PRINT
160 PRINT "
170 PRINT "                              D O C    S W A N
180 PRINT "
190 PRINT "                              LEARNING  SERIES
200 PRINT:PRINT:PRINT
210 PRINT "                             BY MARK A. SWANSON
221 PRINT "                             11390 N.E. 91st St.
222 PRINT "                             Kirkland, WA. 98033
223 PRINT:PRINT:PRINT
230 PRINT "                         Help Support Educational Fun!
250 PRINT
260 FOR I = 1 TO 3000:NEXT
270 CLS
280 PRINT "            *        *       ********      *      *      *      *"
290 PRINT "   DOC      **      **       *             * *    *      *      *     DOC "
300 PRINT "   SWAN     * *    * *       ********      *  *   *      *      *     SWAN"
310 PRINT "            *  *  *  *       *             *    * *       *    *"
320 PRINT "            *   **   *       ********      *      *        ****"
330 PRINT
340 PRINT"     ─────────────────────────              ───────────────────────────"
350 PRINT"        LETTERS & LANGUAGE                         NUMBERS & MATH
360 PRINT"     =========================              ==========================="
370 PRINT
380 PRINT"  [1] SPELLING FUN  [4] SUPER SCRAM       [7] COUNTING FUN     [9]  MPG
390 PRINT"  [2] PRINTING FUN  [5] SCRAMBLER         [8] GUESS MY NUMBER  [10] MATH FUN
400 PRINT"  [3] MISSING WORD  [6] WURD
410 PRINT
420 PRINT"     ──────────────────────────             ────────────────────────────"
430 PRINT"     *     HOW TO PROGRAM     *             *  KEYBOARD SKILL BUILDER  *
440 PRINT"     ==========================             ============================
450 PRINT"
460 PRINT"      [11]  THE BASIC TUTORIAL                    [12]  TYPING FUN
470 PRINT
480 PRINT"                                  [Q]  QUIT
490 PRINT
500 PRINT
510 PRINT "                            WHAT WOULD YOU LIKE ?";
520 INPUT " ",P$
530 CLS
540 IF P$="Q" THEN CLS:PRINT:PRINT:PRINT:PRINT "SEE YOU NEXT TIME................":GOTO 710
550 LOCATE 10,26:PRINT "YOUR SELECTION IS NOW LOADING
560 PRINT:PRINT
570 PRINT"                                 [CAPS LOCK] ON ?
580 IF P$="1" THEN LOAD"B:SPELLING.BAS",R
590 IF P$="2" THEN LOAD"B:PRINTING.BAS",R
600 IF P$="3" THEN LOAD"B:MISSING.BAS",R
610 IF P$="4" THEN LOAD"B:SUPSCRAM.BAS",R
620 IF P$="5" THEN LOAD"B:SCRAMBLE.BAS",R
630 IF P$="6" THEN LOAD"B:WURD.BAS",R
650 IF P$="7" THEN LOAD"B:COUNTING.BAS",R
660 IF P$="8" THEN LOAD"B:GUESS.BAS",R
670 IF P$="9" THEN LOAD"B:MPG.BAS",R
680 IF P$="10" THEN LOAD"B:MATH.BAS",R
690 IF P$="11" THEN LOAD"B:BASIC.BAS",R
700 IF P$="12" THEN LOAD"B:TYPE.BAS",R
710 END

MISSING.BAS

2 CLS
3 FOR A=1 TO 28:PRINT"    MISSING ____       _______ WORD  ";:NEXT A
4 PRINT:PRINT:PRINT
5 PRINT TAB(28);"by   MARK A. SWANSON"
10 FOR I=1 TO 1500:NEXT I
11 CLS
12 PRINT TAB(18);"BEFORE WE BEGIN, PLEASE TELL ME YOUR NAME";:INPUT NM$
13 PRINT:PRINT:PRINT:PRINT:PRINT
14 PRINT "                 HI ";NM$;". I'M GOING TO SHOW YOU SOME SENTENCES."
15 PRINT "                 YOUR JOB IS TO FILL IN THE MISSING WORDS."
16 PRINT:PRINT:INPUT "              WHEN YOU ARE READY TO BEGIN, PRESS THE [RETURN] KEY ";Z
19 CLS
20 PRINT:PRINT:PRINT
21 RESTORE
22 TC=0:TW=0
30 PRINT "  3 LETTER WORDS      4 LETTER WORDS      5 LETTER WORDS         TOUGHIES"
31 PRINT "    ENDING IN:           ENDING IN:          ":PRINT
32 PRINT "  A    AT             F     AKE           K    EASY            P    ?
33 PRINT "  B    AR             G     OOK           L    EASY
34 PRINT "  C    AN             H     ATE           M    AVERAGE        ==========="
35 PRINT "  D    AG             I     ARE           N    AVERAGE
36 PRINT "  E    OG             J     EAR           O    HARDER          Q     QUIT
37 PRINT:PRINT
40 PRINT "              IF YOU GET STUCK TYPE  '?'  FOR THE MISSING WORD"
65 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
66 PRINT "         PLEASE SELECT FROM THE LETTERS BELOW AND PRESS [RETURN]
67 PRINT
68 INPUT "          A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, or Q  ",CH$
70 IF CH$="A" THEN GOTO 99
71 IF CH$="B" THEN GOTO 180
72 IF CH$="C" THEN GOTO 280
73 IF CH$="D" THEN GOTO 380
74 IF CH$="E" THEN GOTO 480
75 IF CH$="F" THEN GOTO 780
76 IF CH$="G" THEN GOTO 880
77 IF CH$="H" THEN GOTO 980
78 IF CH$="I" THEN GOTO 1080
79 IF CH$="J" THEN GOTO 1180
80 IF CH$="K" THEN GOTO 1280
81 IF CH$="L" THEN GOTO 1380
82 IF CH$="M" THEN GOTO 1480
83 IF CH$="N" THEN GOTO 1580
84 IF CH$="O" THEN GOTO 1680
85 IF CH$="P" THEN GOTO 1780
86 IF CH$="Q" THEN LOAD"B:MENU",R
99 CLS
100 PRINT "THE _ _ _  FLEW OUT OF THE DARK CAVE.":GOSUB 2000
110 PRINT "THE _ _ _  CHASED THE MOUSE OUT OF THE HOUSE.":GOSUB 2000
120 PRINT "WE ALWAYS WIPE OUR FEET ON THE _ _ _ .":GOSUB 2000
130 PRINT "OUR DOG IS _ _ _ BECAUSE HE EATS TOO MUCH.":GOSUB 2000
140 PRINT "THE MAN'S _ _ _ BLEW OFF HIS HEAD IN A WINDSTORM.":GOSUB 2000
150 PRINT "SOMETIMES WE ALL DESERVE A NICE _ _ _ ON THE BACK.":GOSUB 2000
160 PRINT "A _ _ _ IS REALLY A BIG MOUSE.":GOSUB 2000
165 GOSUB 2050
170 GOTO 19
180 CLS
190 FOR I=1 TO 7:READ MW$:NEXT I
200 PRINT "THE MEN WERE SPREADING _ _ _ ON THE NEW ROOF.":GOSUB 2000
210 PRINT "MOM AND DAD WENT FOR A DRIVE IN THEIR NEW _ _ _ .":GOSUB 2000
220 PRINT" _ _ _ IS A CONFLICT BETWEEN TWO COUNTRIES.":GOSUB 2000
230 PRINT "BUTTER FINGER IS MY FAVORITE CANDY _ _ _ .":GOSUB 2000
240 PRINT "I COULDN'T GET THE LID OFF THE _ _ _ OF PEANUT BUTTER.":GOSUB 2000
250 PRINT "THE BIRDS WERE TOO _ _ _ AWAY TO SEE.":GOSUB 2000
260 PRINT "WE PLAYED GOLF ON A _ _ _ THREE COURSE.":GOSUB 2000
265 GOSUB 2050
270 GOTO 19
280 CLS
290 FOR I=1 TO 14:READ W$:NEXT I
300 PRINT "THE _ _ _ WAS VERY TALL AND HAD BROWN HAIR.":GOSUB 2000
310 PRINT "EVERYONE GETS A _ _ _ IN THE SUMMER.":GOSUB 2000
320 PRINT "THE LITTLE ENGINE SAID 'I THINK I _ _ _ '.":GOSUB 2000
330 PRINT "WHEN IT'S HOT IN THE HOUSE, I TURN ON THE _ _ _ .":GOSUB 2000
340 PRINT "WE _ _ _ AS FAST AS WE COULD WHEN WE SAW THE ICE CREAM MAN.":GOSUB 2000
350 PRINT "DAD FRIED SOME EGGS IN THE _ _ _ .":GOSUB 2000
360 PRINT "THE TEACHERS PUT A _ _ _ ON BRINGING PETS TO SCHOOL.":GOSUB 2000
365 GOSUB 2050
370 GOTO 19
380 CLS
390 FOR I=1 TO 21:READ MW$:NEXT I
400 PRINT "MOM USED A _ _ _ TO WIPE UP THE SPILLED MILK.":GOSUB 2000
410 PRINT "WE ALWAYS PLAY _ _ _ AT RECESS.":GOSUB 2000
420 PRINT "LAST HALLOWEEN, I GOT A BIG _ _ _ OF CANDY.":GOSUB 2000
430 PRINT "A HAPPY DOG WILL _ _ _ HIS TAIL.":GOSUB 2000
440 PRINT "ANOTHER NAME FOR A JOKE IS A _ _ _ .":GOSUB 2000
450 PRINT "THE FARMER'S HORSE IS AN OLD _ _ _ .":GOSUB 2000
460 PRINT "THE HAMMOCK STARTED TO _ _ _ WHEN DAD CLIMBED IN.":GOSUB 2000
465 GOSUB 2050
470 GOTO 19
480 CLS
490 FOR I=1 TO 28:READ MW$:NEXT I
500 PRINT "MY _ _ _ BARKS ALL THE TIME.":GOSUB 2000
510 PRINT "DAD CHOPPED UP THE _ _ _ FOR FIREWOOD.":GOSUB 2000
520 PRINT "THE _ _ _ WAS SO THICK THAT WE COULDN'T SEE THE SIDEWALK.":GOSUB 2000
530 PRINT "SOME PEOPLE _ _ _ TO KEEP PHYSICALLY FIT.":GOSUB 2000
540 PRINT "WE CALL OUR _ _ _ BY YELLING 'SOOOEEE SOOOEEE'.":GOSUB 2000
550 PRINT "A _ _ _ IS A KIND OF SWAMP.":GOSUB 2000
560 PRINT "THE GEARS WOULDN'T TURN BECAUSE A _ _ _ WAS BROKEN.":GOSUB 2000
565 GOSUB 2050
570 GOTO 19
780 CLS
790 FOR I=1 TO 35:READ MW$:NEXT I
800 PRINT "I LOVE TO EAT _ _ _ _ ON MY BIRTHDAY.":GOSUB 2000
810 PRINT "AFTER SCHOOL, WE ARE ALL GOING SWIMMING IN THE _ _ _ _ .":GOSUB 2000
820 PRINT "MOM SAID IF WE ARE GOOD, SHE'LL _ _ _ _ SOME COOKIES.":GOSUB 2000
830 PRINT "THE MAN USED A _ _ _ _ TO GET THE LEAVES OF HIS LAWN.":GOSUB 2000
840 PRINT "THE BOY WAS GOING TO _ _ _ _ THE BALL WITHOUT ASKING.":GOSUB 2000
850 PRINT "I HOPE THE RARE STAMP I FOUND ISN'T A _ _ _ _ .":GOSUB 2000
860 PRINT "OCEAN LINERS MAKE AN AWFULLY LARGE _ _ _ _ .":GOSUB 2000
865 GOSUB 2050
870 GOTO 19
880 CLS
890 FOR I=1 TO 42:READ MW$:NEXT I
900 PRINT "THE GIRL _ _ _ _ THE BALL WITHOUT ASKING.":GOSUB 2000
910 PRINT "I LIKE TO READ A GOOD _ _ _ _ BEFORE BEDTIME.":GOSUB 2000
920 PRINT "THE FISH ATE THE WORM RIGHT OFF THE _ _ _ _ .":GOSUB 2000
930 PRINT "IF WE _ _ _ _ LONG ENOUGH WE COULD FIND ALMOST ANYTHING.":GOSUB 2000
940 PRINT "I'LL BET YOUR GRANDMOTHER IS A GREAT _ _ _ _ .":GOSUB 2000
950 PRINT "WE ALWAYS EAT BREAKFAST IN THE KITCHEN _ _ _ _ .":GOSUB 2000
960 PRINT "IN CHESS, THE HORSE IS ALSO CALLED THE _ _ _ _ .":GOSUB 2000
965 GOSUB 2050
970 GOTO 19
980 CLS
990 FOR I=1 TO 49:READ MW$:NEXT I
1000 PRINT "THE BOY AND GIRL WENT OUT ON THEIR FIRST _ _ _ _ .":GOSUB 2000
1010 PRINT "THE COWS GOT OUT WHEN SOMEONE LEFT THE _ _ _ _ OPEN.":GOSUB 2000
1020 PRINT "I LOST THE _ _ _ _ TO ONE OF MY PAIRS OF SOCKS.":GOSUB 2000
1030 PRINT "MOM GETS UPSET IF I'M _ _ _ _ FOR DINNER.":GOSUB 2000
1040 PRINT "THE OPPOSITE OF LOVE IS _ _ _ _ .":GOSUB 2000
1050 PRINT "AT THE _ _ _ _ WE'RE GOING, WE'LL NEVER GET THERE.":GOSUB 2000
1060 PRINT "SOME SAY IT WAS _ _ _ _ THAT BROUGHT US TOGETHER.":GOSUB 2000
1065 GOSUB 2050
1070 GOTO 19
1080 CLS
1090 FOR I=1 TO 56:READ MW$:NEXT I
1100 PRINT "SOME PEOPLE DO SOME SILLY THINGS ON A _ _ _ _ .":GOSUB 2000
1110 PRINT "THE PLANE _ _ _ _ WAS $150.00.":GOSUB 2000
1120 PRINT "I REALLY _ _ _ _ ABOUT YOU.":GOSUB 2000
1130 PRINT "A FEMALE HORSE IS CALLED A _ _ _ _ .":GOSUB 2000
1140 PRINT "MY FRIEND FOUND A _ _ _ _ OLD COIN.":GOSUB 2000
1150 PRINT "OLD MOTHER HUBBARD HAD _ _ _ _ CUPBOARDS.":GOSUB 2000
1160 PRINT "A RABBIT IS SOMETIMES CALLED A _ _ _ _ .":GOSUB 2000
1165 GOSUB 2050
1170 GOTO 19
1180 CLS
1190 FOR I=1 TO 63:READ MW$:NEXT I
1200 PRINT " _ _ _ _ IS WHAT YOU FEEL WHEN YOU'RE FRIGHTENED.":GOSUB 2000
1210 PRINT "I KNEW SHE WAS CRYING BECAUSE I SAW A _ _ _ _ IN HER EYE.":GOSUB 2000
1220 PRINT "IF YOU GO TO YELLOWSTONE PARK YOU'LL SEE A _ _ _ _ .":GOSUB 2000
1230 PRINT "A _ _ _ _ IS A KIND OF FRUIT.":GOSUB 2000
1240 PRINT "THE OPPOSITE OF FAR IS _ _ _ _ .":GOSUB 2000
1250 PRINT "WHEN I WRITE MY GRANDMOTHER, I START WITH _ _ _ _ GRANDMA.":GOSUB 2000
1260 PRINT "MOST PEOPLE _ _ _ _ WARM CLOTHES IN THE WINTER.":GOSUB 2000
1265 GOSUB 2050
1270 GOTO 19
1280 CLS
1290 FOR I=1 TO 70:READ MW$:NEXT I
1300 PRINT "IT'S A GOOD IDEA TO WASH YOUR _ _ _ _ _ BEFORE YOU EAT.":GOSUB 2000
1310 PRINT "DURING A TRAFFIC JAM PEOPLE HONK THEIR _ _ _ _ _ .":GOSUB 2000
1320 PRINT "ALWAYS _ _ _ _ _ YOUR MOUTH WHEN YOU COUGH.":GOSUB 2000
1330 PRINT "THE BABY WAS SUCKING HIS _ _ _ _ _ .":GOSUB 2000
1340 PRINT "THE OPPOSITE OF DAY IS _ _ _ _ _ .":GOSUB 2000
1350 PRINT "A GAME IS PLAYED FAIRLY IF EVERYONE FOLLOWS THE _ _ _ _ _ .":GOSUB 2000
1360 PRINT "I LIKE TO SING _ _ _ _ _ AROUND A CAMPFIRE.":GOSUB 2000
1365 GOSUB 2050
1370 GOTO 19
1380 CLS
1390 FOR I=1 TO 77:READ MW$:NEXT I
1400 PRINT "MOUNTAINEERS LIKE TO _ _ _ _ _ MOUNTAINS.":GOSUB 2000
1410 PRINT "A _ _ _ _ _ WEARS MAKE-UP AND DOES FUNNY THINGS AT A CIRCUS.":GOSUB 2000
1420 PRINT "THE OPPOSITE OF WHITE IS _ _ _ _ _ .":GOSUB 2000
1430 PRINT "E.T. _ _ _ _ _ HOME.":GOSUB 2000
1440 PRINT "DAD ALWAYS TELLS ME A _ _ _ _ _ BEFORE BEDTIME.":GOSUB 2000
1450 PRINT "IT IS POLITE TO _ _ _ _ _ WHEN A LADY ENTERS THE ROOM.":GOSUB 2000
1460 PRINT "_ _ _ _ _ CHRISTMAS TO ALL.":GOSUB 2000
1465 GOSUB 2050
1470 GOTO 19
1480 CLS
1490 FOR I=1 TO 84:READ MW$:NEXT I
1500 PRINT "THE OPPOSITE OF A FROWN IS A _ _ _ _ _ .":GOSUB 2000
1510 PRINT "OREGON IS A _ _ _ _ _ .":GOSUB 2000
1520 PRINT "DAD HAS A _ _ _ _ _ DRIVER IN HIS WORKSHOP.":GOSUB 2000
1530 PRINT "I REALLY HAD TO PUT ON THE _ _ _ _ _ TO SLOW DOWN.":GOSUB 2000
1540 PRINT "THE FIREMAN SOUNDED HIS _ _ _ _ _ ON HIS WAY TO THE FIRE.":GOSUB 2000
1550 PRINT "WE SAW A LOG _ _ _ _ _ IN THE WOODS.":GOSUB 2000
1560 PRINT "I'M A REAL _ _ _ _ _ BEAVER.":GOSUB 2000
1565 GOSUB 2050
1570 GOTO 19
1580 CLS
1590 FOR I=1 TO 91:READ MW$:NEXT I
1600 PRINT "EVERYONE HAS HEARD OF THE JOLLY GREEN _ _ _ _ _ .":GOSUB 2000
1610 PRINT "IF YOU TURN ON THE RADIO YOU'LL HEAR _ _ _ _ _ .":GOSUB 2000
1620 PRINT "TONY THE _ _ _ _ _ IS ON TELEVISION COMMERCIALS.":GOSUB 2000
1630 PRINT "SIX O'CLOCK IS VERY _ _ _ _ _ IN THE MORNING.":GOSUB 2000
1640 PRINT "I BOUGHT A NEW _ _ _ _ _ BULB FOR MY CAMERA.":GOSUB 2000
1650 PRINT "I'LL TAKE A BIG _ _ _ _ _ OF ICE CREAM, PLEASE!":GOSUB 2000
1660 PRINT "THE OPPOSITE OF ALWAYS IS _ _ _ _ _ .":GOSUB 2000
1665 GOSUB 2050
1670 GOTO 19
1680 CLS
1690 FOR I=1 TO 98:READ MW$:NEXT I
1700 PRINT "I USE A _ _ _ _ _ TO DRAW STRAIGHT LINES.":GOSUB 2000
1710 PRINT "A RAISIN IS ACTUALLY A DRIED _ _ _ _ _ .":GOSUB 2000
1720 PRINT "SOME PRANKS AREN'T VERY _ _ _ _ _ .":GOSUB 2000
1730 PRINT "THE MAN _ _ _ _ _ OUR PIANO.":GOSUB 2000
1740 PRINT "SOME INDIANS STILL _ _ _ _ _ BASKETS.":GOSUB 2000
1750 PRINT "I FILLED MY _ _ _ _ _ WITH LOTS OF FOOD.":GOSUB 2000
1760 PRINT "A LARGE GROUP OF PEOPLE IS CALLED A _ _ _ _ _ .":GOSUB 2000
1765 GOSUB 2050
1770 GOTO 19
1780 CLS
1790 FOR I=1 TO 105:READ MW$:NEXT I
1800 PRINT "A MAJOR ROAD IS CALLED A _ _ _ _ _ _ _ . ":GOSUB 2000
1810 PRINT "THE ARMY HAS PLENTY OF _ _ _ _ _ _ _ _ .":GOSUB 2000
1820 PRINT "THE FALLEN TREE HELPED US CROSS THE _ _ _ _ _ _ .":GOSUB 2000
1830 PRINT "WE WENT TO THE THEATER TO WATCH THE _ _ _ _ _ _ _ . ":GOSUB 2000
1840 PRINT "THE _ _ _ _ _ _ _ _ PERFORMED SOME GREAT TRICKS.":GOSUB 2000
1850 PRINT "I WANT TO _ _ _ _ _ _ AROUND THE WORLD. ":GOSUB 2000
1860 PRINT "PEOPLE WHO WON'T GIVE IN ARE _ _ _ _ _ _ _ _ .":GOSUB 2000
1865 GOSUB 2050
1870 GOTO 19
2000 READ MW$
2010 PRINT:INPUT "WHAT IS THE MISSING WORD ";GU$
2015 IF GU$="?" THEN PRINT MW$:GOTO 2040
2020 IF GU$= MW$ THEN PRINT "THAT'S RIGHT ";NM$:TC=TC+1
2030 IF GU$<>MW$ THEN PRINT "NOT QUITE.....TRY AGAIN !":TW=TW+1:GOTO 2010
2040 PRINT:RETURN
2050 CLS
2060 PRINT TAB(20);"HERE IS HOW YOU DID, ";NM$;"................"
2070 PRINT:PRINT:PRINT
2080 PRINT TAB(20); "YOU WERE CORRECT ";TC;" TIMES "
2090 PRINT:PRINT TAB(20);"YOU WERE INCORRECT ";TW;" TIMES"
2091 PRINT:PRINT:PRINT
2092 IF TC=7 AND TW=0 THEN PRINT TAB(24);"HEY ";NM$
2093 IF TC=7 AND TW=0 THEN PRINT TAB(24);"A PERFECT SCORE !!!"
2100 FOR A=1 TO 2500:NEXT A
2110 RETURN
2120 DATA BAT,CAT,MAT,FAT,HAT,PAT,RAT
2130 DATA TAR,CAR,WAR,BAR,JAR,FAR,PAR
2140 DATA MAN,TAN,CAN,FAN,RAN,PAN,BAN
2150 DATA RAG,TAG,BAG,WAG,GAG,NAG,SAG
2160 DATA DOG,LOG,FOG,JOG,HOG,BOG,COG
2180 DATA CAKE,LAKE,BAKE,RAKE,TAKE,FAKE,WAKE
2190 DATA TOOK,BOOK,HOOK,LOOK,COOK,NOOK,ROOK
2200 DATA DATE,GATE,MATE,LATE,HATE,RATE,FATE
2210 DATA DARE,FARE,CARE,MARE,RARE,BARE,HARE
2220 DATA FEAR,TEAR,BEAR,PEAR,NEAR,DEAR,WEAR
2230 DATA HANDS,HORNS,COVER,THUMB,NIGHT,RULES,SONGS
2240 DATA CLIMB,CLOWN,BLACK,PHONE,STORY,STAND,MERRY
2250 DATA SMILE,STATE,SCREW,BRAKE,SIREN,CABIN,EAGER
2260 DATA GIANT,MUSIC,TIGER,EARLY,FLASH,SCOOP,NEVER
2270 DATA RULER,GRAPE,FUNNY,TUNED,WEAVE,PLATE,CROWD
2280 DATA HIGHWAY,SOLDIERS,STREAM,MATINEE,MAGICIAN,TRAVEL,STUBBORN
2290 RETURN

MODES.BAS

10 CLS
30 PRINT:PRINT
40 PRINT "                                     THE  MODES
50 PRINT
60 PRINT "                                         OF
70 PRINT
80 PRINT "                                     OPERATION
90 PRINT:PRINT:PRINT
100 PRINT "                                       ------
110 PRINT "            ---------------------------- or --------------------------
120 PRINT "                                       ------
130 PRINT:PRINT:PRINT
140 PRINT "                                  A  QUESTION  OF
150 PRINT
160 PRINT "                                        OF
170 PRINT
180 PRINT "                                [RUN]  OR  [RETURN]
190 FOR A=1 TO 2500:NEXT A
200 CLS
210 PRINT "                             THE TWO MODES OF OPERATION
220 PRINT:PRINT
230 PRINT "                                   1.  IMMEDIATE
240 PRINT
250 PRINT "                                   2.  PROGRAMMING
260 PRINT:PRINT:PRINT
270 PRINT "             A computer operates in 'modes'.  A particular mode
280 PRINT "             simply signifies when commands and statements are to
290 PRINT "             be executed.  An easy way to remember the difference is
300 PRINT "             that in IMMEDIATE MODE the commands or statements are
310 PRINT "             executed by pressing the [RETURN] key, whereas in the
320 PRINT "             PROGRAMMING MODE the word RUN must be typed in order for
330 PRINT "             commands or statements (usually several) to be executed
340 PRINT "             or 'run'.
350 PRINT:PRINT:PRINT
360 INPUT "         PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",Z$
370 IF Z$="P" THEN 10
380 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
390 CLS
400 PRINT "                                THE IMMEDIATE MODE
410 PRINT:PRINT
420 PRINT "        This mode can also be thought of as the 'calculator' mode because"
430 PRINT "        you need only type the necessary information followed by a [RETURN]"
440 PRINT "        or in the calculator's case, an '=' sign.
450 PRINT
460 PRINT "        We used the IMMEDIATE MODE in the examples in lesson 1 (PRINT).
470 PRINT "       First, we typed in what we wanted the computer to do (PRINT).
480 PRINT "       Second, we typed in the 'ARGUMENT' (1+1).  Third, we pressed the
490 PRINT "       [RETURN] key to make it all happen.
500 PRINT
510 PRINT "       COMMANDS are used more commonly in the IMMEDIATE mode than are
520 PRINT "       STATEMENTS.  An example is the COMMAND 'RUN'.  We type in in at
530 PRINT "       the IMMEDIATE MODE, followed by [RETURN], to execute or start a program.
540 PRINT
550 PRINT "                       ***   EXAMPLES OF IMMEDIATE MODE   ***
560 PRINT
570 PRINT "        PRINT ''HI THERE ! ''  [RETURN]           PRINT 3+3/2   [RETURN]
580 PRINT:PRINT:PRINT
590 INPUT "         PRESS [RETURN] TO CONTINUE OR [P] PREVIOUS PAGE OR [Q] MAIN BTMENU ",Z$
600 IF Z$="P" THEN GOTO 200
610 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
620 CLS
630 PRINT "                                THE PROGRAMMING MODE
640 PRINT:PRINT:PRINT:PRINT:PRINT
650 PRINT "            Now we're getting to the heart of using BASIC to a much
660 PRINT "            greater potential.  This is where real programming takes
670 PRINT "            place !
680 PRINT
690 PRINT "            Remember, a PROGRAM is a list of instructions in sequential
700 PRINT "            numeric order that the computer can 'read' and hence carry
710 PRINT "            out after the COMMAND [RUN] has been typed and the [RETURN]
720 PRINT "            key pressed.
730 PRINT
740 PRINT "            RUN is typed in at the IMMEDIATE mode which means ....
750 PRINT "            we start the PROGRAM from the IMMEDIATE mode.
760 PRINT:PRINT:PRINT:PRINT:PRINT
770 INPUT "        PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",Z$
780 IF Z$="P" THEN GOTO 390
790 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
800 CLS
810 PRINT
820 PRINT "            So how do we get into the PROGRAMMING mode ?  Simply by
830 PRINT "            prefacing our instructions with a number (herein referred
840 PRINT "            to as a LINE NUMBER).  When we press the [RETURN] key to
850 PRINT "            signal to the computer the end of our instruction line
860 PRINT "            and that we now want it stored in the computer's memory,
870 PRINT "            the computer responds by merely placing the cursor on
880 PRINT "            the next line down.  the computer did not carry out your
890 PRINT "            instructions (after pushing [RETURN]) because it assumed
900 PRINT "            you had more instructions to type in.
910 PRINT
920 PRINT "            Let's look at an example of the PROGRAMMING mode using
930 PRINT "            the PRINT statement.
940 PRINT:PRINT
950 PRINT "                               10 PRINT ''HELLO THERE''"
960 PRINT "                               20 PRINT ''HOW ARE YOU ?''"
970 PRINT "                               30 END
980 PRINT:PRINT:PRINT
990 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1000 IF Z$="P" THEN GOTO 620
1010 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1020 CLS
1030 PRINT "                We'll take another look at the sample PROGRAM...
1040 PRINT
1050 PRINT "            1st thing the computer does.......  10 PRINT ''HELLO THERE''"
1060 PRINT "            2nd thing the computer does.......  20 PRINT ''HOW ARE YOU ?''"
1070 PRINT "            3rd - signals END of program......  30 END
1080 PRINT
1090 PRINT "            Output............................  HELLO THERE
1100 PRINT "                                                HOW ARE YOU ?
1110 PRINT
1120 PRINT "            So you see, the PROGRAMMING mode allows us to type in
1130 PRINT "            multiple instructions in the order in which we want them
1140 PRINT "            to be executed (acted upon).
1150 PRINT
1160 PRINT "            This particular lesson you're using was written in the
1170 PRINT "            PROGRAMMING mode and has about 150 lines of instructions,
1180 PRINT "            all of which are prefaced with LINE NUMBERS.
1190 PRINT:PRINT:PRINT:PRINT:PRINT
1200 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1210 IF Z$="P" THEN GOTO 800
1220 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1230 CLS
1240 PRINT "            You may be wondering why the numbers 10, 20, and 30 were
1250 PRINT "            used instead of 1, 2, & 3.  Often times we need to add a
1260 PRINT "            line or two to a program, which is one way to EDIT or change"
1270 PRINT "            the program after it has been entered.  By numbering in
1280 PRINT "            increments of 10 we can insert up to 9 additional lines
1290 PRINT "            of program between each original increment.
1300 PRINT
1310 PRINT "            Let's use the same sample program as an example of simple
1320 PRINT "            EDITing.
1330 PRINT
1340 PRINT "                             10 PRINT ''HELLO THERE''"
1350 PRINT "                             20 PRINT ''HOW ARE YOU ?''"
1360 PRINT "                             30 END
1370 PRINT
1380 PRINT "             We'll add a line 15....
1390 PRINT
1400 PRINT "                             15 PRINT ''I FEEL GREAT !''"
1410 PRINT:PRINT:PRINT:PRINT
1420 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1430 IF Z$="P" THEN GOTO 1020
1440 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1450 CLS
1460 PRINT "             To see our new list of program lines, we type LIST and
1470 PRINT "             here's what we get.....
1480 PRINT:PRINT
1490 PRINT "                               10 PRINT ''HELLO THERE''"
1500 PRINT "                               15 PRINT ''I FEEL GREAT !''"
1510 PRINT "                               20 PRINT ''HOW ARE YOU ?''"
1520 PRINT "                               30 END
1530 PRINT
1540 PRINT "            The computer automatically inserted the new line into the
1550 PRINT "            proper seqential order.  This time when we type RUN and
1560 PRINT "            press RETURN we get.....
1570 PRINT
1580 PRINT "                                  HELLO THERE
1590 PRINT "                                  I FEEL GREAT !
1600 PRINT "                                  HOW ARE YOU ?
1610 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
1620 INPUT "          PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1630 IF Z$="P" THEN GOTO 1230
1640 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1650 CLS
1660 PRINT "   IN SUMMARY...........
1670 PRINT
1680 PRINT "             1.  Immediate mode can work like a calculator
1690 PRINT "             2.  Immediate mode commands
1700 PRINT "               a. RUN - starts the program, runs the program
1710 PRINT "               b. LIST - displays program listing
1720 PRINT "               c. NEW - clears memory, erases program
1730 PRINT "             3.  Immediate mode execution - press RETURN
1740 PRINT "             4.  Program mode execution - type RUN, then press RETURN
1750 PRINT "             5.  In program mode, line numbers preface statements
1760 PRINT "             6.  Program mode allows multiple statements to be run
1770 PRINT "                 (executed) in sequential order
1780 PRINT
1790 PRINT "------------------------------------------------------------------------------"
1800 PRINT "   FOR PRACTICE.........
1810 PRINT
1820 PRINT "             1.  Create your own 3 or 4 line program using PRINT
1830 PRINT "             2.  Use increments of 10 for line numbers
1840 PRINT "             3.  EDIT by adding new lines
1850 PRINT:PRINT
1860 INPUT "            PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ",Z$
1870 IF Z$="P" THEN GOTO 1450
1880 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1890 CLS
1900 PRINT "* Remember to press [RETURN] after each line to signal computer that you
1910 PRINT "are ready to move on.
1920 PRINT "* Remember to type RUN and press [RETURN] to run program.
1930 PRINT "* LIST will display the program's line numbers and instructions.
1940 PRINT "* NEW will clear the memory and erase previous programs from computer's memory.
1950 PRINT
1960 PRINT "To get back to lessons, type LOAD''B:BTMENU.BAS'',R
1970 PRINT "------------------------------------------------------------------------------"
1980 PRINT "                       To begin, type NEW and press [RETURN]

MPG.BAS

1 CLS
10 DIM TRCK(2,104)
20 ' LOCATE C,R:PRINT CHR$(27)+CHR$(61)+CHR$(R+32)+CHR$(C+32)
30 :REM█ RANGE 1
40 SX=56
50 FOR J=1 TO 31:TRCK(1,J)= SX:SX=SX-1:TRCK(2,J)= 2:NEXT J
55 :REM█ RANGE 2
60 FOR J=32 TO 49:READ TRCK(1,J):NEXT J
70 DATA 24,23,21,20,19,18,17,16,14,14,14,14,16,17,18,19,20,21
90 FOR J=32 TO 49:READ TRCK(2,J):NEXT J
100 DATA 3,3,3,3,4,4,5,6,7,8,9,10,11,12,13,13,14,14
110 :REM█ RANGE 3
120 SX=23:FOR J=50 TO 85:TRCK(1,J)= SX:SX=SX+1:NEXT J
130 TRCK(2,50)= 14:TRCK(2,51)= 14:FOR J=52 TO 83:TRCK(2,J)= 15:NEXT J
140 TRCK(2,84)= 14:TRCK(2,85)= 14
150 :REM█ RANGE 4
160 FOR J=86 TO 104:READ TRCK(1,J):NEXT J
170 DATA 61,62,63,64,65,66,67,67,67,67,66,65,64,63,62,61,59,57,56
180 FOR J=86 TO 104:READ TRCK(2,J):NEXT J
190 DATA 14,14,13,13,12,11,10,9,8,7,6,5,4,4,3,3,3,3,2
200 :REM█ PROGRAM MPG
210 CL$= CHR$(26)
220 CLS
230 FOR A=10 TO 30
250 FOR D=1 TO 40:NEXT D
260 NEXT A
270 CLS
280 FOR I=1 TO 30:PRINT "   o==o*";:NEXT I
290 PRINT:PRINT:PRINT
300 PRINT "            ===           ===       =============      ============"
310 PRINT "            == =         = ==       ==         ==      ==        =="
320 PRINT "            ==  =       =  ==       ==         ==      ==        =="
330 PRINT "            ==   =     =   ==       ==         ==      =="
340 PRINT "            ==    =   =    ==       =============      =="
350 PRINT "            ==     = =     ==       ==                 ==      ===="
360 PRINT "            ==      =      ==       ==                 ==        =="
370 PRINT "            ==             ==       ==                 ==        =="
380 PRINT "            ==             ==       ==                 ============"
390 PRINT:PRINT:PRINT
400 PRINT "                           by      Mark A. Swanson
410 FOR I=1 TO 1000:NEXT I
420 CLS
430 PRINT "                           WELCOME TO THE WINDIANAPOLIS 20 !"
440 CN=0
450 PRINT:PRINT:PRINT:PRINT
460 PRINT "      THIS IS A RACE BETWEEN YOU AND YOUR OPPONENT TO SEE WHO WILL GET "
470 PRINT "      THE FARTHEST ON A TANK OF GAS.  THE COURSE IS 20 MILES."
480 PRINT:PRINT
490 PRINT "      THE ONLY PROBLEM IS THAT HIGH WINDS, CHARACTERISTIC OF WINDIANAPOLIS,"
500 PRINT "      MAY AFFECT THE PERFORMANCE OF YOUR CAR."
510 PRINT:PRINT
520 PRINT "      THE CAR THAT GOES THE FARTHEST WINS."
530 PRINT:PRINT:PRINT
540 PRINT "                                 G O O D   L U C K !!!"
550 PRINT:PRINT:PRINT
560 TI=0:TJ=0:TWI=0:TWJ=0:TTI=0:TTJ=0:BI=0:BJ=0:JG=0:IG=0:SBI=0:SBJ=0
570 INPUT "                             PRESS  [RETURN] TO CONTINUE ",T$
580 CLS
590 PRINT "                          PLEASE TYPE THE NAMES OF THE DRIVERS"
600 PRINT:PRINT:PRINT
610 TJ=0:TI=0
620 BI=0:SBI=0:SMI=0:BJ=0:SBJ=0:SMJ=0
630 INPUT "CAR 1   NAME: ";A$
640 INPUT "CAR 2   NAME: ";B$
670 X$=RIGHT$(TIME$,2)
680 X=VAL(X$)
690 RANDOMIZE X
730 CLS
735 RACE=RACE+1
740 PRINT "        PRESS    1 (BETTING INSTRUCTIONS)   2 (TO BET)   3 (NO BET) ":F$=INPUT$(1)
750 IF F$="1" THEN GOTO 1780
760 IF F$="2" THEN GOTO 1970
770 IF F$="3" THEN BI=0:BJ=0:SBI=0:SBJ=0:IG=0:JG=0:GOTO 780
780 CLS
790 FOR I=1 TO 500:NEXT I
800 PRINT "        #####   #####       #        ####    #      #"
810 PRINT "        #   #   #          # #       #   #    #    #"
820 PRINT "        ####    #####     #   #      #    #    #  #"
830 PRINT "        #   #   #        #######     #   #      ##"
840 PRINT "        #    #  #####   #       #    ####       ##   ## ## ## ##"
850 FOR I=1 TO 500 :NEXT I
860 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
870 PRINT "                   #########     #########      ##########"
880 PRINT "                   #             #                   #"
890 PRINT "                   #             #                   #"
900 PRINT "                    ########     #########           #"
910 PRINT "                           #     #                   #"
920 PRINT "                           #     #                   #"
930 PRINT "                   ########      #########           #    ## ## ##"
940 FOR I=1 TO 500:NEXT I
950 CLS
960 PRINT:PRINT:PRINT:PRINT
970 PRINT "                    ##################          #################"
980 PRINT "                   ##                ##        ##               ##"
990 PRINT "                   ##                ##        ##               ##"
1000 PRINT "                   ##                          ##               ##"
1010 PRINT "                   ##                          ##               ##"
1020 PRINT "                   ##                          ##               ##"
1030 PRINT "                   ##                          ##               ##"
1040 PRINT "                   ##         #########        ##               ##"
1050 PRINT "                   ##                ##        ##               ##"
1060 PRINT "                   ##                ##        ##               ##"
1070 PRINT "                   ##                ##        ##               ##"
1080 PRINT "                    ##################          #################"
1090 CLS
1100 ' LOCATE 1,1:FOR A=1 TO 30:PRINT CHR$(177);:NEXT A:PRINT "WINDYANAPOLIS 20":LOCATE 1,46:FOR A=1 TO 30:PRINT CHR$(177);:NEXT A:PRINT:PRINT:PRINT
1101 PRINT:PRINT:PRINT
1110 PRINT"                    ««««««««««««««««««««««««««««««««««««««««
1120 PRINT"                   *                                        *
1130 PRINT"                  *                                          * "
1140 PRINT"                 *                                            *
1150 PRINT"                *                                              *
1160 PRINT"                *                                              *
1170 PRINT"                 *                                            *  "
1180 PRINT"                  *                                          *
1190 PRINT"                   *                                        *"
1200 PRINT"                    »»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»
1210 CLOSE X:GS1=INT(80*RND(1))+1:CLOSE X+1:GS2=INT(80*RND(1))+1
1220 CLOSE X+2:NUM=INT(100*RND(1))+1
1225 IF GS1<20 THEN GS1=20
1226 IF GS2<20 THEN GS2=20
1230 IF NUM<51 THEN DL1=2:DL2=3
1240 IF NUM>50 THEN DL2=2:DL1=3
1250 IF GS1>GS2 THEN LPS=GS1 ELSE LPS=GS2
1260 X1=TRCK(1,15):Y1=TRCK(2,15):X2=X1:Y2=Y1-1
1270 PT1=15:PT2=15:I=0:J=0:ONI=0:ONJ=0
1285 LOCATE 10,27:PRINT A$:LOCATE 10,50:PRINT B$
1286 LOCATE 12,36:PRINT "RACE #";RACE
1290 FOR N=1 TO LPS
1295 LOCATE 11,27:PRINT STR$(ONI):LOCATE 11,50:PRINT STR$(ONJ)
1300 IF N>GS1 THEN DL1=0
1310 IF N>GS2 THEN DL2=0
1320 LOCATE Y1,X1:PRINT LEFT$(A$,1):LOCATE Y2,X2:PRINT LEFT$(B$,1)
1330 FOR T=1 TO 40:NEXT T
1340 LOCATE Y1,X1:PRINT " ":LOCATE Y2,X2:PRINT " "
1350 PT1=PT1+DL1:PT2=PT2+DL2
1360 IF PT1>103 THEN PT1=1
1370 IF PT2>103 THEN PT2=1
1380 X1=TRCK(1,PT1):Y1=TRCK(2,PT1):X2=TRCK(1,PT2):Y2=TRCK(2,PT2)
1385 I=I+DL1:J=J+DL2
1386 ONI=INT(I/10):ONJ=INT(J/10)
1390 NEXT N
1400 LOCATE Y1,X1 :PRINT LEFT$(A$,1):LOCATE Y2,X2:PRINT LEFT$(B$,1)
1420 FOR T=1 TO 400:NEXT T
1425 I=INT(I/10):J=INT(J/10)
1431 PRINT:PRINT
1432 LOCATE 16,10:PRINT "▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒  MPG SCOREBOARD  ▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
1440 PRINT
1450 IF I>J THEN DI=I-J: LOCATE 6,28:PRINT A$;" WINS BY ";DI;" MILES !":TI=TI+DI
1460 IF J>I THEN DJ=J-I:LOCATE 6,28 :PRINT B$;" WINS BY ";DJ;" MILES !":TJ=TJ+DJ
1470 IF I=J THEN LOCATE 6,36:PRINT "ITS A TIE !"
1480 TBI=BI:TBJ=BJ
1490 IF J>I THEN TBJ=BJ ELSE TBJ=0-BJ
1500 IF I>J THEN TBI=BI ELSE TBI=0-BI
1510 IF J=I THEN BJ=0 AND BI=0
1520 IF JG=DJ OR JG=DI THEN STJ=10*SBJ ELSE STJ=-SBJ*0.1
1530 IF IG=DI OR IG=DJ THEN STI=10*SBI ELSE STI=-SBI*0.1
1540 TTI%=STI+TBI
1550 TTJ%=STJ+TBJ
1560 TWI%=TWI%+TTI%:TWJ%=TWJ%+TTJ%
1580 PRINT
1590 LOCATE 18,10:PRINT A$;" HAS ";TI;" POINTS
1600 LOCATE 18,49:PRINT B$;" HAS ";TJ;" POINTS";
1610 IF TI>2*TJ THEN LOCATE 8,30:PRINT "HEY ";B$;"...GET GOING !"
1620 IF TJ>2*TI THEN LOCATE 8,30:PRINT "BETTER HUSTLE ";A$;" !
1640 LOCATE 20,1:PRINT A$;TAB(10);"BET TO WIN $:";BI:LOCATE 20,29:PRINT"SPREAD $:";SBI:LOCATE 20,45:PRINT"SPREAD GUESS:";IG:LOCATE 20,63:PRINT"| TOTAL  $";TWI%
1650 LOCATE 21,1:PRINT B$;TAB(10);"BET TO WIN $:";BJ:LOCATE 21,29:PRINT"SPREAD $:";SBJ:LOCATE 21,45:PRINT"SPREAD GUESS:";JG:LOCATE 21,63:PRINT"| TOTAL  $";TWJ%
1660 PRINT
1670 LOCATE 23,5:PRINT "PRESS   [1] (ANOTHER RACE)   [2] (NEW RACE/DRIVERS)  [3] (QUIT) ";
1680 X$=INPUT$(1)
1690 IF X$="1" THEN GOTO 730
1700 IF X$="2" THEN RACE=0:GOTO 420
1710 CLS
1720 FOR A=10 TO 30
1730 LOCATE 6,A:PRINT" GOOD BYE FROM WINDIANAPOLIS---- o===o*"
1740 FOR D=1 TO 40:NEXT D
1760 NEXT A
1765 CLS
1770 LOAD"B:MENU.BAS",R
1780 CLS
1790 PRINT "                                  BETTING INSTRUCTIONS"
1800 PRINT:PRINT:PRINT
1810 PRINT "YOU MAY BET ON YOUR CAR TWO WAYS:"
1820 PRINT:PRINT"1)   BET THAT YOUR CAR WILL WIN"
1830 PRINT"2)   BET THE MILE DIFFERENCE (SPREAD) BETWEEN CARS"
1840 PRINT:PRINT:PRINT:
1850 PRINT "* BETTING ON YOUR CAR TO WIN:"
1860 PRINT "PLACE YOUR BET WHEN PROMPTED BEFORE EACH RACE."
1870 PRINT:PRINT
1880 PRINT "* BETTING ON THE MILES SPREAD BETWEEN CARS:"
1890 PRINT "WHEN PROMPTED, PLACE YOUR BET WITH THE DOLLAR AMOUNT AND MILES SPREAD."
1900 PRINT "MILES SPREAD PAYOFF IS 10 X SPREAD BET.  LOSS IS -10% OF SPREAD BET."
1910 PRINT
1930 PRINT "                             MAXIMUM POINT SPREAD IS 19"
1931 PRINT
1940 PRINT "                            WOULD YOU LIKE TO BET ? (Y/N)":C$=INPUT$(1)
1950 IF C$="N" THEN GOTO 730
1960 CLS
1970 CLS
1980 PRINT "                                  BETTING WINDOW"
1990 PRINT:PRINT:PRINT:PRINT:PRINT
2000 PRINT A$
2010 INPUT "TO WIN: $1 TO $1000  ";BI
2020 PRINT
2030 INPUT "BY # MILES:  $ AMOUNT  ";SBI
2040 INPUT "             # OF MILES  ";IG
2050 PRINT:PRINT
2060 PRINT B$
2070 INPUT "TO WIN: $1 TO $1000  ";BJ
2080 PRINT
2090 INPUT "BY # MILES:  $ AMOUNT  ";SBJ
2100 INPUT "             # OF MILES  ";JG
2110 GOTO 780

PRINT.BAS

20 CLS
30 PRINT "                              GETTING STARTED WITH
40 PRINT "                                     PRINT
50 PRINT:PRINT
60 PRINT "           PRINT is the most common of the basic statements and we
70 PRINT "           cover it now because we'll use it often in other examples.
80 PRINT
90 PRINT "           PRINT is used to make the computer display information on
100 PRINT "           the monitor (tv screen).  We are constantly being asked to
110 PRINT "           PRINT our name on applications, bills, etc. and we know
120 PRINT "           that PRINT means to write or 'display' our name.  The
130 PRINT "           computer does the same thing with two differences.
140 PRINT "           1) We have to tell the computer exactly what to print.
150 PRINT "           2) The computer PRINTs on a screen, not paper.
160 PRINT
170 PRINT "           We'll look at how PRINT works with an easy example.
180 PRINT:PRINT:PRINT
190 PRINT "                           PRESS [RETURN] TO CONTINUE "
200 INPUT "                              OR [Q] FOR MAIN BTMENU ",A$
210 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
220 CLS
230 PRINT "           To illustrate PRINT, lets make the computer write (display)
240 PRINT "           a name on the monitor.  Remember - to make the computer
250 PRINT "           PRINT, we have to tell it exactly what to PRINT.
260 PRINT:PRINT
270 PRINT "                      The format for PRINT is as follows...
280 PRINT:PRINT
290 PRINT "                         PRINT ''MY NAME IS JOHN SMITH''
300 PRINT "                               ^                      ^
310 PRINT "                (NOTE: use quotations instead of apostrophies)
320 PRINT:PRINT:PRINT
330 PRINT "           We are essentially asking the computer to 'quote' us.
340 PRINT "           That is why we must use quotations around the part called
350 PRINT "           the ARGUMENT.  Remember, PRINT is called the STATEMENT.
360 PRINT
370 PRINT "           When we want the computer to actually PRINT the ARGUMENT,
380 PRINT "           the RETURN key must be pushed (unless we are in the
390 PRINT "           programming mode - to be discussed later).
400 PRINT
410 INPUT "       PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",A$
420 IF A$="P" THEN GOTO 10
430 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
440 CLS
450 PRINT "           Here's what will happen using the previous example...
460 PRINT:PRINT:PRINT:PRINT
470 PRINT "                       PRINT ''MY NAME IS JOHN SMITH'' [RETURN]
480 PRINT "                       MY NAME IS JOHN SMITH
490 PRINT:PRINT:PRINT:PRINT
500 PRINT "           A breakdown of the process is...
510 PRINT
520 PRINT "           1)  Type - PRINT ''MY NAME IS JOHN SMITH''
530 PRINT "           2)  Press the RETURN key
540 PRINT "           3)  The computer displays - MY NAME IS JOHN SMITH
550 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
560 INPUT "       PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",A$
570 IF A$="P" THEN GOTO 220
580 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
590 CLS
600 PRINT "          We just used PRINT to print a name.  Names are made with
610 PRINT "          letters, of course. And, because we used letters we had
620 PRINT "          to make the computer print those exact letters in the
630 PRINT "          exact order we typed them in.  So really, the computer
640 PRINT "          was copying us !
650 PRINT
660 PRINT "          What if we wanted to have the computer PRINT the value of
670 PRINT "          something, like a math equation.  We would be turning our
680 PRINT "          computer into a very expensive calculator.  Well, now
690 PRINT "          we're using numbers and we don't want the computer to just
700 PRINT "          copy what we type.  We want answers !  We want the VALUE
710 PRINT "          of what we typed in.  So..... we drop the QUOTATIONS.
720 PRINT
730 PRINT "          Let's look at an example..............
740 PRINT:PRINT
750 PRINT "                             PRINT 1+3     [RETURN]
760 PRINT "                             4
770 PRINT
780 PRINT "          We simply told the the computer what to do and it did it.
790 PRINT "          We said, 'PRINT the value of 1 + 3' and the computer
800 PRINT "          printed 4.  Note that we don't even need an 'equal' sign.
810 PRINT
820 INPUT "       PRESS [RETURN] TO CONTINUE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",Z$
830 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
840 IF Z$="P" THEN GOTO 440
850 CLS
860 PRINT "        Ok, just for the fun of it see if you can guess the output of
870 PRINT "        the following program......
880 PRINT:PRINT
890 PRINT "                              PRINT ''3*2+14''
900 PRINT:PRINT
910 INPUT "                              ENTER YOUR ANSWER ";X$
920 IF X$="48" THEN PRINT "Nope, you mixed up the order of operations.  Anyway, there's another problem. Try again.":GOTO 910
930 IF X$="20" THEN PRINT "Well, you have the math correct but there's another problem.":GOTO 910
940 IF X$="3*2+14" THEN PRINT "That's right ! You remembered that quotations force a verbatim response." ELSE PRINT "The quotations mean that the response will be PRINTed verbatim.":GOTO 910
950 PRINT:PRINT:PRINT
960 INPUT "       PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
970 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
980 IF Z$="P" THEN GOTO 590
990 PRINT:PRINT
1000 CLS
1010 PRINT "                IN SUMMARY......................
1020 PRINT:PRINT:PRINT
1030 PRINT "     1)  PRINT is a STATEMENT used to display information on the monitor
1040 PRINT
1050 PRINT "     2)  You must tell the computer exactly what to PRINT
1060 PRINT
1070 PRINT "     3)  To PRINT something verbatim, quotations must be used
1080 PRINT
1090 PRINT "     4)  The RETURN key must be pushed to execute the STATEMENT (immediate mode)
1100 PRINT
1110 PRINT "-------------------------------------------------------------------------------"
1120 PRINT "                                FOR PRACTICE
1130 PRINT:PRINT
1140 PRINT "     1.  Experiment by PRINTing names, letters, characters with varying
1150 PRINT "         spaces.  How many characters will fit on a line ?
1160 PRINT "     2.  Try some math equations. (+ is add, - is subtract, * is multiply,
1170 PRINT "         and / is divide)
1180 PRINT:PRINT
1190 INPUT "PRESS [Z] TO CLEAR SCREEN FOR PRACTICE or [P] PREVIOUS PAGE or [Q] MAIN BTMENU ",A$
1200 IF A$="P" THEN GOTO 850
1210 IF A$="Q" THEN LOAD"B:BTMENU.BAS",R
1220 CLS
1230 PRINT "To get back to lessons type -   LOAD''B:BTMENU.BAS'',R
1240 PRINT "                                    ^             ^
1250 PRINT "                         use quotations instead of apostrophies
1260 PRINT
1270 PRINT " Examples of PRINT:
1280 PRINT "                               PRINT ''BASIC IS FUN !''   [RETURN]
1290 PRINT "                               BASIC IS FUN !
1300 PRINT
1310 PRINT "                               PRINT 45*2+10-5          [RETURN]
1320 PRINT "                               95
1330 PRINT
1340 PRINT"-----------------------------------------------------------------------------"
1350 NEW

PRINTING.BAS

10 CLS
20 PRINT "WELCOME TO PRINTING FUN !
30 PRINT
40 PRINT "      THIS IS A MINI WORD PROCESSOR THAT WILL LET YOU TYPE LETTERS
50 PRINT "      OR NOTES OR ANYTHING YOU WANT !
60 PRINT
70 FOR A=1 TO 79:PRINT CHR$(177);:NEXT A
80 PRINT:PRINT
90 PRINT "      TO PRINT ON THE SCREEN ONLY > SIMPLY TYPE AWAY
100 PRINT
110 PRINT "      TO PRINT ON YOUR PRINTER ONE LINE AT A TIME > PRESS [CTRL]-[PRTSC]
120 PRINT "      KEYS AT THE SAME TIME
130 PRINT
140 PRINT "      TO PRINT EVERYTHING ON THE SCREEN > PRESS [SHFT]-[PRTSC] AT THE SAME
150 PRINT
151 FOR A=1 TO 79:PRINT CHR$(177);:NEXT A
152 PRINT:PRINT
160 PRINT "       USE THE BACKSPACE KEY TO ERASE WHAT YOU ALREADY TYPED ON THE LINE
170 PRINT
180 PRINT "       USE THE SPACE BAR TO MAKE BLANK SPACES
190 PRINT
193 PRINT "       TO QUIT > PRESS  [@]  (PRESS [SHFT]-[2] KEYS TOGETHER).
194 PRINT "       YOU MUST BE AT THE BEGINNING OF THE LINE TO QUIT.
195 PRINT
210 INPUT "              PLEASE TELL ME YOUR NAME, THEN PRESS [RETURN]  ",NM$
220 CLS
230 LOCATE 23,1:PRINT "TYPED BY ";NM$;:LOCATE 23,25:PRINT "LINE#";ROW;"  SPACE#";1 :LOCATE 23,69:PRINT DATE$
240 FOR ROW=1 TO 20
250 FOR LEFTMARGIN=1 TO 20:LOCATE LEFTMARGIN,1:PRINT CHR$(8):NEXT LEFTMARGIN
260 FOR RIGHTMARGIN=1 TO 20:LOCATE RIGHTMARGIN,80:PRINT CHR$(8):NEXT RIGHTMARGIN
270 LOCATE ROW,2:PRINT STRING$(78," ")
280 LOCATE ROW+1,2:FOR LINES=3 TO 79:PRINT CHR$(22);:NEXT LINES:LOCATE 23,46:PRINT "LINES LEFT =";20-ROW
290 FOR COL=2 TO 79
300 LOCATE ROW,COL:PRINT CHR$(95);" "
310 LOCATE 23,1:PRINT "TYPED BY ";NM$;:LOCATE 23,25:PRINT "LINE#";ROW;"  SPACE#";COL-1:LOCATE 23,69:PRINT DATE$
320 K$=INPUT$(1)
321 IF COL=2 AND K$="@" THEN CLS:INPUT "QUIT or START OVER (Q or S) ";E$:IF E$="S" THEN GOTO 195 ELSE LOAD"B:MENU.BAS",R
330 IF K$=CHR$(8) THEN LOCATE ROW,COL-1:IF COL<3 THEN COL=2 ELSE COL=COL-2 :PRINT" "
340 IF K$=CHR$(13) THEN LOCATE ROW,COL:PRINT " "
350 IF K$=CHR$(13) THEN LOCATE ROW+1,1: PRINT STRING$(79," "):COL=79:GOTO 380
360 LOCATE ROW,COL:IF K$<>CHR$(8) THEN PRINT K$
370 NEXT COL
380 NEXT ROW
390 LOCATE 22,22:INPUT "▒▒▒▒▒▒ PRESS [RETURN] TO START OVER ▒▒▒▒▒▒  ",STARTOVER
400 GOTO 220

READDATA.BAS

10 REM  MARK A. SWANSON   20:53:20   02-24-85
20 CLS
30 FOR A=1 TO 36
40 PRINT "  READ/DATA\/\/READ\DATA  ";
50 NEXT A
60 PRINT "-------------------------------------------------------------------------------"
70 PRINT:PRINT
80 PRINT "                                   READ / DATA
90 PRINT
100 PRINT "                            THE COMPUTER'S LIBRARIAN
110 FOR A=1 TO 2000:NEXT A
120 CLS
130 PRINT "           READ/DATA is a STATEMENT that acts like a librarian.  We use
140 PRINT "           it to store alot of DATA on one or more lines in the program
150 PRINT "           and then READ that DATA individually or in groups.  So actually
160 PRINT "           we have two STATEMENTs - each on their own line or lines.
170 PRINT
180 PRINT "           Here is what READ/DATA might look like in a program.....
190 PRINT
200 PRINT "                                10 READ A
210 PRINT "                                20 PRINT A
220 PRINT "                                30 DATA 12
230 PRINT
240 PRINT "           The output would be >  12
250 PRINT
260 PRINT "           Line 10 instructs the computer to READ and store the contents
270 PRINT "           of the DATA in line 30 to the VARIABLE 'A'.  Line 20 holds
280 PRINT "           the STATEMENT that PRINTs the DATA that was stored to the
290 PRINT "           VARIABLE 'A'.
300 PRINT:PRINT:PRINT:PRINT
310 INPUT "                PRESS [RETURN] TO CONTINUE  OR  [Q] MAIN BTMENU ";Z$
320 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
330 CLS
340 PRINT "           Obviously, it would have been easier to use LET to store the
350 PRINT "           number 12 (LET A=12).  READ/DATA, therefore, is used more
360 PRINT "           frequently with larger amounts of data that is to be stored
370 PRINT "           to a single or multiple VARIABLEs.  Let's see how READ/DATA
380 PRINT "           would work for a large group of DATA with a single VARIABLE.....
390 PRINT
400 PRINT "                   10 FOR A=1 TO 10
410 PRINT "                   20 READ T$
420 PRINT "                   30 PRINT T$,
430 PRINT "                   40 NEXT A
440 PRINT "                   50 DATA JOHN,POLLY,GEORGE,RAY,BILL,SUE,VAL,JIM,LEO,GREG
450 PRINT
460 INPUT "           Ok, type 'RUN' and press [RETURN] to make it work.... ",Z$
470 PRINT
480 IF Z$<>"RUN" THEN PRINT "TRY AGAIN.....":GOTO 460
490 RESTORE
500 FOR A=1 TO 10
510 READ T$
520 PRINT T$,
530 NEXT A
540 DATA JOHN,POLLY,GEORGE,RAY,BILL,SUE,VAL,JIM,LEO,GREG
550 FOR A=1 TO 500:NEXT A
560 PRINT
570 PRINT "           Since we have only one VARIABLE and 10 'pieces' of DATA,
580 PRINT "           we need to enclose READ T$ and PRINT T$ in a FOR/NEXT loop.
590 PRINT "           We had 10 pieces of DATA so we needed a FOR/NEXT count to 10.
600 PRINT:PRINT
610 INPUT "        PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
620 IF Z$="P" THEN GOTO 120
630 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
640 CLS
650 PRINT "        Before we look at the other variations of READ/DATA, let's
660 PRINT "        establish some rules by which to follow when using READ/DATA
670 PRINT "        in a program.....
680 PRINT:PRINT
690 PRINT "        1.  READ must be located before any other use of the corresponding
700 PRINT "            VARIABLE is initiated.
710 PRINT
720 PRINT "        2.  DATA may be located anywhere in the program.
730 PRINT
740 PRINT "        3.  The number of DATA pieces READ is determined by the number of
750 PRINT "            VARIABLEs following the READ STATEMENT (this will be covered
760 PRINT "            shortly).
770 PRINT
780 PRINT "        4.  If the DATA is to be READ more than once, RESTORE must be
790 PRINT "            used to reset the VARIABLE back to 0 before each pass.
800 PRINT:PRINT:PRINT:PRINT:PRINT
810 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
820 IF Z$="P" THEN GOTO 330
830 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
840 CLS
850 PRINT "         Here are the common ways READ/DATA may be used (with output).
860 PRINT
870 PRINT "                           10 READ A,B,C
880 PRINT "                           20 PRINT A,B,C
890 PRINT "                           30 DATA 24,16,89
900 PRINT "               output----> 24          16          89
910 PRINT
920 PRINT "                           10 FOR A=1 TO 3
930 PRINT "                           20 READ A$,B$
940 PRINT "                           30 PRINT A$,B$
950 PRINT "                           40 NEXT A
960 PRINT "                           50 DATA CAR,ROAD,BIRD,AIR,TRAIN,TRACK
970 PRINT "               output----> CAR         ROAD
980 PRINT "                           BIRD        AIR
990 PRINT "                           TRAIN       TRACK
1000 PRINT
1010 PRINT "                           10 READ A$,B
1020 PRINT "                           20 PRINT A$;'' ON '';B;'' DOLLARS IS "
1030 PRINT "                           30 PRINT (B+25)*.10
1040 PRINT "                           40 DATA INCOME TAX,100
1050 PRINT "               output----> INCOME TAX ON 100 DOLLARS IS
1060 PRINT "                           12.50
1070 PRINT
1080 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1090 IF Z$="P" THEN GOTO 640
1100 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1110 CLS
1120 PRINT "        If you didn't take a good look at the previous examples, go
1130 PRINT "        back now and analyze the programs so you can predict what each
1140 PRINT "        program will do.
1150 PRINT
1160 PRINT "        Below is an example using RESTORE with READ/DATA.  RESTORE is
1170 PRINT "        used to clear the READ storage of DATA so that the DATA can be
1180 PRINT "        stored and used again.  If another pass is attempted to READ
1190 PRINT "        the DATA more than once (without RESTORE), you will get the 'OUT
1200 PRINT "        OF DATA' message.  This, by the way, will also happen if you have
1210 PRINT "        more READ variables than DATA pieces.  The computer simply runs
1220 PRINT "        out of data.
1230 PRINT
1240 PRINT "                            10 RESTORE
1250 PRINT "                            20 READ A
1260 PRINT "                            30 PRINT A;
1270 PRINT "                            40 GOTO 10
1280 PRINT "                            50 DATA 1,2,3,4,5
1290 PRINT "                output----> 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 .....
1300 PRINT
1310 PRINT "        The RESTORE allows the DATA to be PRINTed over and over via GOTO 10
1320 PRINT "        in line 40.
1330 PRINT:PRINT
1340 INPUT "         PRESS [RETURN] TO CONTINUE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1350 IF Z$="P" THEN GOTO 840
1360 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1370 CLS
1380 PRINT "IN SUMMARY................
1390 PRINT
1400 PRINT "       1.  READ/DATA allows large amounts of DATA to be stored and utilized.":PRINT
1410 PRINT "       2.  READ must be located on a line before the the associated PRINT
1420 PRINT "           statement or other statements which use the DATA are encountered.":PRINT
1430 PRINT "       3.  RESTORE must be used if the DATA is to be READ more than once.
1440 PRINT
1450 PRINT "------------------------------------------------------------------------------"
1460 PRINT "FOR PRACTICE.............
1470 PRINT
1480 PRINT "       1.  Try the sample programs in the workbook.":PRINT
1490 PRINT "       2.  Once you have RUN a READ/DATA program a couple of times,
1500 PRINT "           change the DATA or add more and adjust the READ statement
1510 PRINT "           to accomodate the changes.":PRINT
1520 PRINT "       3.  Create a program using as many statements previously learned.":PRINT
1530 PRINT:PRINT
1540 INPUT "         PRESS [Z] TO PRACTICE  [P] PREVIOUS PAGE  [Q] MAIN BTMENU ";Z$
1550 IF Z$="P" THEN GOTO 1110
1560 IF Z$="Q" THEN LOAD"B:BTMENU.BAS",R
1570 CLS
1580 PRINT "      To get back to lessons, type LOAD''B:BTMENU.BAS'',R AND PRESS [RETURN]
1590 PRINT "                                       ^             ^"
1600 PRINT "           Remember to use quotations instead of double apostrophies
1610 PRINT
1620 PRINT "                 To begin practice, type NEW and press [RETURN]
1630 PRINT "------------------------------------------------------------------------------"

SCRAMBLE.BAS

20 CLS
30 FOR I=1 TO 4
50 X=INT(100*RND)
60 PRINT TAB(X);"SUEB";"     OPSWX";"       BISTE";"    DHIE";"        KSEAD ";"          IDWSE  ";"  NMSAED";"              AOPEKWG";"          ARAC";
70 PRINT " SJHCX ";"LAID        ";"  EKSKJAA";"               KOALS ";
80 NEXT I
90 PRINT:PRINT
100 PRINT "==============================================================================="
110 PRINT:PRINT
120 PRINT TAB(33);"S C R A M B L E R"
130 PRINT:PRINT
140 PRINT TAB(30);"by   MARK A. SWANSON"
170 FOR I=1 TO 1000:NEXT I
180 CLS
190 INPUT "                            PLEASE TELL ME YOUR NAME ";NM$
200 PRINT:PRINT:PRINT
210 PRINT "               HI ";NM$;" ! "
220 PRINT "               I'M GOING TO SHOW YOU A WORD ON THE SCREEN THAT IS"
230 PRINT "               ALL MIXED UP.  YOUR JOB IS TO UNSCRAMBLE THE LETTERS"
240 PRINT "               AND TYPE THE CORRECT WORD ON THE KEYBOARD.  WHEN I"
250 PRINT "               THINK YOU'RE HAVING TROUBLE, I'LL GIVE YOU A CLUE."
260 PRINT:PRINT:PRINT:PRINT
270 PRINT:PRINT "                        TO QUIT AT ANY TIME PRESS  'Q'."
280 PRINT:PRINT:PRINT:PRINT:PRINT TAB(20);"WHEN YOU ARE READY TO BEGIN, PRESS [RETURN]":X$= INPUT$(1):CLS
290 RESTORE
300 CLS
310 PRINT:PRINT
320 PRINT "                              HERE ARE THE CATEGORIES"
330 PRINT
331 PRINT "==============================================================================="
332 PRINT
340 PRINT "          3 LETTER WORDS   4 LETTER WORDS   5 LETTER WORDS   TOUGHIES!"
342 PRINT
343 PRINT "            A  SET 1         D  SET 1         G  SET 1       J  SET 1"
344 PRINT "            B  SET 2         E  SET 2         H  SET 2       K  SET 2"
345 PRINT "            C  SET 3         F  SET 3         I  SET 3       L  SET 3"
346 PRINT:PRINT TAB(38);"Q  QUIT":PRINT:PRINT "==============================================================================="
347 PRINT:PRINT "                           THERE ARE 5 WORDS IN EACH SET"
348 PRINT:PRINT:PRINT
349 PRINT "                                   PLEASE CHOOSE"
350 C$= INPUT$(1)
355 CLS
360 IF C$="A" THEN 500
361 IF C$="B" THEN FOR I=1 TO 5:READ SC$,W$,C$:NEXT I:GOTO 500
362 IF C$="C" THEN FOR I=1 TO 10:READ SC$,W$,C$:NEXT I:GOTO 500
363 IF C$="D" THEN FOR I=1 TO 15:READ SC$,W$,C$:NEXT I:GOTO 500
364 IF C$="E" THEN FOR I=1 TO 20:READ SC$,W$,C$:NEXT I:GOTO 500
365 IF C$="F" THEN FOR I=1 TO 25:READ SC$,W$,C$:NEXT I:GOTO 500
366 IF C$="G" THEN FOR I=1 TO 30:READ SC$,W$,C$:NEXT I:GOTO 500
367 IF C$="H" THEN FOR I=1 TO 35:READ SC$,W$,C$:NEXT I:GOTO 500
368 IF C$="I" THEN FOR I=1 TO 40:READ SC$,W$,C$:NEXT I:GOTO 500
369 IF C$="J" THEN FOR I=1 TO 45:READ SC$,W$,C$:NEXT I:GOTO 500
370 IF C$="K" THEN FOR I=1 TO 50:READ SC$,W$,C$:NEXT I:GOTO 500
371 IF C$="L" THEN FOR I=1 TO 55:READ SC$,W$,C$:NEXT I:GOTO 500
372 IF C$="Q" THEN LOAD"B:MENU.BAS",R
500 FOR I=1 TO 5
505 TWC=0
510 PRINT
520 READ SC$,W$,C$
530 PRINT:PRINT TAB(39);SC$
540 PRINT
545 IF TWC=2 THEN TW=TW+1:PRINT:PRINT"HERE'S A CLUE....":PRINT:PRINT C$:TWC=0
550 INPUT "                            WHAT IS THE SECRET WORD ";GU$
565 IF GU$="Q" THEN LOAD"B:MENU.BAS",R
570 IF GU$<>W$ THEN TW=TW+1:TWC=TWC+1 :PRINT:PRINT TAB(30);"NOT QUITE ";NM$;". TRY AGAIN":GOTO 530
580 IF GU$= W$ THEN TC=TC+1
590 GOTO 2000
600 NEXT I
610 GOTO 4000
2000 PRINT:PRINT:PRINT "                             ========================"
2010 PRINT "                             =                      ="
2020 PRINT "                             =  Y O U  G O T  I T   ="
2030 PRINT "                             =  *****************   ="
2040 PRINT "                             =                      ="
2050 PRINT "                             ========================"
2060 FOR A=1 TO 600:NEXT A
2070 CLS
2080 GOTO 600
2090 SOUND"B:MENU.BAS",R
3000 DATA ACR,CAR,DRIVE,YBU,BUY,PAY,ESE,SEE,LOOK,TOW,TWO,COUPLE,ATE,EAT,FOOD
3001 DATA ETG,GET,HAVE,WOM,MOW,LAWN,ALY,LAY,SLEEP,ANT,TAN,SUN,OTO,TOO,ALSO
3002 DATA OBY,BOY,GIRL,TUO,OUT,IN,YMA,MAY,MONTH,ITN,TIN,METAL,PMA,MAP,GUIDE
3003 DATA RGLI,GIRL,BOY,ABTO,BOAT,WATER,DNAS,SAND,BEACH,LIWL,WILL,DESIRE
3004 DATA MHRA,HARM,HURT,ISKC,SICK,WELL,GTAO,GOAT,SHEEP,NHDA,HAND,FINGERS
3005 DATA IALS,SAIL,BOAT,DMNE,MEND,FIX,MALP,LAMP,LIGHT,PATE,TAPE,STICKY
3006 DATA LEBL,BELL,RING,AETH,HEAT,HOT,VIGE,GIVE,TAKE,ITRAS,STAIR,CLIMB
3007 DATA EVRIR,RIVER,STREAM,NSIEH,SHINE,GLOW,DRGNA,GRAND,GREAT,AENLR,LEARN,KNOW
3008 DATA KRBAE,BAKER,CAKE,TRAEW,WATER,WET,NCRAO,ACORN,NUT,ELJYL,JELLY,GRAPE
3009 DATA TSAPE,PASTE,STICKY,OFURL,FLOUR,SIFT,ICAHR,CHAIR,SIT,NUYNF,FUNNY,JOKE
3010 DATA YIDWN,WINDY,BREEZY,MACLE,CAMEL,HUMPS,LIOSRED,SOLDIER,ARMY
3011 DATA RLARCO,CORRAL,BARNYARD,KSRPEAE,SPEAKER,SOUND,LAGEE,EAGLE,BIRD
3012 DATA NGIIET,IGNITE,BURN,ARHCCTE,CATCHER,BASEBALL,LWTALE,WALLET,PURSE
3013 DATA ETLNHEPA,ELEPHANT,TRUNK,TAMLEN,MENTAL,MIND,NAPINITG,PAINTING,PICTURE
3014 DATA MACNIONN,CINNAMON,SPICE,UCARTLLAOC,CALCULATOR,COMPUTER
3015 DATA YOSUAJLE,JEALOUSY,ENVY,NNRGOATI,IGNORANT,DUMB,HEPLETEON,TELEPHONE,TALK
4000 PRINT "                            HERE IS YOUR SCORE, ";NM$
4005 TTC=TTC+TC:TTW=TTW+TW
4010 PRINT:PRINT:PRINT:PRINT
4020 PRINT "                LAST SET                        GRAND TOTAL
4030 PRINT
4040 PRINT "               CORRECT";"  ";TC;"                    ";"CORRECT";"    ";TTC
4050 PRINT "               WRONG";"    ";TW;"                    ";"WRONG";"      ";TTW
4051 PRINT:PRINT
4055 IF TW=0 THEN PRINT TAB(28);"THAT WAS A PERFECT LAST SET"
4056 IF TW=>1 AND TW<4 THEN PRINT TAB(28);"NOT A BAD LAST SET PARTNER!
4057 IF TW>8 THEN PRINT TAB(20);"YOU'RE MORE MIXED UP THAN THE WORDS !"
4058 IF TW>3 AND TW<9 THEN PRINT TAB(28);"OOPS !!! YOU'RE SLIPPING"
4060 IF TTW=0 THEN PRINT TAB(28);"WOW !!!  A PERFECT SCORE"
4070 IF TTW>0 AND TTW<4 THEN PRINT TAB(28);"YOU'RE REALLY DOING GREAT !"
4080 IF TTW>5 AND TTW<10 THEN PRINT TAB(5);"IF THIS IS YOUR SECOND SET, YOU'RE DOING OK. IF IT'S YOUR FIRST...TSK,TSK"
4085 IF TTC>20 AND TTC<41 AND TTW<5 THEN "DON'T STOP NOW !"
4086 IF TTC>40 AND TTW=>5 AND TTW<15 THEN PRINT TAB(28);"KEEP UP THE GOOD WORK !"
4087 IF TTC>60 AND TTW<5 THEN PRINT TAB(28);"YOU'RE A REAL WIZ !!!"
4095 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
4100 PRINT "                         PRESS  [RETURN]  TO CONTINUE";X$= INPUT$(1)
4150 TC=0:TW=0
4200 CLS
4300 GOTO 290

SPELLING.BAS

10 REM  BY MARK A. SWANSON  6/1/83  BELLEVUE, WA.
30 DIM TCO$(10)
40 CLS
50 FOR I=1 TO 32:PRINT "    SPELLING FUN !  ";:NEXT I
60 PRINT:PRINT"_______________________________________________________________________________"
70 PRINT:PRINT:PRINT TAB(31);"by   Mark A. Swanson"
80 FOR I=1 TO 1000:NEXT I
90 CLS
100 PRINT "                            WELCOME TO SPELLING FUN  !!!"
110 PRINT:PRINT:PRINT:PRINT
120 INPUT "                            PLEASE TELL ME YOUR NAME ";NM$
130 PRINT:PRINT:PRINT
140 PRINT "                    HI ";NM$;" !  I'M GOING TO SHOW YOU SOME WORDS AND"
150 PRINT "                    I'D LIKE YOU TO SPELL THEM.
160 PRINT:PRINT:PRINT
165 PRINT "                    BEFORE WE START, MAKE SURE THE  [CAPS LOCK]  IS ON."
166 PRINT:PRINT :PRINT
170 PRINT "                    WHEN YOU'RE READY ";NM$; ", PRESS THE RETURN KEY.";
180 INPUT " ",I$
190 CLS
200 RESTORE
210 PRINT "                                SPELLING FUN MENU"
220 PRINT:PRINT:PRINT
230 PRINT "   ========================================================================="
250 PRINT "     3 LETTER WORDS      4 LETTER WORDS      5 LETTER WORDS "
260 PRINT "       ENDING IN:           ENDING IN:            WITH           [P]  TOUGHIES":PRINT
270 PRINT "    [A]   AT            [F]    AKE          [K]    AI            [T]  TEACHER'S
280 PRINT "    [B]   AR            [G]    OOK          [L]    AE                 CHOICE
290 PRINT "    [C]   AN            [H]    ATE          [M]    OU            ==========="
300 PRINT "    [D]   AG            [I]    ARE          [N]    TT
310 PRINT "    [E]   OG            [J]    EAR          [O]    LL             Q     QUIT
320 PRINT:PRINT
330 PRINT "   =========================================================================
340 PRINT:PRINT
350 PRINT "              TO QUIT EARLY, TYPE 'Q' INSTEAD OF SPELLING THE WORD"
360 PRINT:PRINT
370 INPUT "       PLEASE PRESS THE LETTER FOR THE TYPE OF WORDS YOU'LD LIKE TO SPELL";WW$
371 IF ASC(WW$)<65 OR ASC(WW$)>91 THEN LOCATE 23,30:PRINT "PLEASE PUSH [CAPS LOCK]":FOR A=1 TO 2000:NEXT A:LOCATE 23,20:PRINT STRING$(50," "):LOCATE 22,1:GOTO 370
380 IF WW$="A" THEN GOTO 430
390 IF WW$="T" THEN GOTO 770
400 IF WW$="Q" THEN LOAD"B:MENU.BAS",R
410 N =(ASC(WW$)-65)*7:FOR I=1 TO N:READ W$:NEXT I
420 CLS
430 FOR A=1 TO 7
440 CLS
450 READ W$
460 PRINT:PRINT:PRINT
470 PRINT TAB(24);"CAN YOU SPELL.............."
480 PRINT:PRINT:PRINT
490 PRINT TAB(38);W$
500 PRINT:PRINT
510 PRINT TAB(35);:INPUT ">  ",SP$
520 IF SP$="Q" THEN GOTO 570
530 IF SP$=W$ THEN TC=TC+1:PRINT:PRINT TAB(30);"THAT'S RIGHT ";NM$:FOR I=1 TO 500:NEXT I
540 PRINT
550 IF SP$<>W$ THEN PRINT TAB(30);"TRY AGAIN ";NM$:PRINT:TW=TW+1:GOTO 490
560 NEXT A
570 CLS
580 PRINT TAB(30);"HERE IS YOUR SCORE ";NM$;" ......."
590 PRINT:PRINT:PRINT:PRINT
600 IF TW=0 THEN PRINT TAB(30);"WOW ! A PERFECT SCORE"
610 IF TW<2 AND TC>3 THEN PRINT TAB(36);"GOOD JOB !"
630 IF TW>3 THEN PRINT TAB(30);"OOPS... YOU'RE SLIPPING !"
640 PRINT:PRINT:PRINT
650 PRINT TAB(30);"CORRECT - ";TC
660 PRINT:PRINT
670 PRINT TAB(30);"INCORRECT - ";TW
680 FOR I=1 TO 2500:NEXT I
690 TC=0:TW=0
700 GOTO 190
710 REM DATA CAT,DOG,COW,CAP,BOY,BAT,COG,CAR,SAT,MAN,SEE,WIN,ASK,BAG,TOY
720 REM DATA FARM,LOOK,SEND,DARE,NEAR,HARM,TAKE,TEAR,LATE,CARE,LOVE,GATE,DOOR,CAKE
730 REM DATA MEND,COVER,NIGHT,CLOWN,RULER,GRAPE,FUNNY,PLATE,MERRY,PHONE,SMILE
740 REM DATA TIGER,STATE,BLACK,WHITE,SCOOP,HIGHWAY,SOLDIER,STREAM,MATINEE,MOTHER
750 REM DATA FATHER,MAGICIAN,STUBBORN,VEGETABLE,GIRAFFE,TRANSPORTATION,SINGLE
760 REM DATA INVITE,COMPARE,BIRTHDAY,A$,B$,C$,D$,E$
770 CLS
780 PRINT"                  PLEASE TYPE IN YOUR OWN LIST OF 10 WORDS"
790 PRINT:PRINT:PRINT:PRINT:PRINT
800 FOR J=1 TO 10:PRINT TAB(15);"WORD #";J;:INPUT TCO$(J):NEXT J
810 FOR K=1 TO 10:W$=TCO$(K):GOSUB 830:NEXT K
820 GOTO 570
830 CLS:PRINT TAB(28);"CAN YOU SPELL..........."
840 PRINT:PRINT:PRINT
850 PRINT TAB(37);W$
860 PRINT:PRINT
870 PRINT TAB(35);:INPUT SP$
880 PRINT
890 IF SP$=W$ THEN TC=TC+1:PRINT TAB(28);"THAT'S RIGHT  ";NM$:FOR A=1 TO 500:NEXT A:CLS:RETURN
900 IF SP$="Q" THEN GOTO 570
910 IF SP$<>W$ THEN TW=TW IMP 1:PRINT TAB(28);"TRY AGAIN ";NM$:GOTO 840
2120 DATA BAT,CAT,MAT,FAT,HAT,PAT,RAT
2130 DATA TAR,CAR,WAR,BAR,JAR,FAR,PAR
2140 DATA MAN,TAN,CAN,FAN,RAN,PAN,BAN
2150 DATA RAG,TAG,BAG,WAG,GAG,NAG,SAG
2160 DATA DOG,LOG,FOG,JOG,HOG,BOG,COG
2180 DATA CAKE,LAKE,BAKE,RAKE,TAKE,FAKE,WAKE
2190 DATA TOOK,BOOK,HOOK,LOOK,COOK,NOOK,ROOK
2200 DATA DATE,GATE,MATE,LATE,HATE,RATE,FATE
2210 DATA DARE,FARE,CARE,MARE,RARE,BARE,HARE
2220 DATA FEAR,TEAR,BEAR,PEAR,NEAR,DEAR,WEAR
2230 DATA TAINT,DAIRY,NAIVE,DAILY,FLAIR,PAINT,MAINLY
2240 DATA FIELD,FIERY,TIE,PHONE,STORY,STAND,MERRY
2250 DATA SMILE,STATE,SCREW,BRAKE,SIREN,CABIN,EAGER
2260 DATA GIANT,MUSIC,TIGER,EARLY,FLASH,SCOOP,NEVER
2270 DATA RULER,GRAPE,FUNNY,TUNED,WEAVE,PLATE,CROWD
2280 DATA HIGHWAY,SOLDIERS,STREAM,MATINEE,MAGICIAN,TRAVEL,STUBBORN

SUPSCRAM.BAS

10 :REM                          Concieved by Mark A. Swanson
20 :REM                            Edited by E. W. Connell
30 :REM                                  1/17/84
31 CLEAR 10000
40 DIM PVALS(26),PLR$(4),PT%(4),TPT%(4)
60 GM=0:P=0
70 HR1$="S U P E R":HR2$="S C R A M":BL$="         "
80 CLS
100 FOR N=1 TO 26:READ PVALS(N):NEXT N
110 FOR J=1 TO 30:NEXT J
120 DATA 1,3,3,2,1,4,2,4,1,8,5,1,3,1,1,3,10,1,1,1,1,4,4,8,4,10
130 DATA A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,A,E,I,O
140 X1=1:Y1=21:X2=70:Y2=21
150 FOR J=1 TO 21
170 IF J=21 THEN GOTO 220
180 FOR T=1 TO 40:NEXT T
200 X1=X1+2:Y1=Y1-1:X2=X2-2:Y2=Y2-1
210 NEXT J
220 FOR T=1 TO 400:NEXT T
230 :REM█****************** INTRO
240 CLS
250 PRINT:PRINT
260 PRINT"                        Welcome to Super Scram !!!!!!":PRINT
261 PRINT
270 PRINT"        THIS IS A GAME FOR UP TO 4 PLAYERS WHERE EACH PLAYER TRIES"
280 PRINT"        TO FORM A WORD FROM A RANDOM LIST OF 10 LETTERS.":PRINT
290 PRINT"        POINTS ARE AWARDED FOR EACH LETTER USED":PRINT
300 PRINT"        YOU MAY NOT USE A LETTER MORE TIMES THAN IT APPEARS IN THE"
310 PRINT"        LIST AND IT IS UP TO THE OTHER PLAYERS TO MAKE SURE THAT"
320 PRINT"        THE LETTERS AND WORDS ARE VALID.  (KEEP ALERT !!)":PRINT
330 INPUT"             WOULD YOU LIKE TO SEE THE LETTER POINT VALUES";Y$:PRINT:PRINT
340 IF LEFT$(Y$,1)="Y" THEN GOSUB 840
360 X$=RIGHT$(TIME$,2)
370 SEED=VAL(X$)
380 RANDOMIZE SEED
420 CLS
430 INPUT"HOW MANY PLAYERS (UP TO 4)  ";PLAYERS
440 IF PLAYERS=0 THEN GOTO 430
450 IF PLAYERS>4 THEN PRINT"TOO MANY PLAYERS...":GOTO 430
460 FOR N=1 TO PLAYERS
465 PRINT
470 PRINT"PLAYER #";N;:INPUT PLR$(N)
475 PRINT
480 NEXT N
490 PRINT:PRINT
500 INPUT"HOW MANY ROUNDS OF PLAY ";ROUNDS
505 ML=0
510 IF ROUNDS=0 THEN GOTO 500
520 ML=ML+1:' FOR ML=1 TO ROUNDS
530 FOR PL=1 TO PLAYERS
540 CLS
550 PRINT TAB(23);
560 FOR I=1 TO 10
570 ICHAR=INT(128*RND(1))+1
571 IF ICHAR<65 OR ICHAR>90 THEN GOTO 570
580 PRINT CHR$(ICHAR);"  ";
590 LS$(I)=CHR$(ICHAR)
600 NEXT I
610 FOR DWN=1 TO 7:PRINT:NEXT DWN
620 PRINT TAB(20);PLR$(PL);:INPUT"  PLEASE TYPE IN YOUR WORD >",WORD$
630 LN=LEN(WORD$):PT%(PL)=0
640 FOR K%=1 TO LN
650 S$=MID$(WORD$,K%,K%)
660 P=0
670 FOR P=1 TO 10
680 IF LS$(P)=LEFT$(S$,1) THEN GOTO 720
690 NEXT P
700 PRINT"One of the letters you used is not on the list ...."
710 GOTO 620
720 NEXT K%
730 FOR J=1 TO LN
740 PT%(PL)=PT%(PL)+PVALS((ASC(MID$(WORD$,J,J))-64))
750 NEXT J
760 PRINT TAB(20);"YOUR WORD IS WORTH ";PT%(PL);" POINTS !"
770 TPT%(PL)=TPT%(PL)+PT%(PL)
780 FOR T=1 TO 1000:NEXT T
790 NEXT PL
800 ' IF ML=ROUNDS THEN ML=0 : GOSUB 920
810 GOSUB 920
820 GOTO 520: ' NEXT ML
830 END
840 :REM  POINT VALUES TABLE
850 CLS:PRINT TAB(30);"LETTER POINT VALUES"
860 PRINT:PRINT:PRINT
870 FOR J=1 TO 13
880 PRINT TAB(28);CHR$(64+J);" ";PVALS(J);TAB(46);CHR$(77+J);" ";PVALS(J+13)
890 NEXT J
900 PRINT:PRINT:PRINT:INPUT"                       Press [RETURN] to continue ....",X$
901 IF ROUNDS>0 THEN GOTO 930
910 RETURN
920 :REM  SCOREBOARD
930 CLS:PRINT TAB(22);"▒▒▒▒▒▒ SUPER SCRAM SCOREBOARD ▒▒▒▒▒▒":PRINT
940 PRINT TAB(34);"Round #";ML:FOR D=1 TO 7:PRINT:NEXT D
950 PRINT TAB(15);"NAME";TAB(40);"LAST ROUND";TAB(65);"GRAND TOTAL":PRINT:PRINT
960 FOR J=1 TO PLAYERS
970 PRINT TAB(15);PLR$(J);TAB(40);PT%(J);TAB(65);TPT%(J)
980 NEXT J
990 PRINT:PRINT:PRINT
1000 IF ML<ROUNDS THEN PRINT"PRESS  ▒ [RETURN] to (CONTINUE) ▒ [N] (NEW GAME) ▒ [L] (LETTER POINT VALUES)"
1001 IF ML=ROUNDS THEN PRINT"     PRESS      ▒ [RETURN] (NEW GAME) ▒ [L] (LETTER POINT VALUES)"
1010 PRINT"                                   [Q] (QUIT) ":Z$=INPUT$(1)
1030 IF Z$="N" THEN GOTO 10
1040 IF Z$="L" THEN GOSUB 840
1050 IF Z$="Q" THEN LOAD"B:MENU.BAS",R
1055 IF ML=>ROUNDS THEN GOTO 10
1060 GOTO 820

TYPE.BAS

10 CLS
20 OPENNING=OPENNING+1
30 GOSUB 430
40 PRINT:PRINT:PRINT
50 PRINT "    WELCOME !      I'm going to help you type faster than you ever
60 PRINT "    have before !
70 PRINT
80 PRINT "    You may type in any phrase you like, set your own time, and then"
90 PRINT "    retype your phrase as fast as you can.  I'll display the score,
100 PRINT "    time, and the characters as you type them so you can keep your
110 PRINT "    mind on your typing. After a while, you won't even need to look
120 PRINT "    at the keyboard.
121 PRINT:PRINT
122 PRINT "    I highly recommend that you find a typing book that will show you
123 PRINT "    the correct hand and finger positions when using a keyboard.  Check
124 PRINT "    your local library or book store.
130 PRINT :PRINT :PRINT
140 INPUT "                        PRESS  [RETURN] TO CONTINUE  ",GO$
150 CLS
160 PRINT "    This is an easy program to use.  All you do is type some phrases
170 PRINT "    (a bunch of letters or numbers) and the computer will remember what
180 PRINT "    you typed.  Then, on the special typing and scoreboard screen, you'll
190 PRINT "    be asked to type that phrase again.  You must be quick though,
200 PRINT "    because I'm going to time you.  You must be accurate too, because I'm
210 PRINT "    going to check to see that you typed everything correctly.
220 PRINT "
230 PRINT "    Check your score to see how well you're doing.  The LOWER the score,
240 PRINT "    the BETTER.  That means if you take too much time or make a mistake
250 PRINT "    you'll get more points.  Remember, do well and keep the score LOW !
260 PRINT "
270 PRINT "    A graph is displayed after each round so you can check your progress.
280 PRINT "    A light smiley face at the top of the bar means you made NO mistakes.
290 PRINT "    A dark face means that you made an error.  Don't worry though, you'll
300 PRINT "    see less and less of those as you practice.
310 PRINT "
320 PRINT "    After each set of rounds, the MENU will appear and you can see a
330 PRINT "    summary of your progress by choosing selection #3.  The summary can
340 PRINT "    be displayed on the screen or on a printer if you have one.
350 PRINT "
360 PRINT "
370 PRINT "
380 ' PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
390 INPUT "                   PRESS THE [RETURN] KEY WHEN READY ";ZZZ
400 CLEAR 1000
420 CLS
421 SCORE%=0:TSCORE%=0:G=0:TTA=0:TSA=0
430 LOCATE 3,20:PRINT CHR$(201):FOR A=21 TO 59:LOCATE 3,A:PRINT CHR$(205):NEXT A:LOCATE 3,60:PRINT CHR$(187)
440 LOCATE 4,20:PRINT CHR$(186);"     KEYBOARD SKILL BUILDER SERIES";:LOCATE 4,60:PRINT CHR$(186)
450 LOCATE 5,20:PRINT CHR$(200):FOR A=21 TO 59:LOCATE 5,A:PRINT CHR$(205):NEXT A:LOCATE 5,60:PRINT CHR$(188)
460 IF OPENNING=1 THEN RETURN
470 LOCATE 2,A
480 LOCATE 6,1:PRINT
490 PRINT "                            ▒▒▒▒▒  M E N U  ▒▒▒▒▒"
500 PRINT:PRINT
510 PRINT "     [1]  REPEAT SAME PHRASE           Type one phrase and repeat it
520 PRINT
530 PRINT "     [2]  DIFFERENT PHRASE EACH TIME   Several phrases are tried just once
540 PRINT
550 PRINT "     [3]  CHECK PREVIOUS RECORD        Displays a summary of your work
560 PRINT
570 PRINT "     [4]  NEW STUDENT                  Starts over and clears previous record
580 PRINT
590 PRINT "     [5]  QUIT                         Go back to main menu
600 IF ROUND=0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 4 or 5  and press [RETURN] ",SELECT$
610 IF ROUND>0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 3, 4 or 5  and press [RETURN] ",SELECT$
620 SELECT=VAL(SELECT$)
621 IF SELECT<1 OR SELECT>5 THEN LOCATE 21,55:PRINT "              ":GOTO 600
630 IF PS$=" " THEN CLOSE 1: GOTO 420
640 IF SELECT=4 THEN CLOSE 1: GOTO 10
650 IF SELECT=5 THEN CLS:CLOSE 1:LOAD"B:MENU.BAS",R
660 IF ROUND=0 AND SELECT=3 THEN LOCATE 22,27:PRINT "       NO RECORD YET              ":FOR DELAY=1 TO 1000:NEXT DELAY:LOCATE 22,27:PRINT"                                   ":SELECT=0:GOTO 621
670 IF SELECT=3 THEN GOTO 740
680 OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
690 ROUND=ROUND+1
700 ' IF SELECT=1 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
710 IF SELECT=1 THEN SELECTX=1:GOTO 780
720 ' IF SELECT=2 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
730 IF SELECT=2 THEN SELECTX=2:GOTO 860
740 IF SELECT=3 THEN LOCATE 22,20:CLOSE 1:LINE INPUT "PLEASE SELECT   [P] PRINTER  or  [S] SCREEN  ",PS$
750 IF PS$="P" OR PS$="p" THEN SELECT$="3P":GOTO 1850
760 IF PS$="S" OR PS$="s" THEN SELECT$="3S":GOTO 1850
770 IF SELECT<1 OR SELECT>2 THEN LOCATE 22,27:PRINT STRING$(53," "):GOTO 600
780 CLS: PRINT"             * Please Press the [RETURN] Key after each answer *
781 PRINT:PRINT
790 LOCATE 5,1 : PRINT "TYPE IN YOUR PHRASE (Maximum 60 characters)
800 LOCATE 6,1 : PRINT CHR$(16);:LINE INPUT " ",PHRASE$(X)
810 IF LEN(PHRASE$(X))>60 THEN LOCATE 6,2 : PRINT STRING$(78," "):LOCATE 6,40:PRINT "TOO LONG... RE-ENTER":FOR A=1 TO 300:NEXT A:LOCATE 6,40 :PRINT STRING$(25," "):GOTO 800
820 WORDLENGTH=LEN(PHRASE$(X))
830 LOCATE 8,1:LINE INPUT "REPEAT HOW MANY TIMES  (UP TO 10) ";I$
840 I=VAL(I$)
850 IF I>10 OR I<1 THEN LOCATE 8,23:PRINT STRING$(40," "):GOTO 830
860 IF SELECT=2 THEN CLS
870 IF SELECT=1 THEN GOTO 1010
880 LOCATE 1,10:LINE INPUT"HOW MANY PHRASES WOULD YOU LIKE TO TRY (UP TO 10)   ";I$
890 I=VAL(I$)
900 LOCATE 2,1:PRINT STRING$(70," ")
910 LOCATE 3,1:PRINT STRING$(70," ")
920 IF I>10 OR I<1 THEN LOCATE 1,39:PRINT STRING$(30," "):GOTO 880
930 ' DIM PHRASE$(I)
940 LOCATE 5,1:PRINT "Maximum of 60 characters, please"
950 LOCATE 7,1
960 IF SELECT=2 THEN FOR X=1 TO I
970 PRINT "TYPE PHRASE #";X;:LINE INPUT PHRASE$(X)
980 IF LEN(PHRASE$(X))>60 THEN PRINT "Maximum of 60 characters, please":GOTO 970
990 WORDLENGTH=LEN(PHRASE$(X))
1000 NEXT X
1010 LOCATE 22,1:LINE INPUT "WHAT'S THE TIME LIMIT IN SECONDS  ";TIMELIMIT$:ROUND =1:LOCATE 22,1:PRINT STRING$(70," ")
1020 TIMELIMIT=VAL(TIMELIMIT$)
1030 IF TIMELIMIT<1 OR TIMELIMIT>600 THEN ROUND=0:TIMELIMIT=0 : GOTO 1010
1040 CLS:V=9:'     V=VERTICAL AXIS OF GRAPH FOR EACH ROUND
1050 LOCATE 5,5:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1060 LOCATE 6,5:PRINT CHR$(186):LOCATE 6,8:PRINT A$:LOCATE 6,11:PRINT CHR$(186)
1070 LOCATE 7,5:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1080 LOCATE 5,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1090 LOCATE 6,70:PRINT CHR$(186);INT(N/5);:LOCATE 6,76:PRINT CHR$(186)
1100 LOCATE 7,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1110 LOCATE 12,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1120 LOCATE 13,70:PRINT CHR$(186);TSCORE%;:LOCATE 13,76:PRINT CHR$(186)
1130 LOCATE 14,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1140 LOCATE 18,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1150 LOCATE 19,70:PRINT CHR$(186);TIMELIMIT;:LOCATE 19,76:PRINT CHR$(186)
1160 LOCATE 20,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1170 LOCATE 8,71:PRINT "TIME"
1180 LOCATE 8,6:PRINT "TYPE"
1190 LOCATE 11,71:PRINT "SCORE"
1200 LOCATE 17,70:PRINT "SELECTED":LOCATE 21,71:PRINT "TIME"
1210 IF SELECT=1 THEN GOTO 1230
1220 IF SELECT=2 THEN FOR X=1 TO I :GOTO 1240
1230 IF SELECT=1 THEN FOR SELECT1=1 TO I
1240 LOCATE 2,3:PRINT STRING$(60," ")
1250 LOCATE 2,1:PRINT CHR$(16):LOCATE 2,3:PRINT PHRASE$(X)
1260 LOCATE 23,25:LINE INPUT "  PRESS [RETURN] TO BEGIN   ",Z$
1270 LOCATE 23,20:PRINT STRING$(60," "):LOCATE 3,70:PRINT"       "
1280 LOCATE 15,37:PRINT"▒READY▒":FOR D=1 TO 700:NEXT D
1290 LOCATE 15,37:PRINT"▒ SET ▒":FOR D=1 TO 700:NEXT D
1300 LOCATE 15,37:PRINT"▒▒G O▒▒":BEEP:FOR D=1 TO 150:NEXT D
1310 LOCATE 15,37:PRINT"       "
1320 GOSUB 1410
1330 PRINT:PRINT
1340 IF TIMEOUT THEN BEEP : LOCATE 5,34:PRINT "TOO LONG":W=W+1:LOCATE 10,40:PRINT " "
1350 PRINT:PRINT:PRINT
1360 BEEP:LOCATE 10,40:PRINT "  "
1370 LOCATE 3,3 : PRINT RESPONSE$
1380 GOSUB 1500
1390 LOCATE 6,27:TIME=INT(N/32):PRINT "YOUR TIME WAS";TIME;"SECONDS."
1400 GOTO 1610
1410 RESPONSE$="
1420 FOR N=1 TO TIMELIMIT*32
1430 LOCATE 6,8:PRINT A$
1440 LOCATE 6,71:PRINT INT(N/32)
1450 A$=INKEY$:IF LEN(A$)=0 THEN 1480
1460 IF ASC(A$)=13 THEN TIMEOUT%=0:RETURN
1470 RESPONSE$=RESPONSE$+A$
1480 NEXT N
1490 TIMEOUT%=1:RETURN
1500 IF RESPONSE$=PHRASE$(X) THEN LOCATE 5,32:PRINT "  EXCELLENT !":C=C+1:RETURN
1510 LOCATE 5,33:PRINT "TYPING ERROR":W=W+1
1520 LOCATE 8,6:PRINT "    "
1530 RETURN
1540 LOCATE 23,22:LINE INPUT "PRESS [RETURN] TO CONTINUE or [Q]uit  ",A$ :LOCATE 23,22:PRINT STRING$(58," "):LOCATE 3,3:PRINT STRING$(70," ")
1550 IF A$="Q" THEN CLS:CLOSE 1:GOTO 420
1560 REM
1570 IF SELECT=1 THEN NEXT SELECT1
1580 IF SELECT=2 THEN NEXT X
1590 CLOSE 1
1600 GOTO 420
1610 '          GRAPHING FUNCTION
1620 P=110:V=V+4:Q=11:R=21
1630 LOCATE 10,2:PRINT "%" :LOCATE 21,4:PRINT "ROUND >"
1640 FOR A=10 TO 20:LOCATE A,10:PRINT CHR$(22):LOCATE A,5:P=P-10:PRINT P:NEXT A
1650 FOR A=10 TO 50:LOCATE 20,A:PRINT CHR$(22):NEXT A
1660 LOCATE 21,13:PRINT "1   2   3   4   5   6   7   8   9   10 "
1670 G=TIME/TIMELIMIT*10:FOR GRAPH=20-G TO 19:LOCATE GRAPH,V:PRINT CHR$(8):NEXT GRAPH:LOCATE 9,V
1680 IF RESPONSE$=PHRASE$(X) THEN PRINT CHR$(2) ELSE PRINT CHR$(1)
1690 TT=TT+TIME
1700 LOCATE 8,V-1:PRINT TIME
1710 LOCATE 6,71:PRINT TT:LOCATE 4,71:PRINT "TOTAL"
1720 GOSUB 1760
1730 GOTO 1540
1740 LOCATE 22,1:PRINT STRING$(80," "):ROUND=0
1750 LOCATE 23,1:PRINT STRING$(80," ")
1760 TG=TG+G
1770 ' ************************************IF C=0 THEN TPERCENT=10*W:GOTO 1430
1780 '********************************TPERCENT=INT(((TG/C)*10)+(2*W)+TIMELIMIT)
1790 SCORE%=INT((TIME/TIMELIMIT)*100)+(W*(TIME/TIMELIMIT)*10)-(WORDLENGTH/TIMELIMIT)
1800 TSCORE%=INT(TSCORE%+SCORE%)
1810 LOCATE 13,71:PRINT TSCORE%
1820 W=0
1830 WRITE #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1840 RETURN
1850 CLS:OPEN "B:REPORT.DAT" FOR INPUT AS 1
1851 LOCATE 10,1:PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
1852 LOCATE 10,61 : INPUT "",NM$
1853 CLS
1855 IF SELECT$="3S" THEN PRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER"
1860 IF SELECT$="3S" THEN PRINT:PRINT "REPORT FOR: ";NM$;"     TIME: ";TIME$;"      DATE: ";DATE$:PRINT"TIME LIMIT";TIMELIMIT;"SECONDS":PRINT
1870 IF SELECT$="3S" THEN PRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":PRINT "RESPONSE":PRINT STRING$(77,"-")
1880 IF SELECT$="3P" THEN PRINT "                                 PRINTING......":LPRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER":LPRINT "REPORT FOR: ";NM$;"               TIME: ";TIME$;"      DATE: ";DATE$
1881 IF SELECT$="3P" THEN LPRINT:LPRINT "TIME LIMIT";TIMELIMIT;"SECONDS":LPRINT
1890 IF SELECT$="3P" THEN LPRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":LPRINT STRING$(77,"-")
1900 IF SELECTX=2 THEN FOR X=1 TO I
1910 INPUT #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1911 TTA=INT(TT/I):TSA=INT(TSCORE%/I)
1920 IF SELECT$="3P" THEN LPRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1930 IF SELECT$="3P" THEN LPRINT"   ";RESPONSE$
1940 IF SELECT$="3S" THEN PRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1950 IF SELECT$="3S" THEN PRINT "   ";RESPONSE$
1951 IF EOF(1) AND SELECT$="3S" THEN PRINT STRING$(77,"-")
1952 IF EOF(1) AND SELECT$="3P" THEN PRINT STRING$(77,"-")
1960 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1970 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1980 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
1990 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
2000 IF EOF(1) THEN CLOSE 1:GOTO 2040
2010 IF SELECTX=1 THEN GOTO 1910
2020 IF SELECTX=2 THEN NEXT X
2030 CLOSE 1
2040 LOCATE 24,30:LINE INPUT "PRESS [RETURN] TO CONTINUE  ",XYZ$
2050 GOTO 400

TYPING.BAS

10 CLS
20 OPENNING=OPENNING+1
30 GOSUB 430
40 PRINT:PRINT:PRINT
50 PRINT "    WELCOME !      I'm going to help you type faster than you ever
60 PRINT "    have before !
70 PRINT
80 PRINT "    You may type in any phrase you like, set your own time, and then"
90 PRINT "    retype your phrase as fast as you can.  I'll display the score,
100 PRINT "    time, and the characters as you type them so you can keep your
110 PRINT "    mind on your typing. After a while, you won't even need to look
120 PRINT "    at the keyboard.
121 PRINT:PRINT
122 PRINT "    I highly recommend that you find a typing book that will show you
123 PRINT "    the correct hand and finger positions when using a keyboard.  Check
124 PRINT "    your local library or book store.
130 PRINT :PRINT :PRINT
140 INPUT "                        PRESS  [RETURN] TO CONTINUE  ",GO$
150 CLS
160 PRINT "    This is an easy program to use.  All you do is type some phrases
170 PRINT "    (a bunch of letters or numbers) and the computer will remember what
180 PRINT "    you typed.  Then, on the special typing and scoreboard screen, you'll
190 PRINT "    be asked to type that phrase again.  You must be quick though,
200 PRINT "    because I'm going to time you.  You must be accurate too, because I'm
210 PRINT "    going to check to see that you typed everything correctly.
220 PRINT "
230 PRINT "    Check your score to see how well you're doing.  The LOWER the score,
240 PRINT "    the BETTER.  That means if you take too much time or make a mistake
250 PRINT "    you'll get more points.  Remember, do well and keep the score LOW !
260 PRINT "
270 PRINT "    A graph is displayed after each round so you can check your progress.
280 PRINT "    A light smiley face at the top of the bar means you made NO mistakes.
290 PRINT "    A dark face means that you made an error.  Don't worry though, you'll
300 PRINT "    see less and less of those as you practice.
310 PRINT "
320 PRINT "    After each set of rounds, the MENU will appear and you can see a
330 PRINT "    summary of your progress by choosing selection #3.  The summary can
340 PRINT "    be displayed on the screen or on a printer if you have one.
350 PRINT "
360 PRINT "
370 PRINT "
380 ' PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
390 INPUT "                   PRESS THE [RETURN] KEY WHEN READY ";ZZZ
400 CLEAR 1000
420 CLS
421 SCORE%=0:TSCORE%=0:G=0:TTA=0:TSA=0
430 LOCATE 3,20:PRINT CHR$(201):FOR A=21 TO 59:LOCATE 3,A:PRINT CHR$(205):NEXT A:LOCATE 3,60:PRINT CHR$(187)
440 LOCATE 4,20:PRINT CHR$(186);"     KEYBOARD SKILL BUILDER SERIES";:LOCATE 4,60:PRINT CHR$(186)
450 LOCATE 5,20:PRINT CHR$(200):FOR A=21 TO 59:LOCATE 5,A:PRINT CHR$(205):NEXT A:LOCATE 5,60:PRINT CHR$(188)
460 IF OPENNING=1 THEN RETURN
470 LOCATE 2,A
480 LOCATE 6,1:PRINT
490 PRINT "                            ▒▒▒▒▒  M E N U  ▒▒▒▒▒"
500 PRINT:PRINT
510 PRINT "     [1]  REPEAT SAME PHRASE           Type one phrase and repeat it
520 PRINT
530 PRINT "     [2]  DIFFERENT PHRASE EACH TIME   Several phrases are tried just once
540 PRINT
550 PRINT "     [3]  CHECK PREVIOUS RECORD        Displays a summary of your work
560 PRINT
570 PRINT "     [4]  NEW STUDENT                  Starts over and clears previous record
580 PRINT
590 PRINT "     [5]  QUIT                         Go back to main menu
600 IF ROUND=0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 4 or 5  and press [RETURN] ",SELECT$
610 IF ROUND>0  THEN LOCATE 21,17:LINE INPUT "PLEASE SELECT 1, 2, 3, 4 or 5  and press [RETURN] ",SELECT$
620 SELECT=VAL(SELECT$)
621 IF SELECT<1 OR SELECT>5 THEN LOCATE 21,55:PRINT "              ":GOTO 600
630 IF PS$=" " THEN CLOSE 1: GOTO 420
640 IF SELECT=4 THEN CLOSE 1: GOTO 10
650 IF SELECT=5 THEN CLS:CLOSE 1:LOAD"B:MENU.BAS",R
660 IF ROUND=0 AND SELECT=3 THEN LOCATE 22,27:PRINT "       NO RECORD YET              ":FOR DELAY=1 TO 1000:NEXT DELAY:LOCATE 22,27:PRINT"                                   ":SELECT=0:GOTO 621
670 IF SELECT=3 THEN GOTO 740
680 OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
690 ROUND=ROUND+1
700 ' IF SELECT=1 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
710 IF SELECT=1 THEN SELECTX=1:GOTO 780
720 ' IF SELECT=2 AND ROUND>1 THEN OPEN "B:REPORT.DAT" FOR OUTPUT AS 1
730 IF SELECT=2 THEN SELECTX=2:GOTO 860
740 IF SELECT=3 THEN LOCATE 22,20:CLOSE 1:LINE INPUT "PLEASE SELECT   [P] PRINTER  or  [S] SCREEN  ",PS$
750 IF PS$="P" OR PS$="p" THEN SELECT$="3P":GOTO 1850
760 IF PS$="S" OR PS$="s" THEN SELECT$="3S":GOTO 1850
770 IF SELECT<1 OR SELECT>2 THEN LOCATE 22,27:PRINT STRING$(53," "):GOTO 600
780 CLS: PRINT"             * Please Press the [RETURN] Key after each answer *
781 PRINT:PRINT
790 LOCATE 5,1 : PRINT "TYPE IN YOUR PHRASE (Maximum 60 characters)
800 LOCATE 6,1 : PRINT CHR$(16);:LINE INPUT " ",PHRASE$(X)
810 IF LEN(PHRASE$(X))>60 THEN LOCATE 6,2 : PRINT STRING$(78," "):LOCATE 6,40:PRINT "TOO LONG... RE-ENTER":FOR A=1 TO 300:NEXT A:LOCATE 6,40 :PRINT STRING$(25," "):GOTO 800
820 WORDLENGTH=LEN(PHRASE$(X))
830 LOCATE 8,1:LINE INPUT "REPEAT HOW MANY TIMES  (UP TO 10) ";I$
840 I=VAL(I$)
850 IF I>10 OR I<1 THEN LOCATE 8,23:PRINT STRING$(40," "):GOTO 830
860 IF SELECT=2 THEN CLS
870 IF SELECT=1 THEN GOTO 1010
880 LOCATE 1,10:LINE INPUT"HOW MANY PHRASES WOULD YOU LIKE TO TRY (UP TO 10)   ";I$
890 I=VAL(I$)
900 LOCATE 2,1:PRINT STRING$(70," ")
910 LOCATE 3,1:PRINT STRING$(70," ")
920 IF I>10 OR I<1 THEN LOCATE 1,39:PRINT STRING$(30," "):GOTO 880
930 ' DIM PHRASE$(I)
940 LOCATE 5,1:PRINT "Maximum of 60 characters, please"
950 LOCATE 7,1
960 IF SELECT=2 THEN FOR X=1 TO I
970 PRINT "TYPE PHRASE #";X;:LINE INPUT PHRASE$(X)
980 IF LEN(PHRASE$(X))>60 THEN PRINT "Maximum of 60 characters, please":GOTO 970
990 WORDLENGTH=LEN(PHRASE$(X))
1000 NEXT X
1010 LOCATE 22,1:LINE INPUT "WHAT'S THE TIME LIMIT IN SECONDS  ";TIMELIMIT$:ROUND =1:LOCATE 22,1:PRINT STRING$(70," ")
1020 TIMELIMIT=VAL(TIMELIMIT$)
1030 IF TIMELIMIT<1 OR TIMELIMIT>600 THEN ROUND=0:TIMELIMIT=0 : GOTO 1010
1040 CLS:V=9:'     V=VERTICAL AXIS OF GRAPH FOR EACH ROUND
1050 LOCATE 5,5:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1060 LOCATE 6,5:PRINT CHR$(186):LOCATE 6,8:PRINT A$:LOCATE 6,11:PRINT CHR$(186)
1070 LOCATE 7,5:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1080 LOCATE 5,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1090 LOCATE 6,70:PRINT CHR$(186);INT(N/5);:LOCATE 6,76:PRINT CHR$(186)
1100 LOCATE 7,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1110 LOCATE 12,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1120 LOCATE 13,70:PRINT CHR$(186);TSCORE%;:LOCATE 13,76:PRINT CHR$(186)
1130 LOCATE 14,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1140 LOCATE 18,70:PRINT CHR$(201);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(187)
1150 LOCATE 19,70:PRINT CHR$(186);TIMELIMIT;:LOCATE 19,76:PRINT CHR$(186)
1160 LOCATE 20,70:PRINT CHR$(200);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(205);CHR$(188)
1170 LOCATE 8,71:PRINT "TIME"
1180 LOCATE 8,6:PRINT "TYPE"
1190 LOCATE 11,71:PRINT "SCORE"
1200 LOCATE 17,70:PRINT "SELECTED":LOCATE 21,71:PRINT "TIME"
1210 IF SELECT=1 THEN GOTO 1230
1220 IF SELECT=2 THEN FOR X=1 TO I :GOTO 1240
1230 IF SELECT=1 THEN FOR SELECT1=1 TO I
1240 LOCATE 2,3:PRINT STRING$(60," ")
1250 LOCATE 2,1:PRINT CHR$(16):LOCATE 2,3:PRINT PHRASE$(X)
1260 LOCATE 23,25:LINE INPUT "  PRESS [RETURN] TO BEGIN   ",Z$
1270 LOCATE 23,20:PRINT STRING$(60," "):LOCATE 3,70:PRINT"       "
1280 LOCATE 15,37:PRINT"▒READY▒":FOR D=1 TO 700:NEXT D
1290 LOCATE 15,37:PRINT"▒ SET ▒":FOR D=1 TO 700:NEXT D
1300 LOCATE 15,37:PRINT"▒▒G O▒▒":FOR D=1 TO 150:NEXT D
1310 LOCATE 15,37:PRINT"       "
1320 GOSUB 1410
1330 PRINT:PRINT
1340 IF TIMEOUT THEN BEEP : LOCATE 5,34:PRINT "TOO LONG":W=W+1:LOCATE 10,40:PRINT " "
1350 PRINT:PRINT:PRINT
1360 BEEP:LOCATE 10,40:PRINT "  "
1370 LOCATE 3,3 : PRINT RESPONSE$
1380 GOSUB 1500
1390 LOCATE 6,27:TIME=INT(N/32):PRINT "YOUR TIME WAS";TIME;"SECONDS."
1400 GOTO 1610
1410 RESPONSE$="
1420 FOR N=1 TO TIMELIMIT*32
1430 LOCATE 6,8:PRINT A$
1440 LOCATE 6,71:PRINT INT(N/32)
1450 A$=INKEY$:IF LEN(A$)=0 THEN 1480
1460 IF ASC(A$)=13 THEN TIMEOUT%=0:RETURN
1470 RESPONSE$=RESPONSE$+A$
1480 NEXT N
1490 TIMEOUT%=1:RETURN
1500 IF RESPONSE$=PHRASE$(X) THEN LOCATE 5,32:PRINT "  EXCELLENT !":C=C+1:RETURN
1510 LOCATE 5,33:PRINT "TYPING ERROR":W=W+1
1520 LOCATE 8,6:PRINT "    "
1530 RETURN
1540 LOCATE 23,22:LINE INPUT "PRESS [RETURN] TO CONTINUE or [Q]uit  ",A$ :LOCATE 23,22:PRINT STRING$(58," "):LOCATE 3,3:PRINT STRING$(70," ")
1550 IF A$="Q" THEN CLS:CLOSE 1:GOTO 420
1560 REM
1570 IF SELECT=1 THEN NEXT SELECT1
1580 IF SELECT=2 THEN NEXT X
1590 CLOSE 1
1600 GOTO 420
1610 '          GRAPHING FUNCTION
1620 P=110:V=V+4:Q=11:R=21
1630 LOCATE 10,2:PRINT "%" :LOCATE 21,4:PRINT "ROUND >"
1640 FOR A=10 TO 20:LOCATE A,10:PRINT CHR$(22):LOCATE A,5:P=P-10:PRINT P:NEXT A
1650 FOR A=10 TO 50:LOCATE 20,A:PRINT CHR$(22):NEXT A
1660 LOCATE 21,13:PRINT "1   2   3   4   5   6   7   8   9   10 "
1670 G=TIME/TIMELIMIT*10:FOR GRAPH=20-G TO 19:LOCATE GRAPH,V:PRINT CHR$(8):NEXT GRAPH:LOCATE 9,V
1680 IF RESPONSE$=PHRASE$(X) THEN PRINT CHR$(2) ELSE PRINT CHR$(1)
1690 TT=TT+TIME
1700 LOCATE 8,V-1:PRINT TIME
1710 LOCATE 6,71:PRINT TT:LOCATE 4,71:PRINT "TOTAL"
1720 GOSUB 1760
1730 GOTO 1540
1740 LOCATE 22,1:PRINT STRING$(80," "):ROUND=0
1750 LOCATE 23,1:PRINT STRING$(80," ")
1760 TG=TG+G
1770 ' ************************************IF C=0 THEN TPERCENT=10*W:GOTO 1430
1780 '********************************TPERCENT=INT(((TG/C)*10)+(2*W)+TIMELIMIT)
1790 SCORE%=INT((TIME/TIMELIMIT)*100)+(W*(TIME/TIMELIMIT)*10)-(WORDLENGTH/TIMELIMIT)
1800 TSCORE%=INT(TSCORE%+SCORE%)
1810 LOCATE 13,71:PRINT TSCORE%
1820 W=0
1830 WRITE #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1840 RETURN
1850 CLS:OPEN "B:REPORT.DAT" FOR INPUT AS 1
1851 LOCATE 10,1:PRINT "  >>>  PLEASE TELL ME YOUR NAME AND PRESS THE [RETURN] KEY  ▒▒▒▒▒▒▒▒▒▒▒▒▒  <<<
1852 LOCATE 10,61 : INPUT "",NM$
1853 CLS
1855 IF SELECT$="3S" THEN PRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER"
1860 IF SELECT$="3S" THEN PRINT:PRINT "REPORT FOR: ";NM$;"     TIME: ";TIME$;"      DATE: ";DATE$:PRINT"TIME LIMIT";TIMELIMIT;"SECONDS":PRINT
1870 IF SELECT$="3S" THEN PRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":PRINT "RESPONSE":PRINT STRING$(77,"-")
1880 IF SELECT$="3P" THEN PRINT "                                 PRINTING......":LPRINT TAB(19);"DOC SWAN'S KEYBOARD SKILL BUILDER":LPRINT "REPORT FOR: ";NM$;"               TIME: ";TIME$;"      DATE: ";DATE$
1881 IF SELECT$="3P" THEN LPRINT:LPRINT "TIME LIMIT";TIMELIMIT;"SECONDS":LPRINT
1890 IF SELECT$="3P" THEN LPRINT "PHRASE";TAB(67);"TIME";TAB(74);"SCORE":LPRINT STRING$(77,"-")
1900 IF SELECTX=2 THEN FOR X=1 TO I
1910 INPUT #1,PHRASE$(X),RESPONSE$,TIME,SCORE%,TSCORE%
1911 TTA=INT(TT/I):TSA=INT(TSCORE%/I)
1920 IF SELECT$="3P" THEN LPRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1930 IF SELECT$="3P" THEN LPRINT"   ";RESPONSE$
1940 IF SELECT$="3S" THEN PRINT " > ";PHRASE$(X),TAB(67);TIME;TAB(74);SCORE%
1950 IF SELECT$="3S" THEN PRINT "   ";RESPONSE$
1951 IF EOF(1) AND SELECT$="3S" THEN PRINT STRING$(77,"-")
1952 IF EOF(1) AND SELECT$="3P" THEN PRINT STRING$(77,"-")
1960 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1970 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"TOTALS -->";TAB(67);TT;TAB(74);TSCORE%
1980 IF EOF(1) AND SELECT$="3P" THEN LPRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
1990 IF EOF(1) AND SELECT$="3S" THEN PRINT TAB(50);"AVERAGES -->";TAB(67);TTA;TAB(74);TSA
2000 IF EOF(1) THEN CLOSE 1:GOTO 2040
2010 IF SELECTX=1 THEN GOTO 1910
2020 IF SELECTX=2 THEN NEXT X
2030 CLOSE 1
2040 LOCATE 24,30:LINE INPUT "PRESS [RETURN] TO CONTINUE  ",XYZ$
2050 GOTO 400

WURD.BAS

10 REM 'WURD '  by Mark A. Swanson
20 REM          Copyright 1984
30 KEY OFF
40 SCREEN 1
50 PRINT:PRINT:PRINT
60 PRINT "              WELCOME TO
70 LOCATE 12,15:PRINT" - - - - "
80 FOR I=1 TO 500:NEXT I
90 LOCATE 12,15:PRINT" W - - - "
100 FOR I=1 TO 500:NEXT I
110 LOCATE 12,15:PRINT" W U - - "
120 FOR I=1 TO 500:NEXT I
130 LOCATE 12,15:PRINT" W U R - "
140 FOR I=1 TO 500:NEXT I
150 LOCATE 12,15:PRINT" W U R D "
160 FOR I=1 TO 1000:NEXT I
170 LOCATE 17,10:PRINT "by Mark A. Swanson
180 FOR A=1 TO 1500:NEXT A
190 LOCATE 18,10:PRINT "                 "
200 BEEP:LOCATE 17,8: INPUT "Instructions (Y or N) ";I$
210 IF I$="Y" OR I$="y" THEN GOSUB 1030
220 CLS
230 SCREEN 2
240 L=0:Z=0:A=34:PT=0:TR=0:TW=0:ROUND=0
250 CLS
260 PRINT:PRINT:PRINT
270 PRINT " PLEASE CHOOSE YOUR SKILL LEVEL:"
280 PRINT:PRINT:PRINT:PRINT
290 PRINT"                                    1   EASY    "
300 PRINT"                                    2   MEDIUM "
310 PRINT"                                    3   HARD "
320 PRINT"                                    4   EXPERT"
330 PRINT
340 PRINT"                                    5   QUIT"
350 PRINT:PRINT
360 BEEP:LOCATE 16,37:INPUT O
370 IF O=5 THEN CLS:LOAD"B:MENU.BAS",R
380 CLS:BEEP
390 INPUT "PLAYER 1:  WHAT IS THE SECRET WORD ";W$
400 B=LEN(W$)
410 PRINT:PRINT
420 L1$=LEFT$(W$,B-B+1):L2$=MID$(W$,B-B+2,1):L3$=MID$(W$,B-B+3,1):L4$=MID$(W$,B-B+4,1)
430 L5$=MID$(W$,B-B+5,1):L6$=MID$(W$,B-B+6,1):L7$=MID$(W$,B-B+7,1):L8$=MID$(W$,B-B+8,1):L9$=MID$(W$,B-B+9,1):IF B=10 THEN L10$=RIGHT$(W$,1)
440 CLS
450 PRINT "PLAYER 1, YOUR WORD IS:    ";L1$;L2$;L3$;L4$;L5$;L6$;L7$;L8$;L9$;L10$
460 BEEP:INPUT "IS THAT CORRECT ";A$
470 IF A$="NO" OR A$="N" THEN GOTO 390
480 CLS
490 PRINT "PLAYER 2, GUESS YOUR FIRST LETTER:"
500 Z=Z+1:ROUND=ROUND+1
510 ZL=20-Z
520 IF Z=21 THEN CLS:PRINT "BYE, BYE.....":FOR A=1 TO 2000:NEXT A:GOTO 910
530 REM          SETS BOARD
540 LOCATE 10,1:PRINT "USED LETTERS":LOCATE 11,1:PRINT "-----------"
550 LOCATE 10,70:PRINT "SCORE":LOCATE 11,70:PRINT "-----"
560 LOCATE 10,32:PRINT "CORRECT LETTERS":LOCATE 11,32:PRINT "---------------"
570 REM          SETS SKILL OPTIONS
580 C=INT(70-B)/2
590 IF O=2 THEN LOCATE 13,C:FOR P=1 TO B:PRINT " -";:NEXT P
600 IF O=1 THEN LOCATE 13,C:FOR P=1 TO B:PRINT " -";:NEXT P:O=5
610 REM          COMPUTES AND DISPLAYS SCORE
620 PT=TR-TW:LOCATE 13,72:PRINT PT
630 LOCATE 1,38:PRINT "ROUND"
640 LOCATE 2,39:PRINT ROUND
650 BEEP:LOCATE 16,37:INPUT G$
660 LOCATE 1,1:PRINT "                                   "
670 L=L+3 :GOSUB 980
680 IF G$=L1$ THEN A=A+1:LOCATE 13,C+1:PRINT L1$:L1$="1":GOTO 830
690 IF G$=L2$ THEN A=A+1:LOCATE 13,C+3:PRINT L2$:L2$="1":GOTO 830
700 IF G$=L3$ THEN A=A+1:LOCATE 13,C+5:PRINT L3$:L3$="1":GOTO 830
710 IF G$=L4$ THEN A=A+1:LOCATE 13,C+7:PRINT L4$:L4$="1":GOTO 830
720 IF G$=L5$ THEN A=A+1:LOCATE 13,C+9:PRINT L5$:L5$="1":GOTO 830
730 IF G$=L6$ THEN A=A+1:LOCATE 13,C+11:PRINT L6$:L6$="1":GOTO 830
740 IF G$=L7$ THEN A=A+1:LOCATE 13,C+13:PRINT L7$:L7$="1":GOTO 830
750 IF G$=L8$ THEN A=A+1:LOCATE 13,C+15:PRINT L8$:L8$="1":GOTO 830
760 IF G$=L9$ THEN A=A+1:LOCATE 13,C+17:PRINT L9$:L9$="1":GOTO 830
770 IF G$=L10$ THEN A=A+1:LOCATE 13,C+19:PRINT L10$:L10$="1":GOTO 830
780 A1=A1+1:LOCATE 12,A1+1:PRINT G$
790 LOCATE 7,30:PRINT "SORRY.... GUESS ANOTHER LETTER":TW=TW+1
800 FOR U=1 TO 1000:NEXT U :LOCATE 7,30:PRINT"                                "
810 GOSUB 940
820 GOTO 650
830 TR=TR+1
840 BEEP:LOCATE 5,20:INPUT "TYPE THE WORD OR PRESS [RETURN] TO CONTINUE";A$
850 IF O=4 THEN LOCATE 13,32:PRINT "                                        "
860 LOCATE 5,20:PRINT"                                                      "
870 IF A$=W$ THEN CLS:SCREEN 1:LOCATE 1 ,5: PRINT "YOU GOT THE WORD IN";Z;"GUESSES":GOTO 890
880 IF Z=21 GOTO 520 ELSE GOTO 940
890 LOCATE 10,17:PRINT W$
900 FOR G=1 TO 2000:NEXT G
910 CLS:BEEP:SCREEN 2:LOCATE 10,30:INPUT "PLAY AGAIN (Y/N) ";Z$
920 IF Z$="Y" OR Z$="YES" THEN Z=0:GOTO 220
930 IF Z$="N" OR Z$="NO" THEN SCREEN 0:LOAD"B:MENU.BAS",R
940 LOCATE 7,30:PRINT "YOU HAVE";ZL;"GUESSES LEFT":GOTO 500
950 REM SUBROUTINE FOR ENTERING WORD
960 IF A$=" " THEN GOTO 450
970 RETURN
980 REM              FACE LINE
990 LOCATE 22,7:FOR Q=1 TO L:PRINT CHR$(1);:NEXT Q
1000 LOCATE 22,L+8:PRINT CHR$(16)
1010 LOCATE 22,69:PRINT CHR$(15)
1020 RETURN
1030 SCREEN 2
1040 PRINT "           This is a game for two where PLAYER 1 enters a secret
1050 PRINT "           word and PLAYER 2 tries to figure it out by guessing
1060 PRINT "           letters. Remember to have PLAYER 2 look away when
1070 PRINT "           PLAYER 1 enters in the secret word. (10 LETTER MAXIMUM)
1080 PRINT
1090 PRINT "           Here are the rules:
1100 PRINT
1110 PRINT "           o   Player 2 can only guess the word when the message
1120 PRINT "               'TYPE IN THE WORD OR PRESS [RETURN]' is shown."
1130 PRINT "           o   Each correct letter earns 1 point.
1140 PRINT "           o   Each incorrect letter losses 1 point.
1150 PRINT "           o   Player 2 gets 20 guesses.
1160 PRINT
1170 PRINT "           The Display:
1180 PRINT
1190 PRINT "           o   The round is displayed at the top of the screen.
1200 PRINT "           o   The score is displayed on the right side of the screen
1210 PRINT "           o   The used letters are on the left side of the screen.
1220 PRINT "           o   A graph on the bottom shows how close you are to the
1230 PRINT "               end of your guesses.
1240 PRINT:PRINT
1250 INPUT "                         press [RETURN] to continue ";R
1260 CLS
1270 PRINT:PRINT
1280 PRINT
1290 PRINT "           The 4 Skill Options:
1300 PRINT
1310 PRINT "           1   Easy level. Each letter is displayed over the dashes.
1320 PRINT "           2   Medium level. The dashes will indicate how many letters
1330 PRINT "               but the letters are only displayed briefly.
1340 PRINT "           3   Hard level. No dashes to indicate word length but letters
1350 PRINT "               do stay in their position.
1360 PRINT "           4   Expert level. No dashes and letter only appears briefly.
1370 PRINT:PRINT:PRINT:PRINT:PRINT
1380 INPUT "                        Press [RETURN] to start the game   ",R$
1390 RETURN

Directory of PC-SIG Library Disk #0595

 Volume in drive A has no label
 Directory of A:\

BASIC    BAS      2048   1-01-80   3:08a
BTMENU   BAS      2048   1-01-80   3:11a
CHAIRMAN BAS     27136   1-01-80   3:07a
COUNTING BAS      1920   1-01-80   3:06a
DOCSWAN  ARC     99328   1-01-80   3:16a
DOCSWAN  BAS      1920   1-01-80   3:12a
FILES595 TXT      2097  11-26-86   3:30p
FORNEXT  BAS     11264   1-01-80   3:11a
GOTO     BAS      7296   1-01-80   3:11a
GR       BAS      8448   1-01-80   3:11a
GUESS    BAS      3328   1-01-80   3:12a
GUIDE    BAS      4992   1-01-80   3:08a
IFTHEN   BAS      8832   1-01-80   3:09a
INPUT    BAS      7296   1-01-80   3:09a
LET      BAS      6656   1-01-80   3:09a
MATH     BAS      5504   1-01-80   3:04a
MENU     BAS      2688   1-01-80   3:04a
MISSING  BAS     10112   1-01-80   3:04a
MODES    BAS     10624   1-01-80   3:08a
MPG      BAS      8576   1-01-80   3:05a
PRINT    BAS      6400   1-01-80   3:05a
PRINTING BAS      2176   1-01-80   3:05a
READDATA BAS      8448   1-01-80   3:10a
README   1ST       256   1-01-80   3:12a
REPORT   DAT       128  11-26-86   3:29p
SCRAMBLE BAS      5376   1-01-80   3:10a
SPELLING BAS      4224   1-01-80   3:06a
SUPSCRAM BAS      3200   1-01-80   3:08a
TYPE     BAS      9600   1-01-80   3:06a
TYPING   BAS      9600   1-01-80   3:12a
WURD     BAS      5120   1-01-80   3:06a
       31 file(s)     286641 bytes
                       19456 bytes free