.TITLE LININ - TEXT LINE INPUT .IDENT /21NOV7/ ;17:05, MK ; .ENTRY LININ - TEXT LINE INPUT ;+ ; L I N I N ; ; PURPOSE: TEXT LINE INPUT ROUTINE ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL LININ(LINE,N) ; ; INPUT: LINE=ARRAY TO RECEIVE INPUT STRING ; N =NUMBER OF CHARACTERS TO RECEIVE ; ; METHOD: INPUTS N CHARACTERS OF TEXT TO ARRAY 'LINE'. ; IF FEWER THAN N CHARACTERS ARE TYPED, BLANKS ; (40 CODES) ARE USED TO PAD THE LINE. IF ; MORE THAN N CHARACTERS ARE TYPED, EXTRA CHAR- ; ACTERS ARE LOST. THE LINE IS TERMINATED BY , ; WHICH IS NOT TRANSMITTED TO THE ARRAY. TWO CHAR- ; ACTERS PER WORD ARE INPUT. ; ; LININ ENTERS THE ALPHANUMERIC MODE,OUTPUTS THE ; PROMPT SEQUENCE , , '*>', AND WAITS ; FOR ENTIRE LINE TO BE TYPED. ; ; LANGUAGE: MACRO-11 ;- ; REVISIONS: ; 30-SEP-75 MK MODIFIED TO INTERFACE WITH NEW CHO ; 02-JUN-77 JB UPDATED TO CONFORM TO STANDARDS ; 14-JUL-77 LV UPDATED TO CONFORM TO STANDARDS ; 15-NOV-77 MK CHANGE PROMPT FROM '>' TO '*>' ; DETACH TERMINAL BEFORE EXIT ; 21-NOV-77 MK RESET ATTACH FLAG WHEN DETACHING TERMINAL ; .MCALL PUSH,POP,IHAR$S,WTSE$S,EXIT$S,QIO$,DIR$ ; PSTR: .BYTE US,CR,LF,'*,'> PSTRL=.-PSTR .EVEN ; LININ:: PUSH IHAR$S ;INHIBIT AST'S MOV CH.IN,R0 ;INPUT ADDRESS POINTER MOV #PSTR,R1 ;POINT TO PROMPT STRING .REPT PSTRL MOVB (R1)+,(R0)+ ;SET UP TO WRITE PROMPT .ENDR LININ2::JSR PC,CHO JSR PC,WTFOUT ;WAIT FOR OUTPUT TO FINISH CLR CH.MOD DIR$ #IN.DPB ;REQ INPUT WTSE$S #INFL ;WAIT FOR INPUT CMPB #IE.EOF,IN.ST BEQ EXIT ;EXIT ON CNTRL Z MOV #IN.BUF,R0 ;START OF BUFFER MOV IN.CHA,R3 ;NUMBER OF CHAR'S IN ; LININ1::MOV 2(R5),R1 ;GET LOC OF LINE MOV @4(R5),R2 ;GET VALUE N 1$: DEC R3 BLT 2$ ;PAD LINE IF BUFFER DONE MOVB (R0)+,(R1)+ ;STORE IN LINE BR 3$ 2$: MOVB #40,(R1)+ ;PAD LINE WITH BLANKS 3$: DEC R2 BGT 1$ ;LOOP BACK IF MORE POP RTS PC ;RETURN ; EXIT: DIR$ #CM.DET ;DETACH TERMINAL CLR CM.ATF ;RESET ATTACH FLAG EXIT$S ;EXIT$S ; IN.DPB:: QIO$ IO.RVB,LUN,INFL,,IN.ST,, ; QIO$ - LINE INPUT IN.ST:: .WORD 1 IN.CHA::.WORD 0 IN.BUF::.BLKB BUFL .END