.TITLE WRITE ; ; FORTRAN CALLABLE ROUTINE TO POSITN THE CURSOR ON A CRT TERMINAL AND ; WRITE A STRING OF TEXT AT THE POINT. AN OPTIONAL ENTRY POINT, WRITEL, ; WILL CLEAR THE REMAINDER OF THE LINE. THIS CODE IS SPECIFICALLY FOR A ; BEEHIVE 100 TERMINAL AND MAY HAVE TO BE MODIFIED WHERE COMMENTED FOR ; OTHER TERMINALS. ; ; CALLING SEQUENCE ; ; CALL WRITE(LINE,ICOL,STRING) ; CALL WRITEL(LINE,ICOL,STRING) ; ; LINE - LINE TO POSITION CURSOR ON ; ICOL - COLUMN TO POSITION CURSOR ON ; STRING - STRING OF TEXT TO OUTPUT ; ; WRITTEN MARCH 1979 R B FRENCH THE BOEING COMPANY ; .MCALL DIR$,QIOW$ ; WRITEL::INC FLAG ;SET LINE CLEAR FLAG WRITE:: MOV @2(R5),R0 ;GET LINE POSITION ADD OFFSET,R0 ;ADD OFFSET MOVB R0,LINE ;AND PUT IN BUFFER MOV @4(R5),R0 ;AND COLUMN POSITION ADD OFFSET,R0 ;ADD OFFSET MOVB R0,COL ;AND PUT IN BUFFER MOV 6(R5),R0 ;GET STRING ADDRESS MOV #BUFDAT,R1 ;R1 POINTS TO DATA BUFFER CMPB #4,(R5) ;CHARACTER COUNT INPUT? BNE 20$ ;BRANCH IF NOT MOV @10(R5),R2 ;GET THE COUNT 10$: MOVB (R0)+,(R1)+ ;MOVE THE STRING SOB R2,10$ INC R0 ;STEP POINTER BR 30$ 20$: MOVB (R0)+,(R1)+ ;MOVE THE STRING BNE 20$ ;MOVE 'TIL ZERO BYTE DEC R1 ;THEN BACK UP ONE 30$: MOV R1,R0 ;CALCULATE NUMBER OF BYTES SUB #BUF,R0 ;IN R0 TST FLAG ;CHECK LINE CLEAR FLAG BEQ 40$ ;BRANCH IF NOT SET MOVB CLEAR,(R1)+ ;ADD LINE CLEAR SEQUENCE TO BUFFER MOVB CLEAR+1,(R1) ADD #2,R0 ;STEP COUNTER BY TWO 40$: MOV R0,QIOW+Q.IOPL+2 ;PUT COUNT IN DPB DIR$ #QIOW ;AND WRITE IT CLR FLAG ;CLEAR THE FLAG RTS PC ;AND LEAVE ; FLAG: .WORD 0 ;LINE CLEAR FLAG QIOW: QIOW$ IO.WLB!TF.WAL,5,1,,,, ; ;************************************************************************ ; * ; THE FOLLOWING CODE IS SPECIFICALLY FOR A BEEHIVE 100 TERMINAL AND * ; MAY HAVE TO BE MODIFIED FOR OTHER TERMINALS. * ; * BUF: .BYTE 33,106 ;ESCAPE SEQUENCE FOR CURSOR POSITION * LINE: .BLKB 1 ;LINE POSITION * COL: .BLKB 1 ;COLUMN POSITION * BUFDAT: .BLKB 80. ;AND THE ACTUAL STRING * CLEAR: .BYTE 33,113 ;ESCAPE SEQ FOR CLEAR TO EOL * OFFSET: .WORD 37 ;OFFSET TO ADD TO LINE/COLUMN NUMBER TO * ;FORM OCTAL CODE FOR CURSOR POSITIONING * ; * ;************************************************************************ ; .END