TITLE WHEREIS THAT FILE? SUBTTL PHIL BUDNE@BU/DSG .DECSAVE A==1 B==2 C==3 D==4 I==15 P==17 PDL: BLOCK ;PUSH DOWN LIST BUFFER: BLOCK ;LINE BUFFER WJFN: BLOCK 1 ;PATTERN JFN FORKH: BLOCK 1 ;FORK HANDLE FOR FU.EXE WFILE: BLOCK 50 ;WILD FILE AND EXT GTJBLK: GJ%IFG+GJ%FLG+GJ%OFG ;WILD, RETURN FLAGS, PARSE ONLY 0 ;JFNS 0 ;DEFAULT DEV 0 ;DEF DIR 0 ;DEF FILE -1,,[ASCIZ '*'] ;DEF EXT 0 ;DEF PRO 0 ;DEF ACT 0 ;JFN 2 USE NAMTAB: [ASCIZ 'SYS:'] [ASCIZ 'HLP:'] [ASCIZ 'DOC:'] [ASCIZ 'GAM:'] [ASCIZ 'UNIX:'] [ASCIZ 'PCL:'] [ASCIZ 'EMACS:'] [ASCIZ 'SYSTEM:'] [ASCIZ 'MAIL:'] [ASCIZ '221B:'] [ASCIZ 'MID:'] [ASCIZ 'USR0:'] [ASCIZ 'USR0:'] [ASCIZ 'USR1:'] [ASCIZ 'USR1:'] [ASCIZ 'USR1:'] [ASCIZ 'AP20:'] [ASCIZ 'USR1:'] [ASCIZ 'AP20:'] [ASCIZ 'AP20:<6*>'] [ASCIZ 'AP20:<5-1*>'] NAMCNT==.-NAMTAB START: JFCL RESET SETZM FORKH MOVE P, [-LPDL,,PDL-1] MOVEI A, .RSINI RSCAN JRST DEATH JUMPE A, DIE MOVEI A, .PRIIN HRROI B, BUFFER MOVEI C, BUFLEN*5-1 MOVEI D, ^J SIN ERJMP DEATH SETZ A, IDPB A, B ;; FATAL IF C == 0 MOVE A, [440700,,BUFFER] SS: ILDB B, A JUMPE B, DIE ;NO SPACE? CAIE B, <" > JRST SS MOVE B, A MOVEI A, GTJBLK GTJFN ERJMP DEATH MOVEM A, WJFN HRROI A, WFILE MOVE B, WJFN MOVSI C, 001000 JFNS MOVEI B, ". BOUT MOVE B, WJFN MOVSI C, 000100 JFNS SETZ C, IDPB C, A MOVSI I, -NAMCNT LOOP: HRROI A, BUFFER HRROI B, [ASCIZ 'FU DIR '] SETZ C, SOUT PUSH P, A ;SAVE BP TO START OF FN HRRO B, NAMTAB(I) SOUT HRROI B, WFILE SOUT HRROI B, [ASCIZ ' /NOHEADER/CREATE '] SOUT IDPB C, A MOVSI A, (GJ%SHT+GJ%OLD+GJ%IFG) POP P, B GTJFN ERJMP BOT RLJFN TRN HRROI A, CRLF PSOUT HRRO A, NAMTAB(I) PSOUT HRROI A, CRLF PSOUT HRROI A, BUFFER RSCAN JRST DEATH SKIPE FORKH JRST STFORK MOVSI A, (CR%CAP) CFORK JRST DEATH MOVEM A, FORKH MOVSI A, (GJ%SHT+GJ%OLD) HRROI B, [ASCIZ 'SYS:FU.EXE'] GTJFN JRST DEATH HRL A, FORKH GET ERJMP DEATH STFORK: MOVE A,FORKH SETZ B, SFRKV ERJMP DIE WFORK BOT: AOBJN I, LOOP DIE: HALTF DEATH: HRROI A, [ASCIZ 'AGHHHHHH!! - '] ESOUT MOVEI A, .PRIOU HRLOI B, .FHSLF SETZ C, ERSTR SKIPA JFCL JRST DIE CRLF: .BYTE 7 ? ^M ? ^J ? 0 ? .BYTE END START