;***************************************************************************; ; ; ; WILD ; ; general-purpose wildcard utility ; ; ; ; Author: David F. Pallmann ; ; Copyright (C) 1983 by LMS Technical Services, Inc. ; ; ; ;***************************************************************************; ; ; File uses universal (.UNV) files other ; than SYS, SYSSYM, and TRM. ; These are on the AMUS network ; ; File makes external references to WLDSCN.OBJ[P,PN]. After ; assembly, enter this command: .LNKLIT file,WLDSCN[P,PN] ; OBJNAM WILD.LIT VMAJOR=1 ;edit history VEDIT=100. ;29-Dec-83 DFP creation. ;universals SEARCH SYS SEARCH SYSSYM SEARCH TRM SEARCH MACLIB SEARCH WLDSCN ;registers IMP=A5 ;impure index ;impure area .OFINI .OFDEF PREFIX,100. ;command line prefix .OFDEF SUFFIX,100. ;command line suffix .OFDEF FILCNT,4 ;files procesed .OFDEF CMDLIN,200. ;command buffer .OFSIZ IMPSIZ START: PHDR -1,0,PH$REE!PH$REU ;program header GETIMP IMPSIZ,IMP ;allocate impure area BYP LIN BNE GETFIL TYPECR usage is .WILD files command_line TYPECR example: .WILD *.BAS COMPIL % JMP EXIT GETFIL: WINIT BYP WSPEC JNE EXIT BYP GETPRE: LEA A0,PREFIX(IMP) 10$: MOVB (A2)+,D1 CMPB D1,#'% BEQ GETSUF MOVB D1,(A0)+ BNE 10$ TYPECR ? no wildcard reference (%) in command line JMP EXIT GETSUF: CLRB @A0 LEA A0,SUFFIX(IMP) 10$: MOVB (A2)+,(A0)+ BNE 10$ CLRB -2(A0) CLRW FILCNT(IMP) LOOP: WSCAN ;get a file JNE DONE ; none left to process INCW FILCNT(IMP) CALL EXEC ;execute command line CTRLC DONE BR LOOP ;process next file DONE: MOVW FILCNT(IMP),D1 BNE 10$ TYPECR %no such files BR EXIT 10$: DCVT 0,OT$TRM!OT$TSP TYPE file CMPW D1,#1 BEQ 20$ TYPE s 20$: TYPECR < processed> EXIT: CRT #12. CRLF EXIT EXEC: LEA A2,CMDLIN(IMP) ;index command line buffer LEA A0,PREFIX(IMP) ;copy prefix to buffer CALL COPY TSTW D.DEV(A4) BEQ 10$ LEA A1,D.DEV(A4) UNPACK MOVW D.DRV(A4),D1 DCVT 0,OT$MEM MOVB #':,(A2)+ 10$: LEA A1,D.FIL(A4) UNPACK UNPACK CALL TRIM MOVB #'.,(A2)+ UNPACK CALL TRIM CLR D1 MOVB D.PPN+1(A4),D1 BEQ 20$ MOVB #'[,(A2)+ OCVT 0,OT$MEM MOVB #',,(A2)+ MOVB D.PPN(A4),D1 OCVT 0,OT$MEM MOVB #'],(A2)+ 20$: LEA A0,SUFFIX(IMP) CALL COPY SAVE A0-A5,D0-D5 LEA A0,SPSAVE MOV SP,@A0 LEA A2,CMDLIN(IMP) CRT #12. TYPE . TTYL @A2 CRT #11. AMOS CRLF LEA A0,SPSAVE MOV @A0,SP REST A0-A5,D0-D5 RTN COPY: MOVB (A0)+,(A2)+ BNE COPY DEC A2 RTN TRIM: CMMB -(A2),#40 BEQ TRIM INC A2 RTN SPSAVE: LWORD 0 END .