.TITLE GETMCL MCR/INDIRECT COMMAND ROUTINES .IDENT /1.0A/ ;+ ++EXTSPC>> ;.NAME GETMCL/GETMCL.MAC(USERLIB.OLB) (REL 1.0A) 12/03/80 ;.TITLE GETMCL (STATUS, PROMPT, LENGTH, BUFFER) ; ;.FUNCTION: ROUTINE TO ENABLE RSX UTILITY-LIKE COMMAND INPUT AND PROMPTING ; ;.ARGUMENTS: (STATUS, PROMPT, LENGTH, BUFFER) ; INPUT TYPE * * * * * * * DESCRIPTION * * * * * * * * ; ; PROMPT BYTE USER-SPECIFIED PROMPTING STRING. MUST INCLUDE ALL ; CARRIAGE-CONTROL CHARACTERS ; ; LENGTH I*2 LENGTH OF 'PROMPT' STRING ; ; ; OUTPUT TYPE * * * * * * * DESCRIPTION * * * * * * * * ; ; STATUS I*2 ERROR STATUS RETURN CODE AND INPUT CHARACTER COUNT ; +N = SUCCESS, N=NUMBER OF CHARACTERS READ ; -1 = EOF DETECTED ; -2 = INPUT BUFFER TOO SMALL ; -3 = NESTING DEPTH EXCEEDED ; -4 = SYNTAX ERROR IN INDIRECT COMMAND FILE NAME ; -5 = OPEN ERROR FOR INDIRECT COMMAND FILE ; -6 = I/O ERROR READING COMMAND FILE ; -7 = MISCELLANEOUS (UNKNOWN) ERRORS ; ; BUFFER BYTE 132-CHARACTER (OR LONGER) INPUT BUFFER CONTAINING ; DATA READ BY THIS ROUTINE. SPACE-FILLED TO 132. ; ;.DESCRIPTION: ; THIS ROUTINE ENABLES FORTRAN USERS TO USE THE MACRO GCML$ ROUTINES TO ; OBTAIN COMMAND LINE INPUT FROM NESTED INDIRECT COMMAND FILES AS WELL AS ; FROM THE USER TERMINAL. ; USER-SPECIFIED PROMPTS ARE OPTIONAL, AND CARRIAGECONTROL FOR USER-SPECI- ; FIED PROMPTS IS LEFT UP TO THE INDIVIDUAL PROGRAMMER. DEFAULT PROMPT IS ; "HUH?". ; LUN 4 IS USED FOR I/O AND APPROXIMATELY 1100 (8) BYTES ARE REQUIRED FOR ; THESE ROUTINES AND BUFFERS. ; NESTING DEPTH FOR INDIRECT COMMAND FILES IS 3. ; ------------------------------------------------------------------------------ .PAGE ; ;.LANGUAGE: MACRO-11/RSX-11M/~1100(8) BYTES ; ;.COMMON: NONE ; ;.EXT REFERENCES: ; ALUN$,DIR$,FSRSZ$,GCMLB$,GCMLD$,GCML$/RSXMAC.SML,SYSLIB.OLB ; ;.INPUT/OUTPUT: ; LUN DEV DISP FILE-NAME DESCRIPTION ; 4 TI: I/O ---------.CMD PROMPT OUTPUT, COMMAND INPUT ; ;.AUDIT TRAIL: ; **DATE** ******NAME****** *DEPT* GROUP RELEASE ; 10/22/80 M.D.LAMPI C1-253 CAT REL 1.0 ; CREATED ; 12/03/80 M.D.LAMPI C1-253 CAT REL 1.0A ; UPDATED INTERNAL DOCUMENTATION TO MDC STANDARDS ; ; ------------------------------------------------------------------------------ .PAGE ; ;.COMMENTS: ; PERFORMS GCML ROUTINE AND COPIES INTERNAL BUFFER (132 CHARACTERS) TO ; USER BUFFER. LOWER-CASE CHARACTERS ARE AUTOMATICALLY CONVERTED TO UPPER ; CASE, BUT TABS ARE NOT CONVERTED TO BLANKS. ; ;.KEYWORDS: ; INDIRECT COMMAND FILES, MCR, GETMCL, GCML ; ;.CLASSIFICATION: ; ;- --EXTSPC>> .PAGE ; .MCALL ALUN$,DIR$ ; GET ASSORTED STUFF ; .MCALL FSRSZ$ ; ALLOCATES FILE STORAGE REGION SPACE .MCALL GCMLB$ ; ALLOCATES & INITIALIZES GCML CONTROL BLOCK .MCALL GCMLD$ ; DEFINES GCML CTRL BLOCK OFFSETS & BIT VALUES .MCALL GCML$ ; GET COMMAND LINE .MCALL RCML$ ; RESET INDIRECT COMMAND FILE LEVEL TO 1ST .MCALL CCML$ ; CLOSES CURRENT COMMAND FILE ; BUFSIZ=134. ;BUFFER SIZE FOR COMMAND LINE INPUT (+2) INDEPT=3 ;INDIRECT COMMAND FILE NESTING DEPTH LUN=4 ;LUN FOR INDIRECT COMMAND FILE INPUT ; ALUN: ALUN$ LUN,TI,0 ; ASSIGN INDIRECT COMMAND FILE LUN TO TI: ; ; DEFAULT PROMPT IS HUH? ; GCMLB: GCMLB$ INDEPT,HUH?,,LUN,,BUFSIZ ; ; FSRSZ$ 1 ; RESERVE SPACE FOR AN OPEN FILE ; STATUS=2 PROMPT=4 PRMPTL=6 BUFFER=10 ; GETMCL:: DIR$ #ALUN ;ASSIGN A LUN TO TI: CMP #-1,PROMPT(R5) ;SEE IF PROMPT STRING PASSED BNE 10$ ;IF NE YES GCML$ #GCMLB ;ELSE DEFAULT TO INP> BR 20$ 10$: GCML$ #GCMLB,PROMPT(R5),@PRMPTL(R5) ;USE ALTERNATE PROMPT 20$: BCC SUCC1 ; ; ; ERROR DETECTED IN GCML - DETERMINE WHAT IT IS ; ERR: CLR @STATUS(R5) ;INITIALIZE ERROR RETURN CMPB #GE.IOR,G.ERR+GCMLB ;I/O ERROR? BNE 21$ ;IF NE NO MOV #-6,@STATUS(R5) ;ERROR CODE -6 RETURN 21$: CMPB #GE.OPR,G.ERR+GCMLB ;OPEN ERROR? BNE 22$ ;IF NE NO MOV #-5,@STATUS(R5) ;ERROR CODE -5 RETURN 22$: CMPB #GE.BIF,G.ERR+GCMLB ;SYNTAX ERROR IN .CMD FILE? BNE 23$ ;IF NE NO MOV #-4,@STATUS(R5) RETURN 23$: CMPB #GE.MDE,G.ERR+GCMLB ;MAX DEPTH EXCEEDED? BNE 24$ MOV #-3,@STATUS(R5) RETURN 24$: CMPB #GE.RBG,G.ERR+GCMLB ;INPUT BUFFER TOO SMALL? BNE 25$ MOV #-2,@STATUS(R5) RETURN 25$: CMPB #GE.EOF,G.ERR+GCMLB ;EOF? BNE 26$ MOV #-1,@STATUS(R5) RETURN 26$: MOV #-7,@STATUS(R5) ;UNKNOWN ERROR -7 RETURN ; ; SUCCESSFUL READING OF COMMAND LINE ; SUCC1: MOV G.CMLD+GCMLB,@STATUS(R5) ;RETURN LENGTH OF COMMAND LINE MOV G.CMLD+GCMLB+2,R0 ;GET ADDRESS OF COMMAND BUFFER MOV BUFFER(R5),R2 ;GET ADDRESS OF USER BUFFER MOV G.CMLD+GCMLB,R1 ; PUT LENGTH OF COMMAND IN R1 BNE 35$ ;IF NE, SOMETHING INPUT MOV #BUFSIZ-2,R3 ;BLANK OUT ENTIRE BUFFER BR 40$ ; 35$: MOVB (R0)+,(R2)+ ;MOVE IT BYTE-BY-BYTE SOB R1,35$ ;LOOP UNTIL LAST BYTE MOVED MOV #BUFSIZ-2,R3 ;FIND OUT HOW MANY CHARS TO BLANK FILL SUB G.CMLD+GCMLB,R3 ; BLE 50$ ;IF LE NO CHARACTERS TO FILL ; 40$: MOVB #40,(R2)+ ;BLANK FILL SOB R3,40$ ; ; 50$: RETURN ;THEN RETURN TO USER PROGRAM ; .PAGE ; ;+ ++EXTSPC>> ;.NAME RESCML/GETMCL.MAC(USERLIB.OLB) (REL 1.0A) 12/03/80 ;.TITLE RESCML (CODE) ; ;.FUNCTION: RESETS THE INDIRECT COMMAND FILE LEVEL TO THE FIRST (TOP) LEVEL ; ;.ARGUMENTS: ; OUTPUT TYPE * * * * * * * DESCRIPTION * * * * * * * ; CODE I*2 STATUS RETURN CODE. SAME VALUES RETURNED AS IN GETMCL. ; ;.DESCRIPTION: ; THIS ROUTINE RESETS THE INDIRECT COMMAND FILE LEVEL TO THE FIRST ; (TOP) LEVEL. THE ONLY PARAMETER RETURNED IS THE STATUS CODE. ; ;.LANGUAGE: MACRO-11/RSX-11M V3.2 ; ;.AUDIT TRAIL: MODULE CREATION AND MODIFICATION DETAILS ; **DATE** ******NAME****** *DEPT* GROUP RELEASE ; 10/22/80 M.D.LAMPI C1-253 CAT REL 1.0 ; CREATED AND DEBUGGED ; 12/03/80 M.D.LAMPI C1-253 CAT REL 1.0A ; INTERNAL DOCUMENTATION BROUGHT UP TO STANDARDS ; ;- --EXTSPC>> RESMCL:: RCML$ #GCMLB ;RESET LEVEL TO 1 BCS ERR ;IF ERROR - BOMB OUT RETURN .PAGE ;+ ++EXTSPC>> ;.NAME CLOMCL/GETMCL.MAC(USERLIB.OLB) ;.TITLE CLOMCL (CODE) ; ;.FUNCTION: THIS ROUTINE CLOSES THE CURRENT INDIRECT COMMAND FILE ; ;.ARGUMENTS: ; OUTPUT TYPE * * * * * * * DESCRIPTION * * * * * * * ; CODE I*2 STATUS CODE RETURNED. SAME VALUES AS IN GETMCL. ; ;.DESCRIPTION: ; CLOSES THE CURRENT INDIRECT COMMAND FILE (IF OPEN). CODE IS THE ; ONLY PARAMETER PASSED BACK TO THE USER PROGRAM AND HAS THE SAME ; VALUES AS THE ABOVE ROUTINES ; ;.AUDIT TRAIL: MODULE CREATION AND MODIFICATION DETAILS ; **DATE** ******NAME****** *DEPT* GROUP RELEASE ; 10/22/80 M.D.LAMPI C1-253 CAT REL 1.0 ; CREATED AND DEBUGGED ; 12/03/80 M.D.LAMPI C1-253 CAT REL 1.0A ; INTERNAL DOCUMENTATION BROUGHT UP TO STANDARDS ; ;- --EXTSPC>> CLOMCL:: CCML$ #GCMLB ;CLOSE CURRENT INDIRECT COMMAND FILE BCS ERR ;BRANCH IF ERROR RETURN ;THEN RETURN ; .END