.TITLE GET25 ; Gets line of text from the H19 terminal 25th line. ; A prompt line is displayed. ; Calling sequence: ; CALL GET25(ISTR,IPRMPT) ; ISTR - STRING ARRAY FOR THE INPUT CHARACTERS ; THE ARRAY IS TERMINATED WITH A ZERO BYTE. ; IPRMPT - OPTIONAL STRING ARRAY CONTAINING THE PROMPT STRING ; TERMINATED WITH A ZERO OR 200 BYTE. .MCALL .REGDEF, .TTYOUT, .TTYIN .REGDEF .GLOBL GET25, HSM, HRM, HDCA, HERV, HXRV, HEL GET25: MOV R5,-(SP) ;SAVE R5 FOR LATER MOV #L1,R5 ;LIST FOR SET MODE JSR PC,HSM ;ENABLE 25TH LINE MOV #L2,R5 ;LIST FOR CURSOR ADDRESSING JSR PC,HDCA ;MOVE CURSOR TO START OF 25TH LINE MOV (SP)+,R5 ;RESTORE R5 MOV (R5)+,R2 MOV (R5)+,R1 ;ISTR LOCATION MOV #80.,R4 ;CHARACTER COUNT CMP R2,#2 ;IS IPRMPT SPECIFIED? BLT 2$ ;NO, JUST GET INPUT JSR PC,HEL ;CLEAR 25TH LINE MOV (R5)+,R2 ;IPRMPT LOCATION 1$: MOVB (R2)+,R0 ;GET A CHARACTER FROM IPRMPT BEQ 2$ ;END ON NULL CMP R0,#200 ;ALSO ON 200 BEQ 2$ .TTYOUT ;TYPE THE CHARACTER BR 1$ ;BACK FOR MORE 2$: .TTYIN ;GET A CHARACTER CMP R0,#15 ;CARRIAGE RETURN? BEQ 2$ ;YES, IGNORE IT CMP R0,#12 ;LINE FEED? BEQ 3$ ;YES, END OF LINE DEC R4 ;CHARACTER COUNT BEQ 3$ ;END THE LINE MOVB R0,(R1)+ ;STORE THE CHARACTER BR 2$ 3$: CLRB (R1)+ ;ADD ZERO BYTE RTS PC L1: .WORD 1,M1 M1: .WORD 1 L2: .WORD 2,M2,M3 M2: .WORD 25. M3: .WORD 1 .END