INDFDC.MAC;2/AU=INDFDC.VGN;1 \ -2,2 .IDENT /04.06X/ -35,36 ; RJDK02 28-AUG-78 ADD SUPPORT FOR @ FILSPEC XXX YYY ZZZ ; JGD 05-FEB-78 MODIFY FOR USE ON RSX11M V3.2 SYSTEM ; WITH SPAWN DIRECTIVE. ; ; ; ; % -40,,/; RJDK2/ .MCALL CSI$ CSI$ -106,108;/ ; RJDK2/ CALL TOPPRM ; DEAL WITH TOP LEVEL PARAMS JMP INDRD ; GET NEXT COMMAND ; TOPPRM: ;ROUTINE TO DEAL WITH @XXXXXX,YYYY,ZZZZZ ; ; MOV $CSIBK+C.CMLD+2,R4 ;GET ADDR TEXT MOV R4,LINPTR ;SAVE TEXT ADDRESS MOV $CSIBK+C.CMLD,R3 ;GET LENGTH ADD R3,R4 ;GET LENGTH+TEXTADDR CLRB (R4) ;NULL AT END OF LINE TO STOPON MOVB #'A,$FDGE+2 ;SET TO $A FOR 1ST SYMBOL CALL $CPYS ;COPY SYMBOL POINTERS TSTB (R4)+ ;WAS TERM A NULL BEQ 10$ ;YES RETURN TO CALLER 1$: ; ;SET UP SYMBOL $A INC LINPTR ;POINT OVER , MOV #$FDGE,R0 ;SET POINTER TO FAKE MOVB #STR,SYMTP ;SET STRING SYMBOLS CALL PRSYM ;PARSE SYMBOL R5=ADDRESS CALL $CPYS ;COPY POINTERS CALL ASVALS ;AND SETUP STRING SYMBOLS TSTB @LINPTR ;END OF LINE BEQ 10$ ;YES INCB $FDGE+2 ;MAKE NEXT SYMBOL BR 1$ ;AND DO NEXT PARAM 10$: RTS PC $CPYS: ; GIVEN R4 -> TXT,TXT,TXT ; SET R4 TO NEXT "," OR ; RESULT R0 IS TEXT POINTER ; R1 IS TEXT LENGTH ; MOV LINPTR,R4 ;START POINT MOV R4,R0 ;SET START POINT 1$: TSTB (R4) ;EOL BEQ 20$ ;YES GO FINISH UP CMPB (R4),#'[ ;START UIC? BEQ 2$ ;YES CMPB (R4),#'] ;END UIC BEQ 3$ ;YES TST UICD ; IN A UIC BNE 10$ ;YES WAIT FOR IT TO END CMPB (R4),#', ;OR IS IT "," BEQ 20$ ;END OF SYMBOL 10$: INC R4 ;POINT ON BY 1 BR 1$ ;GO BACK AGAIN ONE MORE 2$: INC UICD ;SHOW IN UIC BR 10$ ;AND ON 3$: DEC UICD ;NOLONGER IN UIC BR 10$ ; 20$: MOV R4,R1 ;SET END POINT IN R1 SUB R0,R1 ;AND REDUCE TO LENGTH MOV R4,LINPTR ;SAVE FOR NEXT TIME RTS PC $FDGE: .ASCII / $A XX/ ;FAKE SYMBOL NAME LINPTR: .WORD 0 ;POINTER IN CURRENT LINE UICD: .WORD 0 ;UIC DEPTH .END /