Compucolor.org – Virtual Media

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