!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! DIR LISTS CURRENT DIRECTORY ! ! W.S.C. 8TH APRIL 1980 ! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! STACK=2000 STREAMS=1 %CONTROL K'101011' %BEGIN ! DATA AREAS %CONSTINTEGER SERV=3 %CONSTINTEGER FSERV=4 %CONSTINTEGER DIRBLK=97 %CONSTINTEGER EXAMINE=0 %CONSTINTEGER GET NEXT=1 %CONSTINTEGER DESTROY=2 %CONSTINTEGER CREATE=3 %CONSTINTEGER APPEND=4 %CONSTINTEGER RENAME=5 %CONSTINTEGER LP SER=12 %CONSTINTEGER DREAD=0 %CONSTINTEGER DWRITE=1 %RECORDFORMAT STRDF(%INTEGER A,B,C,%BYTEINTEGER SERV,REP,UNIT,FSYS) %RECORDFORMAT STRPF(%RECORD(STRDF)%NAME ST) %CONSTRECORD(STRPF)%NAME STRP1=K'160034' %RECORD(STRDF)%NAME INSTR1 %CONSTRECORD(STRDF)%NAME NULL=0 %CONSTBYTEINTEGERNAME DF=K'160055' %CONSTBYTEINTEGERNAME INT=K'160060' %CONSTBYTEINTEGERNAME ID=K'160030' %RECORDFORMAT FILEF(%BYTEINTEGERARRAY NAME(0:5),%C %INTEGER FIRST,PR) %RECORD(FILEF)%ARRAY DIRECT(0:50) %RECORDFORMAT PF(%BYTEINTEGER SERVICE,REPLY,%INTEGER A1,%C %RECORD(FILEF)%NAME A2,%INTEGER A3) %RECORD(PF) P %INTEGER CURFSYS,REP,QUEST,I,J,K,UNIT %BYTEINTEGERARRAY SNAME(0:5) !******************************************************************* !******************************************************************** %ROUTINE GETDIR %INTEGER BLOCK P_SERVICE=SERV P_REPLY=ID P_A1=0; !READ ONLY P_A2==DIRECT(0) P_A3=DIRBLK+CURFSYS P_A3=P_A3!K'020000' %IF UNIT=1 PONOFF(P) %IF P_A1#0 %START PRINTSTRING('DIRECTORY BLOCK READ ERROR') NEWLINE %STOP %FINISH %END %ROUTINE PRINTFILE(%INTEGER IND) %INTEGER X SPACES(2) %IF DIRECT(IND)_NAME(0)>127 %THEN PRINTSYMBOL('#') %ELSE SPACE %CYCLE X=0,1,5 PRINTSYMBOL(DIRECT(IND)_NAME(X)) %REPEAT SPACES(2) %END %INTEGERFN NFILE %INTEGER X,Y Y=0 %CYCLE X=0,1,50 %IF DIRECT(X)_FIRST#0 %THEN Y=Y+1 %REPEAT %RESULT=Y %END %INTEGERFN PNFILE %INTEGER X X=NFILE WRITE(X,2) PRINTSTRING(' FILES') NEWLINES(2) %RESULT=X %END %ROUTINE CURLOG %INTEGER X NEWLINE PRINTSTRING('FSYS=') WRITE(UNIT,1); PRINTSYMBOL('.') X=CURFSYS//8 PRINTSYMBOL(X+'0') PRINTSYMBOL(CURFSYS-(X*8)+'0') SPACES(3) %END !***************************************************************** !******************************************************************* !CODE STARTS HERE INSTR1==STRP1_ST %IF INSTR1==NULL %START CURFSYS=DF; UNIT=0 %ELSE CURFSYS=INSTR1_FSYS UNIT=INSTR1_UNIT %FINISH GETDIR CURLOG %IF PNFILE#0 %START REP=-1 QUEST=0 %CYCLE %CYCLE I=0,1,5 SNAME(I)=255 %REPEAT %CYCLE J=0,1,50 %IF DIRECT(J)_FIRST#0 %START %CYCLE I=0,1,5 %EXIT %IF DIRECT(J)_NAME(I)>SNAME(I) %IF DIRECT(J)_NAME(I)