; VGETCL - GET MCR COMMAND LINE FOR VAL ; LAST EDIT: 6-NOV-80 ; .NLIST .LIST TTM .NLIST BEX .TITLE VGETCL .LIST ; .PSECT VALIO ; ; ; THIS ROUTINE SHOULD BE CALLED IMMIDIATLY AFTER A CALL TO ; START TO OBTAIN AN MCR COMMAND LINE IF ANY AND PLACE IT ; IN THE VAL INPUT BUFFER SO THAT IT MAY BE READ BY NORMAL ; VAL CALLS. A CALL TO VALTST MAY FOLLOW THE CALL TO VGETCL ; TO DETERMINE IF A COMMAND LINE WAS INDEED OBTAINED. ; ; CALL VGETCL ; ; THIS ROUTINE WILL RETURN ANY TEXT FOLLOWING THE COMMAND NAME ; AND DELIMITED BY SPACE OR @. ; ; ASSEMBLE THIS MODULE PRECEDED BY 'VALMFD' ; .MCALL DIR$ ; RDOFF$ ; DEFINE READIT OFFSETS ; VGETCL::CALL VMAP ;MAP VAL COMMON MOV R1,R2 ;POINT TO LINE BUFFER ADD #VC.LBF,R2 MOV #24577,(R2) ;SET DIC FOR GMCR$ DIR$ R2 MOV #20000,(R2)+ ;PATCH OUT DIC. WITH 0,SPACE ;R2 NOW POINTS TO CAMMAND LINE CMP $DSW,#4 ;CHECK WEVE GOT SOMETHING BGE 1$ ;AND SKIP IF SO CLRB VC.LBF+1(R1) ;ZERO BUFFER BR 10$ ;AND QUIT ; 1$: MOV #IS.SUC,VC.QST(R1) ;SIMULATE QIO COMPLETION CLR VC.QST+2(R1) ;COUNT THE CHARS LATER BIS #ST.QIO,VC.STA(R1) ;FLAG I/O QUEUED MOVB $DSW,R3 ;GET COMMAND LINE LENGTH ADD R2,R3 ;POINT TO END CLRB (R3) ;ZERO END OF BUFFER ; 2$: TSTB (R2) ;STRIP REST OF FUNCTION NAME BEQ 3$ CMPB (R2),#'@ ;ALLOW XXX@YYY BEQ 3$ CMPB (R2)+,#40 BNE 2$ ; 3$: MOV R1,R3 ;GET BACK BEGINNING OF BUFFER ADD #VC.LBF+1,R3 4$: MOVB (R2)+,(R3)+ ;COMPRESS STRING BEQ 5$ INC VC.QST+2(R1) ;AND COUNT CHARS BR 4$ ; 5$: DEC R3 ;POINT TO TERMINATING BYTE MOV R3,RD.KP(R0) ;SET READIT POINTER TO END OF BUFFER ; 10$: CALL VRSCTX ;RESTORE USER MAPPING RETURN ; .END