.TITLE B4010 - START GRAPHICS ROUTINE .IDENT /21NOV7/ ;16:40, MK ; .ENTRY B4010 - START GRAPHICS ROUTINE ;+ ; B 4 0 1 0 ; ; PURPOSE: START GRAPHICS ROUTINE ; ; THIS ROUTINE MUST BE CALLED TO INITIALIZE THE ; TEKTRONIX GRAPHICS PACKAGE. IT ENABLES COMMAND INPUT ; AND ASSIGNS I/O TO TTN. IN ADDITION, IT ATTACHES THE ; TTN, BLOCKING OUT OTHER USERS. IF N=0, THIS ROUTINE ; WILL FIND UNIT # FOR LUN 3 AND ENABLE I/O TO THAT UNIT. ; IT WILL RETURN N=UNIT #. ; ; B4010 NEEDS TO BE CALLED ONLY IF COMMAND INPUT IS ; NEEDED OR THE USER WANTS THE TERMINAL ATTACHED. ; OTHERWISE, IT IS SUFFICIENT TO ASSIGN LUN 3 TO TI: AT ; TASK BUILD TIME. ; ; INTERFACE: CALLING SEQUENCE: (FORTRAN-CALLABLE SUBROUTINE) ; CALL B4010(N) ; ; INPUT: N=TELETYPE UNIT NUMBER ; ; METHOD: THE BASIC SOFTWARE FOR THE TEKTRONIX 4000 SERIES ; GRAPHICS TERMINAL ALLOWS FOR THE INPUT AND OUTPUT ; OF CHARACTERS AND PLOTTING OF POINTS AND VECTORS. ; CHARACTERS MAY BE INPUT IN TWO MODES, ; THE TEXT MODE AND THE COMMAND MODE. ; INPUT IN THE TEXT MODE IS ACCEPTED ONLY IF THE ; SUBROUTINE 'LININ' HAS BEEN CALLED. INPUT IN THE ; COMMAND MODE IS ACCEPTED AT ANY TIME, PROVIDED B4010 ; HAS BEEN CALLED, BUT IS NOT ECHOED IF PLOTTING IS IN ; PROGRESS. THE COMMAND MODE IS ENTERED BY TYPING ; CTRL/C, WHICH ECHOES AS BEL, '*C>' (OR JUST BEL). ; MCR MAY BE RAISED AT THIS TIME BY TYPING 'MCR'; ; ANY OTHER COMMAND TYPED IS ENTERED IN THE COMMAND ; BUFFER, AND THE COMMAND DONE FLAG IS SET (SEE ; SUBROUTINES CMDIN AND CMDLK). ; ; RUBOUT, CTRL/R, CTRL/U, AND READ-AHEAD ARE ALL ; FUNCTIONAL SINCE THIS PACKAGE OPERATES THROUGH THE ; MULTI-TELETYPE HANDLER. ; ; IF THE USER PROVIDES A SUBROUTINE NAMED 'CMDINT', ; IT WILL BE CALLED WHEN A COMMAND IS TYPED. CMDINT ; MAY THEN INTERPRET AND ACT ON THE COMMAND, OR IT MAY ; IGNORE THE COMMAND AND ALLOW THE MAIN ROUTINE TO ; ACT ON IT. ; ; INPUT FROM THE GRAPHIC CURSOR IS PROVIDED FOR ; THROUGH SUBROUTINE 'CURSIS'. ; ; FOR INFORMATION ON THE USAGE OF THE FOLLOWING ; SUBROUTINES WHICH FORM THE PACKAGE SEE THE COMMENTS ; WITH THE APPROPRIATE SUBROUTINE MODULE. ; ; CHO ENDPLT STROUT ; CHOUT ERASE TPLOT ; CMDENB F4010 WTFCMD ; CMDIN LABEL ; CMDINT LININ ; CMDLK LININN ; CURSIS LINOUT ; ; ; LOGICAL UNIT 3 (LUN 3) IS USED FOR TERMINAL INPUT AND ; OUTPUT, AND IS RESERVED FOR THIS PURPOSE BY THE GRAPHICS ; PACKAGE. IT SHOULD BE ASSIGNED TO TI: AT TASK BUILD ; TIME: ; ; ASG=TI:3 ; ; EVENT FLAGS 9., 10., 11., AND 12. ARE USED BY THESE ; SUBROUTINES. ; ; LANGUAGE: MACRO-11 ; ; RESTRICTIONS: THIS PACKAGE USES THE MRKT$ AND CMKT$ DIRECTIVES TO ; CONTROL A TIMEOUT. UNDER RSX-11M, A TASK USING THIS ; PACKAGE MAY NOT DO ANY OTHER TIMED PROCESS, UNLESS IT ; CALLS F4010 PRIOR TO STARTING THE PROCESS, AND DOES NOT ; USE THE PACKAGE AGAIN UNTIL THE PROCESS IS DONE. UNDER ; RSX-11D, THE TASK MAY DO OTHER TIMED PROCESSES SO LONG ; AS IT ALWAYS DOES A SELECTIVE CMKT$ (IF IT USES CMKT$). ;- ; REVISIONS: ; 31-MAY-77 SJS UPDATED TO CONFORM TO STANDARDS. ; 14-JUL-77 NCS EXPAND DOCUMENTATION ; 14-NOV-77 MK CHANGES TO USE UNSOLICITED TERMINAL INPUT FOR ; COMMAND MODE ; 18-NOV-77 MK ADD NOTE ON TIMED PROCESS RESTRICTION ; 21-NOV-77 MK ADD CODE TO KEEP TRACK OF TERMINAL ATTACH ; .MCALL PUSH,POP,ALUN$S,DIR$,GLUN$,QIOW$ .MCALL SETF$S,CLEF$S ; B4010:: PUSH MOV @2(R5),R1 ;GET N IN R1 BPL 1$ NEG R1 ;FORCE ABSOLUTE VALUE 1$: BNE 2$ ;IS IT ZERO? DIR$ #GETLUN ;YES - FIND THE LUN MOVB UNIT,R1 ;GET IT IN R1 MOV R1,@2(R5) ;RETURN IT TO THE CALLER (HOPE HE ;USED A VARIABLE, NOT A CONST) 2$: ALUN$S #LUN,#"TT,R1 ;ASSIGN LUN TO TTN DIR$ #CM.ATC ;SET UP AST TO ;UNSOLICITED INPUT ROUTINE MOV #1,CM.ATF ;SET ATTACH FLAG SETF$S #INFL SETF$S #OUTFL ;SET OUTPUT FLAG (NONE IN PROGRESS) CLEF$S #CMDFL ;NO CMD WAITING POP RTS PC ; ; GETLUN: GLUN$ LUN,LUNBUF ;GLUN$ LUNBUF: .WORD 0 UNIT: .BYTE 0,0 .WORD 0,0,0,0 .END