.TITLE CMDIN - COMMAND INPUT ROUTINE .IDENT /01JUN7/ ;15:23:00, SJS ; .ENTRY CMDIN - COMMAND INPUT ROUTINE ;+ ; C M D I N ; ; PURPOSE: COMMAND INPUT ROUTINE ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL CMDIN(LINE,N,ICMD) ; ; INPUT: N= NUMBER OF CHARACTERS TO RECEIVE. ; ICMD= LOGICAL VARIABLE TO RECEIVE COMMAND STATUS. ; ; METHOD: INPUTS A PREVIOUSLY TYPED COMMAND TO ARRAY 'LINE'. ; N CHARACTERS ARE INPUT, WITH BLANK PADDING SUPPLIED ; IF NECESSARY. THE VARIABLE 'ICMD' IS USED TO IN- ; DICATE WHETHER THERE WAS A COMMAND WAITING WHEN CMDIN ; WAS CALLED. IF THERE WAS, ICMD IS SET TO .TRUE. ; (OR -1 IF CONSIDERED AS AN INTEGER). IF THERE WAS ; NOT, ICMD IS SET TO .FALSE. (I.E. 0). IN THE LATTER ; CASE, 'LINE' WILL BE SET TO ALL BLANKS. CMDIN NEVER ; WAITS FOR A COMMAND TO BE TYPED. IF A WAIT IS DESIRED ; THE FOLLOWING CODE MAY BE USED: ; CALL WTFCMD ; CALL CMDIN(LINE,N,ICMD) ; THE FOLLOWING CODE WOULD PRODUCE A WAIT, BUT IS POOR ; RSX CODING BECAUSE TASKS OF LOWER PRIORITY WOULD NOT ; HAVE A CHANCE TO RUN: ; ; 100 CALL CMDIN(LINE,N,ICMD) ; IF(.NOT.ICMD) GO TO 100 ; ; LANGUAGE: MACRO-11 ;- ; REVISIONS: ; 01-JUN-77 SJS UPDATED TO CONFORM TO STANDARDS. ; .MCALL PUSH,POP,CLEF$S ; CMDIN:: PUSH MOVB CM.CDN,R0 ;COMMAND DONE FLAG CLRB CM.CDN ;AND CLEAR CLEF$S #CMDFL ; CMDIN1::MOV R0,@6(R5) ;SET ICMD BEQ 1$ MOV CM.CHA,R3 ;# OF CHAR'S IN COMMAND STRING MOV #CM.BUF,R0 ;LOC OF CMD BUFFER JMP LININ1 1$: CLR R3 ;SIMULATE EMPTY BUFFER JMP LININ1 .END