Listing of file='TTRL2.BAS;01' on disk='vmedia/BASIC_language_1-5-sector.ccvf'
100 REM COPYRIGHT (C) BY COMPUCOLOR 1979 105 REM BY KLH 01/07/80 REV 1.1 110 AD= 256* PEEK (32941)+ PEEK (32940) 120 POKE ADR+ 41,2:POKE ADR+ 42,2:POKE ADR+ 43,2 130 PLOT 12 140 DATA 245,229,197,1,206,40,205,36,0,202,-1,-1,11 150 DATA 121,176,194,-1,-1,29,194,-1,-1,17,255,255,195 160 DATA -1,-1,95,175,87,175,50,255,129,193,225,241,201 170 TM= 256* PEEK (32941)+ PEEK (32940) 180 ON - (TM> 65491)GOTO 210:RESTORE 140:FOR I= 1TO 39:READ A 190 IF A> = 0AND A< > PEEK (TM+ I)THEN I= 39:A= 999 200 NEXT I:IF A< 256THEN 290 210 RESTORE 140 220 FOR I= 1TO 39:READ A:POKE TM+ I,A- (A< 0):NEXT I 230 Z= TM+ 29:AD= TM+ 11:GOSUB 270 240 Z= TM+ 7:AD= TM+ 17:GOSUB 270 250 Z= TM+ 4:AD= TM+ 21:GOSUB 270 260 Z= TM+ 32:AD= TM+ 27:GOSUB 270:GOTO 290 270 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN 290 Z= TM+ 1:AD= 33283:GOSUB 270:POKE 33282,195 300 CLEAR 100 310 PRINT TAB( 19)" THE BASIC LANGUAGE SERIES 320 PRINT :PRINT TAB( 12)"AS YOU HAVE PROBABLY DISCOVERED BY NOW... 330 PRINT TAB( 20)"I AM THE COMPUCOLOR II. 340 PRINT :PRINT TAB( 3)"I DIDN'T CATCH YOUR NAME, THOUGH. I WOULD LIKE TO KNOW, 350 PRINT "SINCE WE WILL BE WORKING TOGETHER. TYPE IN YOUR NAME AND, WHEN 360 PRINT "YOU HAVE, HIT THE BLACK KEY MARKED RETURN/ENTER. IF YOU MAKE A 370 PRINT "MISTAKE, HIT THE GRAY ARROW LEFT KEY UNTIL IT HAS BEEN ERASED. 380 PRINT :INPUT "YOUR NAME IS? ";M$:PRINT 390 IF M$= ""OR M$= "0"THEN PRINT TAB( 5)"OH, COME ON, DON'T BE SHY: I DON'T BITE...";:PLOT 28,28,28,11:GOTO 380 400 PLOT 11:PRINT TAB( 5)"GLAD TO MEET YOU, "M$". 410 PRINT :PRINT TAB( 5)"WHETHER YOU REALIZE OR NOT, YOU HAVE JUST LEARNED TWO 420 PRINT " THINGS ABOUT OPERATING A COMPUTER: ENTERING INFORMATION AND 430 PRINT " CORRECTING MISTAKES. BY THE TIME YOU'VE BEEN THROUGH ALL THE 440 PRINT TAB( 10)"LESSONS, YOU WILL KNOW MUCH MORE THAN THAT. 450 PRINT :PRINT TAB( 3)"THE LANGUAGE SERIES WILL TEACH YOU HOW TO PROGRAM WITH THE 460 PRINT " USE OF EXAMPLES, INCLUDING THE DEMO YOU JUST SAW. BUT FIRST 470 PRINT " LET'S GO OVER SOME OF THE THINGS YOU'LL NEED TO KNOW BEFORE THE 480 PRINT TAB( 19)"REAL PROGRAMMING STARTS. 490 PRINT :INPUT " WHEN YOU'RE READY TO GO ON, HIT THE RETURN KEY. ";ZZ$:PLOT 12:GOSUB 2060 500 PLOT 3,3,3:PRINT "FIRST OF ALL, YOU HAVE TO KNOW HOW TO TURN THE MACHINE ON. 510 PRINT "THAT'S EASY ENOUGH: JUST FLIP THE WHITE SWITCH LOCATED BY WHERE 520 PRINT " THE WALL PLUG COMES OUT OF THE BACK OF THE UNIT. WHEN YOU DO, 530 PRINT "THE SOUND OF THE DISK DRIVE RUNNING SHOULD BE HEARD FROM INSIDE 540 PRINT " THE COMPUTER. IT DOESN'T MEAN THE COMPUTER'S BROKEN: IT MEANS 550 PRINT TAB( 15)"THE DRIVE IS GETTING READY FOR USE. 580 PRINT :PRINT TAB( 3)"AFTER THE COMPUTER HAS BEEN TURNED ON, IT WILL TAKE A WHILE 590 PRINT " BEFORE THE VIDEO TUBE IS WARMED UP. WHEN IT IS, YOU SHOULD SEE 600 PRINT TAB( 22)"THE FOLLOWING: 610 PRINT :PRINT :PRINT "DISK BASIC V8.79 COPYRIGHT (C) 1979":PRINT "MAXIMUM RAM AVAILABLE ? 620 TM= 256* PEEK (32941)+ PEEK (32940):AD= 32049:AE= 32768:IF TM< 50000THEN AD= 15665:AE= 16384 630 AD$= MID$ (STR$ (AD),2):AE$= MID$ (STR$ (AE),2) 640 PRINT AD$" BYTES FREE":PRINT "READY":PRINT 670 PRINT :PRINT TAB( 3)"WE CAN'T SIMULATE TURNING THE UNIT ON, BUT WE CAN LET YOU 680 INPUT " DO MANY OF THE OTHER FUNCTIONS: HIT RETURN AGAIN AND WE WILL! ";ZZ$:PLOT 12:GOSUB 2060 690 PRINT "FIRST OF ALL, FIND THE KEY MARKED (ESC) (IT'S RIGHT BESIDE THE 700 PRINT " 1 KEY). THIS KEY IS THE ESCAPE KEY AND LETS YOU USE MANY OF 710 PRINT " THE COMPUCOLOR'S FEATURES. WHEN YOU FIND THE KEY, TOUCH IT:":PRINT 720 PLOT 3,0,3:M= CALL (0):IF M= - 1THEN 720 730 IF M< > 27THEN PRINT :PRINT TAB( 5)"NOPE, THAT'S NOT IT.... LOOK RIGHT ABOVE THE TAB KEY.":GOTO 720 740 PRINT :PLOT 11:PRINT TAB( 3)"THAT'S THE ONE! NOW THAT YOU KNOW WHERE IT IS, LET'S LEARN 750 PRINT " SOME ESCAPE SEQUENCES. AN ESCAPE SEQUENCE IS ESC, THEN ANOTHER 760 PRINT TAB( 14)"KEY THAT DOES A SPECIAL FUNCTION. 770 PRINT :PRINT TAB( 3)"THE MOST IMPORTANT ONE YOU'LL NEED TO KNOW FOR NOW IS THE 780 PRINT " ESC W SEQUENCE. YOU'LL NOTE THAT THE W KEY IS WHITE, AND HAS 790 PRINT " (BASIC) MARKED ON IT. THIS MEANS THE KEY CAN BE USED WHEN YOU 800 PRINT " WANT TO USE THE WHITE COLOR (BUT THAT'S ANOTHER LESSON), AND 810 PRINT " THAT THE ESC W COMBINATION WILL INITIALIZE BASIC. INITIALIZING 820 PRINT " BASIC JUST MEANS TO CLEAR A PORTION OF THE COMPUTER'S MEMORY 830 PRINT TAB( 3)"SO A BASIC PROGRAM CAN BE USED. WHENEVER YOU'RE READY TO USE 840 PRINT TAB( 3)"A NEW PROGRAM, YOU SHOULD DO AN ESC W. WHEN YOU HIT ESC W, 850 PRINT ,,"THE COMPUTER WILL RESPOND WITH: 860 PRINT :PRINT :PRINT "DISK BASIC V8.79 COPYRIGHT (C) 1979":PRINT "MAXIMUM RAM AVAILABLE ? 870 PRINT :PRINT TAB( 3)"FOR MOST PURPOSES, ALL YOU WILL NEED TO DO IS HIT RETURN. 880 PRINT AD$" BYTES FREE":PRINT "READY" 890 PRINT :PRINT TAB( 12)"WILL BE THE COMPUTER'S RESPONSE TO RETURN. 900 PRINT :PRINT ,,:INPUT " HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOSUB 2060 910 PLOT 6,5:PRINT TAB( 30- LEN (M$)/ 2)M$"..." 920 PRINT TAB( 10)"SO, YOU KNOW HOW TO DO IT: TRY AN ESC W: 930 PLOT 27,11:PRINT 940 M= CALL (0) 950 IF M< > 27THEN 940 960 M= CALL (0):IF M= - 1THEN 960 970 IF M< > 87THEN PRINT :PRINT TAB( 6)"YOU HAVE TO FOLLOW ESC IMMEDIATELY WITH W. START OVER.":PRINT :GOTO 940 980 PRINT :PRINT :INPUT "DISK BASIC V8.79 COPYRIGHT (C) 1979 MAXIMUM RAM AVAILABLE ?";A$:IF VAL (A$)= 0AND A$< > "0"AND LEN (A$)> 0THEN 980 990 A= VAL (A$):IF A< > 0OR (LEN (A$)> 0AND PEEK (1)= 186)THEN 1020 1000 PRINT AD$" BYTES FREE":PRINT "READY":PRINT 1010 GOTO 1110 1020 AF$= AD$:IF A< = AETHEN AF= A- 719:AF$= MID$ (STR$ (AF),2):IF AF< 44THEN PRINT :PRINT "OM ERROR":PRINT "READY":ER= 2:GOTO 1050 1030 IF A> 65529THEN PRINT :PRINT "SN ERROR":PRINT "READY":ER= 1:GOTO 1050 1040 AD= AF:AD$= AF$:GOTO 1000 1050 PLOT 15:PRINT :IF ER= 2THEN 1080 1060 PRINT TAB( 4)"SN ERROR, HUH? THAT'S BECAUSE THE NUMBER YOU ENTERED WAS 1070 PRINT " TOO LARGE: YOU ASKED FOR MORE MEMORY THAN THE COMPUTER HAS.":GOTO 1100 1080 PRINT TAB( 2)"OM ERROR: THAT MEANS THE COMPUTER WAS OUT OF MEMORY BECAUSE 1090 PRINT ,," YOUR NUMBER WAS TOO SMALL. 1100 PRINT TAB( 28)"TRY AGAIN!":GOTO 930 1110 PRINT :PRINT TAB( 5)"REMEMBER: WHEN YOU USE ESC W, THE BASIC PROGRAM IN THE 1120 PRINT TAB( 2)"COMPUTER'S MEMORY IS LOST. CPU RESET WILL LEAVE BASIC WITHOUT 1130 PRINT TAB( 5)"DESTROYING THE PROGRAM, AND ESC E WILL RE-ENTER BASIC. 1140 PRINT " NOTE THAT (BSC RST) IS MARKED ON THE E KEY. IT STANDS FOR 1150 PRINT TAB( 4)"BASIC RESTART. WHEN THE ESC E SEQUENCE IS DONE, READY WILL 1160 PRINT TAB( 8)"APPEAR ON THE SCREEN, AND YOU ARE BACK IN BASIC. 1170 PRINT TAB( 6)"ESC E IS USED TO RE-ENTER BASIC FROM ANY OTHER MODE. 1180 PRINT :PRINT ,," NOW TRY THE ESC E SEQUENCE:":PRINT 1190 M= CALL (0):IF M< > 27THEN 1190 1200 M= CALL (0):IF M= - 1THEN 1200 1210 IF M< > 69THEN PRINT :PRINT TAB( 6)"YOU HAVE TO FOLLOW ESC IMMEDIATELY WITH E. START OVER.":PRINT :GOTO 1190 1220 PRINT :PRINT "READY":PRINT 1230 PRINT TAB( 17)"SEE, IT'S NOT SO HARD, IS IT?":PRINT :PRINT ,,:INPUT " HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOSUB 2060 1240 PRINT TAB( 4)"ANOTHER FEATURE IS THE FILE CONTROL SYSTEM, OR FCS. THIS 1250 PRINT " ALLOWS YOU TO DO MANY DISK OPERATIONS OUTSIDE OF BASIC. THE FCS 1260 PRINT " IS ENTERED BY THE ESC D SEQUENCE. IT IS A LITTLE MORE INVOLVED 1270 PRINT " THAN THE OTHER TWO ESCAPE SEQUENCES, SO LET'S TAKE IT SLOWLY. 1280 PRINT :PRINT " WHEN YOU TYPE THE ESC D SEQUENCE, THE COMPUTER RESPONDS WITH: 1290 PRINT :PRINT "FCS> 1300 PRINT :PRINT ,"THIS SHOWS YOU ARE IN THE FILE CONTROL SYSTEM. 1310 PRINT ," GO AHEAD AND TYPE ESC D; THEN WE'LL GO ON.":PRINT 1320 M= CALL (0):IF M< > 27THEN 1320 1330 M= CALL (0):IF M= - 1THEN 1330 1340 IF M< > 68THEN PRINT :PRINT TAB( 6)"YOU HAVE TO FOLLOW ESC IMMEDIATELY WITH D. START OVER.":PRINT :GOTO 1320 1350 PRINT "FCS>":PRINT :PRINT " GOOD! NOW LET'S DO A FEW SIMPLE COMMANDS. TYPE DIR AND HIT 1360 PRINT " RETURN. THIS WILL LIST THE DIRECTORY OF THE LANGUAGE DISK. THE 1370 PRINT " DIRECTORY CONTAINS INFORMATION ABOUT THE PROGRAMS ON THE DISK.":PRINT 1380 PLOT 11:PRINT "FCS>"; 1390 A$= " " 1400 M= CALL (0):IF M= - 1THEN 1400 1410 IF M< 32OR M> 127THEN 1440 1420 IF LEN (A$)= > 59THEN 1400 1430 A$= A$+ CHR$ (M):PRINT CHR$ (M);:GOTO 1400 1440 IF M< 11AND M> 7THEN PLOT M:PRINT :ON 1+ (A$< > " ")GOTO 1380,1520 1450 IF M= 25OR M= 13THEN PRINT :ON 1+ (A$< > " ")GOTO 1380,1520 1460 IF (M= 26OR M= 28)AND A$= " "THEN 1400 1470 IF M= 12THEN PLOT M:PRINT :ON 1+ ABS (A$< > " ")GOTO 1380,1520 1480 IF M= 26AND PEEK (33227)> 4THEN PLOT 26,32,26:A$= LEFT$ (A$,LEN (A$)- 1):GOTO 1400 1500 IF M= 28AND A$< > " "THEN PLOT M:GOTO 1520 1510 IF M= 11THEN A$= "":PLOT 11:PRINT "FCS>";:GOTO 1400 1520 IF LEFT$ (A$,4)< > " DIR"THEN PRINT :PRINT TAB( 5)"DON'T WORRY ABOUT THE MISTAKE: TRY IT ONE MORE TIME!":GOTO 1380 1530 PLOT 27,4:PRINT MID$ (A$,2):PLOT 27,27 1540 PRINT :PRINT ,,:INPUT " HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOSUB 2060 1550 PRINT TAB( 4)"WHEN YOU START WRITING PROGRAMS ON YOUR OWN, YOU WILL NO 1560 PRINT " DOUBT WANT TO SAVE THEM SO YOU CAN USE THEM LATER. YOU CAN BY 1570 PRINT " USING THE SAVE COMMAND. WHEN YOU TELL THE COMPUTER TO SAVE A 1580 PRINT "PROGRAM, IT TAKES THE PROGRAM AND MAKES A COPY ON THE DISK THAT 1590 PRINT " IS IN THE DISK DRIVE. THE PROGRAM IN MEMORY IS NOT DESTROYED. 1600 PRINT "WHEN YOU WANT TO SAVE A PROGRAM, TYPE IN SAVE, AND THEN THE NAME 1610 PLOT 28:PRINT " YOU WANT TO CALL THE PROGRAM. YOU'LL NEED TO PUT THE NAME IN 1620 PRINT TAB( 11)"QUOTES. IT SHOULD LOOK SOMETHING LIKE THIS: 1630 PRINT :PRINT "SAVE "CHR$ (34)"TEST"CHR$ (34)" 1640 PRINT :PRINT ,"BY THE WAY, A NAME CAN'T BE LONGER THAN 6 LETTERS. 1650 PRINT :PRINT "GUESS WHAT, "M$": 1660 PRINT " YOU'RE GOING TO TRY IT NOW. JUST TYPE SAVE, AND THE NAME OF 1670 PRINT TAB( 26)"THE PROGRAM.":B$= "SAVE":GOSUB 1870 1680 D$= C$:FILE "T",1690:FILE "R",1,"TEST",1 1690 PRINT TAB( 10)"AND NOW YOUR PROGRAM WOULD BE SAVED ON DISK. 1700 PRINT :PRINT ,,:INPUT " HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOSUB 2060 1710 PRINT " NOW, WHEN YOU WANT TO USE THE PROGRAM, YOU HAVE TO LOAD IT 1720 PRINT "INTO MEMORY. THIS ISN'T VERY HARD, ESPECIALLY WHEN YOU HAVE THE 1730 PRINT " LOAD COMMAND TO DO IT WITH. LOADING A PROGRAM IS JUST THE 1740 PRINT "OPPOSITE OF SAVING ONE: THE COMPUTER COPIES THE PROGRAM FROM THE 1750 PLOT 28:PRINT " DISK INTO THE COMPUTER'S MEMORY. THE DISK IS NOT CHANGED. TO 1760 PRINT TAB( 5)"LOAD A PROGRAM, YOU TYPE LOAD AND THE PROGRAM'S NAME,":PRINT TAB( 27)"LIKE THIS: 1770 PRINT :PRINT "LOAD "CHR$ (34)"TEST"CHR$ (34)" 1780 PRINT :PRINT TAB( 11)"AND AGAIN, YOU TRY TO GIVE A LOAD COMMAND:":B$= "LOAD":GOSUB 1870:IF C$< > D$THEN GOSUB 2200 1790 FILE "T",1800:FILE "R",1,"TEST",1 1800 PRINT " NOW YOUR PROGRAM WOULD BE LOADED. IT MIGHT BE A WISE IDEA NOT 1810 PRINT "TO SAVE ANY PROGRAMS ON THE BASIC LAGUAGE DISK: BECAUSE OF THE 1820 PRINT TAB( 6)"SIZE OF THE TUTORIAL PROGRAMS, DISK SPACE IS LIMITED. 1830 PRINT :PRINT ,,:INPUT " HIT RETURN TO CONTINUE: ";ZZ$:PLOT 12:GOSUB 2060 1835 INPUT "DO YOU WISH TO REVIEW BEFORE GOING TO TUTORIAL THREE (Y/N)? ";ZZ$:ZZ$= LEFT$ (ZZ$,1):IF ZZ$= "Y"THEN PLOT 12:GOTO 300 1840 PRINT :PRINT ,," END OF TUTORIAL TWO":PLOT 8 1850 AD= 256* PEEK (32941)+ PEEK (32940) 1860 POKE ADR+ 41,3:POKE ADR+ 42,3:POKE ADR+ 43,3:PLOT 1 1870 E1= 0:PLOT 14:PRINT :A$= " " 1880 B= 0:A(0)= 0:A(1)= 0 1890 M= CALL (0):IF M= - 1THEN 1890 1900 IF M= 147THEN A$= A$+ "SAVE ":PRINT "SAVE ";:GOTO 1890 1910 IF M= 148THEN A$= A$+ "LOAD ":PRINT "LOAD ";:GOTO 1890 1920 IF M= 26AND LEN (A$)> 1THEN PLOT M,32,M:A$= LEFT$ (A$,LEN (A$)- 1):GOTO 1890 1930 IF M< > 26AND M< > 13AND M< 128THEN PLOT M:A$= A$+ CHR$ (M):GOTO 1890 1940 IF M< > 13THEN 1890 1950 PRINT :PLOT 15:PRINT :A$= MID$ (A$,2) 1960 FOR X= 1TO LEN (A$):IF MID$ (A$,X,1)= CHR$ (34)THEN A(B)= X:B= B+ 1 1970 NEXT X:IF LEFT$ (A$,4)< > B$THEN PRINT "WRONG COMMAND.":E1= 1 1980 IF A(0)= 0THEN PRINT "SYNTAX ERROR.":E1= 1:IF A(1)= 0THEN 2050 1990 IF A(1)= 0THEN A(1)= LEN (A$)+ 1 2000 IF A(1)- A(0)> 7AND A(0)< > 0THEN PRINT "PROGRAM NAME TOO LONG.":E1= 1 2010 IF A(0)= LEN (A$)OR MID$ (A$,A(0)+ 1,1)= CHR$ (34)THEN PRINT "MISSING PROGRAM NAME.":GOTO 2050 2020 C$= MID$ (A$,A(0)+ 1,A(1)- (A(0)+ 1)):FOR Y= A(0)+ 1TO A(1)- 1:ZZ= ASC (MID$ (A$,Y,1)) 2030 IF (ZZ< 48OR ZZ> 57)AND (ZZ< 65OR ZZ> 90)THEN PRINT "BAD PROGRAM NAME.":E1= 1:GOTO 2050 2040 NEXT Y:IF E1< > 1THEN RETURN 2050 PRINT "TRY AGAIN!":GOTO 1870 2060 IF LEFT$ (ZZ$,1)= "M"THEN LOAD "MENU":GOTO 1030 2070 IF PEEK (33278)< > 1THEN RETURN 2080 PLOT 1 2200 PRINT "NOTE: THE PROGRAM YOU LOADED ISN'T THE SAME ONE THAT YOU SAVED.":RETURN