Listing of file='TTRL8.BAS;01' on disk='vmedia/BASIC_language_6-10-sector.ccvf'
100 REM COPYRIGHT (C) BY COMPUCOLOR 1979 105 REM BY KLH 11/13/79 REV 1.1 110 AD= 256* PEEK (32941)+ PEEK (32940) 120 POKE ADR+ 41,2:POKE ADR+ 42,2 130 PLOT 27,11,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 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 280 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 280 270 ZZ= INT (Z/ 256):POKE AD,Z- 256* ZZ:POKE AD+ 1,ZZ:RETURN 280 Z= TM+ 1:AD= 33283:GOSUB 270:POKE 33282,195 300 GOTO 1000 800 REM ********** "THE GREAT FCS SIMULATOR" ********** 810 M= CALL (0):IF M< > 27THEN 810 815 N= CALL (0):IF N< > 68THEN 810 820 PLOT 11:PRINT "FCS>";:A$= " " 840 M= CALL (0):IF M= - 1THEN 840 860 IF M< 32OR M> 127THEN 890 870 IF LEN (A$)= > 59THEN 840 880 A$= A$+ CHR$ (M):PRINT CHR$ (M);:GOTO 840 890 IF M< 11AND M> 7THEN PLOT M:PRINT :ON 1+ (A$< > " ")GOTO 820,1529 895 IF M= 26AND PEEK (33227)> 4THEN PLOT 26,32,26:A$= LEFT$ (A$,LEN (A$)- 1):GOTO 840 900 IF M= 25OR M= 13THEN PRINT :ON 1+ (A$< > " ")GOTO 820,1529 910 IF (M= 26OR M= 28)AND A$= " "THEN 840 920 IF M= 12THEN PLOT M:PRINT :ON 1+ ABS (A$< > " ")GOTO 820,970 940 IF M= 28AND A$< > " "THEN PLOT M:GOTO 970 950 IF M= 11THEN 820 960 IF M= 27THEN N= CALL (0):IF N= 69THEN PRINT :PRINT "READY":PRINT :RETURN 965 IF MID$ (A$,2,3)< > B$THEN PRINT "WRONG COMMAND: TRY AGAIN!":GOTO 980 969 IF C$= "R"THEN RETURN 970 IF C$< > "0"THEN PLOT 27,4:PRINT MID$ (A$,2):PLOT 27,27:IF MID$ (A$,2,3)= B$AND B= 1THEN RETURN 980 GOTO 820 1000 CLEAR 1000:PLOT 6,2,12,6,39,14,29,3,16,9:PRINT " THE FILE CONTROL SYSTEM (FCS) 1002 PLOT 6,2:PRINT :PRINT " ONCE YOU ARE PROGRAMMING ON YOUR OWN, YOU WILL BECOME MORE 1004 PRINT " DEPENDENT ON THE DISK SYSTEM FOR SAVING PROGRAMS, ACCESSING 1006 PRINT " FILES, AND SIMPLE OPERATIONS LIKE RENAMING A PROGRAM, DELETING 1008 PRINT "OLD VERSIONS OF PROGRAMS, USING THE DIRECTORY, AND INITIALIZING 1010 PRINT "DISKETTES. ALL THESE OPERATIONS, AND MANY OTHERS, ARE USED FROM 1012 PRINT "THE FILE CONTROL SYSTEM, OR FCS. SINCE THIS IS SUCH AN IMPORTANT 1014 PRINT TAB( 3)"PART OF YOUR FUTURE PROGRAMMING, TUTORIAL EIGHT IS DEVOTED 1016 PRINT TAB( 16)"ENTIRELY TO OPERATING THE FCS. 1018 GOSUB 10030 1020 PLOT 3,4,11:PRINT "BEFORE WE START TALKING ABOUT THE FCS, YOU NEED TO HAVE A 1022 PRINT "IDEA OF THE KIND OF MATHEMATICS IT USES. IF YOU HAVE EVER LOOKED 1024 PRINT TAB( 3)"AT THE DIRECTORY, YOU MAY HAVE NOTICED NUMBERS LIKE 8AD3 OR 1026 PRINT "90CF. THESE NUMBERS DON'T SEEM TO MAKE MUCH SENSE AT FIRST, BUT 1028 PRINT " THEY DO TO THE COMPUTER. THEY ARE HEXIDECIMAL NUMBERS, AND 1030 PRINT " TO USE THESE NUMBERS YOU MUST USE HEXIDECIMAL ARITHMETIC. THIS 1032 PRINT "MAY SOUND LIKE A VERY COMPLICATED PROCEDURE, BUT IT ISN'T REALLY 1034 PRINT TAB( 22)"AS HARD AS IT SOUNDS. 1035 GOSUB 10030 1036 PLOT 3,4,12:PRINT "THINK OF THE MATH YOU'RE USED TO LIKE THIS: EVERYTHING IS 1038 PRINT "BASED ON THE NUMBERS 0 THROUGH 9 COUNTING SOMETHING. EACH OF THE 1040 PRINT " INDIVIDUAL NUMERALS IN A NUMBER TELL HOW MANY SETS OF 0 1042 PRINT " THROUGH 9. SINCE THERE ARE TEN DIFFERENT NUMERALS, EACH ONE IS 1048 PRINT TAB( 3)"A POWER OF TEN GREATER THAN THE ONE PRECEEDING IT. SO THE 1050 PRINT " NUMBER 1027 IS ALSO 1*(10^3) + 0*(10^2) + 2*(10^1) + 7*(10^0). 1051 GOSUB 10030 1052 PLOT 3,3,6:PRINT "HEXIDECIMAL MATH IS BASED ON THE NUMBERS 0 THROUGH 15, AND 1054 PRINT TAB( 3)"THE RELATION BETWEEN HEXIDECIMAL AND STANDARD DECIMAL IS: 1056 PRINT :PRINT ,"DEC","HEX",,,"DEC","HEX 1058 FOR X= 0TO 7:PLOT 3,5,X+ 10:PRINT ,X,X:NEXT X 1060 FOR X= 8TO 9:PLOT 3,37,X+ 2:PRINT ,X,X:NEXT X:FOR X= 10TO 15:PLOT 3,37,X+ 2:PRINT ,X," ";CHR$ (X+ 55):NEXT X 1062 PRINT TAB( 4)"BECAUSE THERE ARE NO ONE-CHARACTER SYMBOLS FOR 10-15, THE 1064 PRINT TAB( 3)"LETTERS A-F ARE USED INSTEAD. THIS MEANS THERE ARE SIXTEEN 1066 PRINT "NUMERALS, SO EACH NUMERAL IN A HEX NUMBER IS A POWER OF SIXTEEN 1068 PRINT " MORE THAN THE PRECEEDING NUMERAL. THE NUMBER 0B26 IS 0*(16^3) 1070 PRINT " + B[OR 11 IN DECIMAL]*(16^2) + 2*(16^1) + 6*(16^0). IF YOU 1072 PRINT TAB( 6)"FIGURE THIS OUT YOU WILL GET THE DECIMAL EQUIVALENT. 1074 GOSUB 10030 1076 PLOT 3,5,10:PRINT "TO LEARN ABOUT THE FCS MODE, WE'RE GOING TO USE AN FCS 1078 PRINT "SIMULATOR THAT WILL ALLOW YOU TO RUN THE FCS FROM BASIC. TO USE 1080 PRINT TAB( 5)"IT, YOU WILL HAVE TO USE THE ESC D AND ESC E SEQUENCES. 1082 PRINT " FIRST, WE'LL DO A DIR COMMAND, AS WE DID IN TUTORIAL TWO. 1084 PRINT "THIS WILL LIST THE DIRECTORY OF THE BASIC LANGUAGE DISK, AND IT 1086 PRINT " CONTAINS INFORMATION ON EACH OF THE PROGRAMS ON THE DISK. WHEN 1088 PRINT "THE COMPUTER LOADS A PROGRAM, IT READS INFORMATION FROM HERE TO 1090 PRINT " KNOW HOW LARGE THE PROGRAM IS, WHERE TO LOAD THE PROGRAM IN 1092 PRINT "MEMORY, AND OTHER SUCH INFORMATION. ONCE YOU HAVE THE DIRECTORY 1094 PRINT TAB( 10)"LISTED, WE'LL EXPLAIN A LITTLE MORE ABOUT IT. 1096 GOSUB 10030 1098 PRINT TAB( 3)"FIRST OF ALL, DO AN ESC D SEQUENCE TO GET YOU INTO THE FCS 1100 PRINT TAB( 11)"MODE. THEN, TYPE IN DIR TO THE FCS> PROMPT. 1102 B= 1:PRINT :B$= "DIR":GOSUB 810:B$= "":B= 0 1104 PRINT " (NOTICE THE HEXIDECIMAL NUMBERS.) TAKE A LOOK AT THE HEADINGS 1106 PRINT " NAME, TYPE, AND VR. THESE THREE CATAGORIES ARE THE ENTIRE NAME 1108 PRINT TAB( 3)"OF EACH PROGRAM. NAME IS THE NAME THE PROGRAM IS SAVED AND 1110 PRINT "LOADED AS; TYPE IS THE TYPE OF PROGRAM; VR IS THE VERSION OF THE 1112 PRINT " PROGRAM. THERE ARE MANY DIFFERENT TYPES OF PROGRAMS, SUCH AS 1114 PRINT " .BAS, .RND (FOR RANDOM FILES), .LDA AND .PRG (BOTH FOR MACHINE 1116 PRINT TAB( 3)"LANGUAGE PROGRAMS). IF THERE IS MORE THAN ONE VERSION OF A 1118 PRINT TAB( 3)"PROGRAM, EACH VERSION HAS ITS OWN VERSION NUMBER. THE FIRST 1120 PRINT "VERSION IS ;01, THE SECOND ;02, AND SO ON. NOTE THAT THE VERSION 1122 PRINT " NUMBER, ALONG WITH ALL THE OTHER NUMBERS IN THE DIRECTORY, ARE 1124 PRINT TAB( 26)"HEXIDECIMAL. 1126 GOSUB 10030 1128 PLOT 3,17,10:PRINT "THIS IS A TEST!! DO AN ESC D.":M= CALL (0):IF M< > 27THEN 1128 1130 N= CALL (0):IF N< > 68THEN 1128 1132 PLOT 3,21,12:PRINT "GOOD. NOW DO AN ESC E.":M= CALL (0):IF M< > 27THEN 1132 1134 N= CALL (0):IF N< > 69THEN 1132 1136 PRINT :PRINT " VERY GOOD. YOU DID THAT VERY PROFESSIONALLY. YOU MIGHT 1138 PRINT " AS WELL GET USED TO DOING IT, BECAUSE THOSE ARE THE SEQUENCES 1140 PRINT "FOR GETTING INTO THE FCS MODE AND THEN BACK INTO BASIC. WHENEVER 1142 PRINT " THE TUTORIAL TELLS YOU TO TRY AN FCS COMMAND, DO AN ESC D TO 1144 PRINT " ENTER THE FCS MODE, AND WHEN YOU HAVE DONE THE COMMAND DO AN 1146 PRINT ,"ESC E TO RESTART BASIC AND CONTINUE THE PROGRAM. 1148 GOSUB 10030 1150 PLOT 3,3,8:PRINT "FIRST, LET'S LEARN HOW TO CHANGE THE DEVICE. DEVICE REFERS 1152 PRINT TAB( 5)"TO THE DISK DRIVE. THE COMPUCOLOR'S BUILT-IN DISK DRIVE IS 1154 PRINT "DEVICE 0:. IF YOU HAVE AN EXTERNAL DISK DRIVE, IT IS DEVICE 1:. 1156 PRINT " SOMETIMES AN FCS COMMAND WILL NEED THE DEVICE TO BE SPECIFIED. 1158 PRINT "TO DO THIS, JUST ENTER 0 OR 1 (DEPENDING ON THE DEVICE) FOLLOWED 1160 PRINT TAB( 24)"BY A COLON (:). 1162 PRINT " TO CHANGE THE DEVICE, ENTER DEV, FOLLOWED EITHER A 0: (FOR 1164 PRINT " THE INTERNAL DRIVE), 1: (FOR THE EXTERNAL DRIVE), OR FOLLOWED 1166 PRINT " BY NOTHING (TO FIND OUT THE CURRENT DEVICE). FOR EXAMPLE: 1168 PRINT "FCS>DEV 1: 1170 PRINT ,,"WILL CAUSE THIS TO BE DISPLAYED: 1172 PRINT "DEFAULT DEVICE= CD1: 1174 PRINT TAB( 3)"NOTE THAT FOR AN FCS COMMAND, ONLY THE FIRST THREE LETTERS 1176 PRINT TAB( 15)"OF THE COMMAND NEED TO BE ENTERED. 1178 GOSUB 10030 1180 PRINT " TRY CHANGING THE DEVICE. REMEMBER THAT YOU HAVE TO USE BOTH 1182 PRINT TAB( 9)"ECSAPE SEQUENCES TO GET IN AND OUT OF THE FCS. 1184 B$= "DEV":NP= PEEK (33010):GOSUB 810:POKE 33010,NP 1186 PRINT TAB( 3)"NEXT WE'LL RENAME A PROGRAM. THIS IS A VERY USEFUL FEATURE 1188 PRINT " TO HELP KEEP YOUR DISKS ORDERLY, BECAUSE YOU CAN MAKE CHANGES 1190 PRINT " IN A PROGRAM'S NAME WITHOUT PHYSICALLY HAVING TO DEAL WITH THE 1192 PRINT TAB( 5)"PROGRAM ITSELF. THE COMMAND FOR RENAME IS IN THIS FORM: 1194 PRINT TAB( 6)"REN <DEVICE NAME:> (OLD FILE SPEC) TO (NEW FILE SPEC) 1196 PRINT " OLD AND NEW FILE SPEC ARE THE NAME, TYPE, AND VERSION NUMBER 1198 PRINT "OF THE FILE. DEVICE NAME IS OPTIONAL. FOR EXAMPLE, SUPPOSE THAT 1200 PRINT "YOU WANT TO RENAME PROGRAM TRIAL.BAS;1 TO TEST.BAS;1. YOU WOULD 1202 PRINT ,,,"DO IT LIKE THIS: 1204 PRINT "FCS>REN TRIAL.BAS;1 TO TEST.BAS;1 1206 PRINT " THE PROGRAM WOULD BE RENAMED TO TEST.BAS;1. NOW, YOU TRY IT. 1207 PRINT ,,"TYPE IN THE TRIAL EXAMPLE ABOVE. 1208 C$= "R":B$= "REN":GOSUB 810:D$= A$:A$= "":FOR X= 1TO LEN (D$):IF MID$ (D$,X,1)< > " "THEN A$= A$+ MID$ (D$,X,1) 1210 NEXT :IF A$< > "RENTRIAL.BAS;1TOTEST.BAS;1"THEN GOSUB 10040:GOSUB 820 1212 C$= "0":FILE "T",1214:FILE "R",1,"T",1 1214 GOSUB 820 1216 GOSUB 10030 1226 PRINT TAB( 3)"INCIDENTALLY, ANYTHING THAT IS BETWEEN <> IN AN EXAMPLE IS 1228 PRINT ,,,"AN OPTIONAL ITEM. 1230 PRINT " NOW ON TO EVEN MORE USEFUL THINGS, SUCH AS THE DELETE COMMAND. 1232 PRINT TAB( 15)"THE DELETE COMMAND IS IN THE FORM: 1234 PRINT ,,"DEL <DEVICE NAME:> (FILE SPECS) 1236 PRINT TAB( 4)"FILE SPECS MUST INCLUDE THE FILE NAME, TYPE, AND VERSION 1238 PRINT TAB( 4)"NUMBER. THIS IS A SAFEGUARD TO KEEP YOU FROM ACCIDENTALLY 1240 PRINT TAB( 4)"DELETING THE WRONG FILE. FOR EXAMPLE, TO DELETE THE FILE 1242 PRINT ,,"TEST.BAS;1, YOU WOULD ENTER THIS: 1244 PRINT "FCS>DEL TEST.BAS;1 1246 PRINT TAB( 5)"FOR THE DELETE COMMAND, THE SCREEN MEMORY IS USED WHILE 1248 PRINT TAB( 3)"UPDATING THE DISK, SO DO NOT BE ALARMED WHEN THIS HAPPENS. 1250 PRINT TAB( 9)"ALL RIGHT, TRY DELETING THE FILE TEST.BAS;1. 1252 C$= "R":B$= "DEL":GOSUB 810:D$= A$:A$= "":FOR X= 1TO LEN (D$):IF MID$ (D$,X,1)< > " "THEN A$= A$+ MID$ (D$,X,1) 1254 NEXT :IF A$< > "DELTEST.BAS;1"THEN GOSUB 10040:GOSUB 820 1256 PLOT 12,27,4:PRINT "REA 3 6000 480":PRINT "WRI 3 6000 480":PLOT 27,27,12 1258 PLOT 27,4:PRINT "REA 0 6000 180":PRINT "WRI 0 6000 180":PLOT 27,27,12 1260 PLOT 27,4:PRINT "DIR":PLOT 27,27:C$= "E":GOSUB 820 1262 GOSUB 10030 1264 PRINT " NOW WE COME TO DISK INITIALIZATION. WHEN YOU BUY A FORMATTED 1266 PRINT " COMPUCOLOR DISK, IT IS NOT INITIALIZED; THAT IS, IT DOES NOT 1268 PRINT " HAVE A DIRECTORY. SO, TO USE THE DISK IT MUST BE INITIALIZED. 1270 PRINT TAB( 6)"THE COMMAND FOR INITIALIZING A DISK IS IN THIS FORM: 1272 PRINT "INI (DEVICE NAME:) (DIRECTORY NAME) <NUMBER OF BLOCKS> 1274 PRINT " DEVICE NAME MUST BE INCLUDED. DIRECTORY NAME IS THE NAME YOU 1276 PRINT TAB( 3)"WISH TO CALL THE DIRECTORY, AND CAN BE UP TO TEN CHARACTERS 1278 PRINT TAB( 2)"LONG. NUMBER OF BLOCKS REFERS TO THE SIZE OF THE DIRECTORY IN 1280 PRINT "BLOCKS, AND EACH BLOCK WILL HOLD INFORMATION FOR ABOUT 6 FILES. 1282 PRINT TAB( 3)"THE MORE FILES YOU HAVE, THE LARGER THE DIRECTORY MUST BE. 1284 PRINT "FCS>INI 0: TEST 06 1286 PRINT TAB( 4)"WOULD INITIALIZE A DISK WITH THE DIRECTORY NAME TEST, AND 1288 PRINT TAB( 4)"WOULD MAKE THE DIRECTORY SIX BLOCKS LONG. NOW YOU TRY IT: 1290 PRINT TAB( 19)"USE TEST 06 AS AN EXAMPLE. 1292 C$= "R":B$= "INI":GOSUB 810:D$= A$:A$= "":FOR X= 1TO LEN (D$):IF MID$ (D$,X,1)< > " "THEN A$= A$+ MID$ (D$,X,1) 1294 NEXT :IF A$< > "INI0:TEST06"THEN GOSUB 10040:GOSUB 820 1296 FILE "T",1298:FILE "R",1,"T",1 1298 PRINT :PRINT "DIRECTORY CD0:";:FILE "T",1300:FILE "R",1,"T",1 1300 PRINT " TEST 06":PRINT :PRINT "ATR NAME TYPE VR SBLK SIZE LBC LADR SADR" 1302 PRINT :PRINT " 01 <FREE SPACE> 0006 018A":PRINT :C$= "0":GOSUB 820 1304 GOSUB 10030 1400 PRINT :PRINT TAB( 3)"THIS CONCLUDES TUTORIAL EIGHT. DO YOU WISH TO REVIEW THIS 1402 INPUT " LESSON (YES/NO)? ";ZZ$:GOSUB 10000:IF LEFT$ (ZZ$,1)= "Y"THEN 1000:REM 1404 IF LEFT$ (ZZ$,1)< > "N"THEN PLOT 28,11:GOTO 1402 1408 PLOT 12:PRINT TAB( 21)"END OF TUTORIAL EIGHT. 1454 AD= 256* PEEK (32941)+ PEEK (32940) 1456 POKE AD+ 41,4:POKE AD+ 42,4:POKE AD+ 44,0:POKE AD+ 45,0:PLOT 1 10000 ZZ$= LEFT$ (ZZ$,1):IF ZZ$= "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 10040 PRINT "ERROR! TRY AGAIN!":RETURN