.TITLE PRSTRG - READ STRING .IDENT /830611/ .GLOBL $$$024 .GLOBL FB.EOL,FB.ST2 .GLOBL FS.TTY ;PARMS ; 1. POINTER TO FILE BLOCK ; 2. POINTER TO STRING ARRAY ; 3. MAXIMUM LENGTH ; REGISTER USAGE ; R0 - SCRATCH ; R1 - SCRATCH ; R2 - POINTER TO FILE ; R3 - POINTER TO STRING ; R4 - MAXIMUM LENGTH .PSECT $$$026:: MOV SP,R0 MOV (R0),R1 MOV R4,(R0)+ MOV (R0),R4 ;LENGTH OF ARRAY MOV R3,(R0)+ MOV (R0),R3 ;ARRAY POINTER MOV R2,(R0)+ MOV (R0),R2 ;FILE BLOCK POINTER MOV R1,(R0) ; DEC R4 ;ALLOW FOR TERMINATING NULL BEQ 3$ ; 1$: TSTB FB.EOL(R2) ;READ UNTIL END OF LINE BNE 2$ MOV R2,-(SP) MOV R3,-(SP) JSR PC,$$$024 INC R3 SOB R4,1$ ;OR ARRAY FULL TSTB FB.EOL(R2) BEQ 3$ ;EOLN DOES NOT COINCIDE ; 2$: BITB #FS.TTY,FB.ST2(R2) BEQ 3$ DEC R3 ;CLEAR LF IF TERMINAL ; 3$: CLRB (R3) ;TERMINATE WITH NULL ; MOV (SP)+,R4 MOV (SP)+,R3 MOV (SP)+,R2 RTS PC .END