Listing of file='TTRL3.BAS;01' on disk='vmedia/BASIC_language_1-5-sector.ccvf'
100 REM COPYRIGHT (C) BY COMPUCOLOR 1979 105 REM BY KLH 11/13/79 REV 1.1 110 ADR= 256* PEEK (32941)+ PEEK (32940) 120 POKE ADR+ 41,3:POKE ADR+ 42,3 130 LN= PEEK (ADR+ 44):IF LN< > PEEK (ADR+ 45)OR LN= 0THEN 1000 140 ON LNGOTO 1002,1200,1300 1000 POKE ADR+ 44,1:POKE ADR+ 45,1 1002 PLOT 29,6,2,12,15,3,17,10,27,24:PRINT " FUNDAMENTALS OF PROGRAMMING 1004 PRINT :PRINT TAB( 3)"BEFORE ANY REAL PROGRAMMING CAN BE DONE ON THE COMPUCOLOR, 1006 PRINT "THE USER MUST HAVE AN UNDERSTANDING OF HOW TO MAKE THE COMPUTER 1008 PRINT "DO WHAT IS WANTED. SO IN TUTORIAL THREE WE SHALL DISCUSS SIMPLE 1010 PRINT TAB( 5)"FUNDAMENTALS SUCH AS LINE NUMBERS, VARIABLES, NUMBERS, 1012 PRINT " ASSIGNMENTS, AND ARITHMETIC OPERATIONS AND THEIR PRIORITIES. 1014 GOSUB 10030 1016 PLOT 3,7,11:PRINT "LINE NUMBERS ARE HOW THE COMPUCOLOR II KNOWS HOW 1018 PRINT "TO RUN A PROGRAM. IT GOES SEQUENTIALLY FROM LINE NUMBER TO LINE 1020 PRINT " NUMBER, THUS PERFORMING EACH LINE NUMBER IN THE ORDER THE USER 1022 PRINT " DESIRES. THEREFORE, EACH LINE YOU WISH TO BE A PART OF A 1024 PRINT " PROGRAM MUST HAVE A LINE NUMBER, AND MUST BE IN THE ORDER YOU 1026 PRINT " WISH IT TO BE EXECUTED IN. THE LINES DO NOT HAVE TO BE ENTERED 1028 PRINT TAB( 7)"IN ORDER BECAUSE THE COMPUTER PUTS THEM IN ORDER. 1030 GOSUB 10030 1032 PLOT 3,6,11:PRINT "VARIABLES ARE SYMBOLS THAT CAN BE GIVEN ANY VALUE. A 1034 PRINT "VARIABLE CAN EITHER BE A SINGLE LETTER, TWO LETTERS, OR A LETTER 1036 PLOT 28:PRINT TAB( 4)"FOLLOWED BY A NUMBER. THEY CAN BE NUMERIC, WHICH MEANS A 1038 PRINT " VARIABLE THAT IS EQUAL TO A NUMBER, OR A STRING VARIABLE, WHICH 1040 PLOT 28:PRINT "IS A VARIABLE EQUAL TO A GROUP OF CHARACTERS. A $ FOLLOWS STRING 1042 PLOT 28:PRINT " VARIABLES TO DISINGUISH THEM FROM NUMERIC VARIABLES. C, CP, C1, 1044 PLOT 28:PRINT ,,"AND C$ ARE EXAMPLES OF VARIABLES. 1046 GOSUB 10030 1048 PLOT 3,7,12:PRINT "ASSIGNMENTS ARE THE GIVING OF A VALUE TO A VARIABLE. 1050 PRINT TAB( 18)"ASSIGNMENTS ARE IN THE FORM: 1052 PRINT ,," [VARIABLE]=[VALUE] 1054 PRINT " UNTIL A VARIABLE IS ASSIGNED A VALUE, IT IS ASSUMED TO BE ZERO 1056 PRINT " FOR NUMERICS AND NULL (NO VALUE) FOR STRINGS. A1=205 AND 1058 PRINT TAB( 20)"A$="CHR$ (34)"TOM"CHR$ (34)" ARE ASSIGNMENTS.":GOSUB 10030 1060 PLOT 3,7,9:PRINT "ARITHMETIC OPERATORS ARE THE SIGNS THAT TELL THE 1062 PRINT " COMPUCOLOR TO ADD, SUBTRACT, MULTIPLY, DIVIDE, AND RAISE A 1064 PRINT " NUMBER TO AN EXPONENT. THE ADDITION SIGN (+) AND SUBTRACTION 1066 PRINT "SIGN (-) ARE THE STANDARD MATH SYMBOLS. THE DIVISION SIGN IS THE 1068 PLOT 28:PRINT " DIAGONAL SLASH (/) ON THE KEY WITH THE QUESTION MARK SIGN, AND 1070 PRINT " IS ROUGHLY THE SAME AS A FRACTION. THE MULTIPLICATION SIGN (*) 1072 PRINT " IS AN ASTERICK TO KEEP IT FROM BEING CONFUSED WITH THE LETTER 1074 PRINT " X. THE EXPONENT SIGN (^) IS LOCATED ABOVE THE 9 KEY. IT RAISES 1076 PRINT " THE NUMBER IN FRONT OF IT TO THE POWER OF THE NUMBER AFTER IT. 1078 PRINT TAB( 5)"FOR EXAMPLE:"; 1080 PRINT " 2^4 MEANS TWO TO THE FOURTH POWER, OR 16. 1082 GOSUB 10030 1084 PLOT 3,3,8:PRINT "PRIORITY OF ARITHMETIC OPERATORS IS THE ORDER IN WHICH AN 1086 PRINT " EXPRESSION IS EVALUATED. THEY ARE NOT EVALUATED FROM LEFT TO 1088 PRINT " RIGHT. HERE'S AN EXAMPLE THAT SHOWS THE PRIORITY WORKING, WITH 1090 PRINT TAB( 10)"THE EXPRESSION 2 + 3 * ( -1 + 2 ) ^ 2 / 4. 1092 PRINT :PRINT " 1) 2 + 3 * (1) ^ 2 / 4 SOLVE INSIDE PARENTHESIS 1094 PRINT " 2) 2 + 3 * 1 / 4 SOLVE EXPONENT 1096 PRINT " 3) 2 + .75 SOLVE MULTIPLICATION, DIVISION 1098 PRINT " 4) 2.75 SOLVE ADDITION, SUBTRACTION 1100 PRINT :PRINT TAB( 3)"ADDITION / SUBTRACTION AND MULTIPLICATION / DIVISION DO NOT 1102 PRINT " HAVE PRIORITY OVER ONE ANOTHER AND ARE EXECUTED LEFT TO RIGHT. 1104 PRINT :PRINT TAB( 6)"BEFORE WE CONTINUE, DO YOU WISH TO REVIEW OR GO ON? 1106 PRINT ,,"(ENTER CHOICE AND HIT RETURN) "; 1108 INPUT "";ZZ$:GOSUB 10000:REM 1110 IF LEFT$ (ZZ$,1)< > "G"AND LEFT$ (ZZ$,1)< > "R"THEN PLOT 28,11:GOTO 1106 1112 IF LEFT$ (ZZ$,1)= "R"THEN GOTO 1002 1114 POKE ADR+ 44,2:POKE ADR+ 45,2 1200 PLOT 6,2,12,15,3,23,10:PRINT " SIMPLE PROGRAMMING 1202 PRINT :PRINT TAB( 4)"NOW THAT YOU KNOW SOME OF THE "CHR$ (34)"BASICS OF BASIC"CHR$ (34)" YOU CAN 1204 PRINT "START WRITING PROGRAMS. OF COURSE AT FIRST THEY WILL NOT BE VERY 1206 PLOT 28:PRINT " ELABORATE, BUT AS YOU WORK WITH BASIC AND PROGRESS THROUGH THE 1208 PRINT " BASIC LANGUAGE SERIES YOUR SKILL WILL DEVELOP. FROM THIS POINT 1210 PRINT " ON YOU SHOULD HAVE YOUR MANUAL HANDY TO LOOK UP ANY ERRORS YOU 1212 PRINT TAB( 19)"GET WHILE PROGRAMMING. 1214 GOSUB 10030 1216 PLOT 3,5,8:PRINT "THE FIRST STATEMENT WE WILL USE IS PRINT. THIS COMMAND 1218 PRINT " WILL DISPLAY ON THE SCREEN EITHER AN EXPRESSION, ANSWER TO AN 1220 PRINT "EXPRESSION, OR A GROUP OF CHARACTERS INSIDE TWO QUOTATION MARKS. 1222 PRINT TAB( 20)"HERE ARE SOME EXAMPLES: 1224 PRINT "100 PRINT A, B 1226 PRINT "200 PRINT "CHR$ (34)"THIS IS A PRINT STATEMENT"CHR$ (34) 1228 PRINT "300 PRINT A;"CHR$ (34)" DIVIDED BY"CHR$ (34)";B;"CHR$ (34)" EQUALS"CHR$ (34)";C 1230 PRINT "400 PRINT A,"CHR$ (34)" DIVIDED BY"CHR$ (34)",B,"CHR$ (34)" EQUALS"CHR$ (34)",C 1232 PRINT :PRINT TAB( 4)"LINE 100 WILL PRINT THE VALUES OF THE VARIABLES A AND B. 1234 PRINT " LINE 200 WILL PRINT THIS IS A PRINT STATEMENT. VARIABLES AND 1236 PRINT " QUOTED STRINGS CAN PRINTED IN THE SAME LINE, AS SHOWN IN LINE 1238 PRINT ," 300. IF A=6, B=3, AND C=2, THE PRINT WOULD BE: 1240 PRINT " 6 DIVIDED BY 3 EQUALS 2 1242 GOSUB 10030 1243 PLOT 3,0,10:PRINT "400 PRINT A,"CHR$ (34)" DIVIDED BY"CHR$ (34)",B,"CHR$ (34)" EQUALS"CHR$ (34)",C 1244 PRINT :PRINT "THE SEMI-COLON IS USED TO PRINT THE VARIABLES AND STRING ON THE 1246 PRINT " SAME LINE, WITHOUT A CARRIAGE RETURN OR ANY SPACES. HOWEVER, 1248 PRINT ,"LINE 400 USES COMMAS. WHEN A=6, B=3, AND C=2, IT PRINTS: 1250 PRINT " 6 DIVIDED BY 3 EQUALS 2 1252 PRINT TAB( 2)"A COMMA MOVES THE CURSOR TO THE NEXT 8 COLUMNS. THERE ARE 64 1254 PRINT "COLUMNS IN EACH LINE, AND A COLUMN IS THE SIZE OF ONE CHARACTER. 1256 PLOT 28:GOSUB 10030 1258 PRINT TAB( 4)"YOU NOW HAVE TWO OPERATIONS YOU CAN MAKE THE COMPUTER DO: 1260 PRINT " ASSIGNING VARIABLES A VALUE AND PRINT STATEMENTS. THE TUTORIAL 1262 PRINT " WILL STOP NOW, AND YOU CAN WRITE A SMALL PROGRAM. REMEMBER: TO 1264 PRINT "MAKE THE PROGRAM WORK, TYPE RUN. TO SEE THE PROGRAM, TYPE LIST. 1266 PRINT TAB( 6)"AND ARROW DOWN WILL STOP THE LISTING OR RUNNING. 1268 PRINT :PRINT TAB( 2)"IF YOU MAKE A MISTAKE WHILE TYPING, HIT THE ARROW LEFT KEY 1270 PRINT "UNTIL THE MISTAKE IS GONE. THEN CORRECT THE ERROR AND CONTINUE. 1272 PRINT " HITTING THE ARROW RIGHT KEY WILL RESTORE THE REST OF THE LINE 1274 PRINT " WITH ALL THE CHARACTERS AT THE SAME POINT IN THE LINE AS THEY 1276 PRINT TAB( 18)"WERE BEFORE THE CORRECTION. 1278 PRINT :PRINT " WHY NOT TRY SOME SIMPLE PRINT STATEMENTS, AND PRINT A MESSAGE 1280 PRINT TAB( 10)"LIKE, PROGRAMMING IS EASY ON THE COMPUCOLOR! 1282 PRINT :PRINT TAB( 13)"WHEN YOU'RE READY TO GO ON, HIT AUTO. 1284 POKE ADR+ 44,3:POKE ADR+ 45,3 1286 PRINT :PRINT "GOOD LUCK!":PLOT 27,11:GOTO 1450 1300 PRINT :PLOT 6,2,27,24 1302 PLOT 29,12,15,3,4,8 1304 PRINT "THE QUESTION MARK (?), WHEN NOT INSIDE A QUOTED STRING, 1306 PRINT " IS UNDERSTOOD TO MEAN PRINT. THIS SAVES SPACE WHEN TYPING A 1308 PRINT TAB( 8)"LINE AND IS EASIER THAN CONSTANTLY TYPING PRINT. 1310 PRINT :PRINT TAB( 4)"A PROGRAM WILL STOP ONCE IT RUNS OUT OF LINES TO EXECUTE. 1312 PRINT " SOMETIMES WHEN IT IS DESIRED TO STOP A PROGRAM BEFORE THE LAST 1314 PRINT " LINE, OR IN MORE COMPLEX PROGRAMS THAT DO NOT GO STRAIGHT FROM 1316 PRINT " FIRST-TO-LAST LINE, THE END STATEMENT IS USED. WHEN AN END 1318 PRINT " STATEMENT IS FOUND, THE PROGRAM STOPS AT THAT POINT, AND GIVES 1320 PRINT " THE READY PROMPT. IF THERE IS MORE AFTER THE END STATEMENT, A 1322 PRINT " CONT COMMAND IS GIVEN, AND THE PROGRAM CONTINUES FROM THE END 1324 PRINT " STATEMENT. THE CONT COMMAND ALSO WORKS IF A PROGRAM IS STOPPED 1326 PRINT "BY AN ARROW DOWN (ALSO CALLED LINEFEED). IF A PROGRAM IS CHANGED 1328 PLOT 28:PRINT " AFTER IT IS STOPPED BY A LINEFEED, IT CANNOT BE CONTINUED. 1330 GOSUB 10030 1332 PLOT 3,9,8:PRINT "A LINE CAN HAVE MORE THAN ONE STATEMENT ON IT. 1334 PRINT "100 A= 6:B= 3:C= 2:PRINT A;:PRINT B;:PRINT C 1336 PRINT TAB( 20)"WILL CAUSE THE PRINT: 1338 PRINT " 6 3 2 1340 PRINT TAB( 4)"MULTIPLE STATEMENT LINES CAN HAVE ANY STATEMENT IN THEM, 1342 PRINT "IN ALMOST ANY ORDER. THE REM STATEMENT IS ONE EXCEPTION. A REM 1344 PRINT "STATEMENT LETS A REMARK BE PLACED IN A PROGRAM. REMARKS HAVE NO 1346 PRINT " EFFECT ON HOW THE PROGRAM RUNS, AND CAN ONLY BE SEEN WHEN THE 1348 PRINT " PROGRAM IS LISTED. A REM STATEMENT CAN BE PLACED IN A MULTIPLE 1350 PRINT " STATEMENT LINE BUT ANY STATEMENTS FOLLOWING IT WILL NOT BE 1352 PRINT TAB( 12)"EXECUTED. REM STATEMENTS ARE IN THE FORM: 1354 PRINT "100 REM THIS IS A REM STATEMENT 1356 PRINT :GOSUB 10030 1358 PLOT 3,3,5:PRINT "STRING VARIABLES, AS ALREADY EXPLAINED, TAKE THE VALUE OF A 1360 PRINT " GROUP OF CHARACTERS AND TREAT THE GROUP AS A SINGLE UNIT. THE 1362 PRINT " CHARACTERS CAN BE LETTERS, NUMBERS, SYMBOLS, AND SOME CONTROL 1364 PRINT " CHARACTERS. A CONTROL CHARACTER IS A CHARACTER THAT REPRESENTS 1366 PRINT TAB( 13)"A COLOR, LETTER SIZE, OR CONTROL CODE. 1368 PRINT "100 A$ = "CHR$ (34)"HI, MOM!"CHR$ (34)"" 1370 PRINT "IS AN EXAMPLE OF ASSIGNING A STRING VARIABLE A VALUE. IT IS THE 1372 PRINT " THE SAME FORM AS FOR AN ASSIGNMENT TO A NUMERIC VARIABLE. 1374 PRINT :PRINT TAB( 4)"STRING VARIABLES CAN BE ADDED TO ONE ANOTHER. THE PROGRAM 1376 PRINT "100 A$ = "CHR$ (34)"HI, "CHR$ (34)": B$ = "CHR$ (34)"MOM!"CHR$ (34)"" 1378 PRINT "200 C$ = A$ + B$: D$ = B$ + A$ 1380 PRINT "300 PRINT "CHR$ (34)"C$ = "CHR$ (34)";C$,"CHR$ (34)"D$ = "CHR$ (34)";D$ 1382 PRINT TAB( 20)"WILL PRINT THE FOLLOWING: 1384 PRINT "C$ = HI, MOM! D$ = MOM!HI, 1386 PRINT " YOU CAN SEE THAT THE ORDER THAT THE VARIABLES ARE ADDED IN 1388 PRINT " MAKES A DIFFERENCE IN WHAT THE SUM WILL BE. THE MAXIMUM LENGTH 1390 PRINT " OF A ASSIGNED STRING VARIABLE IS 90 CHARACTERS, BUT BY ADDING 1392 PRINT " THEM TOGETHER A STRING OF 255 CHARACTERS CAN BE CREATED (255 IS 1394 PLOT 28:PRINT " THE MAXIMUM SIZE OF ANY STRING). LATER IN THE BASIC LANGUAGE 1396 PRINT TAB( 7)"MORE COMPLEX STRING OPERATIONS WILL BE EXPLAINED. 1398 GOSUB 10030 1400 PLOT 3,5,12:PRINT "THE CLEAR STATEMENT IS USED WITH VARIABLES TO SET ASIDE 1402 PRINT " SPACE IN MEMORY FOR LARGE STRING VARIABLES, A LARGE NUMBER OF 1404 PRINT " STRING VARIABLES, AND TO SET ALL PREVIOUSLY USED VARIABLES TO 1406 PRINT TAB( 4)"ZERO. A CLEAR WITHOUT A NUMBER CLEARS MEMORY AND SETS THE 1408 PRINT " SPACE FOR STRINGS TO 50 CHARACTERS. IF THE CLEAR IS FOLLOWED 1410 PRINT " BY A NUMBER THEN THE STRING SPACE IS SET FOR THE NUMBER OF 1412 PRINT ,"CHARACTERS THAT THE CLEAR STATEMENTS DEFINES. 1414 GOSUB 10030 1416 PRINT :PRINT TAB( 7)"WHEN ANYTHING IS TYPED INTO BASIC, IT IS DETERMINED 1418 PRINT " TO BE EITHER PART OF A PROGRAM (A LINE NUMBER FOLLOWED BY A 1420 PRINT " STATEMENT) OR A COMMAND IN THE IMMEDIATE MODE TO BE EXECUTED 1422 PRINT " AFTER RETURN IS HIT. THUS MOST OF THE STATEMENTS THAT ARE USED 1424 PRINT TAB( 5)"IN A PROGRAM CAN ALSO BE USED IN THE IMMEDIATE MODE. 1426 PRINT "PRINT "CHR$ (34)"THIS IS THE IMMEDIATE MODE"CHR$ (34)" 1428 PRINT TAB( 26)"WILL PRINT 1430 PRINT "THIS IS THE IMMEDIATE MODE 1432 PRINT " AS SOON AS RETURN IS HIT. THUS THE COMPUCOLOR CAN BE USED 1434 PRINT TAB( 21)"AS A CALCULATOR TOO! 1436 PRINT :PRINT TAB( 4)"THIS CONCLUDES TUTORIAL THREE. DO YOU WISH TO REVIEW THIS 1438 INPUT " LESSON (YES/NO)? ";ZZ$:GOSUB 10000:IF LEFT$ (ZZ$,1)= "Y"THEN 1002:REM 1440 IF LEFT$ (ZZ$,1)< > "N"THEN PLOT 28,11:GOTO 1438 1442 PRINT :PRINT TAB( 3)"EXPERIMENT SOME WITH WHAT YOU HAVE LEARNED IN THIS LESSON. 1444 PRINT " WHEN YOU ARE READY TO GO TO TUTORIAL FOUR HIT THE AUTO KEY. 1446 POKE ADR+ 41,4:POKE ADR+ 42,4:POKE ADR+ 44,0:POKE ADR+ 45,0:PLOT 27,11 1448 PRINT :PRINT TAB( 28)"HAVE FUN!" 1450 POKE 33434,0:POKE 33435,0:POKE 33436,0:END 10000 IF LEFT$ (ZZ$,1)= "M"THEN LOAD "MENU":RUN 1000 10010 IF PEEK (33278)< > 1THEN RETURN 10020 PLOT 1 10030 PRINT :INPUT " HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOTO 10000