L%hh LHH` X% " ӠӠΠǠ ˮԠˠǠӬĠӠ٠٠ϠŮ+JJJJ ,,,L Lک ٥ҥ>ӥ? ( ㆭ  ؆` | A""""""QQQYV <"<Q '(h((QQQ`@GHOHO $"!$q}T@` `@@``p0 8p@@`00 |0@` `pppPox`D3 < p?|@@@|@`f ppn|>0p  qcs6<, 3['Nxxxpp0` ```@vl  ?`@:3q  AcqcCyO@  0p`@@q @p?|`3cC ? ?>|xp`p`@Acwsssssss__????????~^^ ?~~~~~~~?>~||xpp`@~| xyy{~|@`pp xpp`@yyyyyyyx~ ~x`|xpxqa` cqx|||||||cCC?>>>??<<|||~?`ppxx||<||xxpp`|||||||| |?|p`@@@@`p|? OOGgccqpxsssssssppxxx|<<~?>~||xxxxppp```@@@`?~|x|~|||||||p@@p|~><|xp`@>|x|xpx}yyyyyyyAA?~|xpp`ppx|~? ?? 33@``@@glloLL LlOgloloG @`@glolo@@gLLL GaamGGlg`GGlg`G  xL| x@@xMLLxMyyM MyxAxMx|Yq @lllLglllgG LlL`@GLOLo033366m~0>3>33~G<`G}rccb``acccq{{{{8008????~ |lL COoooog CgoooocCFFLLXXPpqa88`}}}}>????~ | ~FCCFL ____|GG|GGccp{{{{ ;1q``qp`aas{{{{8008 0y| |}}}}AAQg((h' $C@0j ed`y < I1@@q q s8EE9EE8> ` `$DC0ANPQN@'h(' WPG((H@stq q8AyEx:NPQ@GhHHG#$p# @ (*Y9AyEy: QQQO~C%%C~_DDD qAAAaq9`ppxxx|xxx|AsGN8088 CcˆʎõĵL õ ĵµ aµ`` L̦µ_bJLuLz`  ȟ QlXJ̥KlV  ȟ QlV eօ3L e3L &RL &QL d L4 Ne)n `@-eff L f`L . tQLѤ LҦL` OPu d L Ne)noon 8ɍ` ^f\õL ^NR  RΩLҦ)\Z ʽ LHv 3h`0h8` [L NС õ`A@` ŵL^L iõ`  \ 濭0 \  ȟ Q ^\lZl^?cqH şch`fhjõĵ@OAP`u@`@&`QR`E Ls  @DAE@u`8` %@ @A@`@`@A`Mµ ) LЦ`8@AWc@8@-@HAȑ@hHȑ@ȑ@hHȑ@Ȋ@ch8&ȑ@Hȑ@Ah@LHȑ@ȑ@ htphso`hMhL`9V8U897T6S67`INILOASAVRUCHAIDELETLOCUNLOCCLOSREAEXEWRITPOSITIOOPEAPPENRENAMCATALOMONOMOPRINMAXFILEFINBSAVBLOABRUVERIF!pppp p p p p`" t""#x"p0p@p@@@p@!y q q p@  LANGUAGE NOT AVAILABLRANGE ERROWRITE PROTECTEEND OF DATFILE NOT FOUNVOLUME MISMATCI/O ERRODISK FULFILE LOCKESYNTAX ERRONO BUFFERS AVAILABLFILE TYPE MISMATCPROGRAM TOO LARGNOT DIRECT COMMANč$3>L[dmx- ( t Ϡ@跻~!Wo*9~~~~ɬƬ~_ j ʪHɪH`Lc (L ܫ㵮赎 ɱ^_ J QL_Ls贩紎 DǴҵԵƴѵӵµȴ 7 ַ :ŵƴѵǴҵȴµ納贍﵎ٵ്ᵭⳍڵL^ѵ-I `  4 ò-յ!  8صٵ紭ﵝ 7L (0+BC  7L HH`LgL{0 HH` õL H hBL BH [ h`Lo õ ڬL B ڬ LʬH hB@ յյ [L (ȴ) ȴ 7L L ( L (ȴL{ƴѵ洩ƴǴҵ 7 ^* B0 HȱBh ӵԵ 8 L8 ݲ` ܫ  / / ED B / / ]ƴS0Jȴ ȴ)  紅D贅E B ƴ  / 0L Ν `HD٤DEEhiHLGh ` ŵBѵ-` ѵB-` ܫ XI볩쳢8 DH E𳈈췍Ȍ X0 · JLǵBȵC`,յp` 䯩 R-յյ`յ0` K R-յյ`ɵʵӵԵ` 4 K ( ѵҵLBȱBL8` DBHBH : ַ޵BȭߵBhhӵԵ RBܵmڵ޵ȱBݵm۵ߵ` 䯩LR˵̵ֵ׵`êĪLR E( 8` R` ELRŪƪ`췌 յյI뷭鷭귭ⵍ㵍跬ª 뷰` Lf ݵܵߵ޵ ^`8ܵ i B8` 4L ֵȱB׵ ܯ䵍൭嵍 ` DȑB׵Bֵ  ַ յյ`굎뵎쵬 뵎쵌``õĵBCõĵ`µµ`L õBĵCصص Qƴ0"Bƴ 󮜳` 0۰ϬBƴ8`i#`ЗLw!0>ﵭ` m ﳐ 7i볍 8 ЉLw`H h ݲL~ `浍국䵍뵩嵠Jm赍嵊mjnnn浈m浍浭m䵍䵐`"L ŵ8ŵH ~(` d ֠z# u`ARE SLAVE),"z"ARE LOST WHEN THE DISKETTE IS UPDATED.":10000:5)"INITIALIZATION CONT'D"::" THE PATCHES TO MAKE TO DOS, PRIOR TO":"INITIALIZING A DISKETTE, ARE THESE :"c6)"@ $AEB5 CHANGE TO $90":6)"@ $B3EF CHANGE TO $24":6)"@ $BEFE COCATE ITSELF.":" THE UPDATE PROGRAM WORKS BY COPYING":"THE MASTER DOS FROM THE MASTER DISK TO" f"THE SLAVE DISKETTE TO BE UPDATED. THUS":"IT OVERWRITE THE DOS RESIDENT ON THE":"DISKETTE. PATCHES MADE TO A SLAVE DISK-":"ETTE (ALL DOS'S IM MEMORY ENT THING AL-">"TOGETHER. WHEN BOOTED, IT RELOCATES A":"PORTION OF ITSELF INTO AVAILABLE MEMORY":"THE VERSION NOW IN MEMORY IS A SLAVE":"VERSION AND IS UNABLE TO FIT INTO ANY"bR"MEMORY LESS THAN THE ONE IT WAS BOOTED":"ON. IT CAN NO LONGER RELN MEMORY ONTO IT. THIS":"SAME DOS WILL BE BOOTED INTO THE SYSTEM":"WHEN THE DISKETTE IS BOOTED. THE DOS IN":"MEMORY IS A SLAVE DOS, AND MATCHES WHAT""WAS ON DISKETTE. SO FAR SO GOOD.":10000:5)"INITIALIZING, CONT'D"::"A MASTER DISK IS A DIFFERE, BUT A DISKETTE":"INITIALIZED FROM DOS BOOTED FROM THE""UPDATED DISKETTE WILL NOT HAVE THE NEW":"DOS ON IT, NOR WILL IT HAVE 36 TRACKS."::" IF THIS SOUNDS FUZZY, WE CAN PUT IT":"THIS WAY : A SLAVE DISKETTE IS MADE BY""COPYING THE DOS I FOLLOWING PATCHES TO":"DOS, A DISKETTE CAN BE SET UP WITH 35":"TRACKS FROM THE START. THIS ONLY MAKES":"A SLAVE DISKETTE; HOWEVER, SINCE THE":"UPDATE PROGRAM WILL PUT THE OLD DOS ON":"THE 36 TRACK DISKETTE. ALL 36 TRACKS":"WILL STILL BE AVAILABLSTARTS @ $9500, IS 256":"BYTES LONG AND HAS A BUFFER STARTING AT":"$$9400, ALSO 256 BYTES LONG.""THIS PUTS IT JUST BELOW DOS, SO":"BEWARE OF OVERWRITING ANYTHING ELSE":"STORED THERE !":10000:5)"INITIALIZING A NEW DISK":" BY MAKING THES "RC  X891,0:36892,0:36893,0636894,0:36895,0:36896,0Y36897,1:36898,239:36899,216_hw CHECK RETURN CODERC(IOB13)RC0ı20:5:"AN ERROR HAS OCCURRED WHILE"21:5:"READING THE DISKETTE"22:5:"THE RETURN CODE I0:36868,32:36869,217636870,3:36871,96:36872,0V36873,0:36874,1:36875,96v36876,1:36877,0:36878,1736879,0:36880,32:36881,14436882,0:36883,145:36884,036885,0:36886,1:36887,036888,0:36889,96:36890,136DOM ACCESS"8 "TEXT FILE.)"(B 3000. i 24:1::"PRESS ANY KEY TO CONTINUE OR ESC TO END";: A$:(A$)27ė:: 11:1:958  LOAD RWTS JUMP INSTRUC AND IOB AND DCT AT $900036864,169:36865,144:36866,16036867,1YPE OF FILE,">"THE LENGTH (INCLUDING THE T/S LIST), THE";o"ADDRESS OF THE T/S LIST, AND WHETHER THE"; "FILE IS CURRENTLY ACTIVE, OR HAS BEEN" "DELETED." $ "(NOTE: THIS PROGRAM WILL NOT IDENTIFY" . "ALL SEGMENTS USED BY A RAN ORDER. ONLY";?"THE ORDER OF THE ENTRIES IN THE T/S LIST";T"IS IMPORTANT."^3000"THIS PROGRAM READS THE T/S LIST OF A""FILE, AND PRINTS A LIST OF EACH TRACK/""SECTOR USED BY THE FILE." "IT WILL ALSO TELL YOU THE TEED TO FIND ENOUGH CONTIGUOUS"Mp"STORAGE TO STORE A FILE. IT CAN USE ANY"~z"UNUSED TRACK/SECTOR ON THE DISK, AS LONG";"AS IT KEEPS A POINTER TO IT ON THE T/S""LIST. THE SECTORS ON THE DISK DON'T EVEN";"HAVE TO BE IN ANY PARTICULAR FROM"4*"YOUR FILE. INSTEAD, IT CONTAINS A LIST"e4"OF ALL THE TRACK/SECTOR ADDRESSES OF THE";>"DATA SEGMENTS WHICH MAKE UP YOUR FILE,"H"IN THEIR PROPER SEQUENCE."R3000\"BY STORING ITS FILES THIS WAY, THE APPLE";f"DOES NOT N15.)3000;"THE CATALOG CONTAINS A POINTER TO THE"] "FIRST SECTOR OF EACH FILE."c"THE FIRST SECTOR OF ANY FILE IS CALLED""THE TRACK/SECTOR LIST (OR THE T/S LIST""FOR SHORT). "THE T/S LIST DOES NOT CONTAIN DATA0 FOR I = 1 TO 15")!"40 PRINT I, I*I":!""50 NEXT I"H!,"60 END"Y!6"SAVE PGM1"j!@"HOME:LIST"!J"FOR D=1 TO "DD" : NEXT D"!T"NEW"!^"100 HC=1:HGR:HCOLOR=HC:HPLOT140,80"!h"110 FOR I=1 TO 50""r"120 X=INT(RND(1)*280):Y=INT(RND(1LIST EACH OF THEM. THEN A CATALOG WILL BE PRODUCED TO PROVE THAT THE PROGRAMS WERE SAVED.":30 :A$" NOW CREATING THE EXEC FILE .....":30 300: OPEN EXEC FILE "NEW" "10 TEXT : HOME" "20 PRINT "Q$"NUMBER SQUARE"Q$!"3RINT "Q$"10 PRINT "Q$";Q$;"Q$"HELLO THERE"Q$";Q$"::" WILL PRODUCE A PROGRAM STATEMENT LIKE:"::"10 PRINT "Q$"HELLO THERE"Q$::"WHEN EXEC'D INTO MEMORY."90:190` :2:15:"FRAME # 9":5:A$" THE NEXT EXAMPLE WILL CREATE TWO SIMPLEPROGRAMS AND , YOU WILL NEED TO USE A VARIABLE.":30790:190:2:15:"FRAME # 9":5:A$" IN THIS CASE WE WILL USE Q$=CHR$(34). THIS SETS THE VARIABLE Q$ TO A DOUBLE QUOTE. TO USE IT IN AN EXEC FILE:":30:Q$(34):" A PROGRAM LINE SUCH AS:"::"P30:A$"CREATE THE EXEC FILE. THESE VARIABLES MIGHT BE LIMITS OR FILENAMES OR":30*A$"ANYTHING ELSE THAT MIGHT BE USED TO CUSTOMIZE THE PROGRAM TO BE CREATED.":30::A$" IF A PRINT STATEMENT THAT NEEDS QUOTES NEEDS TO BE INCLUDED IN THE PROGRAMGRAMS CAN ACTUALLY BE WRITTEN BY EXEC FILES. THIS CAN BE DONE UNDER THE CONTROL OF THE PROGRAM CREATING THE EXECFILE.":30:TA$" FOR EXAMPLE YOU COULD INPUT THE VALUES OF SOME VARIABLES WHICH COULD BE USED INTHE PRINT STATEMENTS THAT ARE USED TO":N EXEC FILE("CATALOG"12"LIST 1320-1390"Q<"FOR D=1 TO "DD" : NEXT D"\F"NEW"hP"LIST"Z"LOAD EXEC.FILE.TUTORIAL"d"RUN"n"8"x350:400D$;"MONICO":D$;"EXEC TUT":D$;"NOMONICO"::2:15:"FRAME # 8":5:A$" PROSUPPLY THE NEXT FRAME NUMBER.":30::A$" THIS IS DONE BECAUSE THE STATEMENT":30A$"THAT EXEC'S THE FILE MUST BE THE LAST STATEMENT IN THE PROGRAM, FOLLOWED BY AN END STATEMENT":30::A$" NOW CREATING THE EXEC FILE .....":30 300: OPE:15:"FRAME # 7":5:A$" THIS IS WHAT THE EXEC FILE CREATOR LOOKS LIKE:":30::13201390::400:A$" NOTICE THAT YOU CAN HAVE MULTIPLE STATEMENTS ON EACH LINE. ALSO NOTE":30S A$"THAT THE LAST THREE LINES WILL LOAD AND RUN THIS PROGRAM, AND ALOG, LIST A PORTION OF THIS PROGRAM, THEN":30:A$"WILL ERASE THE PROGRAM FROM MEMORY, DO A LIST TO SHOW THAT IT IS GONE AND":30A$"FINALLY RELOAD THE PROGRAM AND RUN IT SUPPLYING THE NEXT FRAME NUMBER TO THE PROGRAM.":3090:190:2NTROL OF THE APPLE AT THE TIME AND WILL SUPPLY THE FRAME # FOR YOU.":30X90:190:2:15:"FRAME # 6":5:A$" THE FIRST EXAMPLE WILL SHOW HOW COMMON DOS COMMANDS CAN BE IMBEDDED IN AN EXEC FILE.":30:A$" THE EXEC FILE WILL PRODUCE A CATRITTEN BY :":10)"HARRY OWEN JONES":10)"MEMBER #62":10)"APPLE-CAN USER'S GROUP":10)"TORONTO, ONT.":"'23:"TYPE A KEY TO CONTINUE . . .";:A$:A$::2:R WORKINGS OF DOS.":!" SOME IDEAS AND LOCATIONS WERE FOUND":"IN AN ARTICLE BY CRAIG CROSSMAN IN THE":"VOLUME 2 NO 6 OF NIBBLE MAGAZINE. AGAIN":"THIS IS A GOOD PUBLICATION TO HAVE FOR"k"."THOSE FEW WHO DO NOT YET KNOW ABOUT IT."::"PROGRAMS W10000:15)"CREDITS"::" SOME OF THE LOCATIONS USED HERE CAME":"FROM THE BOOK 'BENEATH APPLE DOS' BY"!"DON WORTH AND PIETER LECHNER. THIS IS":"PUBLISHED BY 'QUALITY SOFTWARE' AND IS":"QUITE GOOD FOR THOSE WHO WISH TO KNOW":"MORE ABOUT THE INNE). FROM NOW""ON, ALL DISKS INITIALIZED WITH THIS":"VERSION OF DOS, WILL HAVE 36 TRACKS.":" THIS IS GIVEN AS AN ALTERNATIVE TO THE":"PROGRAM DISCUSSED EARLIER. IT DOES NOT"j "FREE UP THE AREA USED BY DOS. IT JUST":"MAKES TRACK #35 AVAILABLE.":HANGE TO $24"::" THESE CHANGES AFFECT THE INITIALIZ-":"ION ROUTINE OF DOS ONLY. YOU WILL HAVE" "TO DIP INTO THE MONITOR TO MAKE THEM.":"FORMAT FOR A MEMORY CHANGE WHEN IN THE":"MONITOR IS '
:' ALL":"IN HEX (IE. AS GIVEN ABOVE PGM2 AS THOUGH YOU DID IT YOURSELF. YOU MUST BE CAREFUL":301V A$"THAT THE TWO PROGRAMS DO NOT HAVE OVERLAPPING LINE NUMBERS OR THE RESULTS WILL BE UNPREDICTABLE AT LEAST.":30:90:1902` :2:15:"FRAME # 18":5:A$" DUE TO THE FACT THAT THPGM1 IN TEXT FILE FORMAT LET'S COMBINE IT WITH PGM2 AND CREATE A NEW PROGRAM, PGM3. THIS IS":30?1L A$"ACCOMPLISHED BY LOADING PGM2 THEN 'EXEC'ING THE TEXT VERSION OF PGM1.":30::A$" THIS HAS THE EFFECT OF 'WRITING' THE LINES OF PGM1 INTOPGM.TX"Q$/"7 TEXT:END">/"60 FOR D=1 TO "DD" : NEXT D"I/"RUN"X/ "CATALOG"w/ "LOAD EXEC.FILE.TUTORIAL"/ "RUN"/$ "17"/. 350:400/8 D$;"MONICO":D$;"EXEC TUT":f0B D$;"NOMONICO"::2:15:"FRAME # 17":5:A$" NOW THAT WE HAVE O THIS PROGRAM.":30:P.A$" NOW CREATING THE EXEC FILE ......":30:300a."LOAD PGM1"u."1 D$=CHR$(4)"."2 POKE 33,30"."3 PRINT D$;"Q$"OPEN PGM.TX"Q$."4 PRINT D$;"Q$"WRITE PGM.TX"Q$."5 LIST 10-" /"6 PRINT D$;"Q$"CLOSE -":" 6 PRINT D$;"Q$"CLOSE PGM.TX"Q$:" 7 TEXT:END":" RUN":-A$" THIS WILL LOAD PGM1, INSERT LINES 1-7 AND RUN THEM.":30:90:190.:2:15:"FRAME # 16":5:A$" THE NEXT EXAMPLE WILL DO JUST THAT, THEN PRODUCE A CATALOG AND RETURN T30::90:190,p:2:15:"FRAME # 15":5:A$" THE BASIC EXEC FILE FOR THIS LOOKS LIKE THIS:":30::" LOAD PGM1":" 1 D$=CHR$(4)":" 2 POKE 33,30"F-z" 3 PRINT D$;"Q$"OPEN PGM.TX"Q$:" 4 PRINT D$;"Q$"WRITE PGM.TX"Q$:" 5 LIST 10 INTO ONE.":30::A$" ONE THING TO REMEMBER WHEN CAPTURING PROGRAMS IS TO HAVE A LINE THAT SAYS POKE 33,30 PRIOR TO LISTING THE PROGRAM. THIS PREVENTS APPLESOFT'S":30 ,fA$"PRETTY-PRINTING, WHICH WOULD MESS UP YOUR PRINT STATEMENTS.":":*RD$;"NOMONICO"::2:15:"FRAME # 14":5:A$" YET ANOTHER USE FOR EXEC FILES IS TO CAPTURE PROGRAMS IN A TEXT FILE. THIS COULD BE A METHOD FOR CONVERTING INTEGER BASIC PROGRAMS TO APPLESOFT.":30+\A$"OR COMBINING TWO OR MORE PROGRAMSD=1 TO "DD" : NEXT D"=)"20 PRINT "Q$"NUMBER CUBE"Q$U)"40 PRINT I,I*I*I"u)"FOR D=1 TO "DD" : NEXT D") "RUN")"FOR D=1 TO "DD" :NEXT D") "LOAD EXEC.FILE.TUTORIAL")*"RUN")4"14")>350:400*HD$;"MONICO":D$;"EXEC TUTNG IT.":30(:A$"THE NEXT EXAMPLE WILL LOAD AND RUN PGM1. THEN IT WILL MODIFY IT TO PRODUCE THE CUBES OF THE NUMBERS FROM 1-15, AND RUN IT AGAIN.":30(:A$" NOW CREATING THE EXEC FILE .....":30:300("LOAD PGM1"("RUN")"FOR DD" : NEXT D"'"TEXT:HOME"='"LOAD EXEC.FILE.TUTORIAL"H'"RUN"R'"13"`'350:400'D$;"MONICO":D$;"EXEC TUT": (D$;"NOMONICO"::2:15:"FRAME # 13":5:A$" ANOTHER POSSIBILITY IS TO LOAD A PROGRAM AND MODIFY IT PRIOR TO RUNNIMMANDS IN IT.":30::A$" THE NEXT EXAMPLE WILL LOAD AND RUN THE TWO PROGRAMS SEQUENTIALLY.":30&::A$" NOW CREATING EXEC FILE .....":30::300&D"LOAD PGM1"&N"RUN"&X"FOR D=1 TO "DD" : NEXT D"&b"LOAD PGM2"&l"RUN" 'v"FOR D=1 TO"15:"FRAME # 12":5:A$" THIS CAN EVEN BE PART OF A HELLO PROGRAM. SIMPLY HAVE A HELLO PROGRAM THAT CONSISTS OF:":30::" 10 D$=CHR$(4)"::" 20 PRINT D$;"Q$"EXEC LOADER"Q$`&0:A$" WHERE 'LOADER' IS AN EXEC FILE WITH THE NEEDED CORAM THEN LOAD AND RUN THE NEXT ONE ALL UNDER CONTROL OF THE EXEC FILE!":30:A$"THIS IS ESPECIALLY USEFUL IF YOU HAVE":30$A$"SEVERAL MACHINE LANGUAGE ROUTINES THAT NEED TO BE LOADED OR RUN PRIOR TO THE MAIN PROGRAM.":30:$90:190%&:2:#"11"#350:4008#D$;"MONICO":D$;"EXEC TUT":#D$;"NOMONICO"::2:15:"FRAME # 11":5:A$" NOW THAT WE HAVE THESE PROGRAMS ON THE DISK HERE ARE A FEW THINGS WE CAN DO WITH THEM.":30:{$A$" FOR INSTANCE WE CAN LOAD AND RUN ONE PROG)*160)"&"|"130 HPLOT TO X,Y:NEXT I"J""140 HC=HC+1:IF HC>7 THEN 160"r""150 HCOLOR=HC:HPLOT X,Y:GOTO 110"""160 END"""SAVE PGM2"""HOME : LIST"""FOR D=1 TO "DD" : NEXT D"""CATALOG"""LOAD EXEC.FILE.TUTORIAL"""RUN"TO SEEING YOUR"?:"VERSION IN A FUTURE ISSUE OF SOFTDISK."l(::"YOU MAY RUN ICEBREAKER II WITH OR"2:"WITHOUT THE STATEMENT LISTING OPTION."<::"DO YOU WANT TO SEE STATEMENTS LISTED"F15:"PRIOR TO THEIR EXECUTION? (Y OR N) ";:L$:SCREEN."8::"THE STATEMENTS BEING EXECUTED APPEAR"^:"AT THE BOTTOM OF THE SCREEN."::"FEEL FREE TO MODIFY ICEBREAKER II TO":"ILLUSTRATE SOME OF YOUR PROGRAMMING":"TRICKS."61100 61000:"WE WILL LOOK FORWARD 1981"+~:"ISSUE OF SOFTDISK MAGAZETTE."Y::"THE PURPOSE OF ICEBREAKER II IS TO":"ILLUSTRATE TECHNIQUES FOR USING DOS":"RANDOM ACCESS FILES."6110061000:"THE RESULTS OF THE PROGRAM APPEAR AT":"THE TOP OF THE NTS ABOVE";::23:40:K$:D$::FZÁI1323:I:1:" ";:40:" ";:rdÞ:I112:I:1:" ";:40:" ";::1:1xÝ:32,1:33,38:34,0:35,11:D$ñ`61000j:"ICEBREAKER II IS A REHASH OF ICEBREAKER"t:"WHICH APPEARED IN THE NOVEMBER .... HAPPY 'EXEC'ING ....":30'= A0< :A$" PLEASE FEEL FREE TO COMMENT ON THIS PROGRAM AND/OR SUBJECT. IF YOU KNOW OR DISCOVER ANY NEW USES FOR EXEC FILES TELL OTHERS. THE SOFTDISK MAGAZETTE IS AN EXCELLENT WAY TO DO THAT.":30!= :A$" SO LONG FOR NOW, AND .... PUT ANY EXEC STATEMENT AT THE END OF THE EXEC FILE SO THAT NONE OF THE ORIGINAL FILE IS MISSED.":30:90:190< :2:15:"FRAME # 23":5:A$" I HOPE THIS HAS GIVEN YOU SOME IDEAS ABOUT HOW TO USE EXEC FILES IN YOUR OWN PROGRAMS.":3FILE WILL BE CLOSED AND FROM THEN ON THE APPLE WILL BE":30: A$" UNDER CONTROL OF THE SECOND EXEC FILE, NOT THE FIRST.":30::A$" A - THIS IS WHY THE LAST EXAMPLE COULD NOT BE DONE AUTOMATICALLY.":30:w; A$" B - SOLUTION::A$" A - THE BEST WAY TO CREATE AN EXEC FILE IS TO USE PRINT STATEMENTS, LIKE THIS PROGRAM DOES.":30:90:190@: :2:15:"FRAME # 22":5:A$"4 - IF AN EXEC FILE CONTAINS A COMMAND THAT WILL EXEC ANOTHER FILE, THE FIRST EXEC IT MUST BE FOLLOWED BY AN END STATEMENT.":30:8 A$"3 - IF YOU ARE USING DATA STATEMENTS TO CREATE THE EXEC FILES, YOU WILL NOT BE ABLE TO USE '"Q$"' ':' ',' ';' THESE ARE SEEN AS DELIMITERS BY THE DATA STATEMENT.":30~9 ITHER MAKE THE 'RUN' THE LAST STATEMENT IN THE EXEC FILE OR ALLOW FOR ANY INPUT THE PROGRAM NEEDS.":30:90:19038 :2:15:"FRAME # 21":5:A$"2 - IF AN 'EXEC' FILE IS USED WITHIN A PROGRAM, IT APPEARS THAT THE LINE 'EXEC'ING AM WILL RUN AND THE":306 A$" EXEC FILE WILL WAIT UNTIL IT IS DONE TO CONTINUE IT'S EXECUTION":30::A$" A - PROBLEM: IF THE PROGRAM THAT IS RUN REQUIRES INPUT, IT WILL BE TAKEN FROM THE EXEC FILE.":307 :A$" B - SOLUTION: ENE, ETC. CAN BE AT YOUR DISPOSAL, TO ENTER WITHOUT ALL THE HAND TYPING.":30:90:1906 :2:15:"FRAME # 20":5:A$" A FEW PRECAUTIONS ABOUT EXEC FILES THAT I HAVE FOUND:":30::A$"1 - WHENEVER AN EXEC FILE INCLUDES A RUN, THE PROGRS YOU":304 A$"HAVE WRITTEN.":30::A$" BY CAREFUL NUMBERING OF THE SUBROUTINESYOU COULD 'CAPTURE' THEM IN TEXT, AND 'EXEC' THEM INTO THE PROGRAMS OF YOUR CHOICE.":30]5 :A$" IN THIS WAY, YOUR FAVORITE INPUT OR OUTPUT ROUTINE, OR SORT ROUTIVE PGM3":" RUN":l3t A$" AFTER YOU ARE DONE, RUN THIS PROGRAM AND RETURN TO FRAME # 19":30:90:190 4~ :2:15:"FRAME # 19":5:A$" THIS IS ESPECIALLY USEFUL IF YOU HAVE SEVERAL SUBROUTINES THAT YOU WANT TO BE ABLE TO 'PLUG' INTO OTHER PROGRAMIS PROGRAM USES EXEC FILES (SEE PRECAUTIONS IN FRAME 20)THE COMBINING OF PROGRAMS CANNOT BE AUTOMATED, BUT YOU CAN DO IT YOURSELF.":303j A$"JUST TAKE THE 'Q' OPTION AND DO THE FOLLOWING STEPS:":30::" LOAD PGM2":" EXEC PGM.TX":" SAK.":"COPY IS COMPLETE."M"INSERT SYSTEM DISK TO REBOOT DOS.":7000T6X49168,0::"HIT RETURN WHEN READY.";A$:TD$"N"ė:"INSERT ";:2006600N:"NOW RECORDING THE NAME:"::N$::"ONTO THE NEW DISK."ZI130m X((N$,I,1))~2BUF116I,X<IFC2:200P6600d:"REMEMBER THAT THE NAME OF THE 'HELLO' FILE HAS NOT BEEN EMBEDDED IN THE DOS ONTHE NEW DIS, IT IS NECESSARY TO EMBED THE NEW VOLUME NUMBER INTO THE DOS TRACKS OFTHE COPY."cV(RWTS%24):"THE NEW VOLUME NUMBER IS:";V:"IT WILL NOW BE RECORDED."S1:T0:C1:200BUF235,V:C2:200S10:T1:C1:200BUF102,V:C2A"X115 STUFF$(X)#*94D$;"CLOSE ALPHA"?>[H WRITE SEQUENTIAL FILEkR WITH LOOPq\fD$;"OPEN ALPHA"pD$;"WRITE ALPHA"zX115STUFF$(X)D$;"CLOSE ALPHA"::::12:"PROGRAM TERMINATED":v (X SELECTS RECORD2 NUMBER IN FILE)8QD$;"OPEN ALPHA,L23"]X115vD$;"WRITE ALPHA,R"XSTUFF$(X)D$;"CLOSE ALPHA" READ SEQUENTIAL FILE WITH LOOPD$;"OPEN ALPHA" D$;"READ ALPH READ RANDOM FILE% WITH LOOP+C (X SELECTS RECORDY NUMBER IN FILE)_xD$;"OPEN ALPHA,L23"X115&D$;"READ ALPHA,R"X0STUFF$(X):DD$;"CLOSE ALPHA"N Xb WRITE RANDOM FILEl WITH LOOPECD4ĺP$;"ERROR ";ECD;" LINE ";LOCW)'20:"PRESS RETURN TO GO TO MAIN SCREEN ";YN$c.':4000Iˠ֠ĠԠĤŠԠŢԠҤԠҤԠĤŠԠŢECD4ĺP$;"ERROR ";ECD;" LINE ";LOCW)'20:"PRESS RETURN TO GO TO MAIN SCREEN ";YN$c.':4000000 (#2#D$"CLOSE"<#%F#6P#"MAKE SURE THE MASTER CATALOG PROGRAM DISK IS IN DRIVE #1 THEN PRESS RETURN ";YN$Z#D$"RUN MASTER CATALOG PRINTER,D1"' 'D$"CLOSE":ECD(222):LOC(218)(219)256':10'ECD810025%$'1)8220 8265. D$"WRITE"F$(J)",R"NR1:! FI$(I)F& NRNR1MI IuJ D$"WRITE"F$(J)",R0":NR:D$"CLOSE"K JJ1:J68201L D$"NOMONIOC"N V$"0":F$"0":P1:L%1:COUNT0:4000X b (222)5NR0:D$"OPEN"F$(J)",L40":8215l 10 D":F$(2)"NAMES E - H":F$(3)"NAMES I - M":F$(4)"NAMES N - R":F$(5)"NAMES S - Z+"\J1l D$"MONIOC" D$"OPEN"F$(J)",L40" D$"READ"F$(J)",R0" NR I1COUNT (FI$(I),10,1)"1"8265 (FI$(I),10,1)C$(J)(FI$(I),10,1)C$(J(6):"PRESS RETURN WHEN THIS IS DONE. ";YN$^(12):"PRESS RETURN AGAIN TO CONFIRM THAT COR- RECT DATA DISK IS IN THE DRIVE. ";YN$hD$(4)r8290TC$(0)(32):C$(1)(197):C$(2)(201):C$(3)(206):C$(4)(211):C$(5)(255):F$(1)"NAMES A -  216,07000=$(222)5ĺD$"CLOSE":J0:7290H.10000@ WRITE NAMES TO FILES THAT COVER JUST PART OF THE ALPHABET J:"TAKE OUT DISK THAT WAS CATALOGUED AND PUT IN DATA DISK THAT WILL STORE PRO- GRAM NAME DATA."-T(4) PL$"Y"L$"N"60230(Z:RH:9::"---- ICEBREAKER II ----"::|24:14::"HIT ANY KEY";::R$:D$:REVIEW INSTRUCTIONS":A=((2X):"C. LIST VARIABLES & XREF.":f= ((2X):"Q. QUIT THIS PROGRAM";t=(16368,0=(Z(16384):Z12810270=((Z("Q")128Ĺ16368,0::10:5:"HAVE A ";::"COMPARE";::"-ATIVELY GOOD DAY!!":23:1: >2(Z("A")):P3$<'(X):P2$"<'(X):P3$0<'(X):P4$><'(X):P5$L<'(X):P3$Z<'(X):P7$h<'(X):P8$v<'(X):P9$<'(X):P3$<'(X):P1$<'15:X::"PRESS LETTER TO ENTER CHOICE: "::<'(2X):"A. COMPARE TWO PROGRAMS":=((2X):"B. T 1980"4 n"BOOT13 WAS DEMUFFINED FROM A 3.3 DISK" 6 *"BOOT13 AND DEMUFFIN REQUIRE">"DOS 3.3 ROMS"b("BOOT13 WILL BOOT A 13 SECTOR"2"DISK FROM A 13 SECTOR DISK"<"DEMUFFIN WILL TRANSFER FILES"F"FROM 3.3 TO 3.2 OR 3.2.1 DISKS" d"DEMUFFIN IS BASED ON CALL APPLE ARTICLE, OCc H8`?E Vk *f???0x E Hh D#-EEE8` D x D - x8`- 0ݩ ?ʥD EEE`   LDcpq` [` ~  Lh@(LH9LHH/Hh/ H -З( (& $8 H` *HVDP (ED Z $0x8x D- DD#HIHHHHhHH݌hHhHh݌H6 h    `HJ>݌h Hh݌`葠葠ȔЖȔЖȠ?FG8`0($ p,&"ųųೳŪŪųųij  !"#$%&'()*+,-./0123456789:;<=>&Y&&Y& 꽌ɪ\8`&&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xS&x'8*3Ixix&& 8  '  & x)*++`>J>J>VU)?`8'x0|&HhHh    VY)'&Y)xꪽ)'     `Hh`V0^*^*>&` aI꽌ɪVɭŹz̘ՠ栠̺˥Šʠ̠éɠŠՐŖĠ跠Рᠤŗԝ̠ҠŠՐŦӮ踠ᠤ̗ŪӯشȠҠŠՐĠðŠփàŠ栌ՠȠϠŠԠٿŠōȠĠՠſĠĠԠӍԍD"$ՙİĠȘРŮåŹĠʲѪŪȠΠĠԠŠҠƠŠǠӍӠ٠٠ϠŠčӠōӠčϠćˠ̍ˠŠčŠčɯϠҍĠԠ٠ϠΠ͍Š۠ӠϠҠ٠ҍξϠŠǠŠҍ̭þξϠٍ̠ҮŽĠՠŠϠŠҠٿԠŠˠĠӠԠΠˠĠӠ٠ϠՠԠǿōϠӠ&3>Ou0:?VcqqqqqŠԿſΠԿſſԠӮӠþϠΠϠΠՠҠ٠Ҡ٠Ϡ΍٠ӮŠΠנŠŠҠŠɀ@ 4 L 5  LƠ砠ŠυÒŠ̳à鶠栌źŗϠɆűҠȠࠃ̶íհѥĪƠ蠠Ӯt h "#!$6CPbt~?O^d ㎬М 4LHHH:612 L] 34Lhhh`HHH J ( 4L <hhh` : :4  ,>  4,$ 12 """zm"""` 3` # # 1 "2 " ̷`12 `HHHλ0+>jj9hhh`( 68>` `1#2#34`ȱ`ȭ`#1#2 13` ` X,3` #1ȹ #2Ȍ 1 `,30 "" = ` ` : :   oOɃ  hhhhhh`DDTPɍɬCDL$,)  o : L  `   DLI,ɽ! ʎ`8`HH nɽ"̿̿88hh` ȹHH`hh" XL  < L < < B,30ޭ# #   ` H h ` $>=!D  # o? : L  hh` >)`ʽ!08`  `  ?,06 /,0&莽 ,0ȌP8``Ȉ!`  nɽ! 莼Ȍ`8`  n$'   hhh`, `Hh`h`< q  ` Y  < LK ` !!`! !8`!1!2  `iii!Lk !Lk H m hLk !>!2!1!!n o00Щ莻ɽదɬnɽ̻ʎ! o : Lm  ɛhhL%H% h% ` ` `HHH  hhh`HHH : 7 , ) ; <7698  ; ` o ɱɸ" L; )9 o ɱɳ# L_ )7`  o ɱɸ" L )8 o ɱɳ# L )6789<<` L  D5   , b Y L> b @   Lvم38%0` X L8 :   < `" X    i(  ! o , и` X$i( " X ,                :6600=.:"THE DOS ON THE NEW DISK IS NONSTANDARD.":6500O8DT$"Y"6600q=:"NEW DISK HAS MASTER DOS."{B6400DT$"Y"6350:"NEW DISK HAS SLAVE DOS."S10:2006400Q:"SINCE THE DISK BEING COPIED HAS THE SLAVE DOS00DT$"N"HR%065003C1:BUFBA%:T1:S12<200DX0OI02dXX256(BUFI)kIX42819216200X110800776300$DT$"Y"ĺ:"THE DOS ON THE DISK BEING COPIED IS NOT RECOGNIZABLE. THE COPY MAY NOT BOOT PROPERLY."+TD$"Y"D2::"WRITING TO NEW DISK."9I0K%1IL%L%(J%I)[BUFBA%256ItT(L%13):SL%13T}200J%I1,"T=";T,"S=";SI DONE?N%06000J%J%K%7100:"SOURCE DISK.":70003000pIN$"N"66%)256 READ SOURCE DISK* CRD:D1N K%M%:N%J%M%K%N%J%1:N%0\ I0K%1l L%L%(J%I)~ BUFBA%256I T(L%13):SL%13T 200 J%I1,"T=";T,"S=";S I WRITE NEW DISKCWR:V07100:"NEW DISK.":7000J:J:J%39"4T334:BY%564TD>Y%(BA%BY%):X%(BA%BY%1)PHX%X%8[RI04\H%X%2:X%2H%L%(J%)13TI:J%J%1fX%H%:IpI512zH%Y%2:Y%2H%L%(J%)13TI:J%J%1Y%H%:ITN%J%1:J%0M%(47025BA117I))I:N$m:"THIS NAME WILL BE RECORDED IN THE DOS TRACKS OF THE NEW DISK IF POSSIBLE."}HR%1:2000 FIND SECTORS IN USE::"NOW DETERMINING WHICH SECTORS ARE":"IN USE."J%0DT$"N"2100J038 L%(J)LL NOT BE RECORDED IN THE DOS TRACKS OF THENEW DISK."E=HR%0:2000f@"BE A ":"MASTER DISK."::pJ1675T"BE A":"SLAVE DISK."::YS10:200"THE NAME OF THE 'HELLO' FILE ON THE":"SOURCE DISK IS:"N$"":I029N$N$((BUFX0I02&XX256(BUFI)-IS:"THE SOURCE DISK APPEARS TO ";g"X42819211600|,X1108007716206"HAVE A":"NONSTANDARD VERSION OF DOS. "5;:"THIS PROGRAM IS UNABLE TO DETERMINE THE NAME OF THE 'HELLO' FILE AND SO IT WINS.":::"THIS PROCESS WILL TAKE":"ABOUT 100 SECONDS."F.CFM:200h8::"FORMATING IS COMPLETE."B7100:"SOURCE DISK.":7000 FIND HELLO NAME IF DOS TRACKS ARE NOT COPIEDDT$"Y"2000T1:S12:BUFBA%300200:RWTS%19,BH% RWTS% 9 ***** PROGRAM BEGINS[ D1:V0:CRD:BUFBA%:S0:T17d 200v V(RWTS%24) IN$"Y"1500 :TD$"N"ĺ"INSERT NEW DISK FOR FORMATING."::"HIT RETURN WHEN READY.";A$ TD$"Y"D28$:"FORMATING BEGIWTS%22:SLRWTS%15:TLRWTS%14:VLRWTS%13:DLRWTS%12M RWTS%11,(1528)d V=VOLUME D=DRIVE{ S=SECTOR T=TRACK C=COMMAND RD1:WR2:FM4 1000 DL,D:VL,V CL,C:SL,S:TL,T BH%BUF256:BL%BUF256BH% RWTS%18,BL% 2 169,3,160,10,32' 4 217,3,96,0,08 7 1,96,1,0,0L 9 0,32,3,152,58\ < 0,0,0,0,0o > 96,1,0,0,0,0 A 0,0,1,239,216 dPG%3:RWTS%PG%256 xI035 }X%:RWTS%I,X% I RWTS%1,PG% RWTS%17,PG% RWTS%41,PG%7 CLR"DO YOU WANT THE DOS TRACKS COPIED?"::"(Y OR N): ";:DT$:DT$"N"DT$"Y"^ !IN$"Y"ĺDT$s "IN$"N"DT$"Y"} #:: (TD$"Y"ĺ"INSERT SOURCE DISK IN DRIVE - 1":"INSERT NEW DISK IN DRIVE - 2" )TD$"N"ĺ"INSERT SOURCE DISK." *7000)255XĹMT,X:202 "48K MEMORY IS REQUIRED.":X "ARE TWO DISK DRIVES AVAILABLE?" :"(Y OR N): ";:TD$:TD$"Y"TD$"N" TD$ :"HAS THE NEW DISK EVER BEEN INITIALIZED?"::"(Y OR N): ";:IN$:IN$"Y"IN$"N" IN$L IN$"Y"ĺ: 0:0BA%7857%(BA%1)4L%(3513)S :" S-COPY"s " (VERSION 2)  :" BY I. M. ISAACS":: (57344)76ĺ"ROM APPLESOFT OR LANGUAGE CARD REQUIRED.": MT49151:X(MT):MT,255X:(MT          WITHOUT LOOP6'@D$;"OPEN ALPHA"<JD$;"READ ALPHA"HTSTUFF$^^D$;"CLOSE ALPHA"gh mr| WRITE SEQUENTIAL FILE WITHOUT LOOPD$;"OPEN ALPHA"D$;"WRITE ALPHA"STUFF$D$;"CLOSE ALPHA"  ( WRITE TO RANDOM FILE; WITHOUT LOOPAT (X IS RECORDh NUMBER IN THEt FILE)zD$;"OPEN ALPHA,L23"D$;"WRITE ALPHA,R"17STUFF$D$;"CLOSE ALPHA" " READ SEQUENTIAL FILE , 2110,2200: , PROGRAM LISTINGS5  ;Y READ RANDOM ACCESS FILEl( WITHOUT LOOPr2< (X IS RECORDF NUMBER IN THEP FILE)ZdD$;"OPEN ALPHA,L23"nD$;"READ ALPHA,R"XxSTUFF$D$;"CLOSE ALPHA"t:5:~I1190,1200,1210,1220,1230,1240,1250,1260,10f:"WOULD YOU LIKE TO SEE ANOTHER? ";I$|(I$,1)"Y"ī930101300,1410:1430,1540:1560,1630:1650,1720:1740,1860:1880,2000:2010,2100: :5:9$"***---> FILES WITH LOOPS <---***"A.:e8" 5. READ RANDOM ACCESS FILE"B" 6. WRITE RANDOM ACCESS FILE"L" 7. READ SEQUENTIAL FILE"V" 8. WRITE SEQUENTIAL FILE"`:" 9. QUIT PROGRAM"j:"SELECTION? ";I:41"SELECT THE FILE TYPE TO VIEW BY NUMBER"7@4:h"***--> FILES WITHOUT LOOP <--***"nt" 1. READ RANDOM ACCESS FILE"" 2. WRITE RANDOM ACCESS FILE"" 3. READ SEQUENTIAL FILE"" 4. WRITE SEQUENTIAL FILE"102R" THIS PROGRAM WILL SHOW YOU LISTINGS"\\"OF DISK COMMANDS USED IN PROGRAMS."f:" IT IS INTENDED TO SUPPLEMENT THE"p"INFORMATION IN THE DOS MANUAL."z18:"HIT RETURN TO CONTINUE ";I$  MAIN ROUTINE ABLE IS NOW BACK FROM DISK!!"8"HERE IT IS--> ";VAR$h:"HIT RETURN TO SEE PROGRAM LISTINGS FOR""THE VARIOUS WAYS DISK COMMANDS CAN BE""USED TO STORE DATA. ";I$ : :6*8:4"***---> DISK FILES <---***">HAPPEN."XZ13500: b100-l34,11:@vX1::220:13YD$;"OPEN TEST FILE"q220:X3::220:14D$;"READ TEST FILE"VAR$220::240:15240:X4::220:16D$;"CLOSE TEST FILE"220:17255"YOUR VARI1 "NOW HIT RETURN AND WE WILL GET IT BACK.";I$U  FETCH VARIABLE FROM DISK ] &: 0X1:220:X3:220:240:X4:220:34,8: :"ABOVE, YOU SEE THE PROGRAM COMMANDS AS" D"THEY ARE EXECUTED, BELOW ARE THE"N"MONITOR COMMANDS AS THEY H0 34,11:! X1::220:13: D$;"OPEN TEST FILE"R 220:X2::220:14l D$;"WRITE TEST FILE"v VAR$ 220::260:15 260:X4::220:16 D$;"CLOSE TEST FILE" 220:17 : "YOUR VARIABLE IS NOW ON DISK!" 255"TYPE IN SOMETHING YOU WOULD LIKE TO "U J"STORE TO DISK AND WATCH WHAT HAPPENS."s T"ENTER IT HERE--> ";VAR$y ^ h"ABOVE, YOU SEE THE PROGRAM COMMANDS AS" r"THEY ARE EXECUTED, BELOW ARE THE " |"MONITOR COMMANDS AS THEY HAPPEN." 10;";:(34);:A$(X);:(34)::+ INPUT L 5:A(X);:" INPUT VAR$"::Y PRINT z 5:A(X);:" PRINT VAR$"::  PRINTS COMMANDS : "X1:220:X2:220:260:X4:220:34,8:: , WRITE TO DISK 6COM$"W":280( @::800,2220 n20$ xD$;"MON C,I,O"B X14:V(X),A(X),A$(X):_ 3,100,"OPEN TEST FILE"} 4,110,"WRITE TEST FILE" 4,110,"READ TEST FILE" 6,130,"CLOSE TEST FILE" : 310 DISK COMMAND  V(X):A(X);:" PRINT D$ WRITTEN BY) JOHN FALUDI 5 D$(4)>:8]"SELECT OPTION BY NUMBER"e(:2" 1. DEMONSTRATION RUN OF DISK COMMANDS"<:" 2. PROGRAM LISTINGS OF DISK COMMANDS"F:" 3. QUIT"P:Z"SELECTION? ";I dI120,           THAT WERE CREATED FOR"BA+"COMPARISON. THE COMPARISON LISTING"nA+"ASSUMES THAT THE ORIGINAL PROGRAM IS"A+"FIRST AND THE REVISION SECOND.":A+"BOTH TEXT FILES OF THE PROGRAMS THAT"A+"ARE TO BE COMPARED MUST BE ON THE SAME"B+"DISK, BUTORY. TYPE 'RUN 63999' AND NAME THE"Q@+"TEXT VERSION OF THE PROGRAM THAT WILL"@+"BE WRITTEN TO THE DISK. THEN RUN THIS"@+"'COMPARE' PROGRAM TO LIST DIFFERENCES."@+20000@+@+"YOU WILL BE PROMPTED FOR THE NAMES OF"A+"THE TEXT FILES?>+"OF A PROGRAM AND PRINT A LISTING OF THE"Y?H+"LINES THAT HAVE BEEN CHANGED, ADDED,"n?R+"OR DELETED.":?\+"EACH PROGRAM MUST FIRST BE CONVERTED TO"?f+"A TEXT FILE BY 'EXEC'ING THE 'CAPTURE'"?p+"FILE WHILE THE TARGET PROGRAM IS IN"$@z+"MEM1285020!><(Z("B")128110009>A(Z("C")12815000K>F((7);:10260e>**** INSTRUCTIONS ***t>*:5:958>+P6$"* INSTRUCTIONS *"> +5:X:P6$>+X:P3$> +X:P1$>*+34,9:>4+"THIS PROGRAM WILL COMPARE TWO VERSIONS"-OL CHARATERS SECOND COLUMN,L(A$(J50))7IBEBILıb((A$(J50),I,1))321230x(A$(J50),I,1);I:4JK21040L10601VA$(2)A$(1)įA$(1),A$(2)T` SORT DONE, NOW PRINT IT OUT]j490t CHECK FOR CONTROL CHARATERS FIRST COLUMN~L(A$(J))IBEILı((A$(J),I,1))321180(A$(J),I,1);I: CHECK FOR CONTR5"SORTING"@:10:"TAKES ABOUT "(.05NR(NR))" SEC."` ACTUAL SORT ROUTINE BELOWiNNRtK1N1K1(K12):K101110K2NK1:J1$IJ.K3IK1:(A$(I),10)(A$(K3),10)10908A$(I),A$(K3):IIK1:I11070 BJJ1:TH AMPER SWITCH~HEX$"3B0: 20 E3 DF 85 85 84 86 20 BE DE 20 E3 DF A0 02 B1 85 48 B1 83 91 85 68 91 83 88 10 F3 60 N D823G"I1(HEX$):511I,((HEX$,I,1))128::72,0:144 SET UP "&" JUMP VECTOR1013,76:1014,176:1015,3:12:11200 36,45!*B6:E6:1200,436,47>>B7:E9:1200IH36,51_RB10:E35:1200:f\Z{fJJ50:JNR540pD$"PR#0"z:10"TYPE 'C' TO CONTINUE, ANYTHING ELSE TO QUIT ";:YN$:YN$"C"Ĭ SHELL METZGER SORT WI-----------"6  IF NR<51 THEN JUST PRINT ONE COLUMNB Z150V JJ1:JNR880` 36,0r B1:E4:1150| 36,5 B6:E6:1150 36,7 B7:E9:1150 36,11 B10:E35:1150 " "; J50NRĺ:860 36,40B1:E4:L LINES9 :36,15:"MASTER CATALOG";:36,60:"PAGE "PGJ D36,15:DAY$P Nm X"DISK T SIZ FILE NAME"; bNR51ĺ:630 l36,40:"DISK T SIZ FILE NAME" v"---- - --- ---------------------"; NR51ĺ:660 36,40:"---- - --- ----------LOSE"  930! PG0:J0+ :10K  TURN ON AND READY PRINTER "READY THE PRINTER AND POSITION THE PRINTHEAD AT THE TOP OF THE FORM. PRESS RE- TURN TO START THE PRINT OUT. ";YN$ D$"PR#1":550 (12) &PGPG1 0 PRINT DETAIC) T ASK FOR TODAY'S DATEY ^::"WHAT IS TODAY'S DATE, NO COMMAS PLEASE ";DAY$s h READ DATA FROM FILE rD$"MONIOC" |D$"OPEN"F$",L40" D$"READ"F$",R0" NR A$(NR1) I1NR D$"READ"F$",R"I A$(I)  D$"C4 AS$"***************************************"R AS$:"*";:39:"*":"*";| 10:"FILES TO SELECT FROM";:39:"*" "*";:39:"*" AS$ I15 (I26) "I". "F$(I) ,I 620:15:"YOUR CHOICE ";C @C1C5Ĭ JF$F$( d:,n FILE NAMES WITH CATALOG DATAPx COULD BE EXPANDED IF YOU HAVEg A LARGE LIBRARY.F$(1)"NAMES A - D"F$(2)"NAMES E - H"F$(3)"NAMES I - M"F$(4)"NAMES N - R"F$(5)"NAMES S - Z+"D$(4) MAIN MENU      09FF$"NAMES S - Z+" >J03HD$"MON I,O,C"JRD$"OPEN"FF$",L40"`\D$"READ"FF$",R0"gfJqp7310zD$"MON ,I,O,C"D$"OPEN"FF$",L40"JJ1D$"WRITE"FF$",R"JID$L$T$S$N$D$"WRITE"FF$",R0"JD$"CLOSE"ETURN AGAIN TO CONFIRM THAT COR- RECT DATA DISK IS IN THE DRIVE. ";YN$R*D$(4)]474605(N$,1)"E"FF$"NAMES A - D":72306(N$,1)"I"FF$"NAMES E - H":72307(N$,1)"N"FF$"NAMES I - M":72308(N$,1)"S"FF$"NAMES N - R":723SS RETURN IF CORRECT, ANYTHING ELSE TO START ENTRY OVER. ";:YN$:YN$(13)7080 :"TAKE OUT DISK THAT WAS CATALOGUED AND PUT IN DATA DISK THAT WILL STORE PRO- GRAM NAME DATA."(6):"PRESS RETURN WHEN THIS IS DONE. ";YN$F (12):"PRESS R, TRY AGAIN"-"ADD RECORD TO DATABASE"h4:"FOUR DIGIT ID ";ID$:(ID$)4ĺER$:7110sL$" "~T$" "S$" "8:"30 DIGIT NAME CODE ";N$:(N$)30ĺER$:7150L(N$):L30N$N$(BL$,30L)958R22:"PREN MENU",l4:"1. ADD RECORD TO DATABASE"Wv6:"2. READ, SORT, & PRINT DATABASE"y{8:"3. RETURN TO MAIN MENU"20:"YOUR CHOICE ";:YN$:YN$"1"7080YN$"2"9000YN$"3"40007010 ADD RECORD:ER$"WRONG SIZE(K):KK176:K0K64050)K080007K17000IK2K36180[K4K51060jK6ĉ::t4010$K2PP1:PL%P1.K3PP1:P1PL%84010X SPECIAL FUNCTION FOR 'UN' NORMAL DISKS b:"SPECIAL FUNCTIO6,1);" ";(FI$(JPLIXS),7,3);" ";(FI$(JPLIXS),10,30)AIk19:1:958:20:M1$;:34::COUNT:A$""::M2$:M3$:M4$; CHECK KEYBOARD STROBE, THEN BRANCH ACCORDINGLYK(16384):K128501016368,0:19:1:958:K$"SL:";S;" DR:";D;" VOL:";V$;" FREE:";F$;" PAGE ";P" OF ";L%:JP1:I1PL:(JPLIXS)COUNT4050(FI$(JPLIXS),10,30)"1"ĺ(TI);" ";::"DELETED FILE"::(FI$(JPLIXS),10,30)"1"ĺ(TI);" ";(FI$(JPLIXS),5,1);(FI$(JPLIXS),(VOL)):(V$)1V$"00"V$1D (V$)2V$"0"V$QN F$(F):(F$)1F$"00"F$hX (F$)2F$"0"F$}b F11F10:3190l COUNTCOUNT1v FI$(COUNT)ID$" "F$(95)"FREE SECTORS AVAILABLE " DISPLAY DATA FROM VTOC c:Z4LCK$"*":ZZ128' Z0TYPE$"T": Z1TYPE$"I"M Z2TYPE$"A"` Z4TYPE$"B"~ (Y)255NAME$"1":3110 NAME$(INP$,ZZ,30)& FI$(COUNT)ID$LCK$TYPE$SIZE$NAME$:Y:X0 L%(COUNTXS)PL:(COUNTXS)L%PLL%L%1: V$( READ THE VTOC UNTIL EMPTY 0 10000{ X1511:SEC,X:768:ZZ34:YF1F735:ZZZZ35:Z(Y33):Z03120 COUNTCOUNT1:FFZ:SIZE$(Z):(SIZE$)1SIZE$"00"SIZE$ F0F0 (SIZE$)2SIZE$"0"SIZE$ Z(Y2):LCK$" ":R SLOT #";:I$:I$(13)ĺ:2070? I$"0"I$"7"Ģ3:1:2020l I$:S(I$):OS,(CS):OD,(CD):CS,S16 "CURRENT DRIVE IS ";D:"PRESS RETURN OR ENTER DRIVE #";:I$:I$(13)3010 I$"1"I$"2"Ģ5:1:958:2070 *I$:D(I$):CD,D$ "INSERT DISK TO BE CATALOGUED."a 8:"TYPE 4 CHARACTER DISK I.D. >> ";ID$:::(ID$)42010n XSCOUNT| K03000 K4ĺ"INSERT NEW DISK IN SLOT:";S;",DRIVE:";D:"AND PRESS RETURN.";:R$:3010 "CURRENT SLOT IS ";S:"PRESS RETURN OR ENTEMES 1=SPECIAL DISK" M3$"2=PAGE AHEAD 3=PAGE BACK":M4$"4=NEW DISK 5=RESET DRIVE 6=QUIT":S(18455)16:D(18454):K0:CS,S16:CD,D $TRK,17:F496:P1:C0  MAIN HEADING ::9:"MASTER CATALOG RUNNING": 6:> COUNT0:BL$"":I140:BL$BL$(160):I:FI$(700):10000q D$(4):B$(7):IOB777:T64:PL15:RB27136: CSIOB1:CDIOB2:TRKIOB4:SECIOB5:VOLIOB14:OSIOB15:ODIOB16:F1RB11:F7RB221:M1$"SELECT NUMBER OF YOUR CHOICE":M2$"0=WRITE NAPPLE CRUNCHERS JULY 1982 & ]  RWTS ROUTINE (PAGE 95 IN DOS MANUAL) INP$"1":VS(106)256(105):VS2,240:VS3,14:VS4,150: 169,3,160,9,32,217,3,96,0,1,96,1,0,17,15,251,183,0,150,0,0,1,0,254,96,1 :I768793:X:I,X:I8):IN$""'Jdu(16384)27IN$(27):@Jlu(16384)12830052XJvuX$((16384)128)lJuX$(13)30210JuX$(8)30140Ju(IN$)030200JuX$;Z$;JuIN$(IN$,1,(IN$)1)Ju30190JuIN$IN$X$Ju(IN$)L%30170Ju30180KuIN$(IfNIpN:10000I0u ********************** STRUCTURED INPUT ROUTINE I:u16368,0IDuCV(37):CH(36)INuN1L%:(95);:IXuCV1:CH1 JbuZ$(95)(ANY KEY TO CONTINUE";:%H:16368,0>H:(16384)12815080VH:15:1:958:10220xHN *** FOR HOLDS AND INPUT ***H N23:1::" TO CONTINUE, FOR MENU";:H*N16368,0H4N(16384)12820020H>NX(16384)128HRNX2720080I16368,0Gd-16384,128"Gn-100003G:15:1:958]G:"NOW THAT SOUNDS LIKE A VERY USEFUL"G:"ROUTINE...SOMEBODY SHOULD WRITE THAT"G:"PROGRAM AND INCLUDE IT AS PART OF"G:"THIS 'COMPARE' PROGRAM.":G:"HOW ABOUT YOU?";H:23:1::"PRESS LINES FOR EVALUATION...":HF(-"DON'T GET ANXIOUS IF NOTHING SEEMS TO"uF2-"BE HAPPENING. THERE WILL BE MESSAGES"F<-"ON THE SCREEN TO KEEP YOU INFORMED OF"FF-"PROGRESS AND COMPLETION."FP-23:1::"END OF INSTRUCTIONS...PRESS ANY KEY";:GZ-CARD IN"4E,"SLOT #1 IS ASSUMED. (IF YOU NEED TO"_E,"CHANGE THAT, SEE LINES 5460 & 1210.)jE,20000pE,E-"THE COMPARISON OF TWO RATHER LENGTHLY"E -"PROGRAMS MAY TAKE SEVERAL MINUTES WITH"E-"MANY ACCESSES TO THE DISK FOR MORE"F-"TEXT"THE COMPARISON LISTING CAN BE DIRECTED"WD,"EITHER TO THE SCREEN OR TO A PRINTER.":D,"IF USING THE SCREEN, THE SCROLLING MAY"D,"BE HALTED BY TYPING , AND"D,"RESUMED BY PRESSING ANY OTHER KEY.":E,"IF USING A PRINTER, A PARALLEL TO AVOID"2CL,"A LONG LISTING OF DIFFERENCES...."8CV,>C`,kCj,"THAT IS, 'COMPARE' WILL BE A WASTE OF"Ct,"TIME IF THE REVISED PROGRAM HAS BEEN"C~,"SUBSTANTIALLY RENUMBERED FROM THE LINE":"NUMBERS OF THE ORIGINAL VERSION."C,20000C,(D, NOT NECESSARILY THE DISK"CB,"WITH THE 'COMPARE' PROGRAM ON IT."NB,20000TB,B$,"THE 'COMPARE' PROGRAM IS BASED ON A"B.,"SIMPLE COMPARISON OF STRINGS. THE TWO"B8,"PROGRAMS BEING COMPARED SHOULD BE VERY" CB,"ALIKE IN THEIR LINE NUMBERING ING!":-SK":34,23 B1I+ (4);"OPEN"A$(B)B (4);"WRITE"A$(B)X (4)"CLOSE"A$(B)^ u ::(4)"CATALOG"{  J117:A$(I)A$(I)" ":(A$(I))17ı : * SHOULD NEVER GET THIS FAR * "::12:"ERROR ENCOUNTERED, PLEASE CHECK LIST6 n"LINE "I1: xJ118:(95);::"":(37):1Y A$(I):(A$(I))17ė:110 A$(I)""A$(I)"B"(B$,2,8)A$:190 (A$(I))17İ270 A$(I)B$"= "A$(I)" =" : A$(7)"B"(B$,2,8)A$ ::"WRITING CATALOG HEADER TO DIM NUMBER OF CHARACTERS IS 17, MAXIMUM NUMBER OF LINES IS 5." F:"========================================":17:"========================================" P19:"PRESS TO WRITE HEADER OF LESS THAN 5 LINES." Z34,13:35,16: dI2<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>< CATALOG HEADER FORMAT PROGRAM >< BY: RUDY A. GUY >< 2-SEPT-80 ><<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>@ <9:"ENTER HEADER MESSAGE FOR DISK CATALOG. MAXIMU*********************7* CATALOG HEADER *R* PROGRAM *m* BY: RUDY A. GUY ** CALL -APPLE ********************** B$"A"I18:B$B$(8):A$"=====================":A$(1)B$A$(: 2"     00@Q600,630:11000*JQ632,662:50000>Q670,700:50000TR5000,5050:11000jR5060,5100:50000lR5110,5170:50000R6000,6030:11000R6040,6080:500004S9000,9010:50000S9020,9999:50000!Pâ24:3::"ANY KEY EXECUTES STATEME00N40,55:50000&LO60,95:11000:VO100,145:50000NO150,170:11000bO180,210:11000vO220,270:50000P300,317:11000P320,325:11000(P330,335:110002P340,345:11000' CAUSES THE LINES IN THE FILE TO BE $A$" 1) WHAT AN EXEC FILE IS.":30::A$" 2) HOW TO CREATE AN EXEC FILE.":30::A$" 3) SEVERAL WAYS TO USE AN EXEC FILE.":30.90:1908:2:15:"FRAME # 2":5:9:A$"WHAT IS AN EXEC FILE?":30::1BA$" AN EXEC FILE IS SIMPLY A SPE4:A$"DALE SALYER":30:13:A$"THORNTON, CO.":30:::10:A$"FOR YOUR EDUCATION":30:11:A$"AND ILLUMINATION":3090:190:2:15:"FRAME # 1":5:14:A$"OBJECTIVES:":30:A$" WHEN YOU COMPLETE THIS TUTORIAL YOU SHOULD KNOW: ":30:TY CLOSE EXEC FILE 1^D$;"CLOSE TUT"7hO WAIT FOR INPUT ::"PRESS RETURN TO CONTINUE":X$:X$:: BEGIN MAIN PROGRAM ::11:"EXEC FILE TUTORIAL":2:15:"FRAME # 0":::34,3s5:15:A$"WRITTEN BY:":30::113::LCLC984:J18:LCLC128:I140:AS(LCI):AS64270] ASAS128:AS160ASAS64 PL$PL$(AS):I:PL$:PL$"":J:K:EL$:D$;"PR#0": ' WRITE EXEC FILE ,D$;"OPEN TUT" 6D$;"DELETE TUT" @D$;"OPEN TUT" JD$;"WRITE TUT"MF220C :FR1040,1080,1130,1170,1210,1240,1280,1420,1460,1490 FR101790,1830,1980,2130,2160,2190,2370,2400,2430,2460 FR202490,2520,2550 HARDCOPY ROUTINE FROM SOFTDISK - THANKS > :D$;"PR#1":EL$:PL$"":LC1879:K16368,0:KEY200KEY206KEY209KEY211110D 21:1:958:^ PROCESS KEYPRESS KEY209ĉ::12:"EXEC FILE TUTORIAL SAYS GOODBYE !!": KEY200250 KEY206ı KEY211ė:10:"SKIP TO WHAT FRAME # ";:FR$:FR(FR$):FR1FR$"!/-\":H1:CHB d22:" (Q)UIT,(H)ARDCOPY,(N)EXT,(S)KIP TO #"o n21:H:" ";(CURSR$,C,1);" ";:I133: x23:40H:" ";(CURSR$,C,1);" "; KEY(16384):KEY127160 CC14(C4):HH1:H39H1:21:40:" ";:23:2:" "; 1101 CURSR$CURSR$(8):h 2I1(A$)::CURSR$;::M$(A$,I,1):M$;:M$" "M$"."āJ125150(M$"."): <M$" "āJ12:S(16336): F:868::255: P DOUBLE BATON ROUTINE ADAPTED FROM BEAGLE BROS. TIP BOOK NO. 4.  ZCURSR(5* D$(4):Q$(34):MF20:DD3500:1010 PRETTY PRINT ROUTINE ADAPTED FROM BEAGLE BROS. TIP BOOK NO. 4.  PUT DESIRED OUTPUT IN A$ POSITION CURSOR USING VTAB & HTAB, AND GOSUB 30. CURSR$"+>":210 (I1(CURSR$):                 z#1,XհԮʠ!ԠŠ  ԮҠ ԮӠԠŠ Š! ŠϠ "Ůʠ Ԡ   ŠĠ ŠŠŠ ԠҠ±#ˠŠŠΠ ήʱήʲ "ҠǠ ҠǠҮ֠ ˠŠӠ נ٠ Πî Š ӮŠ ®Šՠ "ҮԠ îŮ̠7ҮɠǠҠǮ ˠʠˠʰˠŠŮӮӠӮŮӠ ŮӠŠŠXհİ]İŮӠΠήӠҠԠˠӠ$B$D$ ************************F --CURSOR BACKSPACE--\CH(36):CV(37)CHCH1:CACA1:(CA1)(CH0)CH0:CACA1:36,CH:CV1: ---CURSOR ADVANCE---CH(36):CV(37) CHCH1:CACA1:(CA(A$(P)))(CH39)CP)""ı~A((A$(P),1))1A16ĺ5)A$(P):>A$(P):[***********************w--GET FILE NAME, SUB--:4:"INPUT NAME OF TEXT FILE IF SPECIAL.":"USE SPACE IF NO NAME WAS ASSIGNED.":B$:B$" "D$X1$:B$;:"";D$:D**L--PRT,LAST LINE---NQ(CL$)(CW$)LL1CL$CL$CW$:CW$"":C(CL$)qVCL$""Ė(LM):CL$:CL$"":C0[(DS$,1)"Y"ĺ`CW$""Ė(LM):CW$:CW$""e(DS$,1)"Y"ĺjo***********************t--REVIEW/EDIT PRINT---yA$(,"CC$" "ī1055+CW$CW$CC$:1085a(CL$)(CW$)LL1CL$CL$CW$:CW$"":CC(CW$)$(CLL)(CW$"")CL$CL$" ":CC1)CW$""ī1085.CW$CW$" "3(LM):CL$:CL$"":C08(DS$,1)"Y"ĺ=NBG*********************5LA(A$(A1)):A$(A1)A$(A1)(A$(P),230A):A$(P)(A$(P),(A$(P))A230)eA1A11:A$(A1)A$(P)lPPA11500:A$(P)"":************************--PRINTOUT SUB----NN1(A$(P)) CC$(A$(P),N,1)(CC$)95CC$"WRITE ";D$ P1500:A$(P):4X$;"CLOSE ";D$:X************************q----COMPACT SUB----zA11P2500A$(P)""ī1005(A$(A1))230ī1000(A$(P))32ī1000(A$(A1))(A$(P))231A$(A1)A$(A1)A$(P):100T FILE----k1170/p12:16::"READING":BuX$;"OPEN ";D$UzX$;"READ ";D$kP1500:A$(P):X$;"CLOSE ";D$************************---WRITE TEXT FILE---117012:16::"WRITING":X$;"OPEN ";D$ X$;"DS$-4X$;"PR#1"::1785,LL5LM:-PRTR.ON-C9C0:CL$"":CW$""P>P1500xC(A$(P)"")(A$(P1)"")P500:845H315: (DSPLY)MR1100:(PRT.LAST LINE)WX$;"PR#0": -PRTR. OFF-\a************************ f----READ TEX)16Ė5E A1$A$(P):CH1:CV4:CB0:CA1:((A$(P),1))32CA2:CB1O1440X625v************************ ----MAKE HARD COPY----%:4:"ENTER LINE LENGTH ";LL*:"ENTER LEFT MARGIN ";LM/DS$"N"::"DOUBLE SPACED? Y OR N ";9:"X:EXIT"419:11::"CHOICE?";:9:B$:DB$"X"375\B$"F"P500PP1rB$"B"P1PP1B$"D"A$(P)""B$"F"B$"B"B$"D"625B$"E"770A0$"D"A$(P)"":6256851505::1545:4((A$(P),1)K120:685#4:1:958-11403>12:1m"---------------------------------------"9:"F:FORWARD - TO NEXT BLOCK"9:"B:BACKWARD - TO PREVIOUS BLOCK"9:"D:DELETE ENTIRE BLOCK"9:"E:EDIT--MINI EDITOR--" N$,1,(IN$)1):30210KuX$;3Ku16368,0:30060HKu16368,0:30040ZKv16368,0::ĤҤԠŠŠԠĤ΍ԠĤŠŠԠԍĤŠԠč  (4);"BRUN MENU" *"1;8'P4$"* ORIGINALLY BY *"Z;B'P5$"* CHARLES BOODY *";L'P7$"* MODIFICATIONS BY *";V'P8$"* TOM EDWARDS *";`'P9$"* MAY, 1981 *";j'X(40(P1$))2;t'(X):P1$<~'(X:X5350ĺO$;::"'."1:X5360ĺN$;::"'."^:216,0::"TRY AGAIN.":N12500::5000:'*** MENU AND INSTRUCTIONS ***:'34,0::'P1$"******************************":$'P2$"* COMPARISON PROGRAM *";.'P3$"* D$"PR#1":(9)"80N"69^"COMPARE: ";O$;" VRS ";N$<9hF9r1010N9|:g9:"COMPARE: ";PC$:q934,1{910009pY(222)9zD$"PR#0"9Y660809:10:(7);"*** ERROR ***":9"UNABLE TO FIND FILE '";:9X(218)(219)256"OPEN ";O$48D$;"RENAME ";N$;",";N$:D$"OPEN ";N$V8:12:18:"O.K.":N12200:\8z8OT$(O$,12):NT$(N$,12)8PC$OT$" VRS "NT$8"X(40((PC$)))28,R295500866:9588@10:11::"WORKING ON COMPARE":8J13:X:PC$9T16384)128527007Z(16384)128:Z2710000I7Z("S")R29:5320b7Z("P")R70:5320s7(7);:5260716368,076000: *** IF FILE NOT ON DISK ***7::10:4:"CHECKING FILE NAMES ON THIS DISK": 8D$;"RENAME ";O$;",";O$:D$0006IN$(27)10000*6(O$IN$:IN$""262:[6<"REVISED PROGRAM TEXT FILE NAME?":o6FX:L%30:300006PIN$(27)100006ZN$IN$:IN$""6d18:1:"OUTPUT COMPARISON LIST TO:"6n6xX:"S)CREEN"6X:"P)RINTER"616368,07(5 *** SET UP TO USE ***'5X53534,0:?5X:P1$K5X:P3$W5X:P2$c5X:P3$o5X:P1$u5}5X55D$(4)523:1::" PRESS TO RETURN TO MENU ":58:15 "ORIGINAL PROGRAM TEXT FILE NAME?":6X:L%30:30464 *** SUCK IN FROM NEW PROGRAM TEXT FILE ***O4 IN$"":D$"READ ";N$d4 768,IN$:NS$IN$r4 NS(NS$)x4 4 OUTPUT4P204P1P21:P2P2R4(J$,P1,R):P2(J$)40704P1P21:P2P2R411);(J$,P1,R)4P2(J$)40405:"END OF COMPARISON":23D$"CLOSE":D$"PR#0"I323:1:R70ī1240o3:"PRESS ANY KEY TO CONTINUE";:3216,0:R70ī100003116103 *** SUCK IN FROM OLD PROGRAM TEXT FILE ***3IN$"":D$"READ ";O$3768,IN$:OS$IN$3OS(OS$)010:10302B216,0:1190,2LX30001150L2V" ADDED: ";:J$NS$:4000V2`3010h2jNS$""ī11902t" ADDED: ";:J$NS$:4000:11202~"DELETED: ";:J$OS$:4000220102OS$""ī11902"DELETED: ";:J$OS$:4000:11602R70ĺ32010:30101OS$NS$102081OS$""X2000:1090Q1NS$""X3001:10901$OSNSOS$NS$ĺ"CHANGED: ";:J$OS$:4000:" TO: ";:J$NS$:4000:10201.OSNSĺ"DELETED: ";:J$OS$:4000:2010:1030 28OSNSĺ" ADDED: ";:J$NS$:4000:3[ 0 :'0(4)"BLOAD STRING INPUT"E0 *** COMPARE PROGRAM ***z0(*** INPUT ROUTINE FROM NIBBLE VOL2,NO2 ***02"CALL 768,IN$"0< USES ROUTINE0F10000: TO MENU0*** HERE WE GO!!! ***0216,0:1090: *** IF OUT OF DATA *** 1        ΠԠҠԠŠ̤̠̠̤Ԡ̺̤Ҥ̩Ơ̠̠Ҡ̠Ҡ̠ΠԠӠԠٯΩԠԠƠ٢Π̤Ԥ̤̤ĤҤŠ ԠҠŠҠԠŠŤԠ̤ȤƠ̠ŤΠԠҠԠŠ̤̠̠̤Ԡ̺̤Ҥ̩Ơ̠Ҡ̠  *,.'*PASCAL --> DOS TEXT*G8'* FILE CONVERSION *bB'*BY DANA J. SCHWARTZ*}L'*WASHINGTON APPLE PI*V'* JULY 81 *`'*********************H*******"#* ERROR HANDLER *5$#*****************;&#_(#D$(4)ĺD$"PR#0":D$"NOMON O"2#:G$;G$;"ERROR ";(222);" AT LINE ";(218)(219)256<#216,0:(DR2PA0)D$(4)ĺD$"CLOSE "N$F#350''********************* $'* " "::"TYPE TO CONTINUE";I$:936:cI1NF:STBUFFI266:NL(ST):NL0ī4050J1NL:L$L$((STJ)):J:" ";L$:L$"":Y(0):LNLN1LN20INFĺ:"PRESS TO CONTINUE";I$:936:V$":":LN1I:# #**********0!********************;* PASCAL DIRECTORY *U********************[:936:BF(BUFF256):TR0:SE1141:3000:BFBF1:SEV$"":NLBUFF6:I1(NL):V$V$((NLI)):I:V$;":":L$"":Y(0)3LN1:NF(BUFF16):NF0ĺTMP):S1S21 TMP0S10. TMP7S2154 : M *************` * CALL RWTS *s *************y  TK,TR:SC,SE:HB,BF:ER,0:RWTS (ER)0ı D$(4)ĺD$"PR#0":D$"NOMON O" :G$;G$;"RWTS DISK ERROR ";(ER):::902:3000BLBK1:2500.BFB3:SES1:3000DBFB4:SES2:3000~ DR1ĺG$:"INSERT DOS DISK AND PRESS RETURN";I:936  **************** * BLK -> TR/SE * ****************  TR(BL8):TMP(BL8TR)8  S22(7(PT5)256&.BT(PT4)(PT3)25658TY(PT2);B[LPTPT26:NUNU1:NU01020gVTY1:m************************ READ 2 PASCAL BLKS ************************BLBK:2500BFB1:SES1:3000BFB2:SES2*******************-* FIND PASCAL FILE *G********************MBF(BUFF256):TR0:SE1141:3000:BFBF1:SENU(BUFF16):PTBUFF32:LN(N$)(PT)LN1100J1LN(PTJ)((N$,J,1))1100J $TP(PT6):A$A$" ":S:290'C0IBUFF1023."IE,BKBK2:BKBT3306PA1:DR1ĺD$"PR#0":936:G$:"INSERT PASCAL DISK AND PRESS RETURN";I$:936@2000:PA0:210J:936TD$(4)ĺD$;"CLOSE ";N$:D$;"NO MON O"^HI2100:*56):B2B11:B3B21:B4B31:BKTP2:2000\ A$"":(4);"OPEN "N$;",D1":D$(4):D$"MON O"n D$"WRITE "N$ IBUFFBUFF1023 C(I):C16A$A$(C):290 C13ĺA$:A$"":Y(0):290 C16280 II1:SP(I):SP33290S1SP32PROTECTED)":170f "INSERT DOS DESTINATION DISK IN DRIVE 1 INSERT PASCAL SOURCE DISK IN DRIVE 2" :"FILE ( FOR DIRECTORY):";N$:(N$)0İ4000:100 1000:TY3BTTP4ĺG$;G$"FILE EMPTY, NOT TEXT, OR NOT FOUND":170) 936:B1(BUFF28:d x" ":23:" "; :19:34,18:35,22:DR0150 "HOW MANY DRIVES (1/2): ";I$:936:DR(I$):DR1DR2ĺG$;G$:140 IOB2,DR:DR1ĺ"INSERT PASCAL DISK (WRITE D(BUFF)R PIOB10,0:IOB11,0:IOB12,1:IOB13,0:IOB14,0:IOB15,96:IOB16,1{ ZDCT,0:DCT1,1:DCT2,239:DCT3,21 d936:5:16:"HUFFIN":9:"PASCAL TO DOS TEXT FILE CONVERSION" n13:10:"BY DANA J. SCHWARTZ":10:"WASHINGTON APPLE PI":1RWTS5,217:RWTS6,3:RWTS7,176:RWTS8,1:RWTS9,96 <RWTS10,173:RWTS11,MOD(IOB13):RWTS12,((IOB13)256):RWTS13,141:RWTS14,MOD(ER):RWTS15,(ER256):RWTS16,96 FIOB,1:IOB1,96:IOB3,0:IOB6,MOD(DCT):IOB7,(DCT256):IOB8,MO#HI(115)(116)2562100:HI. 9000PMOD(X)(X256(X256))256RWTSHI:ERHI17:IOBHI18:DCTHI36:BUFFHI40(TKIOB4:SCIOB5:HBIOB9:G$(7):PA0:DR06 2RWTS,169:RWTS1,(IOB256):RWTS2,160:RWTS3,MOD(IOB):RWTS4,32:     )(B2$)231A$(P)B1$:A$(P1)B3$B2$:625M%N499P11:A$(N1)A$(N):x%A$(P)B1$:A$(P1)B3$:A$(P2)B2$:625%***********************%--EDITOR ROUTINE--%B$:A(B$)%B$","B$(95)%A21İ1245%A14İ1265&A8İ120$"":1400+$s(B4$)2B3$(B3$,(0)):TA$x(B4$)15ī1375$}((B1$)(B2$)(B3$)231)(((B3$,1))31)A$(P)B1$B3$B2$:625$N499P11:A$(N1)A$(N):N$((B1$)(B3$)231)(((B3$,1))31)A$(P)B1$B3$:A$(P1)B2$:625+%(B3$B3$"":36,CH:CV1F#PCA1B1$"":B2$A$(P)::(A$(P),1);::1370#UB1$(A$(P),CA1):B2$(A$(P),(A$(P))CA1)::(A$(P),CA,1);:#Z10:1#_B4$:B4$","B4$(95)#d(B4$)31ĺB4$;:B3$B3$B4$:1375#i(B4$)24ī625 $nT(0):T0B3/"-CA1A$(P)(A$(P),(A$(P))1):"*";:1440f"2CA(A$(P))A$(P)(A$(P),(A$(P))1):"*";:1440"7A$(P)(A$(P),CA1)(A$(P),(A$(P))CA):"*";:1440"<***********************"A---INSERT ROUTINE---"F34,11::34,0:15:1:1520:1545#K**********#! ---OVERTYPE SUB----R!(CA1)A$(P)B$(A$(P),(A$(P))1):1310!(CA(A$(P)))A$(P)(A$(P),(A$(P))1)B$:1315!A$(P)(A$(P),CA1)B$(A$(P),(A$(P))CA)!B$;:CHCH1:CACA1:1440!#B$;:625!(---DELETE CHAR SUB--ACA1:CH39:! 36,CH:CV1:<  --CURSOR UPSPACE---I CV(37)w CVCV1:CACA40:CA1CACA40:CVCV1: CV1:  --CURSOR DOWNSPACE-- CV(37) CVCV1:CACA40:CA(A$(P))CACA40:CVCV1: CV1: !*************33,40::10::"FILE SAVED AS '";::NAME$;::"' RENAME AS REQUIRED."::"DO YOU NEED TO CAPTURE ANOTHER FILE ?":A$:A$:A$"Y"639904:"CAPTURE MADE":7)NAME$:A CORRECT ?(Y/N)":A$:A$:A$"Y"639903ZL$(ZL$FL$,5):ZH$(ZH$LL$,5):NAME$NAME$"("FL$"."LL$")":33,30:D$"OPEN"NAME$:D$"WRITE"NAME$3X(121)(122)25682:I04:XI,((ZL$,I1,1)):XI6,((ZH$,I1,1))::00000,00000:D$"CLOSE"4:10:"ENTER NAME FOR TEXT FILE ? ";NAME$::ZL$"0000":ZH$"0000":(NAME$)0639902"ENTER FIRST LINE # ?";FL$:FL(FL$):FL:FL$(FL):FL0FL63989639912"ENTER LAST LINE # ?";LL$:LL(LL$):LL:LL$(LL):LLFLLL63989LL063992(3"IS DATQ$(34)T1 D$(4):A$"CAPTURE.LINES":D$"OPEN"A$:D$"WRITE"A$:33,30:63990,63997g1"HOME:VTAB10"1"PRINT"Q$"USE "Q$";:INVERSE:PRINT"Q$" RUN 63990 "Q$";:NORMAL:PRINT "Q$" TO CAPTURE LINES. "Q$1D$"CLOSE"A$:1(D$"LOCK"A$:S2D$(4): 0 ************************@0 * MAKE LINE CAPTURE *_0 * BY DAVID NORDVALL *~0 * MINI'APP'LES *0 * 07/10/81 *0 * THANKS TO C. BOODY *0 * FOR THE TECHNIC *0 ************************ 1   BY DANA J. SCHWARTZ@ n OF WASHINGTON APPLE PI. SOME VERSIONSk o BEAR MODIFICATIONS BY VAL GOLDING OF p CALL-A.P.P.L.E.TLE PASCAL DISK. THE PROGRAMF g CAN BE USED WITH EITHER 1 OR 2 DISKT h DRIVES. i WHEN USING THIS PROGRAM FOR THE FIRST j TIME IT IS BEST TO USE BACK-ED UP DISKS k TO PREVENT A LOSS IF ANY MISTAKES ARE l MADE. m HUFFIN WAS WRITTEN  HUFFIN INSTRUCTIONS?::T$"HUFFIN"::18:T$:::zX15:A$:A$:::X14:A$:A$:::X14:A$:A$:(20:"]RUN HUFFIN":19:d HUFFIN IS A PROGRAM WHICH ENABLES ANe APPLE ][ WITH 48 K TO READ TEXT FILES f FROM AN APP  H OF THESE 256 BYTE SEGMENTS HAS A"Q"PHYSICAL LOCATION ON THE DISK WHICH IS""SPECIFIED BY A TRACK NUMBER AND A SECTOR";"NUMBER WITHIN THAT TRACK.""(TRACK NUMBERS RANGE FROM 0 TO 34, WHILE";"SECTOR NUMBERS RANGE FROM 0 TO 0ĺ:23:34,0:1"END OF THIS T/S LIST"R"PRESS ANY KEY TO CONTINUE"_A$:950s INSTRUCTIONS ~11:1"EACH FILE ON THE APPLE ]";(91);" IS STORED ON""THE DISK IN 256 BYTE SEGMENTS CALLED""SECTORS."#"EAC(TS13I2)'eTT0SS0ĺ:23:34,0cf"DO YOU WANT TO DO ANOTHER ONE? (Y/N)";:A$:A$"Y"95igzjTT10ĺ" ";tTT;"/";:SS10ĺ" ";~SS;:" ";I79ľA$ITRK(TS1):SECT(TS2): NEXT T/S LIST SEGMENTTRK0SECTIGH BYTE ($9300)3IOB8,0: T/S BUFFER LOW BYTEHIOB13,0: RC=0RRWTS72,0: RESET P REGISTER IN REGISTER SAVE AREA$5000: CHECK RC.TS37632: LOCATION OF T/S BUFFERLI0121: 122 T/S PAIRS PER BUFFER `TT(TS12I2):SSNUSED"1TRK255ST$"DELETED":TRK(ENTRY32)d5:1:" T/S LIST:TRACK ";TRK;" SECTOR ";SECT;6:1:" STATUS:";ST$34,7:: SET TEXT WINDOW READ T/S LISTIOB4,TRK: TRACKIOB5,SECT: SECTORIOB9,147: T/S BUFFER HCT MODULE"+aFTYP32FTYP$"A-TYPE FILE"LfFTYP64FTYP$"B-TYPE FILE"op3:1:"FILE TYPE:";LCK$;FTYP$zLGTH(ENTRY33)(ENTRY34)2564:1:" LENGTH:";LGTH;" SECTORS"TRK(ENTRY):SECT(ENTRY1)ST$"ACTIVE"TRK0ST$"UK$"LOCKED ":FTYPFTYP128'>FTYP$""ECFTYP0FTYP$"TEXT FILE"oHFTYP1FTYP$"INTEGER BASIC PROGRAM"MFTYP2FTYP$"APPLESOFT BASIC PROGRAM"RFTYP4FTYP$"BINARY FILE"WFTYP8FTYP$"S-TYPE FILE" \FTYP16FTYP$"RELOCATABLE OBJE700: NO MORE DIRECTORIES:DT(DIR1):DS(DIR2):500n23:1:"THE FILE ";NM$:"IS NOT ON THIS DISK";13:1:"PLEASE RE-ENTER THE FILE NAME"160  FOUND THE ENTRY*:1:1:"FILE NAME:"NM$;4FTYP(ENTRY2):LCK$"":FTYP127LCNAMEKbI06: SEARCH CATALOG SECTOR. EACH CATALOG SECTOR HAS 7 ENTRIES.wlENTRYDIR11I35: POINT TO NEXT ENTRYq(ENTRY3)0700vJ1(NM$):((ENTRY2J)128)(NM$,J,1)ī650J:800: FOUND NAMEI(DIR1)0(DIR2)0ī IOB9,146: DIRECTORY BUFFER HIGH BYTE ($9200)[ IOB8,0: DIRECTORY BUFFER LOW BYTEp !IOB13,0: RC=0z &RWTS '72,0: RESET P REGISTER IN REGISTER SAVE AREA 05000: CHECK RC :DIR37376: LOCATION OF DIRECTORY BUFFERX FIND FILE RWTS9 72,0: RESET P REGISTER IN REGISTER SAVE AREAO 5000: CHECK RC w VTC37120: LOCATION OF VTOC BUFFER DT(VTC1): DIRECTORY TRACK DS(VTC2): DIRECTORY SECTOR  READ DIRECTORY IOB4,DT: TRACK IOB5,DS: SECTOR2AND DCT AT $9000) 6IOB36874:RWTS368649 @ READ VTOCR JIOB1,S16: SLOT #h TIOB2,D: DRIVE~ ^IOB4,17: TRACK hIOB5,0: SECTOR rIOB9,145: VTOC BUFFER HIGH BYTE ($9100) |IOB8,0: VTOC BUFFER LOW BYTE IOB13,0: RC=0 TER THE FILE NAME "! 9585 14:4:" ";NM$H (NM$)30150Z (NM$)1ė: 16:5:"SLOT NUMBER? ";:A$:A$:S(A$):S1S7ī170 18:5:"DRIVE NUMBER? ";:A$:A$:D(A$):D1D2ī180 ,4000: LOAD RWTS JUMP INSTRUCTION, IOB, "L x8:4:" BY: JOHN MATUSHEK "| }9:4:" ": X1150 11:1:"DO YOU WANT INSTRUCTIONS? (Y/N) "; A$:A$:A$"Y"İ2000:150 A$"N"130 13:1:"PLEASE EN 36864& SECTOR LIST BY FILE= BY JOHN MATUSHEK^ MODIFIED BY PHIL FAULCONERu NOVEMBER 7, 1981ZX0:100_X1d:i5:4::" "n6:4:" TRACK/SECTOR LISTING OF A FILE " s7:4:"           l"IATE MODE (VIA DOS), EXITING THE BASIC":"PROGRAM AT THE SAME TIME. SINCE I DON'T":"THINK THAT THERE WILL BE MUCH USE FOR":"THIS ROUTINE IN THE DEFERRED MODE (IT"b"CAN BE 'EXEC'ED), THIS PROBLEM SHOULD":"NOT BE A HANDICAP."::" THE ROUTINE TRICKY. FOR THIS":"REASON, THE PROGRAM WAS TERMINATED WITH":"A 'JMP' TO THE DOS WARMSTART ROUTINE AT":"$3D0 INSTEAD OF AN 'RTS'."X10000:10)"HOW TO USE CONT'D"::" IF USED FROM WITHIN A BASIC PROGRAM":"THE ROUTINE WILL EXIT INTO THE IMMED-"FOR THE USER"&"WHO WISHES TO MAKE MODIFICATIONS AND/OR":"ENHANCEMENTS. THE THIRD VERSION IS A":"THE BINARY OBJECT FILE, AND IS INTENDED":"TO BE 'BRUN'. DOS DOES A 'JMP' WHEN A":"FILE IS 'BRUN' NOT A 'JSR' WHICH IS APT":"TO MAKE A RETURN A BIT VERSION IS THE":"ORIGINAL SOURCE CODE, COMPATIBLE WITH":"THE APPLE ASSEMBLER FOUND IN THE DOS" "TOOLKIT. A RELOCATABLE VERSION IS ALSO":"INCLUDED FOR USE WITH THE RELOCATABLE":"LOADER FOUND IN THE TOOLKIT. THIS WILL":"AFFORD MAXIMUM FLEXIBILITY " AT THIS POINT, THE VTOC IS AGAIN":"WRITTEN ONTO THE DISKETTE. THIS":"COMPLETES THE MAIN PROGRAM. THE REST OF":"THE PROGRAM JUST MAKES A NEAT EXIT.":10000:10)"HOW TO USE IT":a" SEVERAL VERSIONS ARE AVAILABLE ON":"THE DISKETTE. A TEXTBE OVERWRITTEN. IF IT IS,":"THEN THE BIT MAP FOR DOS IN THE VTOC":"(STILL RESIDENT IN MEMORY), IS ALTERED""BY WRITING $FF IN THE BIT MAP FOR THE":"DOS SECTORS, THAT AREA OF THE DISK":"APPEARS FREE TO DOS, AND WILL BE OVER-":"WRITTEN AS NEEDED."IS ALTERED TO":"INDICATED THAT THE ADDITIONAL SECTORS""ARE UNUSED ($FF IS WRITTEN INTO TRACK":"35'S BIT MAP). THIS COMPLETES THE":"RECOVERY OF TRACK 35.":10000:10)"HOW IT WORKS CONT'D":l" THE PROGRAM THEN ASKS IF THE DOS":"SPACE IS TO ACK WRITE @ $BFOD) IS CALLED TO":"FORMAT THAT TRACK.":" THE VTOC IS THEN READ FROM THE DISK-":"ETTE AND TWO MODS ARE MADE TO IT BEFORE"7r"REWRITING IT ONTO THE DISKETTE : FIRST;":"THE NUMBER OF TRACKS IS RAISED TO $24":"AND, SECOND; THE BIT MAP W RETURNS AND":"PAUSES FOR A KEY TO BE PRESSED. THIS":"ALLOWS FOR REPLACEMENT OF THE PROGRAM"J"DISKETTE WITH THE ONE TO BE PROCESSED":"(THE DATA DISKETTE).":" THE READ/WRITE HEAD IS THEN MOVED":"OVER TO TRACK 35, AND A ROUTINE IN DOS"^"(TRTA DISKETTES ON DUAL" "DRIVE SYSTEMS (USEFUL FOR ARCHIVING).":"YOU WILL BE ABLE TO BOOT FROM THE DISK-":"ETTE UNTIL THE TRACKS ARE ACTUALLY USED.":10000:10)"HOW IT WORKS":_6" THE FIRST PART OF THE PROGRAM CLEARS":"THE SCREEN, OUTPUTS A FESTED. SEE YOUR DEALER.":" THE SECOND PART OF THE PROGRAM WILL":"INQUIRE AS TO WHETHER YOU WISH TO USE" "RESERVED DOS AREA. IF YOU DO, BEWARE":"THAT YOU WILL NOT BE ABLE TO BOOT FROM":"THAT DISKETTE. THIS OPTION IS ADVISABLE":"ONLY FOR USE ON DAIED BY APPLE WERE":"ORIGINALLY UNABLE TO ACCESS TRACK 35." "FOR THIS REASON, TRACK 35 WAS NOT USED.":"IF YOU HAVE ONE OF THESE DRIVES YOU'LL":"FIND OUT QUICK ENOUGH BY AN 'I/O ERROR'"j "MESSAGE. THE DRIVE MAY, OR MAY NOT BE":"ABLE TO BE READJU ALLOWING THIS AREA TO BE USED":"AND, IMPLICITLY, OVERWRITTEN.":" THE ROUTINES/MODIFICATIONS DISCUSSED":"HERE ARE FOR A 48K SYSTEM AND WILL NOT"; "WORK WITH ANYTHING LESS, WITHOUT SOME":"ALTERATIONS.":10000:15)"CAVEAT"::" SOME DRIVES SUPPL5, (0 IS FIRST), IS NOT USED":"ALTHOUGH THE DRIVES SUPPLIED BY SHUGART" "TO APPLE CAN ACCESS IT. SECONDLY (AND":"OPTIONALLY) THE AREA ON THE DISKETTE":"NORMALLY RESERVED FOR DOS, IS RESET IN":"THE DISKETTE'S VOLUME TABLE OF CONTENTS" "(VTOC),d:2:15)"TRACK 35":14)"----------"::" A DISK EXPANSION UTILITY."::" THIS MACHINE LANGUAGE PROGRAM WILL":"INCREASE USEABLE DISK SPACE IN TWO"H "WAYS : FIRST, AN ADDITIONAL TRACK WILL":"BE CREATED ON THE DISKETTE. NORMALLY,":"TRACK 3        ************************7]--REVIEW/EDIT DISPLAY--=b_g4:"INPUT BLOCK # & RTN ;";PrlP1P500615q1:1:868vC0:CL$"":CW$""{:"BLOCK #";P;:30:150A$(P)""6704:1:9586:15::"EMPTY BLOCK": R/LF/LF"""RTN,RTN=GO TO MENU">N14:"----'----!";:L24:34,4h!N14:"----'----!";:w&22:35,22+PF5000CH(36)5:P;::3:22:150::33:"BLK.";P::22:1?36,CHD175I(A$(P))""P500NSXB$"7"İ1565<B$"Q"ė:10:15::"YOU'RE CLEAR"::M375:(MENU)k************************ ----WRITE----G1500A$(G)""FG:G500:A0 " CTRL P=PARAGRAPH CTRL R=CR/LF":" CTRL B=BACKSPACE CTRL S=CRINT HARD COPY"-53)"6. COMPACT STORAGE"P53)"7. CLEAR MEMORY OF TEXT"p53)"Q. QUIT THIS PROGRAM"56::"SELECT 1 > Q";::13B$B$"1"İ500B$"2"605B$"3"İ870B$"4"İ915B$"5"İ800B$"6"İ965*********************+w ----MENU---->|34,0:35,24:\150:26)"TEXT WRITER B"o2:17:"MENU"14:"=========="53)"1. WRITE TEXT"53)"2. REVIEW/EDIT"53)"3. READ FROM DISK"53)"4. WRITE TO DISK"53)"5. P******************;----DISPLAY SUB----:@A$(P)""ıCEN12WJA((A$(P),1))OA16A18A19İ1100:(PRT.LAST LINE)TA16CL$" ":C4:365YA19ĺ:365^A18ī365c(A$(P))2ıhN11m1025:: (PRINTOUT)r***2290#(13=RTN. , 16=CTRL P)?(18=CTRL R, 19=CTRL S)[( 2=CTRL B )oT(0):T0T1v T(A$(P))2A$(P)"":280A$(P)(A$(P),(A$(P))1)N1NN1200"B$;'A$(P)A$(P)B$,16*******CH(36):CV(37)* A1A(B$):220: B$:A(B$)_ (A8)(A21)Ĺ36,CH:37,CV:200t B$","B$(95) (A16A18A19)N1N230:A1:300 A13N230:300: (NEXT) A16ĺ:5:295 A19ĺ::295 A18ĺ:295A(13)(4)' ( X$ IS RTN + CTRL D ): 375:( MENU )X ************************u --AVAILABLE MEM. SUB--- M(0):M0MM65536 :"MEM: ";M;: ************************ ----DATA ENTRY SUB---- A$(P)"" N1230 TS-- -A$=B1$+B3$+B2$--? _*************************Z d----TEXT WRITER B----w i-MOD.BY HAMELINK TO ADD n-A DECENT EDITOR, ETC-- s------6/13/81-------- x************************ } ----PRESETS---- A$(500):X1$"TEXT":X$RARY- --A1$,CA,CB=MISC.-5 --DS$=DOUBLE SPACE=  V (-POKE34=WINDOW TOP-r )-POKE36=CURSOR HORIZ.- *-POKE37=CURSOR VERT.- +-POKE1785=PTR.LINE LGTH- 1 2-CALL-868=CLR > LINE END 3-CALL-958=CLR > SCRN END <-ARRAY SEGMEN)-  --X1$="TEXT"-( --A=ASC( )-C --N,N1=LOOP COUNTERS-X --LL=LINE LGTH-q --LM=LINE L.MARGIN- --CC$=CHAR.- --CW$=WORD- --CL$=LINE- --CH=CURSOR HORIZ.- --CV=CURSOR VERT- --C=ARRAY OR LINE POS- --T=TEMPO`!  -----TEXT WRITER B1------n -THIS HAS EDITING REMARKS, USE TEXTWRITER B FOR DE-REMARKED PROGRAM.-- --A$(P)=TEXT ARRAY- --B$=TEXT INPUT CHAR.---C$,D$=COPIES OF B$---B1$,B2$,B3$,B4$=PARTS OF THE STRING- --X$=(RTN+CTRL D          J X "  #ە㕩  㕩ەܕ $4ĔŔ㕩   89 򩕠  ?HLԠˬΠӠ٠ŠӠٽө`$`TA FOR TRANSLATE TABLE9> " "," X"," X "," XX" \H " X "," X X"," XX "," XXX" ~R "X ","X X","X X ","X XX"\ "XX ","XX X","XXX ","XXXX" NUMERIC CONVERSION TBL NN(15) I015:NN(I):I  DATA FOR NUMERIC CON" DISK FREE SPACE -- EACH 'X' IS UNUSED"0N" T T"}" R -----SECTOR----- R -----SECTOR-----"" K FEDCBA9876543210 K FEDCBA9876543210" LOAD TRANSLATE TABLETT$(15)I015:TT$(I):I4 DA(X)X016:X2((X1)16):X3(X1)X216W <I;"-";TT$(X0);TT$(X1);TT$(X2);TT$(X3);} DFSFSNN(X0)NN(X1)NN(X2)NN(X3) NI X24:1:"---"FS" FREE SECTORS"; b24:25::"ANOTHER ? (Y/N)";: lA$:A$"Y"Ľ:100 vA$"N"610 :* 2000: LOAD TRANSLATE TABLEI 3000: LOAD NUMERIC CONVERSION TABLEd 1000: PRINT HEADINGSp &I034 +(I12)2:1:((I2)2)((I2)2)1Ė21 0I10ĺ" "; 5XVTC56I4: ADDRESS OF BIT MAP FOR TRACK I 7 46067+ :X0((X)16):X1 36864: CALL RWTS. 72,0: RESET P REGS RC(IOB13): CHECK RETURN CODEl RC0VTC37120:500 20:5:"AN ERROR HAS OCCURRED WHILE" 21:5:"READING THE DISKETTE" 22:5:"THE RETURN CODE IS "RC   PRINT VTOC $:A$:S(A$):S1S7ī170W 18:5:"DRIVE NUMBER? ";:A$:A$:D(A$):D1D2ī180 ,4000: LOAD RWTS JUMP INSTRUCTION, IOB, AND DCT AT $9000 6IOB36874 JIOB1,S16: SLOT # TIOB2,D: DRIVE ^IOB4,17: TRACK hIOB5,0: SECTOROU WANT INSTRUCTIONS? (Y/N) ";= A$:A$:A$"Y"İ5000:150N A$"N"130z 13:"DO YOU WISH TO USE THE LAST DISK" 14:"WHICH WAS READ BY DOS? (Y/N) "; A$:A$"Y"VTC46011:500: VTC = VTOC ADDRESS  16:5:" SLOT NUMBER? ";:A>  DISKETTE FREE SPACE 3 BY JOHN MATUSHEK;d:`i5:10::" "n6:10:" DISK FREE SPACE "s7:10:" "x8:10:" BY: JOHN MATUSHEK "}9:10:" ": 11:1:"DO Y YOU WANT TO CONTINUE? ";:B$:B$"N"ıB)1P1500:A$(P)""::_)6***********************X**-( " CTRL I-CURSOR=1ST.CHAR.OF INSERT."Z(" 1ST.CHAR.AFTER INSERT"`(}(***********************( ---CLEAR MEMORY---(":"YOU ARE ABOUT TO LOSE ALL OF YOUR TEXT"(':"THAT IS CURRENTLY STORED IN MEMORY!"(),::"DOS FORMAT CONTROLS":" CTRL U = UP CTRL W = DELETE":" CTRL N = DOWN CTRL I = INSERT ST.":" CTRL H = LEFT CTRL O = INSERT END":" CTRL J = RIGHT CTRL X = EXIT"'"--------------------------------------"'(*********************5&A10İ1225&A24625.&A231320O&A9CH(36):CV(37):1345^&A321440h&1290&***********************&--EDIT MODE FORMAT--&34,11::34,0&12:1&"--------------------------------------"'"CURSOR CONTROL,6;@ACEYA\^hAA8 J X "  #ە㕩  㕩ەܕ $4ĔŔ㕩   89 򩕠  ?HLԠˬΠӠ٠ŠӠٽө`$`؁"'A* ==================";:J 24:"000000000011111111112222222222333333-DEC";: <5:"012345678901234567890123456789012345-TRK";: F6:"========================================";: P7:37:":CDE" Z8:"========================================"; dA(875):875,96Y(4);"BLOAD DISKSCAN.OBJ1,A$6000":(4);"BLOAD DISKSCAN.OBJ2"hSCAN24576r400~TLV267 DISK SCANNER BY DAVID CREEMER, MODIFIED BY PHIL FAULCONER::"DISKETTE SCANNER" (3:"======================    SC TO END";:%zA$:(A$)27ė::611:1:958< A"'X' IS PRINTED. OTHERWISE, A SPACE IS"7"PRINTED."=n"IF YOU WISH TO PRINT THE FREE SPACE OF A";"DIFFERENT DISK, INSERT THE DISK AND " "ANSWER 'N' TO THE NEXT QUESTION."6000o p24:1::"PRESS ANY KEY TO CONTINUE OR E TABLE OF";"CONTENTS (VTOC) OF THE DISK, AND FORMATS";h"THE FREE SPACE BIT MAP ON THE SCREEN."n"THE PROGRAM DISPLAYS EACH TRACK (FROM 0""TO 34) AND THE SECTORS ON THAT TRACK""(FROM F TO 0). IF THE SECTOR IS FREE, AN";'82,0:36883,145:36884,0736885,0:36886,1:36887,0W36888,0:36889,96:36890,1v36891,0:36892,0:36893,036894,0:36895,0:36896,036897,1:36898,239:36899,216h INSTRUCTIONS11:1 "THIS PROGRAM READS THE VOLUMEVERSION-& 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4R36864,169:36865,144:36866,160u36867,10:36868,32:36869,21736870,3:36871,96:36872,036873,0:36874,1:36875,9636876,1:36877,0:36878,1736879,0:36880,32:36881,144368ЧȠӧƠŠӠ̧ĮŠàԠˬΠӠ٠ŲàŠӠٽө  ԬԬҬҬԠ ƬĸԠƍؠؠؠؠؠĠŠȠŠг ̠ӠϠŠàϠˍ٠ҠӍĠҠԠРĠԠàҠϠ΍ϠӠΧԠРӠĠŠŠؠвŲؠԠҠҠٍҠԱԠԍ؍ؠŠȠŠвҠΠԠōР٧ӠԠӠŠĠϬԠ͠ƍؠгҫؠҫؠÍ٠ҠӍҫԠƠӠϠƠРԠЍҫôҫõР̠ϠӍ« ̠Ӎ٠ҠӍҠԠРҠӠōΠˠ«͠Ҡˮ« ̠Ӡ٠ ҠӍҠҠԠˍР̠ϠĠÍ««« ̠ӠϠĠŠӍҠŠҠ΍ҠԠ ΍ҠԠϠӮؠРЍԱŬؠԠҠ͠ŠҠԱԠԍؠؠĠƠŠŠԱҠΠҠԍΠР̍ǠΠΠӠӠˠŠҍӠՠĹӠՠİҠՠưčŠՠõŠՠƴԠՠƳƍΠՠıԱՠưԠՠĸŠԠ΍ҠՠԠҠŠ     "PATCHING BOOT2...":/ CM%1:BU%SB:SE%1E*RWTS:ER%0940]4SB72,0:SB73,155m>CM%2:RWTS}HER%0940R"UPDATING VTOC...":\CM%1:TR%17:SE%0fRWTS:ER%0940pISB68SB6811:I,0:uBZ$"BOTH"ĺ:ISB6812NTBASIC...":BU%INBAS$NV39BZ$"BOTH"NV6NTNVNV2:TR%T`S015:SE%SjRWTSBU%BU%PAGE:S,TER%0940"WRITING LOADER...":BZ$"BOTH"Ĺ16968,08BU%LBASTR%0:SE%10RWTS ER%0940:CM%20O12:"WHICH BASIC DO YOU WISH LOADED"KS"(INT/FP/BOTH)? ";BZ$^UBZ$"INT"670zX"WRITING FPBASIC...":bBU%FPBASlT35:TR%TvS015:SE%SRWTSER%0940BU%BU%PAGE:S,TBZ$"BOTH"740 "WRITING IDS1DS7420 DS% 20:868B "DESTINATION DRIVE: 1";Z (36):A$:DD(A$)i DD0DD1| DD1DD2480 DD 22 &"PRESS TO CONTINUE, TO EXIT "; 0A$:A$:A$(13)ė: :PATCH DISK D:NSL%DS:DR%DDTO INITIALIZE IT."@ |"DO NOT ATTEMPT TO RECONSTRUCT THE VTOC"n "OR THE TRACKS CONTAINING BASIC WILL BE" "MARKED FREE AND HENCE OVERWRITTEN." SLOT & DRIVE 18:868 "DESTINATION SLOT: 6"; (36):A$:DS(A$) DS0DS6 S 3.3 48K SLAVE DISK IN SUCH A WAY"P J"THAT IT WILL LOAD A LANGUAGE CARD (IF"| T"ONE IS PRESENT) WITH THE APPROPRIATE" ^"BASIC AS PART OF THE BOOTING PROCESS." h"THE DISK MUST BE ";::"BLANK";::" EXCEPT FOR THE" r"'HELLO' PROGRAM USED ;"BLOAD INTBASIC,A";INBAS* FPBAS12288< INTRODUCTIONB I 2d 12:"FAST BOOT MAKER" 12:"---- ---- -----" 5:10 ""BY J. MATTHEWS, M.D." $12:"AND J.E. HOPPER" ,9 6"THIS PROGRAM WILL MODIFY AN INITIALIZED"# @"DOPAGE256 D$(4)/ D$;"BLOAD FAST.RWTS"@ SBRWTSPAGEQ LBASSBPAGEt D$;"BLOAD FAST.LOADER,A";LBAS INBASLBASPAGE :"ENSURE THAT A COPY OF 'INTBASIC' FROM DOS 3.3 SYSTEM MASTER IS IN DRIVE":"THEN HIT A KEY *";(8);:A$::D$`0@ ɖP``COUNT1114D$"3"( COUNT1538D$"4"? COUNT1962D$"5"V COUNT2386D$"6"m COUNT2810D$"7" COUNT3234D$"8" COUNT3658D$"9" COUNTTLV1D$"0"  (3)(4)256 500( T1::D$;:< TT1:T36150J T35190[ Q11000:Q ,:22:1::"CARE TO SCAN ANOTHER DISK ? (Y/N)";:A$ 6A$"Y"ė:20 @:: T1:"E";: 24:1: COUNTTLVD$"1" COUNT690D$"2" ."2 :"INSERT DISK THEN HIT ";:"";ZZ$ 998:958:"NO. DATA TOLERANCE LEVEL? DEF:300";:Q114:(8);:Q:"";T$:T$""T$"300" TLV(T$) T0:COUNT0 2,T:7:T1::"R":768 7:T1:"S";: SCAN COUNTй34,8 n12:"CODE SUMMARY:":H s14::"0-9";::" - AMOUNT OF DATA"n }14::"R";::" - READING TRACK" ~14::"S";::" - SCANNING DATA" 14::"E";::" - READ ERROR,SKIPPED" :"HIGH NUMBERS ON TRACK 35 COULD INDICATE TRACK NOT IN USE/ INSTRUCTIONS FOR FREE.SECTORS`::::7:" FREE. SECTORS INSTRUCTIONS ":10:"TYPE : BRUN FREE.SECTORS "(:"USE '&' FOR SUBSEQUENT RUNS"2::"PROGRAM USES PAGE 3 ($300 - $3B0) OF MEMORY.""ٍ̬ύӍŠՠ٠ÍЫٍύٍЫٍϫӍŠՠЫÍàōЍЫЫ٠РЩٍĠƠSB6822:I,0:+zCM%2:RWTS:ER%09405CM%1F"DONE...":"PRESS TO CONTINUE, TO EXIT ";:A$:A$(13)ė:240(7);"I/O ERROR - UNABLE TO WRITE..."::920    H0P<0=>0?LHI.DA#$00+NSTR1.AS-"FREESECTORSONTHISDISK."H# LDX#$00.LOOPLDASTR1,XOUTPUTCHARACTEROFSTRING JSRCOUTINXCPX#$1BENDOFSTRING?#BNELOOPNO,DONEXTCHARACTERJSRCROUTSKIPTWOLINES&JSRCROUT*0JMPDOSWRMEXITTHROUGHDOSWARMSTART:FREELO.DA#$00DFREENYSKIPUNUSEDBITMAPSINY!CPY#$C4ANYBITMAPSLEFT?!BNENEXTYES,GODONEXTMAPJSRCROUTSKIPTWOLINESJSRCROUT+LDXFREELOLOADFREESECTORCOUNTINTO*XANDAREGISTERSLDAFREEHI$JSRLINPRTPRINTASADECIMALBITIFFREELONOT=0THENTESTNEXTBIT#@INCFREEHIFREEHI=FREEHI+1 JBNETSTBITGOTESTNEXTBIT$TNXTTRKINYPOINTTONEXTBITMAP^INXINCREMENTCOUNTER1hBEQNEXTIFCOUNTER=0THENDONEXTBITMAP rLDX#$FFELSERESETCOUNTER|IAP'TSTBITASLSHIFTMSBINTOCARRYBIT2BCSFRESECIFCARRY=1WEHAVEAFREESECTOR1BEQNXTTRKIFA=0WE'REDONE,GETNEXTMAP,BCCTSTBITIFCARRY=0SECTORISUSED,"*TESTNEXTBIT),FRESECINCFREELOFREELO=FREELO+146BNETST$03(0MATCHESANYVOLUME)$STA(PTR),YINTOPARAMETERLIST0JSRLOCRPLRELOADPOINTERTOPARAMETERLISTJSRRWTSREADSECTOR LDA#$00STAPREGFIXPREGLDX#$FFSETCOUNTERLDY#$38TRACK0BITMAP"NEXTLDABUFFER,YLOADBITMRLIST$<LDA#BUFFERLOADBUFFERADDRESS FLDY#$08$PSTA(PTR),YINTOPARAMETERLISTZLDA/BUFFERdINYnSTA(PTR),Y#xLDA#$01COMMANDCODEFORREAD LDY#$0C$STA(PTR),YINTOPARAMETERLISTLDA#$00EXPECTEDVOLUME#$LDY#UNTSTAFREELOSTAFREEHI*JSRLOCRPLLOCATERWTSPARAMETERLIST%STYPTRANDHAVEPTRPOINTTOITSTAPTR+1LDA#$11TRACK# LDY#$04$STA(PTR),YINTOPARAMETERLISTLDA#$00SECTOR#(INY$2STA(PTR),YINTOPARAMETEBROUTINE0~PREG.EQ$48USERSTATUSREGISTERSAVEDHERE,LDA#$4CLOADAJMPTOAMPERSANDVECTOR STA$3F56LDA#STARTLOADSTARTADDRESSTOAMPERSANDVECTOR STA$3F6LDA/START STA$3F73STARTLDA#$00CLEARPREVIOUSFREESECTORCO.EQ$3D0DOSWARMSTARTVECTOR5LLOCRPL.EQ$3E3RWTSINPUTPARAMETERLISTLOCATOR!VRWTS.EQ$3D9DOSRWTSVECTOR0`COUT.EQ$FDEDOUTPUTACHARACTERSUBROUTINE.jCROUT.EQ$FD8EOUTPUTARETURNSUBROUTINE6tLINPRT.EQ$ED24APPLESOFTPRINTLINE#SU5 %************************************FREESECTORPROGRAM**WRITTENBY**ARTARIZPE**04/04/82***% ********************************* $.OR$300.PTR.EQ$0WORKPOINTER&8BUFFER.EQ$200SECTORDATABUFFER(BDOSWRM     ̠̠ԍ΍٠΍٠΍ԠˍӍԍύҠӍύŠōԲҠǍŠӍōԠՠˠƠԯҠԍԠՠؠԍŠҠԍԍ٠ōРԍŠԍ٠ōŠԍРԲԠԍŠԱԍԍԱԍ٠ō̠̠ԠӠΠӠ ˠ ԍԠ Ӎנԍנƍ ԠӠӠΠӠΠӠŭíōԍԠՠ ƬĸԠ Š ƠՠŠ٠ٍŠՠŠōŠՠŠōàՠŠԠԍРՠƹٍǠÍРԍ àՠíɯϠ̠ˍ ՠ ϠՠϫŠōϠՠϫŠōӍӍӠՠĹӠӍ ՠųԠӠ ҍٍˠՠˠϠԠˍàՠϠԠԍŠՠ ҠϠԠ٫ԠԍŠՠ٫ԠōϠՠ٫ԠύϠՠϠĠǯӍčˠččϠŠӍҠĠɯύϠՠϫӠōҠōŠōԠ̠̠ӠӍàՠԠՠԠˠӠՠԠҍԮԮӍ٠ՠàҠٍԠՠŠԍŠō̠ΠΠŠԠӠΠōǺčččĠƠҍԠɯϠҠӍŠōêԠŠΠ͍٠ՠčŠҠî̠ŠΠ卪卪卪ŠƠōĠԠŠύ  ŠϬٍٍ̠ЍӍ̮ӍӠՠ٠ҠӍàӍԍύӠӠ΍ XLk gWJN L췩귍`鷍뷩0ᷭ HILéʮө $ ϛǠŠĠ`hh LڛlLѠ  L ȑȑ   H8    $  LŠӠΠӠˮLLx4 6 s j S5 B ꐭ5 L L P65 s j00   L222  Lx SO qLЪVТ2'56 s j S" $ j q L :L9% 5 I8Mt;=CH?JÍ QVQT_ɔ%8^7Z9[:^Z_[ 04 q1  )ȹ)ȹ)   L jɠ 0   LL M4'4В  X5 QLi!!! ! !!ԠƠ٢ΠŠԠŠŢԠ¨ŤĠź±ԢŠźԢΠ̺ԠϠŠӮȤɠԠԠԠĤŢŠŠ ԠԠŠĠӠŠԠŤ̠ԠŠӠĮԠԠϠՠĠϠŠҠŠԺȤԤȤ̤ŤŤ̤̤ŠԠĤ΢ŤԠĤŢŤؠˠˠҠɠϠŠؠɬàĤ̤ɠŠؠɠàĄL ̟͞L󙭇  J '`L&  JJJJȭ`8 Đ` `ՠ٠ҠӍàӍԍύӠӍōҠӠ΍ǠÍë٠òƬٍؠó̠àôàëŠôàÍô؍̠óٍ٠ôĽôԠòӍӠӠԠ٠ҍԍѠñōѠñРҍñҠЫ٠Ѝ٠ԍŠòЩٍҠҠҠҠԠōòٍōŠҍЩٍ@ HI y@ H @HH @H @H @H H @' H @   HHHHH` @SL% @DR% @TR% @SE% @BU% @CM% @ER%hh ߠ` _(*P]ŠŠ٠̠ Z]®Š٠٠N" KM6a(Ġ®Š)M N@" rUVW,Y#KM6o ,(S(ĠՠŠϠŠҿ)&@02`@*#r9()%a(ΠŠŠ))7]ŭǠ͠Ӡ˭<`@*#r9()%KM6QF FAST-BOOT,BY JOHN MATTHEWS, M.D.AAND J.E. HOPPERUCOPYRIGHT 1981uCOMMERCIAL RIGHTS RESERVEDNON-COMMERCIALDISTRIBUTION ENCOURAGEDdLOAD REQUISITE FILESnx10:11:"ONE MOMENT PLEASE"RWTS16384:RWTS WMESSAGE(MUSTBE11CHARS)/ $ .HS8D. MESS4.HS878787CTRL-G8 .AS-/FINISHED!!/ B .HS8DL MESS5.AS-/ERROR.CODE=/ V .HS8700WS8700IPRINTAINHEXJSRCROUTPLAPOPSTACKPLA .3RTS&*---------------------------------HMESS1.AS-/PLEASEINSERTDISKTOBECHANGEDPRESSRETURNWHENDONE/ .HS8D# MESS2.AS-/PRESENTMESSAGEIS/  .HS8D5 MESS3.AS-/INPUTNERTS&>*---------------------------------$HRWTS1LDA/IOBSETUPPARAMETERS RLDY#IOB \JSRRWTSfBCC.3NOERROR pLDY#$00#z.1LDAMESS5,YOUTPUTMESSAGE5 BEQ.2 JSRCOUTINYBNE.1ALWAYS....2LDAERRORJSR$FDDAS.BUFFER+$AF,YINXNEXTCHARDEY BNE.1WRITE.DISKLDA#$02WRITETODISK STACMDJSRRWTS1JSRCROUTJSRCROUTLDX#$00OUTPUTMESSAGE4JSRCROUT.1LDAMESS4,X JSRCOUTINX CMP#$8D *BNE.14S3,X JSRCOUT&INX 0CMP#$8D :BNE.1 DJSRGETLINEGETINPUTLINENCPX#11CORRECTLENGTH?XBNEGET.INPUTNO,DOAGAINbCHANGE.MESS*lLDX#$00GETREADYTOCHANGEMESSAGES vLDY#11%.1LDAINP.BUFFER,XREPLACECHARSSTADO'LDX#11PRINTPRESENTCAT.MESSAGE..2LDADOS.BUFFER+$AF,XSTOREDAT$B0-$BA$JSRCOUTMESS.STOREDBACKWARDSDEX(FIRSTCHARLAST) BNE.2JSRCROUTOUTPUTRETURN GET.INPUTJSRCROUTLDX#$00OUTPUTMESSAGE3.1LDAMESESSAGEISON"STATRACKTRACK2,,LDA#$02SECTOR26STASECTOR@JSRCROUT JREAD.DISKTLDA#$01READDISK ^STACMDhJSRRWTS1rJSRCROUT|LDX#$00OUTPUTMESSAGE2.1LDAMESS2,X JSRCOUTINX CMP#$8D BNE.1START1JSRHOMEHOMECURSORLDX#00OUTPUTMESSAGE1.1LDAMESS1,X JSRCOUTINX CMP#$8D BNE.1STASTROBEJSRCROUT".2LDAKEYBDWAITFORKEYPRESS BPL.2STASTROBE CMP#$8D BNE.2#LDA#$02CATALOGMERRORCODERETURNEDHERE%PACTVOL.HS00ACTUALVOLUMEFOUNDZPRVSLT.HS60PREVIOUSSLOT dPRVDRV.HS01PREVIOUSDRIVE&n*---------------------------------4xDEVICE.HS0001EFD8DEVICECHARACTERISTICSTABLE&*---------------------------------DRIVE1VOLUME.HS00ANYVOLUME TRACK.HS00TRACK#SECTOR.HS00SECTOR#/DCT.DADEVICEDEVICECHARACTERISTICSTABLE&(BUF.DADOS.BUFFERBUFFERADDRESS2.HS0000**UNUSED**,<CMD.HS01COMMANDCODE-01=READ,02=WRITE)FERROR.HS00COUT.EQ$FDEDCROUT.EQ$FD8EGETLINE.EQ$FD6FKEYBD.EQ$C000STROBE.EQ$C010RWTS.EQ$03D9INP.BUFFER.EQ$0200DOS.BUFFER.EQ$4000&*---------------------------------IOB.HS01SLOT.HS60SLOT6DRIVE.HS01GEONLYCHANGESONADISKBOOT&8*BLOAD,THENCALL2048(DON'TBRUN)&B*---------------------------------L.OR$0800V.TFB.CHANGE3.3&`*---------------------------------jSTARTJMPSTART1&t*---------------------------------~HOME.EQ$FC58 &*---------------------------------*CATALOGMESSAGECHANGER*BYBOBBYDEEN&*---------------------------------/*THISPROGRAMCHANGESTHEMESSAGEDISPLAYED)*ONACATALOG(USUALLY"DISKVOLUME")#$*MESSAGEMUST