.TITLE SVCTR .ENABL LC ; ; CALL SVCTR( J ) -- This subroutine will set the various ; terminal writting modes. ; ; Tektronix 4014. ; ; J = 1, Solid ; 2, Dotted ; 3, Dot-Dashed ; 4, Short Dashed ; 5, Long Dashed ; ; Note: To get De-Focused modes, add 5 to J; to get Write-Thru, ; add 10 to J. ; ; Tektronix 4025. ; ; J = -1, Erase line. ; 0, Point at end of line. ; = 1, Solid. ; = 2, Dotted. ; = 3, Short dashed. ; = 4, Dot-Short Dashed. ; = 5, Short-Long Dashed. ; = 6, Three Dots-Long Dashed. ; = 7, Long Dashed. ; = 8, Three Short Dashes-Long Dashed. ; .PSECT SVCTR ; SVCTR:: CMP IDev,#2 ;IS PLOTTER A TEKTRONIX 4014? BNE A ;BRANCH IF NOT ; MOV @2(R5),VCTR ;GET VECTOR NUMBER BLE 1$ ;BRANCH IF TOO SMALL CMP VCTR,#15. ;TOO BIG BLE 2$ ;BRANCH IF NOT ; 1$: MOV #1,VCTR ;SET SOLID LINE 2$: ADD #VTBL,VCTR ;REFERENCE VECTOR TABLE MOVB @VCTR,VCTR+1 ;SET VECTOR CODE MOVB #33,VCTR ;SET ESCAPE ; MOV R5,-(SP) ;SAVE R5 MOV #LIST1,R5 ;SET ARGUMENT LIST JSR PC,TOUTPT ;SET NEW VECTOR TYPE MOV (SP)+,R5 ;RESTORE R5 ; A: CMP IDev,#4 ;IS PLOTTER A TEKTRONIX 4025? BNE B ;BRANCH IF NOT. ; MOV @2(R5),VCTR ;GET VECTOR NUMBER CMP VCTR,#-1 ;TOO SMALL? BLT 1$ ;BRANCH IF TRUE CMP VCTR,#8. ;TOO LARGE? BLE 2$ ;BRANCH IF NOT ; 1$: MOV #1,VCTR ;SET SOLID LINE 2$: ADD #VTBL4,VCTR ;REFERENCE VECTOR TABLE MOVB @VCTR,LINE+7 ;SET LINE ; MOV R5,-(SP) ;SAVE R5 MOV #LIST4,R5 ;SET ARGUMENT LIST JSR PC,TOUTPT ;SET NEW VECTOR TYPE MOV (SP)+,R5 ;RESTORE R5 ; B: RTS PC ;RETURN ; VCTR: .WORD LIST1: .WORD 2,VCTR,LIST1 LIST4: .WORD 2,LINE,EIGHT EIGHT: .WORD 8. VTBL: .ASCII <0><140>/abcdhijklpqrst/ .ASCII /E/ VTBL4: .ASCII /P12345678/ LINE: .ASCII <37>/!LIN /<15>