10 REM (C) 1988 UPTIME MAGAZINE 20 REM (C) 1988 SOFTDISK PUBLISHING INC. 30 REM AUTHOR: NOEL NYMAN 40 REM GRAY BORDER, BLACK SCREEN, LIGHT GREEN TEXT 45 SYS65409 50 POKE53280,11:POKE53281,0:POKE646,13 60 REM Q$=QUOTES, FORCE UPPER/LOWER CASE, RUN/STOP DISABLED 70 Q$=CHR$(34):PRINTCHR$(14)CHR$(8):SP$=" ":POKE808,234 80 REM --- SYS (null),X,Y PLACES CURSOR AT ROW X, COLUMN Y --- 90 Q=679:FORX=QTO706:READA:POKEX,A:NEXT 100 DATA 32,253,174,32,158,173,32,170,177,132,2,32,253,174,32,158 110 DATA 173,32,170,177,166,2,76,240,255,56,176,250 120 REM SKIP SUB-ROUTINES 130 GOTO560 140 REM *** CLEAR SCREEN TO LINE 23 STARTING AT LINE 'X' *** 150 X=10:GOSUB160:SYSQ,10,3:RETURN 160 FORY=XTO23:SYSQ,Y,0:SYS 59903:POKEY+217,PEEK(Y+217)OR128:NEXT 170 RETURN 180 REM *** FILTER KEYBOARD INPUT FOR STRING *** 190 REM ---RETURNS STRING IN XX$ LENGTH 'LL' OR SMALLER--- 200 XX$="":XB=65:XE=90:GOTO220:REM LOWER CASE ALPHA ONLY 210 XX$="":XB=48:XE=57:GOTO220:REM NUMERIC ONLY 220 GOSUB270:XA=ASC(CG$):IFXA=13ANDXX$<>""THENRETURN 230 IF(XA=20)AND(XX$<>"")THENPRINTCG$;:XX$=LEFT$(XX$,LEN(XX$)-1):GOTO220 240 IF(XAXE)GOTO220 250 IFLEN(XX$)>=LLGOTO220 260 PRINTCG$;:XX$=XX$+CG$:GOTO220 270 XL%=PEEK(211) 280 IF(XL%>39)THENXL%=XL%-40:GOTO280 290 XL%=XL%+PEEK(214)*40+1024:XC=54272+XL% 300 POKEXC,PEEK(646):XO%=PEEK(XL%):XT%=XO%:XQ%=128:IF(XO%>127)THENXQ%=-XQ% 310 XT%=XT%+XQ%:POKEXL%,XT%:XQ%=-XQ% 320 FORXR=1TO60 330 GETCG$:IF(CG$<>"")THENPOKEXL%,XO%:XR=61:NEXT:RETURN 340 NEXT:GOTO310 350 REM *** DELAY LOOP *** 360 REM --- ENTER WITH DELAY TIME IN X --- 370 FORA=1TOX:NEXT:RETURN 380 FORY=11TO16:SYSQ,6,Y:PRINT"[158]->[153]":X=50:GOSUB370:NEXT:RETURN 390 GOSUB420:SYSQ,5,19:PRINTSP$:SYSQ,6,19:PRINTSP$:RETURN 400 SYSQ,0,0:SYS59903:RETURN 410 FORY=16TO11STEP-1:SYSQ,6,Y:PRINT"<*":X=50:GOSUB370:NEXT:RETURN 420 SYSQ,6,11:PRINT" ":RETURN 430 REM *** PROMPT *** 440 SYS679,24,1:PRINT"[152][211][208][193][195][197] [194][193][210] TO CONTINUE - [198]8 FOR [213][208][212][201][205][197][146][153]"; 450 WAIT198,1:POKE198,0 460 IF(PEEK(631)=32)OR(PEEK(631)=13)THENWAIT197,64:RETURN 470 IFPEEK(631)<>140GOTO450 480 REM RE-ENTER UPTIME ENVIRONMENT 490 PRINTCHR$(9): REM ENABLE SHIFT/C= 500 POKE186,8: REM DEVICE #8 510 POKE808,237: REM RE-ENABLE RUN-STOP 520 LOAD"REBOOT",8 530 REM *************************** 540 REM MAIN PROGRAM STARTS HERE 550 REM *************************** 560 PRINT"[147]" 570 PRINT"[158] [182][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][183][181] 580 [153]"SYS ABS PRINT(null)(null)RIGHT$(null)CHR$ (null)VAL(null)(null)VAL(null)(null)RIGHT$ATN(null) ASCRIGHT$(null)VAL(null) SYSINT 590 PRINT" [182][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][175][181] 600 [153]"PRINT# PUBLISHED BY (null)OFTDISK (null)UBLISHING 610 PRINT" WRITTEN FOR [213][208][212][201][205][197] BY [206]OEL [206]YMAN 620 [153]"PRINT (null)N MANY DISKS, YOU'VE SEEN FILES IN 630 PRINT"THE DISK DIRECTORY WITH [211][197][209][153] FOLLOWING 640 [153]"THEIR NAMES. SYS(null)VAL(null)PRINTUENTIAL FILES ARE OFTEN"; 650 [153]"USED BY PROGRAMMERS TO STORE DATA. tHEY"; 660 [153]"CAN ALSO BE USED FOR WORD PROCESSOR AND 670 PRINT"OTHER TEXT FILES. 680 [153]" (null)E'RE GOING TO SHOW YOU HOW TO MAKE 690 PRINT"YOUR OWN [158][211][197][209][153] FILES TO HOLD DATA FROM 700 [153]"YOUR PROGRAMS, AND HOW TO READ JUST 710 PRINT"ABOUT ANY [158][211][197][209][153] FILE.":GOSUB440 720 PRINT"[147] 730 [153]"LENOMPUTER ASCILES STR$ISK ASCILES 740 PRINT"[129][163][163][163][163][163][163][163][163][163][163][163][163][163][163] [163][163][163][163][163][163][163][163][163][163] 750 [153]"LIST10 8 2 1 "Q$"(null)(null)(null)RIGHT$(null)VAL"Q$" (null)(null)CHR$ 760 PRINT" 4 4 0 15 "Q$"[204][197][212][212][197][210]"Q$" [211][197][209] 770 [153]"15 8 15 12 "Q$"ASC(null)(null)CHR$CHR$RIGHT$VAL"Q$" (null)(null)CHR$ 780 PRINT"[153] [213]NFORTUNATELY, THE SAME WORD IS OFTEN"; 790 PRINT"USED IN THE COMPUTER WORLD TO MEAN TWO 800 [153]"DIFFERENT THINGS. (null)HE WORD "Q$"FILE"Q$"PRINT HAS 810 PRINT"TWO MEANINGS FOR [195]OMMODORE COMPUTERS. 820 [153]" (null)OU ALREADY KNOW THAT A COLLECTION OF"; 830 [153]"DATA ON A DISKPRINT IS KNOWN AS A SYSFILEPRINT. 840 PRINT" [212]HE COMPUTER[153] ALSO USES [158]FILES[153], BUT 850 [153]"FOR A DIFFERENT PURPOSE.":[141]440 860 [153]"LOADLIST(null)(null)VAL(null) 4, 4, 0: LEN(null)STR$ 4: (null)RIGHT$(null)(null)PRINT 870 PRINT" [217]OU MAY HAVE USED COMPUTER FILES 880 [153]"WITHOUT KNOWING IT. tHE SET OF COMMANDS"; 890 [153]"ABOVE (null)RIGHT$(null)(null)PRINTS A PEEKATN(null)RIGHT$LEN PROGRAM TO YOUR":[153]"PRINTER. 900 GOSUB440:SYSQ,1,8:PRINT "^ 910 [158]Q,2,6:[153]"DEVICEPRINT":[141]150 920 [153]"(null)HIS IS THE DEVICE NUMBERPRINT. (null)OST 930 PRINT"[195]OMMODORE PRINTERS ARE [158]DEVICE #4[153]. 940 [141]440:[158]Q,1,8:[153]" ^ 950 SYSQ,2,3:PRINT"SECONDARY ADDRESS[153]":SYSQ,14,0 960 PRINT" [212]HIS NUMBER IS CALLED THE SECONDARY 970 [153]"ADDRESSPRINT. (null)OME DEVICES USE THIS NUMBER 980 PRINT"FOR SPECIAL PURPOSES. [193] SECONDARY 990 [153]"ADDRESS OF SYSZEROPRINT PUTS LENOMMODORE PRINTERS 1000 PRINT"INTO [213]PPER [195]ASE/[199]RAPHICS MODE. 1010 [141]440:[158]Q,1,5:[153]"^ ^ 1020 SYSQ,2,1:PRINT"FILE NUMBER FILE NUMBER[153]":SYSQ,21,3 1030 PRINT"[212]HIS NUMBER IS THE FILE NUMBER[153].":GOSUB440 1040 PRINT"[147][155][207][208][197][206][153] 1050 [158]59903:[153]" ATN COMPUTER FILEPRINT IS THE REFERENCE 1060 PRINT"USED BY THE MACHINE AND THE PROGRAMMER 1070 [153]"FOR INPUT/OUTPUT OR SYSRIGHT$/(null)PRINT ACTIVITY. (null)O 1080 PRINT"COMMUNICATE WITH A PRINTER, MODEM, OR 1090 [153]"DISK DRIVE, YOU MUST CREATE OR (null)(null)VAL(null)PRINT A":[153]"FILE. 1100 PRINT" [212]HE COMPUTER KEEPS TRACK OF FILES BY 1110 [153]"USING THE FILE NUMBERPRINT. (null)HIS NUMBER 1120 PRINT"CAN BE ANY WHOLE NUMBER FROM 1[153] THROUGH 1130 [153]"127PRINT. ((null)HE NUMBERS SYS128PRINT THROUGH SYS255PRINT 1140 PRINT"ARE USED TO ADD AN EXTRA BLANK LINE WHEN"; 1150 PRINT"[158][204][201][211][212][153]ING PROGRAMS TO A PRINTER.) 1160 [153]" (null)OW, ENTER A NUMBER BETWEEN 1PRINT AND 1170 PRINT"127[153] FOR A FILE NUMBER." 1180 PRINT"---> ";:X$="" 1190 LL=3:GOSUB210:XX=VAL(XX$):IF(XX>0)AND(XX<128)GOTO1220 1200 PRINT"[147][153][217]OUR NUMBER SHOULD BE BETWEEN [158]1[153] 1210 [153]"AND SYS127PRINT. (null)RY AGAIN.":[137]1180 1220 FL$[178]XX$:[153]"LOADLIST(null)(null)VAL(null) "FL$" 1230 PRINT"[153] [207]NCE WE SET UP OR "Q$"OPEN"Q$"[153] A FILE, 1240 [153]"WE HAVE TO TELL THE COMPUTER WHICH 1250 PRINT"DEVICE WE WANT TO USE WITH THAT FILE. 1260 [153]" (null)INCE WE'RE GOING TO CREATE A SYS(null)VAL(null)PRINT 1270 PRINT"DISK FILE, WE'LL USE DEVICE #8[153].":GOSUB440 1280 PRINT"[155]"TAB(5+LEN(FL$))",8 1290 [141]150:[153]"PRINTSTR$ON'T FORGET THE SYS"Q$","Q$"PRINT BETWEEN THE 1300 PRINT"FILE NUMBER AND THE DEVICE NUMBER.":GOSUB440 1310 PRINT "[147][155][207][208][197][206] "FL$",8" 1320 PRINT"[147][155][207][208][197][206] "FL$",8":PRINT"[153] [212]HE [158]SECONDARY ADDRESS[153] YOU NEED TO USE"; 1330 PRINT"DEPENDS ON THE DEVICE. [208]RINTERS AND 1340 [153]"PRINTER INTERFACES USE THE SECONDARY 1350 PRINT"ADDRESS TO CHANGE PRINTING STYLES. 1360 [153]" STR$ISK DRIVES USE THE SYSSECONDARY ADDRESSPRINT"; 1370 [153]"IN THE SAME WAY THAT THE COMPUTER USES 1380 PRINT"FILE NUMBERS. [198]OR A DISK DRIVE, THE 1390 [153]"SECONDARY ADDRESS IS OFTEN CALLED A":[153]"CHANNELPRINT. 1400 PRINT" [215]HEN YOU WANT TO [204][207][193][196], [211][193][214][197], READ 1410 [153]"FROM, OR WRITE TO A FILE, THE DISK DRIVE"; 1420 [153]"KEEPS TRACK OF WHICH FILE ON THE DISK TO"; 1430 [153]"USE BY A CHANNELPRINT NUMBER.":[141]440 1440 [153]"LOAD(null)ET'S REVIEW FOR A MOMENT. 1450 PRINT"[215]HICH ANSWER IS CORRECT? 1460 [153]" ATN) (null)HE COMPUTER AND THE DISK DRIVE 1470 PRINT" BOTH USE [158]FILE NUMBERS[153] TO KEEP 1480 [153]" TRACK OF RIGHT$/(null) INFORMATION. 1490 PRINT" [194]) [212]HE COMPUTER AND THE DISK DRIVE 1500 [153]" BOTH USE SYSCHANNEL NUMBERSPRINT TO 1510 PRINT" KEEP TRACK OF [201]/[207] INFORMATION. 1520 [153]" LEN) (null)HE COMPUTER USES SYSFILE 1530 PRINT" NUMBERS[153] AND THE DISK DRIVE 1540 [153]" USES SYSCHANNEL NUMBERSPRINT. 1550 GETCG$:IFCG$=""GOTO1550 1560 IF(CG$="C")OR(CG$="[195]")GOTO1690 1570 IF(CG$<>"A")AND(CG$<>"[193]")AND(CG$<>"B")AND(CG$<>"[194]")GOTO1550 1580 PRINT"[147][211]ORRY, THAT'S NOT RIGHT. 1590 [153]"(null)HINK OF THE COMPUTER AS A FILING 1600 PRINT"CABINET[153]. [201]MAGINE MANY LITTLE MANILA 1610 [153]"FILE FOLDERS INSIDE THE CABINET, AND 1620 PRINT"EACH ONE HAS ITS OWN [158]NUMBER[153]. 1630 [153]"(null)HERE'S A CABLEPRINT CONNECTING THE DISK 1640 PRINT"DRIVE TO THE COMPUTER, JUST LIKE THE 1650 [153]"CABLE CONNECTED TO A TV SET. (null)OU 1660 PRINT"SELECT [158]CHANNELS[153] ON THE TV, AND THE[160] 1670 [153]"DISK DRIVE USES SYSCHANNELSPRINT TO KEEP TRACK 1680 PRINT"OF FILES.":GOSUB440:GOTO1440 1690 PRINT"[147][210][201][199][200][212]!":PRINT"[212]HERE ARE SIXTEEN POSSIBLE CHANNELS 1700 [153]"FOR EACH DISK DRIVE. (null)HEY ARE NUMBERED 1710 PRINT"0[153] THROUGH 15[153]. 1720 [153]" LENHANNEL (null)URPOSE 1730 PRINT" [129][163][163][163][163][163][163][163] [163][163][163][163][163][163][163] 1740 [153]"PRINT 0 SYS(null)(null)ATNSTR$PRINT ONLY 1750 PRINT" 1 [158][211][193][214][197][153] ONLY 1760 [153]" 2 AVAILABLE 1770 PRINT" 3 AVAILABLE 1780 [153]" : AVAILABLE 1790 PRINT" : AVAILABLE 1800 [153]" 14 AVAILABLE 1810 PRINT" 15 [158]COMMANDS[153] ONLY"; 1820 PRINT" [206]OW, PICK A CHANNEL NUMBER TO USE 1830 [158]Q,24,0:[153]"---> ";:[158]Q,24,5 1840 LL[178]2:[141]210:[139]([197](XX$)[177]1)[175]([197](XX$)[179]15)[137]2010 1850 [139][197](XX$)[177]15[137]1830 1860 [139][197](XX$)[177]0[137]1920 1870 [153]"LOADPRINTLENHANNEL 0PRINT IS USED BY THE SYSSTR$(null)(null)PRINT, (STR$ISK 1880 PRINT"[207]PERATING [211]YSTEM) TO [204][207][193][196] PROGRAMS OR 1890 [153]"THE DISK DIRECTORY INTO THE COMPUTER. 1900 PRINT"[217]OU CAN'T USE IT TO CREATE OR READ":PRINT"[158][211][197][209][153] FILES. 1910 [141]440:[153]"LOAD":[137]1690 1920 [139][197](XX$)[177]1[137]1960 1930 [153]"LOADPRINTLENHANNEL 1PRINT IS USED BY THE SYSSTR$(null)(null)PRINT, (STR$ISK 1940 PRINT"[207]PERATING [211]YSTEM) TO [211][193][214][197] PROGRAMS":PRINT"FROM THE COMPUTER. 1950 [153]"(null)OU CAN'T USE IT TO CREATE OR READ":[153]"SYS(null)VAL(null)PRINT FILES.":[137]1910 1960 [153]"LOADPRINTLENHANNEL 15PRINT IS USED BY THE SYSSTR$(null)(null)PRINT, (STR$ISK 1970 PRINT"[207]PERATING [211]YSTEM) FOR RECEIVING 1980 [153]"COMMANDS AND SENDING INFORMATION 1990 PRINT"ON DISK DRIVE ERRORS TO THE COMPUTER. 2000 [153]"(null)OU CAN'T USE IT TO CREATE OR READ":[153]"SYS(null)VAL(null)PRINT FILES.":[137]1910 2010 SA$[178]XX$:[153]"LOADLIST(null)(null)VAL(null) "FL$",8,"SA$ 2020 [153]"PRINT LEFT$ERE'S WHAT THE SYS(null)(null)VAL(null)PRINT COMMAND LOOKS":[153]"LIKE SO FAR. 2030 PRINT" [215]E'VE TOLD THE COMPUTER TO [207][208][197][206] FILE 2040 [153]"#"FL$"PRINT AND PLACE IN IT THE FACT THAT 2050 PRINT"WE'RE GOING TO USE CHANNEL #"SA$"[153] ON DISK":PRINT"DEVICE #8[153]. 2060 [153]" (null)EXT, WE NEED A NAME FOR THE DISK 2070 PRINT"FILE WE'RE GOING TO CREATE.":PRINT"[197]NTER A DISK FILE NAME: "; 2080 LL=16:GOSUB200:DF$=XX$ 2090 PRINT"[147][155][207][208][197][206]"FL$",8,"SA$","Q$DF$Q$ 2100 PRINT"[153] [212]O GIVE THE DISK DRIVE THE DISK 2110 [153]"FILE NAME, WE JUST ADD IT TO THE (null)(null)VAL(null) 2120 PRINT"COMMAND. [196]ON'T FORGET THE [158]"Q$","Q$"[153] AFTER":PRINT"THE SECONDARY ADDRESS. 2130 [153]" (null)OW WE NEED TO TELL THE DISK DRIVE 2140 PRINT"THAT THIS IS TO BE A SEQUENTIAL FILE. 2150 [141]440:[129]X[178]1029[164]1060:[139][194](X)[178]32[167]P[178]X:X[178]2000 2160 [130]:P[178]P[171]1025:[158]Q,0,P:[153]"SYS,S"Q$ 2170 [158]Q,11,3:[153]"PRINT(null)HE SYS,SPRINT TELLS THE DISK DRIVE TO CREATE"; 2180 [153]"A SYS(null)VAL(null)PRINTUENTIAL FILE. (null)OTE THAT THE SYS,S 2190 PRINT"[205][213][211][212][153] BE [201][206][211][201][196][197] THE QUOTE MARKS. 2200 [153]" (null)EXT, WE HAVE TO TELL THE DISK DRIVE 2210 PRINT"THAT WE WANT TO "Q$"WRITE TO"Q$"[153] THE FILE, 2220 [153]"NOT "Q$"READ FROM"Q$" IT. 2230 GOSUB440:SYSQ,0,P:PRINT"[155],S[158],W"Q$ 2240 SYSQ,19,3:PRINT"[153][212]HE [158],W[153] TELLS THE DISK DRIVE TO 2250 [153]"WRITEPRINT TO THE NEW FILE.":[141]440 2260 [153]"LOADPRINT":[153]" THENTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(FN THENTAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(TAB(FN 2270 PRINT" [167] [152][195]PTR[153] [165] [167] [154][196]ISK [196]RIVE[153] ( ) [165] 2280 [153]" THENTOTOTOTOTOTOTOTOFN THENTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOTOFN 2290 PRINT" [167] [165] [167] [165] 2300 [153]" THEN - - FN THEN FN 2310 PRINT" [167][164][164][164][164][164][164][164][164][165] [167][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][164][180] 2320 [153]" PRINTLEFT$ERE'S WHAT HAPPENS WHEN YOU USE THE":[153]"(null)(null)VAL(null) COMMAND.":[141]440 2330 [153]"LIST(null)(null)VAL(null) "FL$"PRINT 2340 SYSQ,13,3:PRINT"[212]HE COMPUTER LOOKS THROUGH ITS LIST" 2350 PRINT"OF OPEN FILES FOR ONE NAMED [158]"Q$FL$Q$"[153]. 2360 [153]" RIGHT$F IT DOESN'T FIND ONE, IT MAKES ONE.":[141]440 2370 [158]Q,6,5[171][195](FL$):[153]""FL$"PRINT":[141]440 2380 [158]Q,18,3:[153]"RIGHT$F IT FINDS A FILE WITH THAT NUMBER, 2390 PRINT"IT PRINTS [158]"Q$"[198][201][204][197] [207][208][197][206] [197][210][210][207][210]"Q$"[153] AND YOUR 2400 [153]"PEEKATN(null)RIGHT$LEN PROGRAM STOPS. RIGHT$F YOU TRY TO OPEN"; 2410 [153]"MORE THAN 10PRINT FILES, YOU'LL GET A 2420 PRINT"[158]"Q$"[212][207][207] [205][193][206][217] [198][201][204][197][211] [197][210][210][207][210]"Q$"[153].":GOSUB440:GOSUB150 2430 PRINT""TAB(5+LEN(FL$))"[155],8,"SA$"[153]" 2440 GOSUB150:PRINT"[206]EXT, THE DEVICE NUMBER AND THE 2450 [153]"SECONDARY ADDRESS ARE ADDED TO THE FILE":[153]"INFORMATION. 2460 GOSUB440:SYSQ,6,6:PRINT"8"SA$"[153]":GOSUB440 2470 PRINT"[155][207][208][197][206] "FL$",8,"SA$","Q$DF$",S,W"Q$"[153] 2480 [158]Q,14,3:[153]"(null)NCE THE COMPUTER FILE IS OPEN, THE 2490 PRINT"CHANNEL NUMBER AND FILE NAME ARE SENT":PRINT"TO THE DISK DRIVE.":GOSUB440 2500 GOSUB380:SYSQ,5,19:PRINT""SA$"-"DF$ 2510 SYSQ,6,25:PRINT"[150]S,W":GOSUB440:PRINT" 2520 [158]Q,18,3:[153]"(null)HE DISK DRIVE CHECKS TO SEE IF A 2530 PRINT"FILE WITH THE SAME NAME IS ALREADY ON 2540 [153]"THE DISK. RIGHT$T ALSO MAKES SURE THAT THECLOSE 2550 PRINT"CHANNEL IS UNUSED, AND A [158]"Q$"BUFFER"Q$ 2560 PRINT"[153]IS AVAILABLE TO HANDLE THE FILE.":GOSUB440:GOSUB150 2570 PRINT"[201]F AN "Q$"ERROR"Q$" OCCURS, THE DISK 2580 [153]"DRIVE ACTIVITY LIGHT BEGINS TO FLASH.":[141]440:[158]Q,13,3 2590 [153]"RIGHT$F THERE'S NO ERROR, THE ACTIVITY 2600 PRINT"LIGHT COMES ON AND STAYS ON TO INDICATE":PRINT"AN OPEN FILE ON THE DRIVE. 2610 [158]Q,3,35:[153]"DEF*":[151]198,0 2620 [141]440:[141]400:[141]390:[141]150 2630 [153]"(null)OW WE'RE READY TO STORE SOME DATA 2640 PRINT"IN THE SEQUENTIAL DISK FILE. [215]E'LL USE 2650 [153]"THREE STRINGSPRINT OF CHARACTERS. 2660 PRINT" [197]NTER UP TO 12 ALPHA 2670 [153]"CHARACTERS --->";:LL[178]12:[141]200:A$[178]XX$:[153] 2680 [153]"PRINT (null)E'LL PUT THIS TEXT IN ATN$PRINT.":[141]440 2690 [141]400:[153]"ATN$="A$:[141]440:[141]150 2700 [158]Q,10,3:[153]"PRINTVALNTER UP TO 12 ALPHA CHARACTERS 2710 PRINT"FOR [194]$[153] --->";:LL=12:GOSUB200:B$=XX$ 2720 GOSUB400:PRINT"[194]$="B$:GOSUB440 2730 SYSQ,14,3:PRINT"[153][193]ND LAST, ENTER UP TO 12 CHARACTERS 2740 [153]"FOR LEN$PRINT --->";:LL[178]12:[141]200:C$[178]XX$ 2750 [141]400:[153]"LEN$="C$:[141]440:[141]150 2760 [141]400:[153]"(null)(null)RIGHT$(null)(null)#PRINT":[158]Q,10,3 2770 [153]"PRINT(null)O SEND INFORMATION TO THE SEQUENTIAL"; 2780 [153]"FILE, WE USE THE SYS(null)(null)RIGHT$(null)(null)#PRINT COMMAND. 2790 PRINT" [196]O [206][207][212][153] LEAVE A SPACE BETWEEN THE 2800 [153]"SYS(null)(null)RIGHT$(null)(null)PRINT AND THE SYS#PRINT! RIGHT$T'S ALL ONE "Q$"WORD"Q$". 2810 PRINT" [201]T WILL BE EASIER TO REMEMBER THIS 2820 [153]"COMMAND IF YOU SAY "Q$"(null)(null)RIGHT$(null)(null) ASCRIGHT$(null)VAL"Q$"PRINT WHEN 2830 PRINT"YOU USE IT, BECAUSE THAT'S WHAT IT DOES."; 2840 PRINT" [201]T PRINTS[153] TO AN OPEN FILE[153].":GOSUB440 2850 SYSQ,0,0:SYS59903:GOSUB150 2860 PRINT"[198]IRST, WE'LL SEND THE DATA IN [158][193]$[153] TO 2870 [153]"THE SEQUENTIAL FILE.":X[178]500:[141]370 2880 [153]"(null)(null)RIGHT$(null)(null)#"FL$", ATN$":[141]380 2890 [158]Q,5,19:[153]" "A$"PRINT":X[178]1000:[141]370 2900 [158]Q,13,3:[153]"(null)HE DISK DRIVE PLACES "A$ 2910 [153]"PRINTIN THE BUFFER IT ASSIGNED TO THE FILE.":[141]440:[141]390 2920 [158]Q,16,3:[153]"(null)EXT, WE'LL SEND THE DATA IN SYSPEEK$PRINT. 2930 PRINT"[208][210][201][206][212]#"FL$", [194]$":GOSUB440:GOSUB380 2940 SYSQ,5,19:PRINT" "B$"[153]":GOSUB440 2950 SYSQ,18,3:PRINT"[212]HE DATA GOES INTO THE SAME BUFFER. 2960 [153]" ATN SYSLENLEFT$(null)$(13)PRINT (THE CODE FOR SYS<(null)VAL(null)(null)(null)(null)>PRINT) IS"; 2970 [153]"PLACED IN THE BUFFER AFTER "A$ 2980 [153]"PRINTSEPARATING IT FROM "B$"PRINT.":[141]440:[141]390 2990 [153]"(null)(null)RIGHT$(null)(null)#"FL$", LEN$ PRINT":[141]150 3000 [153]"(null)AST, WE'LL SEND THE DATA IN SYSLEN$PRINT.":[141]440:[141]380 3010 [158]Q,5,19:[153]" "C$"PRINT":[141]440:[141]390:[141]400 3020 [158]Q,12,3:[153]"(null)OW ALL THE DATA HAS BEEN SENT TO 3030 PRINT"THE DISK DRIVE. [212]HE LAST OF THE DATA 3040 [153]"IS STILL IN THE SYSBUFFERPRINT. RIGHT$T HASN'T BEEN 3050 PRINT"STORED TO DISK YET. [215]E CAN SEE THAT, 3060 [153]"BECAUSE THE ACTIVITY LIGHT ON THE DRIVE":[153]"IS STILL LIT. 3070 PRINT" [212]HE [195][204][207][211][197][153] COMMAND IS USED TO TELL 3080 [153]"THE COMPUTER AND THE DISK DRIVE THAT 3090 PRINT"WE'RE FINISHED WITH THE FILE.":GOSUB440:GOSUB150 3100 PRINT"[195][204][207][211][197] "FL$"[153]":GOSUB380:SYSQ,10,3 3110 PRINT"[193]NY DATA STILL IN THE [158]BUFFER[153] IS":PRINT"WRITTEN TO THE DISK. 3120 [153]" (null)HEN THAT'S DONE, THE ACTIVITY LIGHT 3130 PRINT"GOES OFF.":GOSUB440:SYSQ,3,35:PRINT" ":GOSUB390:SYSQ,16,3 3140 PRINT"[204]AST, THE COMPUTER [195][204][207][211][197]S[153] THE FILE IN"; 3150 PRINT"THE FILE TABLE, FREEING THE SPACE FOR A":PRINT"NEW FILE.":GOSUB440 3160 SYSQ,6,2:PRINT" - - ":GOSUB400 3170 SYSQ,19,3:PRINT"[193]ND, WE'RE DONE!":GOSUB440:GOSUB150 3180 PRINT"[217]OU CAN SEND [158]NUMERIC[153] AS WELL AS 3190 [153]"SYSSTRINGPRINT VARIABLES. ASCOR EXAMPLE: 3200 PRINT"[208][210][201][206][212]#"FL$", [218] [153](FLOATING POINT) 3210 [153]"(null)(null)RIGHT$(null)(null)#"FL$", (null)% PRINT(INTEGER) 3220 PRINT"[208][210][201][206][212]#"FL$", "Q$"[200]I"Q$" [153](LITERAL)":GOSUB440:GOSUB150 3230 PRINT"[212]HE DATA YOU'VE STORED COULD BE NAMES[153]"; 3240 PRINT"AND ADDRESSES[153] FOR A DATABASE. [201]T MIGHT 3250 [153]"BE YOUR DEFLOCATIONPRINT IN A MAZE GAME, SO YOU 3260 PRINT"CAN START FROM THE SAME PLACE AGAIN. 3270 [153]" (null)R, IT MIGHT BE THE SYSNUMBERSPRINT FROM A 3280 PRINT"CHECKBOOK BALANCING PROGRAM. 3290 [153]" RIGHT$N ANY CASE, THE DATA IS ONLY USEFUL 3300 PRINT"TO YOU IF YOU CAN [158]READ[153] IT BACK INTO 3310 [153]"YOUR PROGRAM.":[141]440:[141]150 3320 [153]"(null)VALATNSTR$PRINTING A SYS(null)VAL(null)PRINT FILE IS ALMOST THE SAME"; 3330 [153]"AS CREATING ONE. 3340 PRINT" [215]E [207][208][197][206][153] A COMPUTER [158]FILE[153], AND SPECIFY" 3350 PRINT"THE [158]DEVICE[153] AND [158]SECONDARY[153] ADRRESS.":GOSUB440 3360 PRINT"[155][207][208][197][206] "FL$",8,"SA$","Q$DF$Q$"[157][158],S,R"Q$ 3370 SYSQ,6,5-LEN(FL$):PRINT""FL$"[153]-8[153]-"SA$:SYSQ,16,3 3380 PRINT"[153][215]E'LL USE THE SAME FILE AND CHANNEL" 3390 PRINT"NUMBERS. [217]OU COULD USE DIFFERENT ONES. 3400 [153]" (null)OTICE THAT THIS TIME WE USE A SYS,RPRINT 3410 PRINT"FOR [158][210][197][193][196][153] INSTEAD OF A [158],W[153] AFTER THE":PRINT"FILE NAME.":GOSUB440 3420 GOSUB150:PRINT"[212]HE [207][208][197][206][153] COMMAND CAUSES THE DISK 3430 [153]"DRIVE TO CHECK THE DIRECTORY FOR THE 3440 PRINT"NAMED FILE. [201]F FOUND, IT [158][207][208][197][206][153]S THE 3450 [153]"FILE FOR SYSREADPRINTING, AND TURNS ON THE 3460 PRINT"ACTIVITY LIGHT.":GOSUB380:SYSQ,5,19:PRINT""SA$"-"DF$:SYSQ,6,25 3470 PRINT"[150]S,R":SYSQ,3,35:PRINT"[150]*":GOSUB440:GOSUB400:PRINT"[201][206][208][213][212]#"FL$", 3480 [141]390:[158]Q,16,3:[153]"PRINT(null)O READ THE DATA, WE USE RIGHT$(null)(null)(null)(null)#PRINT. ATNS 3490 PRINT"WITH [158][208][210][201][206][212]#[153], THERE'S NO SPACE BETWEEN 3500 [153]"RIGHT$(null)(null)(null)(null)PRINT AND #PRINT. (null)HINKSYS "Q$"INPUT FILE"Q$"PRINTWHEN 3510 PRINT"YOU USE THE COMMAND.":GOSUB440:PRINT"[201][206][208][213][212]#"FL$", [193]$":GOSUB150 3520 PRINT"[153][212]O READ THE DATA SUCCESSFULLY, YOU 3530 [153]"MUST KNOW THE SYSTYPEPRINT, DEFSEQUENCEPRINT, AND SYSNUMBERPRINT"; 3540 [153]"OF VARIABLES STORED IN THE FILE. 3550 PRINT" [201]F YOU TRY TO READ A [158]STRING[153] INTO 3560 [153]"NUMERIC VARIABLE, SUCH AS ATNPRINT, YOU'LL 3570 PRINT"YOU'LL GET A [150][212][217][208][197] [205][201][211][205][193][212][195][200][153] ERROR FROM 3580 [153]"PEEKATN(null)RIGHT$LEN.":[153]" (null)INCE WE KNOW THAT WE'VE STORED 3590 PRINT"A [158]STRING[153] AS THE FIRST VARIABLE, WE'LL 3600 [153]"USE ATN$PRINT AS THE VARIABLE NAME FOR THE 3610 PRINT"[158][201][206][208][213][212]#[153] COMMAND.":GOSUB440:GOSUB150 3620 PRINT"[215]HEN THE DISK DRIVE RECEIVES THE 3630 [153]"SYSRIGHT$(null)(null)(null)(null)#PRINT COMMAND, IT READS THE DATA IN THE"; 3640 [153]"FILE UP TO THE SYSLENLEFT$(null)$(13)PRINT, AND SENDS 3650 PRINT"IT TO THE COMPUTER.":GOSUB440:GOSUB380:SYSQ,5,19:PRINT""A$:GOSUB420 3660 GOSUB410:PRINT"[201][206][208][213][212]#"FL$", [193]$ [158] <-- [193]$="A$:GOSUB440:GOSUB390:SYSQ,15,3 3670 PRINT"[153][217]OUR PROGRAM CAN NOW USE THE VALUE 3680 [153]"IN ATN$PRINT IN ANY WAY YOU CHOOSE.":[141]440:[141]400:[141]150 3690 [153]"(null)E GET THE TWO REMAINING STRINGS IN 3700 PRINT"THE SAME WAY. [206]OTE THAT THE [158]NAME[153] OF 3710 [153]"THE VARIABLE DOESN'T MATTER, AS LONG AS 3720 PRINT"THE TYPE[153] IS CORRECT.":GOSUB440:PRINT"[201][206][208][213][212]#"FL$", [216]$":GOSUB380:GOSUB390 3730 SYSQ,5,19:PRINT""B$:GOSUB410:PRINT"[201][206][208][213][212]#"FL$", [216]$ [158] <-- [216]$="B$:GOSUB440 3740 GOSUB400:PRINT"[201][206][208][213][212]#"FL$", [209][209]$":GOSUB380:GOSUB390 3750 SYSQ,5,19:PRINT""C$:GOSUB410:PRINT"[201][206][208][213][212]#"FL$", [209][209]$ [158] <-- [209][209]$="C$:GOSUB440 3760 GOSUB400:GOSUB390:PRINT"[195][204][207][211][197] "FL$:SYSQ,15,3 3770 PRINT"[153][212]HE [158][195][204][207][211][197][153] COMMAND CLOSES THE FILE 3780 [153]"ON THE DISK DRIVE AND REMOVES THE 3790 PRINT"COMPUTER FILE FROM THE FILE TABLE.":GOSUB440:GOSUB380:SYSQ,3,35:PRINT" " 3800 X=500:GOSUB370:GOSUB390:SYSQ,6,2:PRINT" - - ":GOSUB400:GOSUB440 3810 GOSUB400:GOSUB150:PRINT"[153][207]NE POSSIBLE PROBLEM WITH USING 3820 [153]"SYSRIGHT$(null)(null)(null)(null)#PRINT IS THE DEFLENGTHPRINT OF STRINGS THAT 3830 PRINT"MAY BE STORED ON THE DISK. [211]TRINGS CAN 3840 [153]"BE UP TO 255PRINT CHARACTERS LONG. 3850 PRINT" [217]OU [158]CONCATENATE[153] OR [150]ADD[153] STRINGS 3860 [153]"TOGETHER TO GET LONGER STRINGS.":[153]"(null)$=ATN$+PEEK$+LEN$+STR$$: (null)(null)RIGHT$(null)(null)#"FL$", (null)$ 3870 GOSUB440:SYSQ,20,3:PRINT"[153][201]F [158][193]$[153], [158][194]$[153], [158][195]$[153], AND [158][196]$[153] ARE EACH 3880 [153]"60PRINT CHARACTERS LONG, SYS(null)$PRINT WILL HAVE A 3890 PRINT"LENGTH OF [150]240[153]!":GOSUB440:GOSUB150 3900 PRINT"[158][201][206][208][213][212]#[153] HAS A LIMIT OF 80[153] CHARACTERS. 3910 [153]"(null)HAT'S BECAUSE THE COMPUTER READS THE 3920 PRINT"DATA FROM THE DISK INTO THE SAME MEMORY 3930 [153]"AREA THAT'S USED FOR SCREENPRINT INPUT. 3940 PRINT" [212]HIS MEMORY AREA, OR [158]BUFFER[153] HOLDS 3950 [153]"ONLY 80PRINT CHARACTERS, SINCE THAT'S THE 3955 PRINT"MAXIMUM SIZE OF A [150][195]64[153] SCREEN LINE. 3960 [153]"((null)R 160PRINT CHARACTERS ON A DEFLEN128PRINT).":[141]440:[158]Q,19,3 3970 [153]"(null)O, HOW DO WE SYSREADPRINT A FILE IF WE 3980 PRINT"DON'T KNOW HOW BIG THE STRINGS ARE, OR 3990 [153]"HOW SYSMANYPRINT THERE ARE?":[141]440:[153]"CHR$VAL(null)#"FL$:[141]150 4000 [153]"PRINT(null)E USE THE CHR$VAL(null)#PRINT (SYSGET FILEPRINT) COMMAND. 4010 PRINT" [201]T'S SIMILAR TO [158][201][206][208][213][212]#[153] BECAUSE IT 4020 [153]"RETRIEVES DATA FROM AN OPEN SYSFILEPRINT. 4030 PRINT" [201]T'S ALSO SIMILAR TO [150][199][197][212][153], BECAUSE IT 4040 [153]"RETRIEVES ONLY DEFONEPRINT CHARACTER AT A TIME.":[141]440:[141]150 4050 [153]"CHR$VAL(null)#PRINT SHOULD ONLY BE USED WITH A 4060 PRINT"[158]STRING[153] VARIABLE NAME.":PRINT" [212]O MAKE A [158]STRING[153] IN COMPUTER 4070 [153]"MEMORY USING CHR$VAL(null)#PRINT, YOU HAVE TO DEFASSEMBLEPRINT 4080 PRINT"THE STRING CHARACTER BY CHARACTER.":GOSUB440:GOSUB400 4090 SYSQ,6,5-LEN(FL$):PRINT""FL$"8"SA$ 4100 GOSUB150:PRINT"[157][157][157]100 [216][216]$="Q$Q$": [150][210][197][205] [195][204][197][193][210] [216][216]$ 4110 [153]"110 CHR$VAL(null)#"FL$", ATN$: (null)=(null)(null) 4120 PRINT"120 [201][198] [193]$="Q$Q$" [212][200][197][206] [193]$=[195][200][210]$(0) 4130 [153]"130 RIGHT$ASC ATN$=LENLEFT$(null)$(13) CHR$(null)(null)(null) 200 4140 PRINT"140 [216][216]$=[216][216]$+[193]$ 4150 [153]"150 RIGHT$ASC (null)=0 CHR$(null)(null)(null) 110 4160 PRINT"200 [150][210][197][205] [208][210][207][199][210][193][205] [195][207][206][212][201][206][213][197][211] 4170 [153]" PRINTLEFT$ERE'S A PROGRAM THAT DEFASSEMBLES 4180 PRINT"[216][216]$[153] FROM A DISK DATA FILE. [204]ET'S SEE 4190 [153]"HOW IT WORKS.":[141]440:X[178]18:[141]160 4200 [153]"START --> (null)(null)$="Q$Q$" SYS(NULL)PRINT":[158]Q,18,3 4210 [153]" (null)INE 100PRINT CLEARS (null)(null)$PRINT BY MAKING IT 4220 PRINT"[158]NULL[153], EQUAL TO NOTHING." 4230 PRINT" [212]HEN WE START READING THE INFORMATION"; 4240 PRINT"ON THE DISK DRIVE.":SYSQ,5,19:PRINT"[213][208][212][201][205][197][158]R[146]" 4250 SYSQ,6,25:PRINT"[158]^[164][164][195][200][210]$(13)":GOSUB440:X=18:GOSUB160:SYSQ,18,3 4260 PRINT"[212]HE STRING IN THIS DISK FILE IS THE 4270 [153]"NAME (null)(null)(null)RIGHT$(null)VALPRINT FOLLOWED BY THE SYS<(null)VAL(null)(null)(null)(null)>PRINT 4280 PRINT"CHARACTER.":PRINT" [204]INE 110[153] [150]GET[153]S THE FIRST CHARACTER 4290 [153]"AND PUTS IT IN THE VARIABLE ATN$PRINT.":[141]440:[141]380:[141]420:[141]410 4300 [153]"PASS 1 -> (null)(null)$="Q$Q$;:[153]" SYS(ATN$=(null))":[158]Q,5,19:[153]" ":[141]440 4310 [141]420:X[178]18:[141]160:[158]Q,18,3:[153]"PRINT(null)INE 110PRINT ALSO SETS THE VARIABLE SYS(null)" 4320 [153]"PRINTEQUAL TO THE RESERVED VARIABLE SYS(null)(null)PRINT. 4330 PRINT" [215]E'LL SEE WHAT THAT DOES IN A MOMENT.":GOSUB440:X=18:GOSUB160 4340 SYSQ,18,3:PRINT"[204]INE 120[153] CHECKS FOR A [150]BUG[153] IN THE [158][199][197][212]#[153]"; 4350 PRINT"COMMAND. [201]F THE CHARACTER IN THE FILE 4360 [153]"IS A DEFBINARYPRINT ZERO (NOT THE SYSATN(null)LENRIGHT$RIGHT$PRINT 4370 PRINT"CHARACTER 0[153]), [158][199][197][212]#[153] RETURNS A NULL":PRINT"STRING.":GOSUB440:X=18:GOSUB160 4380 SYSQ,18,3:PRINT"[211]O, WE TEST FOR THE NULL STRING, AND 4390 [153]"IF WE FIND ONE, CHANGE IT TO SYSLENLEFT$(null)$(0)PRINT.":[141]440:X[178]18:[141]160 4400 [158]Q,18,3:[153]"(null)INE 130PRINT CHECKS TO SEE IF WE'RE AT 4410 PRINT"THE END OF THE STRING, [158][193]$=[195][200][210]$(13)[153]. [201]F 4420 [153]"WE ARE, (null)(null)$PRINT IS COMPLETE, AND WE GO ON 4430 PRINT"WITH THE PROGRAM.":GOSUB440:X=18:GOSUB160:SYSQ,18,3 4440 PRINT"[204]INE 140[153] ADDS THE VALUE IN [158][193]$[153] TO 4450 [153]"(null)(null)$PRINT.":[141]440 4460 [153]"PASS 1 -> (null)(null)$="Q$"(null)"Q$;:[153]" SYS(ATN$=(null))":[158]Q,5,19:[153]" ":[141]440 4470 X[178]18:[141]160:[158]Q,18,3:[153]"(null)(null)PRINT IS A SPECIAL VARIABLE RESERVED BY 4480 PRINT"[194][193][211][201][195] TO HOLD INFORMATION ABOUT [158][201]/[207][153] OR 4490 [153]"INPUT/OUTPUT ACTIVITY. (null)HILE WE'RE 4500 PRINT"SUCCESSFULLY READING THROUGH A DISK FILE"; 4510 PRINT"[211][212][153] WILL HAVE A VALUE OF [158]ZERO[153].":GOSUB440 4520 X=18:GOSUB160:SYSQ,18,3:PRINT"[193]S SOON AS WE READ THE LAST CHARACTER"; 4530 PRINT"IN THE FILE, [211][212][153] CHANGES ITS VALUE TO 4540 [153]"SYS64PRINT. (null)INE 150PRINT CHECKS VARIABLE (null)PRINT, WHICH 4550 PRINT"WE'VE SET EQUAL TO [211][212][153]. [201]F IT'S STILL 4560 [153]"SYSZEROPRINT, WE'RE NOT AT THE END OF THE FILE.":[141]440:X[178]18:[141]160 4570 [158]Q,18,3:[153]"(null)OW WE'LL SYSCHR$VAL(null)#PRINT THE REST OF THE":[153]"STRING.":[141]440 4580 [131] "(null)","(null)(null)","(null)","(null)(null)(null)","RIGHT$","(null)(null)(null)RIGHT$","(null)","(null)(null)(null)RIGHT$(null)","VAL","(null)(null)(null)RIGHT$(null)VAL" 4590 [129]Z[178]2[164]6:[141]380:[141]420:[141]410 4600 [135]Z$,ZZ$:[153]"PASS"Z"-> (null)(null)$="Q$ZZ$Q$; 4610 [153]" SYS(ATN$="Z$")":[158]Q,5,18[170]Z:[153]" ":[141]420:X[178]700:[141]370:[130] 4620 [141]380:[141]420 4630 [141]410:[153]"PASS 7 -> (null)(null)$="Q$ZZ$Q$;:[153]" SYS(ATN$=LENLEFT$(null)$(13))":[141]390:[141]440 4640 [141]400:[141]150:[153]"(null)OU CAN USE SYSCHR$VAL(null)#PRINT AND SYS(null)(null)PRINT TO READ AND 4650 PRINT"PRINT TO THE SCREEN ANY SEQUENTIAL FILE:":PRINT"250 [199][197][212]#101,[193]$ 4660 [153]"260 (null)(null)RIGHT$(null)(null) ATN$; PRINT<--DON'T FORGET THE SYS; 4670 PRINT"270 [201][198] [211][212]=0 [199][207][212][207] 250":GOSUB440 4680 PRINT"[147][153] [211]O FAR WE'VE ASSUMED THAT THERE WERE 4690 [153]"NO SYSDISK ERRORSPRINT AS WE WORKED WITH FILES. 4700 PRINT" [201]N THE REAL WORLD, THINGS WON'T BE 4710 [153]"QUITE SO ERROR FREE. (null)OU MAY GET A 4720 PRINT"[158][198][201][204][197] [206][207][212] [198][207][213][206][196][153] OR [158][196][210][201][214][197] [206][207][212] [210][197][193][196][217][153] 4730 [153]"ERROR.":[153]" (null)HE DISK DRIVE SENDS ERROR MESSAGES 4740 PRINT"IN THIS FORMAT:":PRINT"62 [198][201][204][197] [206][207][212] [198][207][213][206][196] 18 00" 4750 PRINT "[153] [212]HE [158]"Q$"62"Q$"[153] IS THE [150]ERROR NUMBER[153]. [217]OU'LL"; 4760 PRINT"FIND THE POSSIBLE ERROR NUMBERS LISTED 4770 [153]"IN YOUR DISK DRIVE MANUAL. (null)HE NUMBER 4780 PRINT"IS FOLLOWED BY A [158]STRING[153] THAT DESCRIBES 4790 [153]"THE ERROR.":[153]" (null)HE LAST TWO NUMBERS ARE THE TRACK 4800 PRINT"AND SECTOR NUMBERS WHERE THE [158]ERROR[153] 4810 [153]"OCCURED.":[141]440:[153]"LOAD (null)OU SHOULD ALWAYS CHECK FOR ERRORS 4820 PRINT"WHEN WORKING WITH DISK FILES. [212]O DO 4830 [153]"THAT, SYS(null)(null)VAL(null)PRINT A FILE TO THE SYSCOMMAND 4840 PRINT"CHANNEL[153] ON THE DISK DRIVE [194][197][198][207][210][197][153] YOU 4850 [153]"(null)(null)VAL(null) DEFANYPRINT OTHER FILES!":[153]"100 (null)(null)VAL(null) 15,8,15 4860 PRINT"[153] [208]ROGRAMMERS USUALLY USE [158]COMPUTER 4870 [153]"FILE #15PRINT. (null)OU MUSTPRINT USE SYSDISK CHANNEL 4880 PRINT"#15[153], THE COMMAND CHANNEL.":PRINT" [212]HEN, AFTER YOU [207][208][197][206] A FILE, READ 4890 [153]"THE COMMAND CHANNEL:":[153]"150 RIGHT$(null)(null)(null)(null)#15, (null), (null)$" 4900 [153]"160 RIGHT$ASC (null)>19 (null)LEFT$VAL(null) (null)(null)RIGHT$(null)(null) (null)$: LEN(null)(null)(null)VAL15: VAL(null)STR$":[141]440:[158]Q,18,3 4910 [153]"STR$ISK ERRORS START WITH SYS20PRINT, SO ANY 4920 PRINT"NUMBER LESS THAN [158]20[153] MEANS IT'S ALL 4930 [153]"RIGHT TO CONTINUE. (null)HEN YOU END YOUR 4940 PRINT"PROGRAM, [158][195][204][207][211][197] 15[153] LAST, SINCE CLOSING 4950 [153]"THE COMMAND CHANNEL CLOSES ALL OTHERS.":[141]440 4960 [153]"LOAD (null)E'VE JUST HINTED AT THE THINGS YOU 4970 PRINT"CAN DO CREATING AND READING DISK FILES. 4980 [153]" (null)N THIS SYS(null)P(null)IMEPRINT DISK, YOU'LL FIND 4990 PRINT"[198][201][204][197] [210][197][193][196][197][210][153], WHICH USES THE TECHNIQUES 5000 [153]"WE'VE LOOKED AT HERE. (null)OU CAN DEF(null)RIGHT$(null)(null)PRINT AND 5010 PRINT"CHANGE IT TO SUIT YOUR NEEDS.":PRINT" [201]F YOU'D LIKE TO LEARN MORE ABOUT 5020 [153]"CREATING AND USING DISK FILES, LOOK FOR 5030 PRINT" 1541 [213][211][197][210]'[211] [199][213][201][196][197]":PRINT" BY [196]R. [199]ERALD [206]EUFELD":PRINT" ([194]RADY) 5040 [153]"PRINT (null)HE BOOK SHOULD BE AVAILABLE THROUGH 5050 PRINT"ANY MAJOR BOOKSTORE.":PRINT" [215]E HOPE YOU'VE HAD FUN SEEING HOW TO 5060 [153]"MAKE SYSDISK FILESPRINT WORK FOR YOU!":[158]Q,23,3 5070 [153]"LIST (null)RESS ATN(null)(null) KEY TO RETURN TO (null)P(null)IME ":[146]198,1:[137]490