;***************************************************************************;
; ;
; 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