.TITLE SRDREP REPLACE CHARACTERS THAT CSI DOESN'T LIKE .IDENT /6.0/ ; ON ENTRY: ; R1 POINTS TO THE COMMAND STRING ; R2 CONTAINS ITS LENGTH ; ; THIS MODULE ALLOWS THE USER TO USE SYNTAX SUCH AS /DA:1-DEC-79 10:30 ; WHEREAS NORMALLY THE CSI PARSING WOULD KICK OUT THE SECOND COLON AND ; OMIT THE BLANK. TO BE PRECISE WE CHECK FOR THE FOLLOWING:- ; ; /AF:1-DEC-79 10:30 - REPLACE BLANK WITH ' AND : WITH # ; /AE, /BF, /BE & /DA - AS FOR /AF ; /SE:FRED.MAC;3 - REPLACE ; WITH # ; /SD - AS FOR /SE ; SWITCH: .BLKB 2 SRDREP:: MOV R1,-(SP) ; SAVE THE REGISTERS MOV R2,-(SP) ; ; LOOP1: CMPB (R1)+,#'/ ; A SWITCH? BNE LOOP ; IF NE NO - GET NEXT CHAR CMPB (R1),#'- ; YES - A MINUS? BNE 20$ ; IF NE NO - GET THE SWITCH INC R1 ; YES - SKIP IT DEC R2 ; COUNT IT BEQ END ; EXIT IF NO MORE ; 20$: MOVB (R1)+,SWITCH ; GET THE SWITCH MOVB (R1)+,SWITCH+1 ; CMP SWITCH,#"DA ; DATE? BEQ DATE ; YES - CHECK IT CMP SWITCH,#"AF ; AFTER DATE? BEQ DATE ; YES - CHECK IT CMP SWITCH,#"AE ; AFTER DATE? BEQ DATE ; YES - CHECK IT CMP SWITCH,#"BE ; BEFORE DATE? BEQ DATE ; YES - CHECK IT CMP SWITCH,#"BF ; BEFORE DATE? BEQ DATE ; YES - CHECK IT CMP SWITCH,#"SE ; SELECTIVE? BEQ SELECT ; YES - CHECK IT CMP SWITCH,#"SD ; OTHER SELECTIVE BEQ SELECT ; YES - CHECK IT ; LOOP: SOB R2,LOOP1 ; ELSE CHECK NEXT CHAR IF ANY ; END: MOV (SP)+,R2 ; RESTORE REGISTERS MOV (SP)+,R1 ; RETURN ; AND EXIT ; DATE: CMPB (R1),#': ; A DATE SPECIFIED? BNE LOOP ; NO - FORGET IT INC R1 ; YES - SKIP COLON DEC R2 ; COUNT IT BEQ END ; IF EQ NO MORE - EXIT ; 10$: CMPB (R1),#'/ ; END OF DATE? BEQ LOOP ; YES - CARRY ON CMPB (R1),#' ; A SPACE? BNE 20$ ; NO - KEEP CHECKING MOVB #'',(R1) ; YES - REPLACE WITH QUOTE ; 20$: CMPB (R1),#': ; A COLON? BNE 30$ ; NO - KEEP CHECKING MOVB #'#,(R1) ; YES - REPLACE WITH HASH ; 30$: INC R1 ; SET TO NEXT CHAR SOB R2,10$ ; AND KEEP LOOKING BR END ; EXIT IF NO MORE ; SELECT: CMPB (R1),#'/ ; END OF SWITCH? BEQ LOOP ; YES - BACK TO MAIN LOOP CMPB (R1),#'; ; NO - A SEMI-COLON? BNE 10$ ; IF NE NO - KEEP CHECKING MOVB #'#,(R1) ; YES - REPLACE BY A HASH ; 10$: INC R1 ; COUNT THE CHARACTER SOB R2,SELECT ; KEEP CHECKING ANY LEFT BR END ; OR EXIT .END