`L i=L\Ʃx ? N'i  ͭЅ?0ȱ Ѕ?iȱi lԠԠ͠ԠϠŠͮŠ SYSTEM.APPLE   L$J1 -%N^IAC2020* CATALOG.TEXTvg*; CATALOG.CODEvg;M TRANSFER.TEXTvgMi PUFFIN.TEXTvg)iv PUFFIN.CODEvg)v| EXPLAIN.TEXT{I BASIC.SPACEg)bbvbh~ ~ ~ .bv0b(&꽌ɪɖ'*&%&,E'зЮ꽌ɪФ`+*xH&x'8*7Ixix&&  ') + &п x) ++`FG8`0($ p,&") (jJJ>L+ "?I>  N `  ` x V Nx .x- z `V0^*^*>` aI꽌ɪVɭ&Y&&Y& 꽌ɪ\8`&{ $L #6:}(*$S+*)  PROGRAM CATALOG;   CONST $BLANKS = ' '; $MAXREC=200; $MAXREC1=201; $NFILENAME='#5:MASTCAT.DATA'; $OFILENAME='#5:BACKCAT.DATA'; $PFILENAME='#5:CAT.POINT.DATA'; $CLEARSCREEN=12;  TYPE $DATERECORD=PACKED RECORD ('SPS:STRING[16]; 'AVOL:VOLID; 'DIR:DIRECTORY;  BEGIN $UNITREAD(4,DIR[0],2048,2); $VOL:=DIR[0].DIRVOLNAME; $SPS:=COPY(BLANKS,1,7-LENGTH(VOL)); $AVOL:=CONCAT(VOL,SPS);  END; {*****************************************************************}  PROCED********}  PROCEDURE WAIT;BEGIN $GOTOXY(0,23); $WRITE('Press SPACE to continue',CHR(29)); $READ(CH); $PAGE(OUTPUT);  END; {*****************************************************************}  PROCEDURE GETSYSVOL(VAR VOL:VOLID); $VAR 'I,J:INTEGER; $IOR:=IORESULT; $CLOSE(CATFILE); $(*$I+*) $IF (IOR=0) THEN LOOKUP:=TRUE ELSE BEGIN (LOOKUP:=FALSE; ( ( ( ( ( ( (IF (IOR<>10) THEN WRITELN('IORESULT FOR ',FN,' IS ',IOR); $END;  END;  {*********************************************************LE,LOCK); (WRITELN(PFILENAME,' WRITTEN TO DISK'); $END ELSE WRITELN('FILE ',PFILENAME,' EXISTS');  END;  {*****************************************************************}  FUNCTION LOOKUP; $VAR IOR:0..15;  BEGIN $(*$I-*) $RESET(CATFILE,FN); (WRITELN('THERE IS NO FILE NAMED ',PFILENAME,' ON THIS DISK'); (WRITELN('DO YOU WANT TO CREATE A ',PFILENAME,'? (Y/N)'); (HOWABOUTIT; (FOR DEX:='A' TO 'Z' DO DEXRAY[DEX]:=0; (REWRITE(DEXFILE,PFILENAME); (DEXFILE^:=DEXRAY; (PUT(DEXFILE); (CLOSE(DEXFIY IS FILLED'); (REWRITE(CATFILE,NFILENAME); (FOR I:=0 TO MAXREC DO BEGIN ,CATFILE^:=CAT[I]; ,PUT(CATFILE); (END; (CLOSE(CATFILE,LOCK); $END ELSE WRITELN('THE FILE ',NFILENAME,' ALREADY EXISTS ON THIS VOLUME'); $IF NOT LOOKUP(PFILENAME) THEN BEGIN (HOWABOUTIT; (WRITELN('FILLING ARRAY[0]'); (WITH CAT[0] DO BEGIN ,VOLNAME:=' '; ,FILENAME:=' '; ,FILEKIND:=UNTYPED; ,FILEDATE.MONTH:=0; ,FILEDATE.DAY:=0; ,FILESIZE:=0; (END; (FOR I:=1 TO MAXREC DO CAT[I]:=CAT[0]; (WRITELN('ARRAELN; $END; ${*****************************************************************}  BEGIN $IF (NOT LOOKUP(NFILENAME)) THEN BEGIN (WRITELN('THERE IS NO FILE NAMED ',NFILENAME,' ON THIS DISK'); (WRITELN('DO YOU WANT TO CREATE A ',NFILENAME,'? (Y/N)'); ****************************}  SEGMENT PROCEDURE INITIALIZE; $VAR (I:RECNUM; (CAT:CATARRAY; (DEXFILE:FILE OF INDEXARRAY; $PROCEDURE HOWABOUTIT;BEGIN (REPEAT READ(CH); UNTIL (CH IN ['Y','y','n','N']); (IF (CH IN ['N','n']) THEN EXIT(CATALOG); (WRITME:VOLID; $CATFILE,OCATFILE,NCATFILE:FILE OF CATALOGRECORD; $NCAT,OCAT:CATARRAY;        {*****************************************************************}  FUNCTION LOOKUP(FN:FILEN):BOOLEAN;FORWARD;  {*************************************$INDEX='A'..'Z'; $INDEXARRAY=ARRAY[INDEX] OF INTEGER;  VAR $NREC,NLREC,OREC,OLREC,DREC,DLREC:RECNUM; $NTOTREC,OTOTREC:0..2047; $REMOV,NFILEEND,OFILEEND,DONE:BOOLEAN; $CH:CHAR; $DEX:INDEX; $DEXRAY:INDEXARRAY; $P:FILE OF CHAR; $VOL,TEST,SYSTEMVOLUPACKED RECORD (VOLNAME:VOLID; (FILENAME:FILEID; (FILEKIND:FILETYPE; (FILEDATE:DATERECORD; (FILESIZE:0..988; $END; $DIRECTORY=ARRAY[DIRSIZE] OF DIRRECORD; $CATARRAY=ARRAY[0..MAXREC] OF CATALOGRECORD; $FILEN=STRING[20]; $RECNUM=0..MAXREC1; LETYPE OF ,SECUREDIR,UNTYPED: 0(DIRVOLNAME:VOLID; 0ZEROBLOCK, 0NUMOFFILES, 0TOTALBLOCKS:INTEGER; 0LASTBOOT:DATERECORD); ,XDISK,CODE,TEXT,INFO,DATA,GRAF,FOTO: 0(DIRFILENAME:FILEID; 1LASTBYTE:1..512; 1DIRFILEDATE:DATERECORD) (END; $CATALOGRECORD=MONTH:0..12; (DAY:0..31; (YEAR:0..100; $END; $DIRSIZE=0..77; $VOLID=STRING[7]; $FILEID=STRING[15]; $FILETYPE=(UNTYPED,XDISK,CODE,TEXT,INFO,DATA,GRAF,FOTO,SECUREDIR); $DIRRECORD=RECORD (FIRSTBLOCK:INTEGER; (LASTBLOCK:INTEGER; (CASE DIRFILEKIND:FIURE READDEX; $VAR DEXFILE:FILE OF INDEXARRAY;  BEGIN $RESET(DEXFILE,PFILENAME); $DEXRAY:=DEXFILE^; $GET(DEXFILE); $CLOSE(DEXFILE);  END; {*****************************************************************}  PROCEDURE ENTERVOLNAME; $VAR SPS:VOLID;  BEGIN $VOL:=' '; $REPEAT (WRITE(CHR(CLEARSCREEN)); (WRITE('ENTER NAME OF VOLUME TO BE REMOVED --> '); (READLN(VOL); $UNTIL (LENGTH(VOL)<=8); $IF (POS(':',VOL)<>0) THEN DELETE(VOL,POS(':',VOL),1); $SPS:=COPY(BLANKS,1,7-LENGTH(VOL)); $VOL:=CO $IF (LOOKUP(NFILENAME)) THEN BEGIN (WRITE(CHR(CLEARSCREEN)); (WRITELN('THE FOLLOWING FILES ARE NOT BACKED UP'); (RESET(NCATFILE,NFILENAME); (REPEAT ,IF (PASS AND UNBACK) THEN ,IF (NCAT[0].FILENAME<>NCAT[1].FILENAME) THEN PRINTRECORD(NCAT[0]); ,REAAINS ',NTOTREC,' RECORDS'); $CLOSE(P);  END; {*****************************************************************}  PROCEDURE BACKUP; $VAR (PASS,UNBACK:BOOLEAN; ( ( ( ( ( ( (N:RECNUM;  BEGIN $PASS:=FALSE; UNBACK:=FALSE; $REWRITE(P,'CONSOLE:');$IF (LOOKUP(NFILENAME)) THEN BEGIN (NREC:=0; (RESET(NCATFILE,NFILENAME); (REPEAT ,READNEWCAT; ,FOR I:=1 TO NREC DO PRINTRECORD(NCAT[I]); (UNTIL NFILEEND; (CLOSE(NCATFILE); (WAIT; $END ELSE WRITELN(NFILENAME,' NOT PRESENT'); $WRITELN('MASCAT CONTND; $WRITELN; $NTOTREC:=NTOTREC+NREC; $NREC:=0; $IF DONE THEN CLOSE(NCATFILE,LOCK);  END; {*****************************************************************}  PROCEDURE DISPLAY; $VAR I:RECNUM;  BEGIN $REWRITE(P,'CONSOLE:'); (FILENAME:=' '; (FILEKIND:=UNTYPED; (FILEDATE.MONTH:=0; (FILEDATE.DAY:=0; (FILEDATE.YEAR:=0; (FILESIZE:=0; (NCATFILE^:=NCAT[0]; (PUT(NCATFILE); $END; $FOR I:=1 TO NREC DO BEGIN (NCATFILE^:=NCAT[I]; (PUT(NCATFILE); (WRITE('.'); $EE); $END; $OREC:=I-1; $OTOTREC:=OTOTREC+OREC; $OFILEEND:=TRUE;  END; {*****************************************************************}  PROCEDURE WRITECAT; $VAR I:RECNUM;  BEGIN $IF (NTOTREC=0) THEN WITH NCAT[0] DO BEGIN (VOLNAME:=' '; (IF ((OCAT[I].VOLNAME=' ')) THEN BEGIN ,OREC:=I-1; ,OTOTREC:=OTOTREC+OREC; ,OFILEEND:=TRUE; ,EXIT(READOLDCAT); ( ( ( ( ( ( (END; (IF (I=OLREC) THEN BEGIN ,OREC:=I; ,OTOTREC:=OTOTREC+I; ,EXIT(READOLDCAT); (END; (I:=I+1; (GET(OCATFIL;  END; {*****************************************************************}  PROCEDURE READOLDCAT; $VAR I:RECNUM;  BEGIN $I:=1; OREC:=0; $GET(OCATFILE); $WHILE (NOT EOF(OCATFILE)) DO BEGIN (OCAT[I]:=OCATFILE^; ,NREC:=I-1; ,NTOTREC:=NTOTREC+NREC; ,NFILEEND:=TRUE; ,EXIT(READNEWCAT); (END; (IF (I=NLREC) THEN BEGIN ,NREC:=I; ,NTOTREC:=NTOTREC+I; ,EXIT(READNEWCAT); (END; (I:=I+1; (GET(NCATFILE); $END; $NREC:=I-1; $NTOTREC:=NTOTREC+NREC; $NFILEEND:=TRUE{*****************************************************************}  PROCEDURE READNEWCAT; $VAR I:RECNUM;  BEGIN $I:=1; NREC:=0; $GET(NCATFILE); $WHILE (NOT EOF(NCATFILE)) DO BEGIN (NCAT[I]:=NCATFILE^; (IF ((NCAT[I].VOLNAME=' ')) THEN BEGIN  PROCEDURE PRINTRECORD(CAT1:CATALOGRECORD);BEGIN $WITH CAT1 DO BEGIN (WRITE(P,FILENAME,' ':18-LENGTH(FILENAME)); (WRITE(P,VOLNAME,' ':8-LENGTH(VOLNAME)); (WRITE(P,FILESIZE:4); (PRINTDATE(FILEDATE); (PRINTKIND(FILEKIND); (WRITELN(P); $END;  END; TE(P,'Code'); (TEXT: WRITE(P,'Text'); (INFO: WRITE(P,'Info'); (DATA: WRITE(P,'Data'); (GRAF: WRITE(P,'Graf'); (FOTO: WRITE(P,'Foto'); $END;  END; {*****************************************************************} (IF (DAY<10)THEN WRITE(P,'0'); (WRITE(P,DAY,' '); $END;  END; {*****************************************************************}  PROCEDURE PRINTKIND(FILEKIND:FILETYPE);BEGIN $ $ $ $ $ $ $CASE FILEKIND OF (XDISK: WRITE(P,'Bad'); (CODE: WRINCAT(VOL,SPS); $WRITELN(VOL,':'); $DREC:=0  END;  {*****************************************************************}  PROCEDURE PRINTDATE(REC:DATERECORD);BEGIN $WITH REC DO BEGIN (WRITE(P,YEAR:3); (IF (MONTH<10)THEN WRITE(P,'0'); (WRITE(P,MONTH);DNEWCAT; ,FOR N:=1 TO NREC-1 DO IF ((NCAT[N].FILENAME<>NCAT[N-1].FILENAME) AND ,(NCAT[N].FILENAME<>NCAT[N+1].FILENAME)) THEN PRINTRECORD(NCAT[N]); ,PASS:=TRUE; ,IF (NCAT[NREC].FILENAME<>NCAT[NREC-1].FILENAME) THEN UNBACK:=TRUE; ,NCAT[0]:=NCAT[NREC]; ,IF (NFILEEND AND UNBACK) THEN PRINTRECORD(NCAT[NREC]); (UNTIL NFILEEND; (CLOSE(NCATFILE); $END ELSE WRITELN(NFILENAME,' NOT PRESENT'); $CLOSE(P); $WAIT;  END; {*****************************************************************}  PROCEDURE UPDATE; ELSE 0IF (VOLNAME=OCAT[OREC].VOLNAME) THEN Y:=2 ELSE Y:=3; 0Z:=X+Y; 0IF ((OREC=0) OR (OREC>O)) THEN Z:=11; 0CASE Z OF 411,12,13,21: BEGIN =DEX THEN BEGIN ,IF NCAT[NREC].FILENAME[1]>DEX THEN REPEAT 0DEXRAY[DEX]:=0; 0IF DEX='Z' THEN EXIT(SETDEX); 0DEX := SUCC(DEX); ,UNTIL (NCAT[NREC].FILENAME[1]=DEX); ,DEXRAY[DEX]:=NTOTREC+NREC; COPY(BLANKS,1,15-LENGTH(FILENAME)); ,FILENAME:=CONCAT(FILENAME,SPS); ,FILEKIND:=INFO; ,FILEDATE:=DIRX[0].LASTBOOT; ,FILESIZE:=DIRX[0].TOTALBLOCKS-BLOCKSUSED; (END; $END; { --------------------------------------------------------------} $PROCEDURE 8FILEKIND:=DIRFILEKIND; 8FILEDATE:=DIRFILEDATE; 8FILESIZE:=LASTBLOCK-FIRSTBLOCK; 8BLOCKSUSED:=BLOCKSUSED+FILESIZE; 4END; 0END; ,END; (END; (DREC:=DREC+1; (WITH DCAT[DREC] DO BEGIN , , , , , , ,VOLNAME:=VOL; ,FILENAME:='FREE.SPACE'; ,SPS:=(VOL:=CONCAT(VOL,SPS); (FOR I:=1 TO DIRX[0].NUMOFFILES DO BEGIN ,WITH DIRX[I] DO BEGIN 0IF LENGTH(DIRFILENAME)>0 THEN BEGIN 4DREC:=DREC+1; 4WITH DCAT[DREC] DO BEGIN 8VOLNAME:=VOL; 8FILENAME:=DIRFILENAME; 8SPS:=COPY(BLANKS,1,15-LENGTH(FILENAME)); '); (READ(CH); (UNITNUM := 4; (WRITELN; ({$i-}; (UNITREAD(UNITNUM,DIRX[0],2048,2); (IF IORESULT<>0 THEN BEGIN ,WRITELN('Cannot read directory'); ,EXIT(UPDATE); (END; (VOL:=DIRX[0].DIRVOLNAME; (SPS:=COPY(BLANKS,1,7-LENGTH(VOL)); -------------------------------} $PROCEDURE GETDIR; (VAR ,DIRX:DIRECTORY; ,UNITNUM,I:INTEGER; ,CHBUF:CHAR; ,VOL:VOLID; ,SPS:STRING[16]; ,BLOCKSUSED:0..988; $BEGIN (BLOCKSUSED:=6 ;{was 10} (DREC:=0; (WRITE('Put next disk in vol 4 and press SPACE,IF (DCAT[I].FILENAMEOLREC) AND (NOT OFILEEND)) THEN BEGIN ,READOLDCAT; ,O:=OREC; ,OREC:=1; (END; $END(END; (IF ((WILDCARD>1) AND (POS(TARGET,CAT.FILENAME)>=1)) THEN BEGIN ,PRINTRECORD(CAT); ,FOUND:=TRUE; (END; (IF ((CAT.FILENAME[1]>TAR1) AND (CAT.FILENAME[2]>TAR2)) THEN STOP:=TRUE; (GET(NCATFILE); $UNTIL (STOP OR EOF(NCATFILE)); $IF (NOT FOUND) TH'A') THEN START:=0 ELSE IF (TAR1>'Z') THEN START:=DEXRAY['Z'] ELSE START:=DEXRAY[TAR1]; $SEEK(NCATFILE,START); $GET(NCATFILE); $REPEAT (CAT:=NCATFILE^; (IF ((WILDCARD=0) AND (POS(TARGET,CAT.FILENAME)=1)) THEN BEGIN ,PRINTRECORD(CAT); ,FOUND:=TRUE; $IF (POS(':',TARGET)<>0) THEN SEARCHFORVOLUME; $WILDCARD:=POS('=',TARGET); $IF (WILDCARD=1) THEN LONGSEARCH; $IF (WILDCARD>1) THEN TARGET:=COPY(TARGET,1,WILDCARD-1); $TAR1:=TARGET[1]; $IF (WILDCARD<>2) THEN TAR2:=TARGET[2] ELSE TAR2:='z'; $IF (TAR116) THEN WRITELN('NAME TOO LONG'); $UNTIL (LENGTH(TARGET)<=16); $IF (POS('<',TARGET)=1) THEN BEGIN (DELETE(TARGET,1,1); (REWRITE(P,'PRINTER:'); $END ELSE REWRITE(P,'CONSOLE:'); $RESET(NCATFILE,NFILENAME); -----------------------}  BEGIN {SEARCH} $STOP:=FALSE; FOUND:=FALSE; $REPEAT (WRITELN('Prefix ''<'' starts printer.'); (WRITELN('Wildcard is ''='''); (WRITELN('Enter filename to be found in CAPITALS'); ( ( ( ( ( ( (WRITE('--> '); (READLN(TARGARGET,SPS); (WRITELN(TARGET); (REPEAT ,READNEWCAT; ,FOR N:=1 TO NREC DO IF (NCAT[N].VOLNAME=TARGET) THEN PRINTRECORD(NCAT[N]); (UNTIL (NFILEEND); (CLOSE(NCATFILE); (WAIT; (CLOSE(P); (EXIT(SEARCH); $END; { ---------------------------------------{ --------------------------------------------------------------} $PROCEDURE SEARCHFORVOLUME; (VAR ,BLKS,SPS:STRING[7]; ,N:RECNUM; $BEGIN (BLKS:=' '; (DELETE(TARGET,POS(':',TARGET),1); (SPS:=COPY(BLKS,1,7-LENGTH(TARGET)); (TARGET:=CONCAT(TLETE(TARGET,1,1); (WRITELN(TARGET); (REPEAT ,READNEWCAT; ,FOR N:=1 TO NREC DO ,IF POS(TARGET,NCAT[N].FILENAME)<>0 THEN PRINTRECORD(NCAT[N]); (UNTIL (NFILEEND); (CLOSE(NCATFILE); (WAIT; (CLOSE(P); (EXIT(SEARCH); $END; DURE SEARCH; $VAR (STOP,FOUND:BOOLEAN; (TAR1,TAR2:CHAR; (START:INTEGER; (WILDCARD:0..16; (CAT:CATALOGRECORD; (TARGET,SPS:STRING; { --------------------------------------------------------------} $PROCEDURE LONGSEARCH; (VAR N:RECNUM; $BEGIN (DE$MERGE; $CLOSE(OCATFILE); $CLOSE(P); $WRITELN('BACKCAT CONTAINS ',OTOTREC,' RECORDS'); $WRITELN('MASTCAT CONTAINS ',NTOTREC,' RECORDS'); $CLOSE(NCATFILE,LOCK); $WAIT;  END; {*****************************************************************}  PROCE$IF (NOT REMOV) THEN BEGIN (GETDIR; (SORT; (FOR RN:=1 TO DREC DO PRINTRECORD(DCAT[RN]); $END; $IF LOOKUP(OFILENAME) THEN BEGIN (RESET(OCATFILE,OFILENAME); (READOLDCAT; $END ELSE OREC:=0; $REWRITE(NCATFILE,NFILENAME); $NREC:=0; $ $ $ $ $ $ DEX;  END; { --------------------------------------------------------------} $  BEGIN {UPDATE} $REWRITE(P,'CONSOLE:'); $IF LOOKUP(OFILENAME) THEN BEGIN (RESET(OCATFILE,OFILENAME); (CLOSE(OCATFILE,PURGE); $END; $RENAME; ITELN(OCAT[OO].VOLNAME:10) (END; (IF (NOT OFILEEND) THEN BEGIN ,READOLDCAT; ,O:=OREC; ,OREC:=1; ,CONTINUE:=TRUE; (END; $UNTIL (NOT CONTINUE); $IF (DEX<'Z') THEN FOR CH:=DEX TO 'Z' DO DEXRAY[CH]:=DEXRAY[PRED(DEX)]; $DONE:=TRUE; $WRITECAT; $WRITE; $REPEAT (CONTINUE:=FALSE; (IF (OREC<=O) THEN FOR OO:=OREC TO O DO (IF (OCAT[OO].VOLNAME<>VOL) THEN BEGIN ,NREC:=NREC+1; ,NCAT[NREC]:=OCAT[OO]; ,IF (NREC=NLREC) THEN WRITECAT; ,SETDEX; (END ELSE BEGIN ,WRITE('DELETE ',OCAT[OO].FILENAME:18); ,WREN WRITELN('FILE ',TARGET,' NOT FOUND'); $CLOSE(NCATFILE); $CLOSE(P); $WAIT;  END; {*****************************************************************}  BEGIN {CATALOG} $IF ((NOT LOOKUP(NFILENAME)) OR (NOT LOOKUP(PFILENAME))) THEN &INITIALIZE; $GETSYSVOL(SYSTEMVOLUME); $DLREC:=MAXREC; OLREC:=MAXREC; NLREC:=MAXREC; $READDEX; $REPEAT &REMOV:=FALSE; NFILEEND:=FALSE; OFILEEND := FALSE; DONE := FALSE; &NREC:=0; OREC:=0; DREC:=0; &NTOTREC:=0; OTOTREC := 0; &VOL:=' '; &REPEAT (WRITE(CHRˡ`:ץ` ````:ب+   ɡ +0+  ɡ +0+ + bعv+Bad ƄƄ ̄ƄƄƄ"hƁ-#5:CAT.POINT.DATAب H` ת 'ENTER NAME OF VOLUME TO BE REMOVED --> ``ȡצ:`ڪ"áN ˡFצ IORESULT FOR צ IS  ~צPress SPACE to continue NM M צ E NAMED #5:CAT.POINT.DATAצ ON THIS DISKDO YOU WANT TO CREATE A #5:CAT.POINT.DATAצ? (Y/N)AAZZAZ̍ʍȡAZAƋצ#5:CAT.POINT.DATAʋɥƋƋצ#5:CAT.POINT.DATA WRITTEN TO DISKIFILE צ#5:CAT.POINT.DATA EXISTSƋR3eZ`THIS VOLUME#5:CAT.POINT.DATAצTHERE IS NO FILE NAMED #5:CAT.POINT.DATAצ ON THIS DISKDO YOU WANT TO CREATE A #5:CAT.POINT.DATAצ? (Y/N)AAZZAZ̍ʍȡAZAƋצ#5:CAT.POINT.DATAʋɥƋƋڦ#5:MASTCAT.DATA̍ʍȡbצ THE FILE #5:MASTCAT.DATAצ ALREADY EXISTS ON THIS VOLUME#5:CAT.POINT.DATAצTHERE IS NO FIL5:MASTCAT.DATA? (Y/N)צFILLING ARRAY[0]̍ʍ תʍצ ʍ ʍ  ʍ ʍ ̍ʍȡצARRAY IS FILLED@@@@FNƋƌצ#5:MASTCAT.DATATHERE IS NO FILE NAMED צ#5:MASTCAT.DATA ON THIS DISKצDO YOU WANT TO CREATE A צ#BB*CATALOG INITIALI ; &END; $UNTIL (CH IN ['Q','q']); $PAGE(OUTPUT); "end. " "{*****************************************************************}  ; ('R','r' : BEGIN 4REMOV:=TRUE; 4ENTERVOLNAME; 4UPDATE 2END; ('B','b' : BACKUP; ('Q','q' : REPEAT 4GETSYSVOL(TEST); 4IF (TEST=SYSTEMVOLUME) THEN 6EXIT(CATALOG) 4ELSE 6WRITELN('INSERT SYSTEM DISK AND PRESS RETURN'); 4READLN(CH); 2UNTIL CH='P'(CLEARSCREEN)); (WRITE('CATALOG: S)EARCH D)ISPLAY B)ACKUP U)PDATE R)EMOVE Q)UIT'); (READ(KEYBOARD,CH); (WRITELN; &UNTIL (CH IN ['R','r','B','b','U','u','S','s','D','d','Q','q']); &CASE CH OF ('U','u' : UPDATE; ('S','s' : SEARCH; ('D','d' : DISPLAY{+Codej+צTextY+InfoH+צData7+Graf&+צFoto}o`QB3$ب++ ++ +  +\ dd sdצ    á؂  d    sצ #5:BACKCAT.DATA5̄̄ʄʄȡʄM ʄ̄צ#5:BACKCAT.DATA#5:BACKCAT.DATA d#5:MASTCAT.DATA+צBACKCAT CONTAINS   RECORDSá =צDELETE   ۓZɡ*ZȡAZAAZA -Y[(_L+צCONSOLE:צ#5:BACKCAT.DATA!~DELETE  5 !.  0 "$&(zá 󓄡 ȡȡ쥅`-ߥ!ߥ!!ق!ō !عMADD  Mġdš1AZAZáAZáAZAZáAZRAAZ`MɡMߢ !"ߢ!!ʄ  ʄ ʄ ʄʄ  ̄ʃ̃M̄ʄƃʄ FREE.SPACEתƃ Ƅ ʄƄ ʄ̄ Ƅ ʄƄ ƃƄ ʄ ʄ M ʄ M ʄx0 ƃM ƃ ƄƃƄƃ̄ƄƃƄƃƄ̃M ̄ʃʄȡʃM ̄ ʄ šM̄ ʄ ƃʄ ʄ ƃצ Ƅ ʄ Ƅ ʄ ʄ ʄ ʄ MM   Sorting done$ ̄צ&Put next disk in vol 4 and press SPACẼʃM "ˡ)Cannot read directoryAT.DATAM [( Ɓ-#5:CAT.POINT.DATAإ HSORTING   RECORDSġXMM5MMצ#5:MASTCAT.DATA NOT PRESENT+GC M M  Ƅ Ƅ  ̄ Ƅ Ƅ Ƅ M ̄ ʄ ȡ@M ̄ ʄ צ MASTCAT.DATAʄ צ BACKC؄+  ȡS  ؄  d;NOT PRESENTMASCAT CONTAINS   RECORDS+  +צCONSOLE:צ#5:MASTCAT.DATA %THE FOLLOWING FILES ARE NOT BACKED UPdצ#5:MASTCAT.DATAd.  dW +צCONSOLE:צ#5:MASTCAT.DATA_d#5:MASTCAT.DATA ȡ d;צ#5:MASTCAT.DATA    á؂     áx٦ ת٢צ ٢ ٢  ٢ ٢  d٢ ddȡ)dMASTCAT CONTAINS  צ RECORDSd( ~?? ȡ-?ˡ  d+\L ~צ ?:ײ? ? ? ?P W P?  ȡ&?   d+UEj Prefix '<' starts printer.Wildcard is '='צ&Enter filename to"eolist:=((tracknum=0) AND (sectnum=0));  END;   FUNCTION getnode(location:link;VAR listdata:tslist):BOOLEAN;  CONST !contoffset= 1; (* beginning of continuation link *) !contleng = 2; (* length of continuation info *) !listoffset= 12; (* beN openfile(name:pid;VAR f:ffile;VAR ioerror:INTEGER):BOOLEAN;  BEGIN !(*$I-*) !rewrite(f,name); !ioerror:=ioresult; !(*$I+*) !openfile:=ioerror=0;  END;   FUNCTION eolist(next:link):BOOLEAN;  BEGIN !WITH next DO of size 'binaryoffset' *) !  PROCEDURE abortxfer(ioerror:INTEGER);  BEGIN !writeln; !writeln('the disk is acting funnny ',ioerror); !writeln('eixting transfer...... '); !(*$I-*) "close(pasfile,purge); !(*$I+*) !exit(transfer);  END;   FUNCTIOde :tslist; !ioerror :INTEGER; !pasfile :ffile; !primpage, !sparepage :pagebuffer; !pagepntr, !sparepntr :pagerange; !relblock :INTEGER; !filetype :pasfilekinds; !fotoflag :BOOLEAN; (* flag for shifts PROCEDURE transfer;   TYPE !ffile=FILE; !  VAR !dosname :did; !pasname :pid; !suffix :sid; !dirindex :dirrange; !linkindex :linkrange; !nextlink, !nextnode :link; !nextsector :sectbuffer; !currentnoO^̢HJLNPRTVXZ\^f d+h N@98| b@@$F8j,0  `צ  8CATALOG: S)EARCH D)ISPLAY B)ACKUP U)PDATE R)EMOVE Q)UIT..v \\X3צ#INSERT SYSTEM DISK AND PRESS RETURNPáoBuhhy &*,.02468:<>@Ddڥ+Wצ#5:MASTCAT.DATA#5:CAT.POINT.DATAX   `צ  8CATALOG: S)EARCH D)ISPLAY B)ACKUP U)PDATˡ ?zAɡ!ZšZAZA AZAddd? Ä ? Ą   ńd٥d ؓ2FILE ? NOT FOUNDd+T  b be found in CAPITALSצ--> ?P?š NAME TOO LONG?ȡ pagesize) THEN primfull:=TRUE %ELSE BEGIN &moveleft(sparepage[lagindex+1],primpage[pagepntr+1],leadindex+1); &pagepntr:=pagepntr+leadindex+1; &lagindex:=lagindex+leadindex+1; &endofspare:=(lagindex=sparepntr); ; #endofspare:=FALSE; #primfull:=FALSE; #lagindex:=0; #cr:=chr(asciicr); # #WHILE NOT (endofspare OR primfull) DO BEGIN $leadindex:=scan((sparepntr-lagindex),=cr,sparepage[lagindex+1]); $IF (leadindex=(sparepntr-lagindex)) THEN endofspare:=TRUE %); #WHILE (nextnullblockcount:INTEGER;VAR relblock:INTEGER); !BEGN encode(VAR linkindex:linkrange;VAR tslink:link):BOOLEAN;  VAR !emptysector:BOOLEAN; !BEGIN "emptysector:=true; "WHILE ((linkindex0) THEN (* note: pagepntr to continue, to stop '); *read(keyboard,ch); $cleos=11; $esc=27; $maxlines=21; #VAR $cumsectors:INTEGER; $count:dirrange; $ #BEGIN $page(output); $gotoxy(0,1); $cumsectors:=0; $IF dosdir[0].dnumentries=0 THEN writeln('The working directory is empty!') %ELSE BEGIN &displayheader; &FOR cile_tsl.sectnum:3); $END; #END; # #PROCEDURE displayheader; #BEGIN $write('File Name'); $write('Type':((didleng-length('file name'))+7)); $write('Locked':8); $write('Sectors':9); $writeln('TSL link':10); #END; # #PROCEDURE displaydir; #CONST 'dftext:write('text':6); 'dfinteger:write('int':6); 'applesoft:write('soft':6); 'binary:write('bnry':6); 'unknown:write('unkn':6); &END; %IF locked THEN write('yes':8) &ELSE write('no':8); %write(sectorcount:9); %writeln(file_tsl.tracknum:6,'-',fC','c','D','d','T','t','Q','q']) DO %BEGIN &write(chr(7)); &read(keyboard,ch); %END; $writeln; #END; # #PROCEDURE displayentry(de:dosdirentry); #BEGIN $WITH de DO %BEGIN &write(name,' ':(didleng-length(name)+1)); &CASE dfkind OF 60 DU768843:DD:DU,DD:* 768:I,173,129,192,169,208,133,1,160,0,132,0,177,0,145,0,200,208,249,230,1,208,245,169,32,13,131,253,141,131,253,160,11,185,59,3,153,179,251,136,16,247,160 3,185,71,3,153,17,253,136,16,247,173,128,192,96,201,224,176,5,41,63,9,64,96,41,31,96,32,179,251,234,1 ((4)"RUN CONFIGURE.A"+ 2"Keyfilter"E <(4)"BRUN KEYFILTER"S F(4)"FP"u d"Integer into Language card" x(4)"BRUN INTBASIC" "Applesoft into Language card" *** Resmove below (Copies ROM's into RAM) *** 173,129,192+Z216,0::::23112,129:23104,128: CHANGE DOS TO SELECT NON RESIDENT BASIC FIRSTh I3:J$"""DOS VERSION 3.3":(J$)ĺ(4)"BRUN"J$:"Apple II plus Loading ";I50,100,150"Configuration program"; "writeln; "write('>>'); "readln(name); "IF (length(name)=0) THEN getpasid:=FALSE #ELSE BEGIN $capitalize(name); $getpasid:=TRUE; #END; "END; " "FUNCTION getdosid(VAR name:did):BOOLEAN; "BEGIN #writeln; #writeln('Enter the name of the DOS fi"UNTIL un IN [0,4,5,9..12]; "unitnum:=un; "get_unit_num:=(un<>0); !END; ! !PROCEDURE capitalize(VAR line:STRING); !CONST "ordsmla=97; "ordsmlz=122; "shiftcase=32; !VAR "index:0..maxbyte; !BEGIN "FOR index:=1 TO length(line) DO #IF line[indexter the unitnum number[4,5,9..12] of the disk drive containing'); #writeln('the DOS diskette to be cataloged. Enter 0 to escape.'); #writeln; #write('>> '); #un:=stoi; #IF NOT (un IN [0,4,5,9..12]) THEN writeln(chr(7)); (* relative byte 1 of directory sector is link to 8next directory sector *) !zerobase =11; (* first byte of file info in a directory sector *) !entrylength =35; (* DOS directory entries occupy 35 bytes *) !mark =maxbyte; (* directory entries which have been deleted are 'marked' 8in (relative) byte zero *) !maxindex = 7; (* maximum of 7 directory entries in a sector *) ! !space = 32; (* ASCII space *) !tilde =126; (* ASCII tilde *) !  TYPE !indexrange = 0..maxindex; !ent$END; (* IF...THEN...ELSE *) #WITH dirlink DO $BEGIN %tracknum := dirsector[nextlink]; %sectnum := dirsector[nextlink+1]; $END; "END; !WITH dosdir[00] DO "BEGIN #dnumentries := entrycount; #dunitnum := unitnum; "END; !displaydir;  END; (* cat; )END # ELSE BEGIN *sectorindex := 0; *WHILE NOT eodirsector(sectorindex,dirsector,entrybase) DO +BEGIN ,moveleft(dirsector[entrybase],nextentry,entrylength); ,entrycount := entrycount+1; ,filldirentry(dosdir[entrycount],nextentry); +END; N #tracknum := dirtrack; #sectnum := firstdirsect; "END; !entrycount := 0; !WHILE NOT eodir(dirlink) DO "BEGIN #IF NOT readtrksec(unitnum, dirlink, dirsector, ioerror) $THEN BEGIN *writeln('ioerror ',ioerror,' reading directory'); *exit(catalog)dex+1; #entrybase := zerobase+(index-1)*entrylength; #nofile := (dirsector[entrybase] IN [0, mark]); "END; !eodirsector := nofile;  END;   BEGIN (* catalog *) !page(output); !IF NOT getunitnum(unitnum) THEN exit(catalog); !WITH dirlink DO "BEGI END; (* filldirenrty *)    FUNCTION eodirsector(VAR index:indexrange; 5VAR dirsector:sectbuffer;VAR entrybase:byterange):BOOLEAN;   VAR !nofile:BOOLEAN; !  BEGIN !nofile := TRUE; !WHILE (nofile AND (index' ',eb[nameoffset+didleng-1]); #(* non_blank=0 if and only if no trailing blanks *) #(* *END; #IF ((kind DIV lockbit)=1) THEN locked:=TRUE $ELSE locked:=FALSE; #FOR j:=0 TO (didleng-1) DO $BEGIN %(* set the high bit low to get true ASCII *) %eb[nameoffset+j] := eb[nameoffset+j] MOD 128; %(* eliminate any control characters *) %IF NOT#filetsl.sectnum := eb[linkoffset+1]; #kind := eb[kindoffset]; #IF NOT ((kind MOD lockbit) IN [0, 1, 2, 4]) THEN dfkind:=unknown $ELSE CASE (kind MOD lockbit) OF *0: dfkind:=dftext; *1: dfkind:=dfinteger; *2: dfkind:=applesoft; *4: dfkind:=binary; files have the high bit of the file type *) 3(* byte set *)   VAR !j, kind: byterange; !nonblank: 0..didleng;   BEGIN !WITH de DO "BEGIN #filetsl.tracknum := eb[linkoffset]; beginnig of the file type *) 3(* of the entry *) !countoffset = 34; (* relative byte 33 is the sector count (MOD sectsize)*) 3(* for the file *) !lockbit =128; (* locked   FUNCTION eodir(dirlink:link):BOOLEAN;   BEGIN !WITH dirlink DO "eodir:=(sectnum=0) AND (tracknum=0);  END;   PROCEDURE filldirentry(VAR de:dosdirentry;VAR eb:entrybuffer);   CONST !linkoffset = 1; (* relative byte zero for an entry gives trybuffer = PACKED ARRAY[1..entrylength] OF byterange; !  VAR !sectorindex : indexrange; !entrybase : byterange; !dirlink : link; !dirsector : sectbuffer; !nextentry : entrybuffer; !entrycount : dirrange; ! alog *)   (*$IIAC20:TRANSFER.TEXT*)  BEGIN !WITH dosdir[0] DO "BEGIN dfkind:=volinfo; dnumentries:=0; dunitnum:=0; END; !page(output); !gotoxy(0,5); !writeln('Welcome to PUFFIN'); !REPEAT "printmenu; "readcommand(ch); "CASE ch OF #'c','C': catalog; #'d','D': displaydir; #'t','T': transfer; " END; !UNTIL ch IN ['q','Q'];  END.  #ǀáݢݢȡVۂ#ۂ#ǀۂ#ۂ#  # ݢܕ#ݢݢݢ"# RɄ- #i צ files on disk,  צ sectors in useY XڨÄݢ#ݢ##ǀ4ǀ& iá5צThe working directory is empty!iiiȡi إiáYצ&Type to continue, to stop MMá צunkn bRC3ۡצyesno  - (  File NameצTypeצ file nameLockedSectors צTSL link צ%C)atalog, D)isplay, T)ransfer, Q)uit?H 9J ب YtextXintGצsoft5צbnry#MMPPMMM+צ.TEXTצ.FOTOuצjDtb'  S$&(*,.02468:<>@SDgHJLNPRTVXZ\^`  צor enter to exitצ>>á Transfer to a:/T)ext file, F)oto file, or D)ata (binary) file?צ>> .Enter the name of the Pascal destination file,or enter to exit>>á+Enter the name of the DOS file to transfer, containing6the DOS diskette to be cataloged. Enter 0 to escape.>> 11  ȡٛaz ٛٛ "<ܨ ́ ́ ʁ ́́ʁ ́ ʁ ڞ"Óʁ ܨ    ڞ"Ó(  PUFFIN ; F KìK LLioerror L  reading directory>+ƀ#ʀìʀiƀìʀʀiʀK (. :the disk is acting funnny  eixting transfer......  ܪڞ"P^bIƅMƅMʅJ  blocks transferredƁ Ɓ (j ץiNNNiN  צWelcome to PUFFIN M M tplCtd  ".&(*,.02468:<>@TRFHJLNPRTVXZ\^`bnMvT x d  , . `6<,:ʅJ̅J transferred to ̅MƅMƅMƅMʅJ  blocks transferredƁ Ɓ (j ץiNNNiN  צWelcome to PUFFIN M M tplCtd ʅIá$ƃHʅIƅJ̅IƃH "ƀƁHƃHʅIʅHʅIʅH̅IʅIš,ʅI̅IƃHʅIʅIƅJʅKʅJ$ƃH Ɓ ƃHʅJʅJ̅J transferred to ̅MƅMMƅMƅMƃH ƁH ̅I̅H̅JʅKá̅L;ʅKá4Ɓ ƃHʅJʅJ̅JƁ ƃHʅJʅJ̅J""ƀʁwz!!#_i #$Ɓʁ:$ƃHƅIʅK S not in current DOS directory  i " iƅK ̅MƅMƅMƅMƁ Ɓw IO error ʁ צ opening ̅Mȡ-H[HHHHá)á :Ɓ ƂL  HۂۂڶHߡ HHHڕHڕH<HL*HLHHHHHm z܄)zzÄܓڲzK V áق@ ȡUǀ   ڨÄۨi ̀ʀʀz̀zz̀ʀʀȡ\ʀʀz ʀʀʀz ʀʀ̀This is the explanation of the program "Catalog".   1. The disk requires three files, MASTCAT, BACKCAT and CATPOINT. These files  contain the data of the Pascal catalog. The program MUST be executed using  Drive #5.   2. It is recommended to use S not in current DOS directory  i " iƅK ̅MƅMƅMƅMƁ Ɓw IO error ʁ צ opening ̅Mȡ-H[HHHHá)á :Ɓ ƂL  HۂۂڶHߡ HHHڕHڕH<HL*HLHHHHHm z܄)zzÄܓڲzK V áق@ ȡUǀ   ڨÄۨi ̀ʀʀz̀zz̀ʀʀȡ\ʀʀz ʀʀʀz ʀʀ̀̈ƀìʀʀiʀK (. :the disk is acting funnny  eixting transfer......  ܪڞ"ectory.   7. The directory capacity is 2048 entries.  9Happy directory-catalogueing  PJack Abas  Apple-Can PToronto, Ontario  (416) 889 9924  82 02 13  6. It is imparative that all disk names must be unique, even the backside of a  disk must have its own name. If a disk directory is entered with a previously  stored name, the previous entries are automatically erased prior to entering  the new dire search mode, file names or parts thereof may be given. If the suffix  colon is given, the corresponding disk with its files will be listed, e.g.  APPLE1: will find all entries under that name.  The program doesn't do this  automatically.   3. The search mode is a bit obscure with respect to the default. I may find  time to improve this.   4. Note that the date is given in international code, e.g. 820213 for 13 Feb  1982   5. In th a dedicated disk for catalog, because if the disk  runs out of space, the program may bomb and the file MASTCAT will be lost.  Should this happen, use the Pascal filer, and rename BACKCAT AS MASTCAT and  your most recent directory will be available. MƅMƅMƃH ƁH ̅I̅H̅JʅKá̅L;ʅKá4Ɓ ƃHʅJʅJ̅JƁ ƃHʅJʅJ̅J""ƀʁwz!!#_i #$Ɓʁ:$ƃHƅIʅKʅIá$ƃHʅIƅJ̅IƃH "ƀƁHƃHʅIʅHʅIʅH̅IʅIš,ʅI̅IƃHʅIʅIƅJʅKʅJ$ƃH Ɓ ƃHʅJʅJ̅J transferred to ̅MƅMectory.   7. The directory capacity is 2048 entries.  9Happy directory-catalogueing  PJack Abas  Apple-Can PToronto, Ontario  (416) 889 9924  82 02 13  6. It is imparative that all disk names must be unique, even the backside of a  disk must have its own name. If a disk directory is entered with a previously  stored name, the previous entries are automatically erased prior to entering  the new dire search mode, file names or parts thereof may be given. If the suffix  colon is given, the corresponding disk with its files will be listed, e.g.  APPLE1: will find all entries under that name.  The program doesn't do this  automatically.   3. The search mode is a bit obscure with respect to the default. I may find  time to improve this.   4. Note that the date is given in international code, e.g. 820213 for 13 Feb  1982   5. In th a dedicated disk for catalog, because if the disk  runs out of space, the program may bomb and the file MASTCAT will be lost.  Should this happen, use the Pascal filer, and rename BACKCAT AS MASTCAT and  your most recent directory will be available. This is the explanation of the program "Catalog".   1. The disk requires three files, MASTCAT, BACKCAT and CATPOINT. These files  contain the data of the Pascal catalog. The program MUST be executed using  Drive #5.   2. It is recommended to useP^bIƅMƅMʅJ  blocks transferredƁ Ɓ (j ץiNNNiN  צWelcome to PUFFIN M M tplCtd  ".&(*,.02468:<>@TRFHJLNPRTVXZ\^`bnMvT x d  , . `6<,:ʅJ̅J transferred to ̅MƅMƅMƅMʅJ  blocks transferredƁ Ɓ (j ץiNNNiN  צWelcome to PUFFIN M M tplCtd z#x   حˠ̠  "ՠàǠŠŠ ŠŮʠ ԠŠ ŠΠ   "ϠϠů ĠΠ ŠΠ " ŠήԠǠŠ͠ԮԠ   ԮӠ ԠŠ  ŠŠϠ ŮʠԠ Ԯʠ ΠΠҠ ˠŠŠΠήʱ ήʲ ҠҠ ԮҠ!ӠȮӠ ӠȮʠӠȮʰӠȮŠԠԠŠҠ ˠĸԠ Š ƠӠԍԠՠؠԍŠҠԍԍ٠ōРԍŠԍ٠ōŠԍРԲԠԍŠԱԍOS 3.3 ANDPASCAL."q 24:"HIT [KEY] TO CONTINUE ";:A$:::(4)"CATALOG"::24:" RUN HYBRID HUFFIN";::23:N);"[SPACE] TO CONTINUE ";H}"[ ]";:29:ZZ$:ZZ$(27)ZZ$(3)ĉ::Y}ZZ$(32)ıj}868:32230}16368,0:6:TT$"SHUFFLE":32100:9:TT$"BY ROBERT P.C. DE LOUW - THE NETHERLANDS":32100:16:"*A 32-CARD PATIENCE GAME*":32200:d} * PRINT CENTER * n}WIDTH20((TT$)2):WIDTH0ĺTT$:x}WIDTH:TT$:}23:12:"[ESC] TO END":24:8* * *":23:: GIVEN TO THE APPLE CORE OF SAN FRANCISCO BYT ROBERT P.C. DE LOUWk AALSBROEK 11 5632TW EINDHOVEN THE NETHERLANDS * NOVEMBER 1979&0 * SHUFFLE *} * TITLE PAGE * 60152016368,0%::,6010:@16289,0:16300,0:16368,0:24:868:4:"DO YOU WANT TO PLAY ANOTHER GAME? ";:A$:(A$,1)"N"1690r23:868:SC0:GMGM1:K0::200:1220:16289,0:16300,0:16368,0::936:10:10:"* * * THE END RD IN THE FIRST ROW":" IS '11'":" THE LAST CARD IN THE FOURTH ROW":" IS '48'.":"ONLY ADJACENT CARDS CAN BE SHUFFLED."::"TO STOP THE GAME TYPE '00'."23:5:"< PRESS SPACE BAR TO CONTINUE >":(16384)1551600(16384)1O 7,":"COLOUR BY COLOUR.":"THIS CAN BE OBTAINED BY CHANGING THE":"CARDS IN THE 4 ROWS IN ALL DIRECTIONS.":"EACH CARD IS INDICATED BY A FIGURE, THE"]"FIRST DIGIT INDICATING THE ROW AND THE":"SECOND DIGIT INDICATING THE COLUMN.":"I.E. THE FIRST CA:  H:8:"DO YOU WANT INSTRUCTIONS? ";:A$:(A$,1)"N"1560<:15:"INSTRUCTIONS":15:"------------"::"THE 32 CARDS ARE DELT IN 4 ROWS OF 8":"CARDS EACH.":"THE OBJECT OF THE GAME IS TO GET THE"n"CARDS IN SUIT-SEQUENCES FROM ACE T(J,I)CARD$(K):::LV:I140:"*";::I13:"*";38);"*";::I140:"*";::3:17:"SHUFFLE":7:10:"1 2 3 4 5 6 7 8 MOVE":10"----------------------- ----":: * ERROR-TONE ROUTINE *I13:(7);:::HT,HJ,HQ,HK,HA,C7,C8,C9,CT,CJ,CQ,CK,CA,D7,D8,D9,DT,DJ,DQ,DK,DA,S7,S8,S9,ST,SJ,SQ,SK,SA::MV0:I132 J((1)32)1:23:6:"PLEASE WAIT WHILE I DEAL: ";CARD$(J):C1(J)1960 C1(J)1:A$:CARD$(J)A$::23:868:  J14:I18:KK1:A1$0:958:17::"GAME OVER":1220:1220::1600X 24:10::"WRONG ROW !!!";::1220: 24:10::"WRONG COLUMN !!!";::1220: H10:J14:7:J;": ";:I18:A1$(J,I);" ";:::::  * INIT STRINGS *e I132:C1(I)0:J(1):: H7,H8,H9, (R3R4)8570' (R3R4)9570W 24:10::"WRONG CHANGE !!!";::1220:240 :R3$A1$(R1,C1):A1$(R1,C1)A1$(R2,C2):A1$(R2,C2)R3$:MVMV1:10:37:MV:840:K0:J18:I13:(A1$(I,J),1)(A1$(I1,J),1)690 KK1 ::K0240. 2ARD (RC): ";X$:R2$(X$,1):C2$(X$,1):24:868:R2(R2$):C2(C2$):R21R24430h C21C28440q 450 760:350 800:350 R3(R18)(C18):R4(R28)(C28):R31R332530 R41R432530 (R3R4)1570 (R3R4)7570(32),C1(32):1290+ 910:1040:1100:840n 20:868:10:"CHANGE CARD (RC): ";X$:24:868:X$"00"1600 R1$(X$,1):C1$(X$,1):R1(R1$):C1(C1$):R11R14330 6C11C18340 @350 J760:240 T800:240U ^22:868:10:"WITH CHE REMAINING 18 TRACKS (17 TO 34) BEAR DOS 3.3 PROGRAMS."; x" THEREFORE YOU CANNOT":"BOOT WITH THIS DISK. INSTEAD, BOOT WITH ANOTHER DOS 3.3 DISK FIRST." :"OF NOTE ARE TWO PROGRAMS ON THIS DISK: 'HYBRID HUFFIN' WHICH HAS BEEN MODIFIED TO WORK WM$S32S42S454505"I/O ERROR ";(S$):HT$((FTYPE))iSIZE256(FSIZE1)(FSIZE){(S);T$;" ";SIZE100ĺ"0";:SIZE10ĺ"0";SIZE;" ";F$USEDUSEDSIZE240D4L ̟͞L󙭇  J '`L&  JJJJȭ`8 Đ` `ŠϬٍٍ̠ЍӍ̮ӍӠՠ٠ҠӍàӍԍύӠӠ΍ٍ̬ύӍŠՠ٠ÍЫٍύٍЫٍϫӍŠՠЫÍàōЍЫЫ٠РЩٍĠƠӍϫҠƠŠٍĠՠ٠ōؠĠЫٍ̠ԍؠĠԠύӍ̠à¿ӿҧŠՠ٠ōЫٍĠƍٍؠύРԳԲҠčԳҠōҠōҠōԴÍЫàЫàЫЫàԍύѠǍŠӍԠǠԠ԰ԍРō԰ҠӍύŠōƫōЫƍЫؠؠԍԱ٠ЫٍѠԴРƍŠԲĠĠòٍōŠҍЩٍōҠӠ΍ԠǍԠ ǠՠύԍŠԱƫˍˍƫÍԍÍàˍŭōԠՠˠƠԯҠԠ٠ҍԍѠñōѠñРҍñҠЫ٠Ѝ٠ԍŠòЩٍҠҠҠҠԠōԱԍ٠ō̠̠̠̠ԍ΍٠΍٠΍ԠˍӍԍύҠӍύŠōԲҠǠŠӍ-͖Lۘ  # 1i#eΎ͖` *͖`¿ӿҠ) Ζ`!ϖȱЖ`i)і` ͖`ȠҞŤŃ跠 ^˖̖LZ˖˖ ͖ I͖ `˖̖L ˖ JJJJ˖ȭ̖̖`͖- mL I͖@ȖLʴԟх𰠰х٠̠𱠍̷Đ̥԰ӸЕ§򷥹͠𠠹𰖠̠ŠĪ堠尠΍ðâ堤Ƞɉ栃ƠӠРᠤ˂  HAS BEEN MODIFIED TO GIVE NOT ONLY THE DOS FILE NAMES, BUT ALSO SEPERATE SOURCE AND OBJECT CODE IS INCLUDED TO GIVE A SECTOR COUNT."Y 2:"THE UTILITY SITS HIGH IN MEMORY AND THUSIT WAS NECESSARY TO RESET 'MAXFILES 1'. USERS WHO WISH TO USE THE 'GET GET FILE INFO TESTI::7::"'GETFILE INFO' DEMONSTRATION":3:"THIS IS A PROGRAM TO DEMONSTRATE HOW TO USE THE 'GETFILE' MACHINE LANGUAGE UTILITY BY LOU ENFIELD OF APPLE COMPUTERAS PUBLISHED IN CALL-APPLE." (:"THE SOURCE CODE ՠ٠ҠӍàӍԍύӠӍōҠӠ΍ǠÍë٠òƬٍؠó̠àôàëŠôàÍô؍̠óٍ٠ôĽôԠòӍӠӠԠ٠ҍԍѠñōѠñРҍñҠЫ٠Ѝ٠ԍŠòЩٍҠҠҠҠԠōòٍōŠҍЩٍ̠̠ԍ΍٠΍٠΍ԠˍӍԍύҠӍύŠōԲҠǍŠӍōԠՠˠƠԯҠԍԠՠؠԍŠҠԍԍ٠ōРԍŠԍ٠ōŠԍРԲԠԍŠԱԍԍԱԍ٠ō̠̠ԠӠΠӠ ˠ ԍԠ Ӎנԍנƍ ԠӠӠΠӠΠӠŭíōԍԠՠ ƬĸԠ Š ƠՠŠ٠ٍŠՠŠōŠՠŠōàՠŠԠԍРՠƹٍǠÍРԍ àՠíɯϠ̠ˍ ՠ ϠՠϫŠōϠՠϫŠōӍӍӠՠĹӠӍ ՠųԠӠ ҍٍˠՠˠϠԠˍàՠϠԠԍŠՠ ҠϠԠ٫ԠԍŠՠ٫ԠōϠՠ٫ԠύϠՠϠĠǯӍčˠččϠŠӍҠĠɯύϠՠϫӠōҠōŠōԠ̠̠ӠӍàՠԠՠԠˠӠՠԠҍԮԮӍ٠ՠàҠٍԠՠŠԍŠō̠ΠΠŠԠӠΠōǺčččĠƠҍԠɯϠҠӍŠōêԠŠΠ͍٠ՠčŠҠî̠ŠΠ卪卪卪ŠƠōĠԠŠύ     ɯϠ̠ˍ ՠ ԠӠΠӠ ˠ ԍԠ Ӎנԍנƍ ԠӠӠΠӠΠӠŭíōԍԠՠ ƬˍàՠϠԠԍŠՠ ҠϠԠōŠ٠ٍŠՠŠōŠՠŠōàՠŠԠԍĠՠôРՠƹٍǠÍРԍ ӠӍҠĠɯύϠՠϫӠōϠՠϫŠōϠՠϫŠōӍӍӠՠĹӠӍ ՠųԠӠ ҍٍˠՠˠϠԠԠՠԠˠӠՠԠҍԮԮӍ٠ՠàҠٍԠՠ٫ԠԍŠՠ٫ԠōϠՠ٫ԠύϠՠϠĠǯ" ( FIRST. THE SAME RULE APPLIES TO: (START) WHICH IS STORED AS 'A1' ($3C)m AND TO (END) WHICH IS STORED AT 'A2' OR: HEX $3E.MINING OR VERIFYING A RANGE OF BYTES: IN MEMORY. THIS FORMAT IS VERY USEFUL: WHEN PASSING DATA TO THE CONTROL-Y: VECTOR.Il THE FIRST TWO BYTES ARE STORED IN THE: MEMORY LOCATION 'A4' (HEX $42) LOW BYTE: FIRST ALTHOUGH IT IS ENTERED AS HIGH: BYTED (END) WILLj DETERMINE THE RANGE OF MEMORY TO BE: EXAMINED. THE ADDRESSES WHERE (WORD): EXISTS WILL THEN BE PRINTED OUT ON ONE: LINE WITH SEPERATING SPACES.: NOTE THAT THE FORMAT FOR PASSING THE|k PARAMETERS IS VERY SIMILAR TO THAT FOR: EXASB6822: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 ARROW KEY TO MOVE POINTER. RETURN KEY TO ENTER CHOICE."k  >> THEN SET BEGIN AND LAST <<~ BEGIN5:LAST9  >> THEN CALL MENU ROUTINE << 100 22:1:"CHOICE IS ";L BB$VB$"E"B$"C"63820D`B$"E"ė:XST20:YST20:63900:TjB$"C"Į:bLIST X-YADRS(121)256(122)144I401ADRSI,X10(X10)48X(X10)ADRSI6,Y10(Y10)48Y(Y10)I0118101221ԠŠΠ͍٠ՠčŠҠî̠ŠΠ卪卪卪Ӎàՠ    WRITTEN TO BE USED WITH THE ASSEMBLER IN";S F"THE DOS TOOLKIT (APPLE COMPUTER)." P24::7:"HIT SPACE BAR TO CONTINUE *";(8);::C$:: d(4);"MAXFILES 1" n38600 xD$(4)::D$;"BLOAD GETFILE.OBJ" }:D$;"BLOAD GETSECT.OBJ" GFILEFILE' ROU-TINE CAN SIMPLY RE-ASSEMBLE IT AT A LOWER MEMORY ADDRESS. IT IS NOT NECESSARY"* <"TO USE THE 'GETSECT' UTILITY; HOWEVER, IT CAN ALSO BE RE-ASSEMBLED AT A LOWER MEMORY LOCATION SIMPLY BY CHANGING THE 'ORG' COMMAND. THE TEXT FILES HAVE BEENEADY *";(8);:A$:A$::120V22:"PLAY AGAIN (Y/N) ?";:18:A$:A$;:A$"Y"ī130gA$"N"960o:'A$"N"10000t': AIDE THRUSTERS ARE CONTROLLED BY THE OTHER PADDLE."::"A WORD OF CAUTION IS IN ORDER: YOU MUST LAND AT A HORIZONTAL AND VERTICAL SPEED OF 10 FEET PER SECOND OR LESS.""LAND AT A HORIZONTAL AND VERTICAL SPEED"24:"HIT [ SPACE BAR ] WHEN RANDING SPOT, AND THE CRAFT'S GUIDANCE SYSTEM WILL FIND AND BRING YOU WITHIN A REASONABLE DISTANCE OF A LANDING SPOTOF YOUR SPECIFICATIONS.":2:"FROM THERE YOU MUST CONTROL THE SHIP MANUALLY. THE MAIN ROCKET IS CONTROLLEDBY ONE PADDLE, WHILE THE S9,76,242,29,200,204,223,29,240,238,96Kp3:4X,Y3:B140::0:4X,Y3sz3:5X,Y17:B140::0:5X,Y172:3:5X,Y34:B140::0:5X,Y34:1::4:"YOU ARE IN COMMAND OF THE 'EAGLE' LUNAR LANDER! SELECT THE MINIMUM ACCEPTABLE L41,50,109,137,18,150,146\ 18,86,49,150,18,54,150,26,183,146,223,250,219,27,63,255,219,219,59,223,31,31,223,27,32,32,3,96,67,5,0%f 0,0,173,48,192,136,208,5,206,200,29,240,9,202,208,245,174,199,29,76,201,29,96,215,203,173,48,192,232,236,222,29,240,27,0 4 7,0> 99,177,223,63,1,32,12,104,13,21,182,183,109,28,12,228,100,28,223,223,31,254,50,174,254,142,42,44,85,41,77,109,5,40,56,32H 44,32,0R 219,219,219,219,219,219,27,5,32,193,193,32,53,69,65,32,63,73,65,65,37,77,9,77,73,13,13,21,141,13,0  45,45,45,54,54,46,39,60,28,36,63,63,63,63,63,54,54,62,37,44,12,36,39,45,45,45,45,45,60,63,63,63,63,63,40,45,45,45,45,45  37,63,63,63,63,63,63,44,45,45,45,45,45,229,255,59,255,59,12,45,13,13,45,28,63,63,63,12,45,45,6,0* 18,21,31,28,77,52X,Y3G::B13000:U::T$"THE EAGLE HAS LANDED. CONGRATULATIONS !":10:T$13:" YOUR RATING AS A PILOT IS ";((F%500)(10V)((101S%)201))960P74247666:N:P,N:232,0:233,29  5,0,12,0,84,0,91,0,93,0,1316304,0:%v(1).6KK1.3:6501KK1.3FJ,K:7912J,K:jV1XDS%23XDS%23ī710}0:1X,Y:880L12000:::10:"YOU HAVE JUST DESTROYED A FIFTY MILLION"::9)"DOLLAR SPACECRAFT !!!"::960G1T%:0:;" ";:F%F%40(T%1):F%1T%1:F%0H (23):36,25:(EY5);" ";N &{ 0D((1)280):DS%22D279S%22560 :E159(((1)30)) DJDS%2DS%2:J,E:7912J,E: NKE XJDS%2101:630: bKE lJDS%21279:630:: 220" R%0F0:I.5:490= R%10F.8:I.5:490Y R%54F.8:I.5:490 HH(T%F3.5):VV(T%I3.5).428571429: (21):36,13:(V10);" "; (21):36,34:H0ĺ">";(H10);" ";:530 "<";((H10));" "( (23):36,5:F% TG1T%:0:2X,Y3G:' ^216,0S hY((7912X))20Ē3:DS%2,EDS%2,E\ r500 |F%1T(1):T%T35:T%:T%0T%1 R(0):R70R%10:420 R130R%54:420 R%0 460:XXH:YYV:Y11Y11 X21X21 X259X259Y1:1 T%1R%10Ē3:G1T%:X8G1.8,Y1:k 7623,(200Y):7624,10:7625:T%1āC16T%:7648: "Y((7912X))6İ660 ,T%1R%54Ē0:G1T%:X8G1.8,Y1::320 6T%1R%10Ē0:G1T%:X8G1.8,Y1: @1:0:0:1X,Y J6903:560. H10:V4:A300:X20:Y20:F%20000^ 23:"VERT. SPEED=";:" HORIZ. SPEED=" :"FUEL ";:" ALTITUDE = " 3 690 1:3:0:1X,Y 216,0 T%1āG1T%:5:2X,Y3G: T%1R%54Ē3:G1T%:X8G1.8,p#d::8:15::"MOONLANDING":jn20:"DO YOU WANT INSTRUCTIONS (Y/N) ?";:32:A$:A$;:A$"Y"ī910sx750{::T%1:12:"INPUT LANDING SPOT SIZE (15 TO 100) ";S%S%15S%100140:10:T$"ONE MOMENT PLEASE":20(T$)2:T$      ((NAMEI)):3J(NAME27)24430:TIME STAMP_TMO$((NAME29)):(MO$)1MO$"0"MO$hDA$((NAME28)):DA$1DA$"0"DA$|H$((NAME27)):(H$)1H$"0"H$M$((NAME26)):(M$)1M$"0"M$F$(F$,21)MO$"/"DA$" "H$":";:C$:C$: (C$)13230G DRIVEGFILE,(C$):DRIVEGSECT,(C$) GSECT:(GSECT2)256(GSECT1);" SECTORS FREE": GFILE (FLOCKED)0ĺ::USED;::" SECTORS CONTAIN PROGRAM FILES": S(FLOCKED):S45240F$"":I029:F$F$38600 GSECT39300( SLOT3:DRIVE43 USED0p FLOCKEDGFILE5:FTYPEGFILE6:FSIZEGFILE7:NAMEGFILE9 :"CATALOG INFORMATION": " SLOT = ?";(8);:C$:C$ (C$)13230 SLOTGFILE,(C$):SLOTGSECT,(C$) :"DRIVE = ?";(8)ԠͩƠ̠ΠƠ̠ΠƠ̠͠ΠƠ̠͠ΠԠˍԠλԠ΍ԠҤԠĮĠĤҤӠϠŮӠΠӠ٭ĠˢԠƠҧӠŮҠɠϠԠԠԠǺҠΠϠҠˠϠԠ͠ΠˍԠ̠΍ԠŠԤŠҠˠ͢ ΠԤŠԠԤ̠ ԠӠˠ͠ӠĠϠĠ̠ŠŠӠΠıӠȬԠӠ٠ĤҤԠĤΠǢԠĤŠǢԠĤΠǢԠĤŠǢŠԠԠĤŠǢĠTLY-USED BENCHMARK"7 "OF A COMPUTER'S PERFORMANCE."G dI14000:Z :"STARTING:"h N11000u K2500 MNK L(M) L0230 L1220 ML220 ML240 K " "N; N (7) "FINISHED." :A ::T$"PRIME NUMBER BENCHMARK PROGRAM":21(T$)2::T$: 3:"THIS BENCHMARK PROGRAM IS DESIGNED TO FIND ALL THE PRIME NUMBERS BETWEEN 1 AND1000. AS SUCH, IT TAKES APPROXIMATELY 16 MINUTES TO EXECUTE. THIS MATHEMATICALFUNCTION IS A FREQUEN  ITH THIS HYBRID DISK, TO TRANS-FER PASCAL TEXT FILES TO DOS; AND THE 'PUFFIN' PROGRAM IN PASCAL TO TRANSFER FILES FROM DOS TO PASCAL." :"WHILE YOU WILL WANT TO DELETE FILES FROMTHIS DISK, KEEP ITS FORMAT AS A HANDY UTILITY TO INTERFACE BETWEEN DEL`B<ȥC<<=<>=?`= <  XLk gWJN L췩귍`鷍뷩0ᷭ HILéʮө $ ϛǠŠĠ`hh LڛlLѠ 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==================";: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:"====================== :!A$(500)::33,40:V::4::"PRETTYPRINT PROGRAM LIST FORMATTER":`2500N1:D$(4):D$;"OPEN LISTING":D$;"READ LISTING"A$(0)" ":C0 :10:"PROGRAM IS BEING READ IN AND PROCESSED."A$ A$(13)(A$(N))02      ˠҠĠƠӠōРŠˍРŠˍӍРΠԠŠӠƠ̠ōҠōҠōԠōҠԱٍѠ˳ԠƍР٠ӠԠ̠ϠԠŠŠ˳ϬРҠԠō٠ԠԠҍР٠ӠŠȠŠ̠Ѡ΍ٍ˳àŠϠԠōŠ˴à˴ӍӨϠĩԠӮĠӠ̭٩Π٠ȮΠӍРԠˠԠӠƠԠƠō٫ĠԠРҠҍˍ٫ÍٍӍРˠ٠̍ǠՠÍՠōՠԱՠư٠ՠƸŠՠРӠ͠Ӡ٠ϠĠϠŠōĠӠŠӠŠŠϠӠԮΧŠŠĠΠҠŠӠ   P500 ` a5 d* INSERT PRINTER COMMAND HEREI eBFLAG0:EFLAG0a f(Z$,7,3)"REM"ı n(Z$,11,1)" "Z$(Z$,9)" "(Z$,(Z$)9) x(A$(I1),7,3)"REM"(Z$,6)" "BFLAG1 (A$(I1),7,3)"REM"EFLAG1 BFLAG1ĺ- BFLAG0& A$(13)NN1:A$(N)"":C0:50: A$(34)CC1w A$":"(C2)C2A$(N)A$(N)A$:NN1:A$(N)"":C0:50 A$(N)A$(N)A$ (A$(N)"30000"60 220 <D$;"NOMON":(37):868 >NN1 AD$;"CLOSE LISTING" D F2000 K R$(1)"SENIOR CUB"2R$(2)"PILOT IN TRAINING"PR$(3)"LICENCED CIVILIAN"tR$(4)"QUALIFIED FIGHTER PILOT"R$(5)"WING COMMANDER"R$(6)"SQUADRON COMMANDER"$R$(7)"5 STAR GENERAL".R$(8)"HAN SOLO"8A A127ī900750H0<C$(1)"SHUTTLE CRAFT":C(1)500WC$(2)"SCOUT":C(2)240yC$(3)"STAR CRUISER":C(3)110C$(4)"STARFIGHTER":C(4)50C$(5)"X-WING FIGHTER":C(5)20C$(6)"EXPERIMENTAL HYPERSPACE FLYER":C(6)0R$(0)"CUB" "H(15)6RX(16286):X127ī820>\20SfSB250RR1.6pR3B6R0:BB1:H0:T0:"WITH THAT FANTASTIC SCORE YOUR LEADER":"HAS RECOMMENDED YOU FLY THE":C$(B):YC(B):M0z"HIT BUTTON TO CONTINUE."X(16286):XRDER FOR SAFE TAKE OFF THE CONTROLS"L "MUST BE IN THE NEUTRAL POSITION."x"ROTATE CONTROL UNTIL & (YOUR ROCKET)" "IS CENTERED. PUSH BUTTON TO LAUNCH"*(20):(2):"^"4(12((1)801.5)20):(1):"&">(1):" CONTINUE *";(8);:A$:="THE AVAILABLE CRAFT ARE:"C`I16:I". ";C$(I):If"THE LOWER NUMBERED CRAFTS ARE EASIER."::"WHICH CRAFT WOULD YOU LIKE ?";:B$:B6:(B$)48(B$)55B(B$)P11000:P$(8):"IN Ol:"YOU WILL BE ABLE TO CHOOSE A CRAFT"U v"SO THAT THE SPEED AND RESPONSIVENESS"r "MATCH YOUR ABILITIES." :"BASED ON YOUR SKILL, ABILITY TO LEARN," "AND PERFORMANCE UNDER PRESSURE, YOU" "WILL BE AWARDED RANK.":"HIT A KEY TO *************" &::N 0"DO YOU WANT INSTRUCTIONS (Y/N) ?";(8);:A$:A$_ :A$"Y"690 D:"YOU WILL BE AT THE CONTROLS OF A SPACE" N"CRAFT GOING DOWN A CANYON. YOU MUST" X"STOP THE CRAFT FROM HITTING THE WALLS" b"OF THE CANYON.") ESENT RANK IS:"$ 7)R$((Q200))n (Q200)(O200)(O200)0ĺ"CONGRATULATIONS FOR THE IMPROVEMENT!" O0(Q300)N1ĺ"EXCELLENT SCORE FOR FIRST FLIGHT!" OQ   930 "SPACE CANYON TRAINING COURSE" "***************D JL11500:L T- ^GS100MM.5E hNN1:N1GS:380Y rG(G(N1)S)Ng |SHHS (24)::"SCORE=";S100;" HIGH SCORE="H100 M3B6M1 M1B6M0 QS32G3200M Q0Q0 Q1798Q1798 "YOUR PR(1Z):(5):" "2 (24):((F)):"XXX";E);"XXX"K (5):(1D):"&":ZDU SS2^ I,Jk E2110z EE1:110 (1Z):(5):" " U125:X(16336):U "(24):((F)):"XXX";E);"XXX" ,S((SB.7)1.5) 6 @(5):(1D):"&":Z  510S0&(Z20:D2022I125Q<" : :"XFI`PE7hZS0qdF16}nJ120xA4(1)2I17FFA(1)K1Y:KF5A2F25A1.5DZ(1)801.5D,12)0ī270     QEL`B<ȥC<<=<>=?`= < Ak  SHUFFLE@ BY ROBERT P.C. DE LOUW - THE NETHERLANDS W ADDED TO LIBRARYi JULY 1980 :936:16298,0:TT$(30):32000: AN ORIGINAL PROGRAMn WRITTEN BYx ROBERT P.C. DE LOUW 1250:GM1:A1$(4,8):CARD$     @ HI y@ H @HH @H @H @H H @' H @   HHHHH` @SL% @DR% @TR% @SE% @BU% @CM% @ER%hh ߠ``0@ ɖP``T IN LINE 100 AS:"::"100 PR#1": "HIT [SPACEBAR] TO OUTPUT CURRENT LISTINGFILE, OR ANY OTHER KEY TO QUIT *";;(8);:A$::(A$)32ī5  E1ī250001 "STEP 4-- RESET":"STEP 5-- RUN PRETTYPRINT"p :"YOUR PROGRAM MUST HAVE A 'THEN' WITH EVERY 'IF'.": "THE 'APPRINT' PROGRAM PUTS YOUR PROGRAM INTO A FILE CALLED 'LISTING'.":" "TO OUTPUT FORMATTED LISTING TO PRINTER, INSERT PRINTER SLO4J1/>A((A$(I),J,1)):A32JJ1:2110XHA$(I)" "(A$(I),(A$(I))J1)hI:X(0):{ INSTRUCTIONS 3:8:"PROGRAM BY MICHAEL KEITH":: "STEP 1-- LOAD PROGRAM INTO COMPUTER":"STEP 2-- EXEC APPRINT":"STEP 3-- RUN 30000",K,1)" "KK1:20142A((A$(I),K,1))("0")DA0A92100N2200`A0A92100hJ1A((A$(I),J,1)):AA128(A128):(A47A58)A32JJ1:2040J62200KJ6:A$(I)(A$(I),J1)" "(A$(I),(A$(I))J1): 2200:" PRESS RETURN FOR MORE, ESC TO QUIT";<DA$:(A$)27ıBNIlIyv23:"PRESS ANY KEY FOR MAIN MENU...":A$:(A$(1),1)" "TYP1: TYP=1 MEANS INTEGER BASICI1NA((A$(I),1))("0")TYP02020K1(A$(I)TBTB3COUNTAI:FB24:"PRESS ANY KEY FOR MAIN MENU...":A$:LLR:X:2:" *****REMARK INDEX***** ":I1N!(A$(I),7,3)"REM"1900$T10%A$(I)&(A$(I),T,1)" "TT1:18300(37)211900(:24I"İ1800:500W580:"+TB01JI1N:Z$A$(I):400k(16384)127Ĺ16368,0:A$q(A$(I),7,3)"FOR"TBTB38(A$(I1),7,4)"NEXT"1089=COUNT1:Q5(A$(I1))>(A$(I1),Q,1)","COUNTCOUNT1?Q @"---------------------------------------"0 6 :< l :3:" *** APPLE BASIC PRETTYPRINTER ***" 8:" I-INDEX TO ALL REM STATEMENTS" &:" P-PRINT PROGRAM" 5:" Q-QUIT" D22::A$ IA$"Q"Ā NA$"P"İ1000:500 SA$""FOR"TBTB3 : :! * 1003 200e (Z$)39TBĺ(Z$,6);TB);(Z$,(Z$)6):447 (Z$,6);TB);(Z$,7,39TB6):X40TB LX32TB:L(Z$)L(Z$) TB6); (Z$,X,LX1) L(Z$)447 XX33TB:420* EFLAG11ĺ"***************************************"3 9 :? V (Z$,7,2)"IF"ı` L$Z$ J9(Z$):(Z$,J,4)"THEN"250 J Z$(L$,J1):405 TB63);"THEN" Z$" "(L$,(L$)4J):405 (L$,J6,3)"FOR"(L$,J5,3)N ACCURACY OF "NRN100"%."Z "DO YOU WANT TO TRY AGAIN? ";X$:(X$,1)"N"Ľ:2000:10` 5:"INPUT SPEED IN WORDS PER MIN. ";WPM$:WPM(WPM$) WPM5WPM60Ğ:"SPEED MUST BE BETWEEN 5 AND 60 WPM";::1:I11000:I:868:5:1000 S(3288) U21> Z(X192);:X192YX128YX32ğ:NRNR1[ d22:36,(36)1:(Y);: iZ36(Z36)Č912:912:912:912:1 kY160Z6(Z6)110 lQQ1 nZ s(0)0Č912:912:912 x:"YOU GOT "NR" RIGHT OUT OF "N:"FOR A1N:II1 (5000:16384I,V. -12288I,32\ /Z5(Z5)II1:16384I,32:12288I,32n 2Z:16385I,0 7"HIT ANY KEY TO START":X$:16368,0:::Z1900:Z 933,36 <8192 >33,40 A21:NRN::Q1 FZ1I PX(Z16384):Y(Q12 YOU WANT INSTRUCTIONS?";Q$: (Q$,1)"Y"İ8000::2000J 9:1:868T 1000h 249,S3:250,S "NUMBER OF CHARACTERS? ";N$:N(N$) N1N200Ğ:"NUMBER MUST BE BETWEEN 1 AND 200";::1:Q11000:Q:868:6:25 3000 I0 Z  MORSE CODE PRACTICE BOBBY DEEN,N5DPU 629 WINCHESTER DR. RICHARDSON, TX. 75080 (214)235-439116640:2000(4);"BLOAD MORSE CODE.OBJ" 9:"DO  󮍪獪箠󠻠卪Ԡƍ̭ĩ썪쩠嬠䬠嬠̭Ġ嬠宠砮Σ箠󠻠堧ç򭍪䮍卪䍪卪썪䮍䍪쮍卪䮠卪󠺠̭ħң٠卪堧Σ䍪砭Ӎ򍪨󩮍嬠箠󠍪卪Ůˮ捪ӠɯϠ堧Σ堧ç骠ҠӠҠŠĠŠӠԠҍȮ󍪠򠣶ɠ荪򬍪卪     V((1)M1)VC%(V)"J@" MORSE CODE GENERATOR 2.0"lE" BY BOBBY DEEN"rJO" THIS PROGRAM IS INTENDED FOR CODE"T"PRACTICE. IT SENDS RANDOM 5-CHARACTER"Y"CODE GROUPS OVER THE BUILT-IN SPEAKER AT";'^ "DO YOU WANT ";::":;'()";(34);::" ? ";A$:A$(A$,1)_ A$"Y"A$"N"İ4000:10:3060 A$"Y"C%(M)34:C%(M1)39:C%(M2)40:C%(M3)41:C%(M4)58:C%(M5)59:MM6 MM1 11::"PLEASE ANSWER Y OR N";:I11000:I:1:868::$(A$,1)- A$"Y"A$"N"İ4000:8:3020Y A$"Y"āIMM10:C%(I)48IM::MM10 "DO YOU WANT ";::".,?-/";::" ? ";A$:A$(A$,1) A$"Y"A$"N"İ4000:9:3040 A$"Y"C%(M)44:C%(M1)45:C%(M2)46:C%(M3)47:C%(M4)63:MM5:56WPM.5) T :2:7:"MORSE CODE GENERATOR 2.0":9:"BY BOBBY DEEN, N5DPU "h C%(47):M1:: "DO YOU WANT LETTERS? ";A$:A$(A$,1) A$"Y"A$"N"İ4000:7:3000 A$"Y"āIMM26:C%(I)I::MM26  "DO YOU WANT NUMBERS? ";A$:A aD$(4)$eD$;"OPEN APPRINT"<xiD$;"WRITE APPRINT"Tlk33,30:30000,30040`0uD$(4)5uD$;"OPEN LISTING":D$;"DELETE LISTING":uD$;"OPEN LISTING":D$;"WRITE LISTING"Du33,30:1,30000NuD$;"CLOSE LISTING"Xu buD$;"CLOSE APPRINTòMAGAZINE.&òENTERED AND MODIFIED?òBY HARRY OWEN JONESOòMEMBER #62aòJAN. 9 1982.ES":"250 AND 1000."8Zú"THIS IS THE OLD LINE : ":250>dÀgnâ23:"TYPE A KEY TO EXIT ...";:A$:oxÉ:|ü50080,0ù33,11::33,40:10ÀòFROM AN ARTICLEòBY MICHAEL A. WYATTòIN THE MARCH 24 ,1981òISSUE OF ELECTRONICS S. PLEASE BE PATIENT."|'K(1)112:K(2)32.08333333:K(3)1279.000076:K(4)15623.66689:K(5)84244.16946:K(6)236957.5129'K(7)375911.6923:K(8)340071.6923:K(9)164062.5128:K(10)32812.50256:K(11)(2)'Pú:"ENTER EQUATION IN S BETWEEN LINOTHER CURVE"0t'" 'S' : END PROGRAM."8~':e'"HAS EQUATION BEEN ENTERED ? Y/N ";:A$k'}'A$"N"50000'"INPUT TIME INCREMENT : ";T':'7:"INVERSION COMPUTING"'':"THIS WILL TAKE ABOUT TWO AND A HALF":"MINUTEAY"& .'7)"------------------------", 8'g B'"ENTER EQUATION IN 'S' BETWEEN LINES":"250 AND 1000" L'"USE F(N) AS VALUE OF EQUATION" V' `'" RIGHT ARROW : MOVE CURSOR RIGHT" j'" LEFT ARROW : MOVE CURSOR LEFT" o'" RETURN : RUN ANY(I1)17000, I1,Y(I1)1I1,Y(I1)13 7C I1,Y(I1)Z I,Y(I)1I,Y(I)1d X:22 b" F(";IT;")=";(V(I)100.5)100 l4020 ': 'K(11),V(281),F(11),Y(281) $'" LAPLACE INVERSION FOR":" TIME - DOMAIN DISPL---DECREMENT CURSOR----! II10 I150408 I1? 4^ I1,Y(I1)1I1,Y(I1)1e 7v Y(I)07000 I1,Y(I1) I,Y(I)1I,Y(I)1 7000 p -----INCREMENT CURSOR---- zII1 I2796040 I279 4 Y(I)12790 Y(I)(B((PLOWV(I))(PHIGHPLOW)))16 B 1,Y(I)O I2279\ I,Y(I)b  -----CURSOR ROUTINE---- I125:7000 C$ C$(8)5000 C$(21)6000 C$"S"50030 C$(13)ĉ::10050:120 4020  -- 7 PLOW02200J Y(I)(156155((V(1)(PLOW))(PHIGHPLOW)))~ A155:B156:USE CONSTANTS TO SPEED UP PLOTTING 4I2279 >Y(I)(BA((V(I)(PLOW))(PHIGHPLOW))) H R3000 Y(1)(156((PLOWV(1))(PHIGHPLOW)))1 I2b d10000xI1279%}N1109SNK(11)(TI)UF(N)1(S(SS.8S1))oLF(N)F(N)K(N)F(N1)uV`V(I)F(10)K(11)(TI)jV(I)PHIGH1150tPHIGHV(I)~V(I)PLOW1170PLOWV(I) -----PLOT ROUTINE---- :     "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$ FAST-BOOT,BY JOHN MATTHEWS, M.D.AAND J.E. HOPPERUCOPYRIGHT 1981uCOMMERCIAL RIGHTS RESERVEDNON-COMMERCIALDISTRIBUTION ENCOURAGEDdLOAD REQUISITE FILESnx10:11:"ONE MOMENT PLEASE"RWTS16384:RWTS     H0P<0=>0?L 16384):X1288120 RE DESIRED NUMBER OF CHARACTERS (200"L"MAX) HAVE BEEN SENT, THE PROGRAM"}"DISPLAYS THE CORRECT CHARACTERS AND YOUR";"INPUT. ERRORS ARE FLASHED, AND THE PER-""CENT CORRECT IS COMPUTED.":"HIT ANY KEY TO CONTINUE";:X(PUT MAY BE"<|"DELAYED BY RECOGNITION TIME AS REQUIRED.";m"IF YOU GET LOST, YOU MAY TYPE A SPACE TO";"GET YOUR INPUT RE-SYNCHRONIZED WITH THE""NEXT CODE GROUP. INPUT ERRORS MAY BE""CORRECTED WITH THE BACKSPACE KEY. AFTER"$"TH"SPEEDS OF 5 TO 60 WORDS PER MINUTE."Uc"CHARACTERS SENT MAY BE ANY COMBINATION"h"OF LETTERS, NUMBERS, STANDARD PUNCTUA-"m"TION, AND NON-STANDARD PUNCTUATION. YOU"r"MAY TYPE IN CHARACTERS SEPARATED BY" w"SPACES AS THEY ARE HEARD. IN,0:49234,0::I2124:I:L$:I:I125::24:L$;::18:"L";:24:"L"::J7:S0:E16:Z20:F20:k :< R$(0)"CUB":R$(1)"SENIOR CUB":R$(2)"PILOT IN TRAINING":R$(3)"LICENCED CIVILIAN":R$(4)"QUALIFIED FIGHTER PILOT":R$(5)"WING COMMANDER":R$(6)UTRAL POSITION.":"ROTATE CONTROL UNTIL & (YOUR ROCKET)":"IS CENTERED. PUSH BUTTON TO LAUNCH"~ n(20):(2):"^":P1500:P p(12((1)801.5)20):(1):"&":(1):" " t(15):X(16286):X127ī112c v:34B6L1 *L1B6L07 ,QS32G3200L:Q0Q0J .Q1798Q1798 0"YOUR RANK IS: ";R$((Q200)):MQ:"HIT BUTTON TO CONTINUE"; 4X(16286):X127ī52 6: d:^ f(8):"IN ORDER FOR SAFE TAKE OFF THE CONTROLS":"MUST BE IN THE NED:J26 JJ1:6 (1Z):5:(34):U125:X(16336):U:S((SB.7)1.5):5:(1F):";":ZF:K1500:K:GS100LL.5 NN1:N1GS:36 "G(G(N1)S)N $SHHS &49235,0:21:958:"SCORE=";S100;" HIGH SCORE=";H100:L3r 2008100:6:2::L$;:38518:"D";:24:"D":jD120:A4(1)2:I17:EEA(1):E5A2{E25A1.5 FZ(1)801.5:F,12)2ī20 (1Z):5::(34):24:L$;::((E)):"LLL";:((E)3J):"LLL":5:(1F):"2":ZF:SS2:I,  APA":I02:P(I)(1013I)::P(1)0P(2)P(2)1:P(1)2560ADRS301,P(1)1:ADRS302,P(2): 67,82,65,69,32,32,32,32:I07:A:ADRSI190,A::ADRS190I,0:ADRS::"HOW":4::"&NO";::"SHOW"{4::"&A";::"UTO ,":4::"&MA";::"NUAL NUMBERING":4::"&X";::"REF"4::"&K";::"EYS: [_\"::"LOADING APPLESOFT PROGRAMMERS ASSISTANT";::"*"::ADRS0:(4),"BLOAD RBOOT":5209ADRS(0),"O CONTINUE *";(8);:A$::1013,76:1014,00:1015,141:111,240:115,240:112,121:116,121:10::"DOS TOOLKIT : APA"::::" COMMANDS : "::4::"&H";::"OLD":4::"&M";::"ERGE"4::"&L";::"ENGTH":4::"&CO";::"MPRESS":4::"&S";:D ADDRESS":4::"%NNNNN";::12:"= DECIMAL TO HEX CONVERSION" 21:"LOADING C R A E 2.0 ";::"*"::(4);"BLOADEDIT.PROD":21:" C R A E 2.0 NOW LOADED (7.2K)"::"INSERT DISK WITH 'RBOOT' AND 'APA' AND"Y7:"HIT ";::"SPACE BAR";::" TNUMBER"y "10 ";::"M";::"ODIFY":"11 ";::" ";::"QUICK AND DIRTY:":4::" ":4::"*";::12:"= ENTER MONITOR" 4::"!";::12:"= FREE BYTES AVAILABLE":4::"!NNNN";::12:"= HEX TO DECIMAL CONVERSION"? 4::"%";::12:"= BINARY LOA.0"::s n" 1 ";::"A";::"PPEND":" 2 ";::"C";::"HANGE":" 3 ";::"D";::"UMP":" 4 ";::"F";::"IND" x" 5 ";::"L";::"IST" " 6 ";::"Q";::"OTE":" 7 ";::"V";::"ERIFY OFF":" 8 ";::"A";::"AUTOLINE":" 9 ";::"R";::"E."m 2:"THE '&R' RENUMBER COMMAND FROM 'APA' IS LOST, BUT THIS FUNCTION IS AVAILABLE AS A 'CRAE' UTILITY." <::"INSERT A DISK CONTAINING THE 'CRAE' FILE";:15::"EDIT.PROD"::5:"IN THE DRIVE AND HIT A KEY *";(8);:A$: d:14::"C R A E 2OM APPLE COMPUTER" "MUST BE AVAILABLE."::"THIS HELLO PROGRAM ALLOWS BOTH PROGRAM-":"MING UTILITIES TO BE RESIDENT IN MEMORY" ("TOGETHER. THE 'CRAE' COMMANDS ARE NOT CHANGED, BUT 'CRAE' IS ACCESSED BY THE '&C' (OR &CR, &CRA OR &CRAE) COMMANDS :::" HELLO PROGRAM TO LOAD ":" CRAE : CO-RESIDENT APPLESOFT EDITOR ":" AND ":" APA : APPLESOFT PROGRAMMERS ASSISTANT " :6:"'EDIT.PROD' FROM CRAE (HIGHLANDS) AND":"'RLOAD' AND 'APA' FR     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! ! ! ! ! , L ` Ɉ 0L0!`L0!`@`hh c! c! c! c!Lc! r! r!Lr! ! ` ~ 7! E!  c!L # r! r!L p E q %LF @H h fH ! hL9 `@ p@`@ `HxTx80, , ,0,   * * APPLE B.C. *: * BY CRS *U * *q ******************** T$(34)::, ********************G * *b * CANYON RUN *} * ______ ___ * * * * MODIFICATION * * OF * * SPACE CANYON * * FROM T":"STOP THE CRAFT FROM HITTING THE WALLS":"OF THE CANYON.":"BASED ON YOUR SKILL,ABILITY TO LEARN,":"AND PERFORMANCE UNDER PRESSURE, YOU" "WILL BE AWARDED RANK.":::"HIT < SPACE BAR > TO CONTINUE *";:33:A$:A$::B