Compucolor.org – Virtual Media

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