.PAPER SIZE 60,80 .LEFT MARGIN 8 .RIGHT MARGIN 120 .FLAGS CAPITALIZE .FIGURE 10 .SPACING 1 .CENTER ^^SFGL70\\ - ^SMALL ^FAST ^GRAPHICS ^LIBRARY .SKIP 1 .CENTER ^LAST ^REVISION: ^DECEMBER 4, 1981 .CHAPTER ^^INTRODUCTION\\ .TITLE ^^########INTRODUCTION\\ .LEFT MARGIN 8 .RIGHT MARGIN 120 .PARAGRAPH ^^SFGL70\\ IS A ^^UTRC\\ DEVELOPED SOFTWARE LIBRARY. ^THIS LIBRARY IS INTENDED TO PROVIDE GRAPHICS CAPABILITY FOR THE ^TEKTRONIX 4010, 4006, AND 4014 TERMINALS. ^THE LIBRARY WAS DESIGNED TO BE SMALL (UNDER 2^K WORDS), WHILE PROVIDING THE USER WITH ESSENTIAL GRAPHIC CAPABILITIES. ^THOSE USER'S FAMILIAR WITH THE ^^PDP\\-6 MEMOSCOPE GRAPHICS LIBRARY, WILL FIND THAT THE ^^SFGL70\\ HAS SIMILIAR BUT GREATER CAPABILITIES. .PARAGRAPH ^BECAUSE THE GRAPHICS PACKAGE IS A LIBRARY, ONLY THOSE ROUTINES REFERENCED BY THE USERS PROGRAM WILL BE LINKED AS A PART OF THE EXECUTABLE TASK IMAGE. .PARAGRAPH ^SINCE THE LIBRARY HAS BEEN CREATED AT ^^UTRC\\, THE SYSTEMS PROGRAMMING GROUP WELCOMES YOUR COMMENTS REGARDING IT'S PERFORMANCE. ^ANY SUGGESTIONS AS TO HOW THE ^^SFGL70\\ CAN BE IMPROVED ARE ALWAYS WELCOME. ^IF THE CONTENT OF ANY PORTION OF THIS DOCUMENTATION PACKAGE IS NOT CLEAR, PLEASE INFORM US. ^YOU CAN CALL US AT: EXTENSION 7241. .CHAPTER ^^PROGRAMMING CONSIDERATIONS\\ .LEFT MARGIN 8 .RIGHT MARGIN 120 .PARAGRAPH ^THE ^TEKTRONIX TERMINALS HAVE AN ABSOLUTE COORDINATE SYSTEM RANGING FROM 0-1023 ON THE ^X AXIS AND FROM 0-780 ON THE ^Y AXIS. ^HOWEVER, THE COORDINATE SYSTEM(WINDOW) ESTABLISHED BY ^^GRID\\ OR ^^WINDOW\\ HAS A RANGE FROM 0-920 ON THE ^X AXIS AND FROM 0-735 ON THE ^Y AXIS. ^THE WINDOW IS SHIFTED RIGHT 103 COORDINATES AND UP 45 COORDINATES TO ALLOW LABELS BELOW AND TO THE LEFT OF THE WINDOW. .PARAGRAPH ^ASCII TEXT MAY BE DISPLAYED ANYWHERE WITHIN THE ABSOLUTE COORDINATE SYSTEM. ^HOWEVER, IF A TEXT STRING IS ATTEMPTED TO BE DISPLAYED OUTSIDE THE RANGE OF THE ABSOLUTE COORDINATE SYSTEM, THE ^TEKTRONIX TERMIAL HARDWARE WILL INSERT A CARRIAGE RETURN AND LINE FEED INTO THE TEXT STRING. ^ASCII CHARACTERS ARE 14 COORDINATES IN WIDTH AND 22 COORDINATES IN HEIGHT. ^THE COORDINATES REFERENCE THE BOTTOM LEFT CORNER OF EACH CHARACTER. .PARAGRAPH ^THE OPERATING MODE OF THE ^TEKTRONIX TERMINALS MAY BE EITHER ^ALPHA OR ^GRAPHIC. ^THE ^^SFGL70\\ ROUTINES WILL PUT THE TERMINAL IN THE CORRECT MODE BEFORE THEY ATTEMPT TO DO TEXTURAL OR GRAPHIC OUTPUT. ^HOWEVER, YOU MUST PUT THE TERMINAL IN ^ALPHA MODE IF YOU WISH TO DO ^FORTRAN OUTPUT AFTER HAVING JUST PERFORMED GRAPHIC OUTPUT. .PARAGRAPH ^WE HAVE DESIGNED THE PACKAGE FOR FASTER PLOT EXECUTION BY REDUCING SYSTEM ^I/^O OVERHEAD. ^THIS IS ACCOMPLISHED BY BUFFERING ALL GRAPHIC OUTPUT. ^HOWEVER, THE GRAPHIC OUTPUT BUFFER MAY BE LEFT PARTIALLY FULL BY ANY ROUTINE WHICH RETURNS TO THE CALLING PROGRAM WHILE STILL IN ^GRAPHIC MODE. ^TO ENSURE THAT ALL GRAPHIC OUTPUT IS PHYSICALLY SENT TO THE TERMINAL, THE USER MUST CALL ANY ROUTINE WHICH RETURNS THE TERMINAL TO ^ALPHA MODE. .PARAGRAPH ^THE ^FORTRAN PROGRAM MUST NOT USE A "^^STOP\\" STATEMENT TO EXIT. ^TO ENSURE THAT ALL BUFFERED GRAPHIC OUTPUT IS SENT TO THE TERMINAL CORRECTLY, THE PROGRAM SHOULD EXIT WITH A "^^CALL EXIT\\" STATEMENT. .PARAGRAPH ^ANY USER LINKING ASSEMBLY LANGUAGE ROUTINES TO THEIR PROGRAM SHOULD NOTE THAT THE ^^SFGL70\\ ROUTINES USE LOCAL EVENT FLAGS 10 AND 11. .PARAGRAPH ^TERMINALS OPERATING WITH THE ^^SFGL70\\ PACKAGE MUST RUN AT 9600 BAUD OR SLOWER. ^THIS SPEED DEPENDENCY IS DUE TO THE DELAYS WHICH MUST BE GENERATED AS A RESULT OF TERMINAL CONTROL FUNCTIONS SUCH AS HARDCOPY AND ERASE. .PARAGRAPH ^IF YOU ARE USING THE ^^SFGL70\\ AT A ^TEKTRONIX 4014, YOU SHOULD SET THE CHARACTER SIZE TO 74 CHARACTERS PER LINE AND 35 LINES PER PAGE. .PARAGRAPH .LEFT MARGIN 8 .RIGHT MARGIN 120 .CHAPTER ^^AVAILABLE SUBROUTINES\\ .INDEX ^^GRID\\ ^^GRID\\ - .SKIP ^THIS ROUTINE ESTABLISHES THE LIMITS OF THE USER DEFINED COORDINATE SYSTEM. ^THE RANGE OF THE ^X AND ^Y AXIS MAY BE BETWEEN + AND - 1.7 * 10**38. ^THIS ROUTINE ALSO DISPLAYS AN ^X AND ^Y GRID WITH LABELS. ^IT ESTABLISHES THE SCREEN'S VIRTUAL WINDOW. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL GRID(LABELX,XMAX,XMIN,YGRDLO,LABELY,YMAX,YMIN,XGRDLO,MMFLG)\\ .SKIP ^WHERE: .SKIP ^^LABELX\\ - IS THE ASCII LABEL DISPLAYED BELOW THE ^X GRID. .SKIP ^^XMAX\\ - IS THE FLOATING POINT MAXIMUM VALUE OF THE ^X AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE LESS THAN ^^XMIN\\. .SKIP ^^XMIN\\ - IS THE FLOATING POINT MINIMUM VALUE OF THE ^X AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE GREATER THAN ^^XMAX\\. .SKIP ^^XGRDLO\\ - IS THE FLOATING POINT ^Y COORDINATE POSITION OF THE ^X GRID. ^IF IT IS OUT OF RANGE, THE ^X GRID WILL APPEAR AT ^^YMAX\\ OR ^^YMIN\\ DEPENDING ON WHICH LIMIT IT IS CLOSER TO. .SKIP ^^LABELY\\ - IS THE ASCII LABEL DISPLAYED TO THE LEFT OF THE ^Y GRID. .SKIP ^^YMAX\\ - IS THE FLOATING POINT MAYIMUM VALUE OF THE ^Y AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE LESS THAN ^^YMIN\\. .SKIP ^^YMIN\\ - IS THE FLOATING POINT MINIMUM VALUE OF THE ^Y AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE GREATER THAN ^^YMAX\\. .SKIP ^^YGRDLO\\ - IS THE FLOATING POINT ^X COORDINATE POSITION OF THE ^Y GRID. ^IF IT IS OUT OF RANGE, THE ^Y GRID WILL APPEAR AT ^^XMAX\\ OR ^^XMIN\\ DEPENDING ON WHICH LIMIT IT IS CLOSER TO. .SKIP ^^MMFLG\\ - IS A FLAG TO SPECIFY WHETHER THE MINIMUM AND MAXIMUM VALUES OF EACH GRID SHOULD BE DISPLAYED. A MMFLG INTEGER VALUE OF -1 WILL CAUSE THE GRID'S VALUE NOT TO BE DISPLAYED. .SKIP .CENTER ******************** .TEST PAGE 23 .INDEX ^^WINDOW\\ ^^WINDOW\\ - .SKIP ^THIS ROUTINE ESTABLISHES THE LIMITS OF THE USER DEFINED COORDINATE SYSTEM. ^THE RANGE OF THE ^X AND ^Y AXIS MAY BE BETWEEN + AND - 1.7 * 10**38. ^THIS ROUTINE ALSO DISPLAYS AN ^X AND ^Y GRID WITH LABELS. ^IT ESTABLISHES THE SCREEN'S VIRTUAL WINDOW. ^IT CALLS ^^GRID\\ TO PERFORM THOSE FUNCTIONS. ^HOWEVER, UNLIKE ^^GRID\\, ^^WINDOW\\ WILL NOT PERFORM CORRECTLY IF A GRID MINIMUM IS GREATER THAN THE CORRESPONDING GRID MAXIMUM. IN ADDITION, IT COMPUTES AN APPROPRIATE NUMBER OF TICS TO DISPLAY ON THE ^X AND ^Y GRID AND THE DISTANCE BETWEEN THOSE TICS. ^THIS ALGORITHM TO AUTOMATICALLY DISPLAY TIC MARKS WITH LABELS IS A COMPROMISE BETWEEN MAKING YOUR PROGRAMMING EASIER AND KEEPING THE LIBRARY SMALL. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL WINDOW(LABELX,XMAX,XMIN,YGRDLO,LABELY,YMAX,YMIN,XGRDLO,MMFLG)\\ .SKIP ^WHERE: .SKIP ^^LABELX\\ - IS THE ASCII LABEL DISPLAYED BELOW THE ^X GRID. .SKIP ^^XMAX\\ - IS THE FLOATING POINT MAXIMUM VALUE OF THE ^X AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE LESS THAN ^^XMIN\\. .SKIP ^^XMIN\\ - IS THE FLOATING POINT MINIMUM VALUE OF THE ^X AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE GREATER THAN ^^XMAX\\. .SKIP ^^XGRDLO\\ - IS THE FLOATING POINT ^Y COORDINATE POSITION OF THE ^X GRID. ^IF IT IS OUT OF RANGE, THE ^X GRID WILL APPEAR AT ^^YMAX\\ OR ^^YMIN\\ DEPENDING ON WHICH LIMIT IT IS CLOSER TO. .SKIP ^^LABELY\\ - IS THE ASCII LABEL DISPLAYED TO THE LEFT OF THE ^Y GRID. .SKIP ^^YMAX\\ - IS THE FLOATING POINT MAYIMUM VALUE OF THE ^Y AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE LESS THAN ^^YMIN\\. .SKIP ^^YMIN\\ - IS THE FLOATING POINT MINIMUM VALUE OF THE ^Y AXIS. ^IT MAY BE POSITIVE, NEGATIVE, OR ZERO. ^IT MAY BE GREATER THAN ^^YMAX\\. .SKIP ^^YGRDLO\\ - IS THE FLOATING POINT ^X COORDINATE POSITION OF THE ^Y GRID. ^IF IT IS OUT OF RANGE, THE ^Y GRID WILL APPEAR AT ^^XMAX\\ OR ^^XMIN\\ DEPENDING ON WHICH LIMIT IT IS CLOSER TO. .SKIP ^^MMFLG\\ - IS A FLAG TO SPECIFY WHETHER THE MINIMUM AND MAXIMUM VALUES OF EACH GRID SHOULD BE DISPLAYED. A MMFLG INTEGER VALUE OF -1 WILL CAUSE THE GRID'S VALUE NOT TO BE DISPLAYED. .SKIP .CENTER ******************** .TEST PAGE 25 .INDEX ^^PLOT\\ ^^PLOT\\ - .SKIP ^ROUTINE TO PLOT A CONTINUOUS OR DASHED CURVE(LINE), WITHIN THE VIRTUAL WINDOW ESTABLISHED BY ^^GRID\\. .SKIP ^RETURNS IN ^GRAPHIC ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL PLOT(NUMPTS,XARRAY,YARRAY)\\ .SKIP ^WHERE: .SKIP ^^NUMPTS\\ - IS THE INTEGER NUMBER OF POINTS TO BE CONNECTED TO PLOT THE CURVE(LINE). ^IF LESS THAN ZERO EVERY OTHER POINT IS CONNECTED. .SKIP ^^XARRAY\\ - ARE THE VIRTUAL FLOATING POINT ^X COORDINATES. .SKIP ^^YARRAY\\ - ARE THE VIRTUAL FLOATING POINT ^Y COORDINATES. .SKIP .CENTER ******************** .SKIP .INDEX ^^PLOTC\\ .TEST PAGE 11 ^^PLOTC\\ - .SKIP 2 ^THE SAME AS PLOT EXCEPT THE FIRST POINT OF THE CURVE(LINE) IS CONNECTED TO THE LAST POINT OF THE LAST CALL TO ^^PLOT\\ OR ^^PLOTC\\. .SKIP ^RETURNS IN ^GRAPHIC ^MODE .SKIP .CENTER ******************** .TEST PAGE 23 .INDEX ^^POINT\\ ^^POINT\\ - .SKIP ^ROUTINE TO DISPLAY A POINT(S) WITHIN THE VIRTUAL WINDOW ESTABLISHED BY ^^GRID\\. .SKIP ^RETURNS IN ^GRAPHIC ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL POINT(NUMPTS,XARRAY,YARRAY)\\ .SKIP ^WHERE: .SKIP ^^NUMPTS\\ - IS THE INTEGER NUMBER OF POINTS TO BE DISPLAYED .SKIP ^^XARRAY\\ - ARE THE VIRTUAL FLOATING POINT ^X COORDINATES. .SKIP ^^YARRAY\\ - ARE THE VIRTUAL FLOATING POINT ^Y COORDINATES. .SKIP .CENTER ******************** .TEST PAGE 23 .INDEX ^^POINTI\\ ^^POINTI\\ - .SKIP ^ROUTINE TO DISPLAY A POINT(S) WITHIN THE ABSOLUTE WINDOW OF THE DISPLAY. .SKIP ^RETURNS IN ^GRAPHIC ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL POINTI(NUMPTS,IXARRY,IYARRY)\\ .SKIP ^WHERE: .SKIP ^^NUMPTS\\ - IS THE INTEGER NUMBER OF POINTS TO BE DISPLAYED .SKIP ^^XARRAY\\ - ARE THE ABSOLUTE INTEGER ^X COORDINATES. .SKIP ^^YARRAY\\ - ARE THE ABSOLUTE INTEGER ^Y COORDINATES. .SKIP .CENTER ******************** .INDEX ^^TICWIN\\ .TEST PAGE 21 ^^TICWIN\\ - .SKIP 2 ^ROUTINE TO DISPLAY TIC MARKS(CROSSES) WITHIN THE COMPLETE VIRTUAL WINDOW ESTABLISHED BY ^^GRID\\. ^THE SPACING BETWEEN TICS IS IN VIRTUAL COORDINATES. .SKIP ^RETURNS IN ^GRAPHIC ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL TICWIN(XSPACE,YSPACE)\\ .SKIP ^WHERE: .SKIP ^^XSPACE\\ - IS THE VIRTUAL FLOATING POINT NUMBER OF X COORDINATES BETWEEN TICS. .SKIP ^^YSPACE\\ - IS THE VIRTUAL FLOATING POINT NUMBER OF Y COORDINATES BETWEEN TICS. .SKIP .CENTER ******************** .INDEX ^^TICGRD\\ .TEST PAGE 21 ^^TICGRD\\ - .SKIP 2 ^ROUTINE TO DISPLAY TIC MARKS ALONG THE X AND Y GRID. ^THE SPACING BETWEEN TICS IS IN VIRTUAL COORDINATES, AS ESTABLISHED BY ^^GRID\\. .SKIP ^RETURNS IN ^GRAPHIC ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL TICGRD(XSPACE,YSPACE)\\ .SKIP ^WHERE: .SKIP ^^XSPACE\\ - IS THE VIRTUAL FLOATING POINT NUMBER OF X COORDINATES BETWEEN TICS. .SKIP ^^YSPACE\\ - IS THE VIRTUAL FLOATING POINT NUMBER OF Y COORDINATES BETWEEN TICS. .SKIP .CENTER ******************** .SKIP .INDEX ^^HTEXT\\ .TEST PAGE 23 ^^HTEXT\\ - .SKIP 2 ^ROUTINE TO DISPLAY TEXT HORIZONTALLY, USING THE COORDINATE SYSTEM (WINDOW) ESTABLISHED BY ^^GRID\\. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL HTEXT(TEXT,XCOORD,YCOORD)\\ .SKIP ^WHERE: .SKIP ^^TEXT\\ - IS THE ASCII STRING TO BE DISPLAYED .SKIP ^^XCOORD\\ - IS THE VIRTUAL FLOATING POINT ^X COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP ^^YCOORD\\ - IS THE VIRTUAL FLOATING POINT ^Y COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP .CENTER ******************* .TEST PAGE 25 .INDEX ^^VTEXT\\ ^^VTEXT\\ - .SKIP 2 ^ROUTINE TO DISPLAY TEXT VERTICALLY USING THE COORDINATE SYSTEM (WINDOW) ESTABLISHED BY THE CALL TO ^^GRID\\. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL VTEXT(TEXT,XCOORD,YCOORD)\\ .SKIP ^WHERE: .SKIP ^^TEXT\\ - IS THE ASCII TEXT TO BE DISPLAYED. .SKIP ^^XCOORD\\ - IS THE VIRTUAL FLOATING POINT ^X COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP ^^YCOORD\\ - IS THE VIRTUAL FLOATING POINT ^Y COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP .CENTER ******************** .SKIP .INDEX ^^FLTXT\\ .TEST PAGE 25 ^^FLTXT\\ - .SKIP 2 ^ROUTINE TO DISPLAY A FLOATING POINT NUMBER (IN ^G17.6 ^FORMAT) WITHIN THE COORDINATE SYSTEM(WINDOW) ESTABLISHED BY THE CALL TO ^^GRID\\. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL FLTXT(FLTNUM,XCOORD,YCOORD)\\ .SKIP ^WHERE: .SKIP ^^FLTNUM\\ - IS THE FLOATING POINT NUMBER TO BE DISPLATED. .SKIP ^^XCOORD\\ - IS THE VIRTUAL FLOATING POINT ^X COORDINATE POSITION TO BEGIN THE DISPLAY. .SKIP ^^YCOORD\\ - IS THE VIRTUAL FLOATING POINT ^Y COORDINATE POSITION TO BEGIN THE DISPLAY. .SKIP .CENTER ******************** .INDEX ^^PLTSYM\\ .TEST PAGE 25 ^^PLTSYM\\ - .SKIP 2 ^ROUTINE TO DISPLAY ANY KEYBOARD CHARACTER(SYMBOL) IN THE VIRTUAL WINDOW ESTABLISHED BR ^^GRID\\. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL PLTSYM(NUMSYM,XARRAY,YARRAY,SYMBOL)\\ .SKIP ^WHERE: .SKIP ^^NUMSYM\\ - IS THE NUMBER OF TIMES TO DISPLAY THE SYMBOL .SKIP ^^XARRAY\\ - IS THE ARRAY(VARIABLE) CONTAINING THE VIRTUAL FLOATING POINT ^X COORDINATE POSITION(S) TO DISPLAY THE SYMBOL .SKIP ^^YARRAY\\ - IS THE ARRAY(VARIABLE) CONTAINING THE VIRTUAL FLOATING POINT ^Y COORDINATE POSITION(S) TO DISPLAY THE SYMBOL .SKIP ^^SYMBOL\\ - IS THE ASCII SYMBOL(CHARACTER) TO BE DISPLAYED .SKIP .CENTER ******************** .INDEX ^^HTEXTI\\ .TEST PAGE 25 ^^HTEXTI\\ - .SKIP 2 ^ROUTINE TO DISPLAY TEXT HORIZONTALLY, USING THE DISPLAY'S ABSOLUTE INTEGER COORDINATE SYSTEM. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL HTEXTI(TEXT,IXCORD,IYCORD)\\ .SKIP ^WHERE: .SKIP ^^TEXT\\ - IS THE ASCII STRING TO BE DISPLAYED .SKIP ^^IXCORD\\ - IS THE ABSOLUTE INTEGER ^X COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP ^^IYCORD\\ - IS THE ABSOLUTE INTEGER ^Y COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP .CENTER ******************* .SKIP .INDEX ^^VTEXTI\\ .TEST PAGE 24 ^^VTEXTI\\ - .SKIP 2 ^ROUTINE TO DISPLAY TEXT VERTICALLY USING ABSOLUTE INTEGER COORDINATE SYSTEM. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL VTEXTI(TEXT,IXCORD,IYCORD)\\ .SKIP ^WHERE: .SKIP ^^TEXT\\ - IS THE ASCII TEXT TO BE DISPLAYED. .SKIP ^^IXCORD\\ - IS THE ABSOLUTE INTEGER ^X COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP ^^IYCORD\\ - IS THE ABSOLUTE INTEGER ^Y COORDINATE POSITION TO BEGIN THE TEXT DISPLAY. .SKIP .CENTER ******************** .INDEX ^^FLTXTI\\ .TEST PAGE 23 ^^FLTXTI\\ - .SKIP 2 ^ROUTINE TO DISPLAY A FLOATING POINT NUMBER (IN ^G17.6 ^FORMAT) WITHIN THE ABSOLUTE INTEGER COORDINATE SYSTEM. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL FLTXTI(FLTNUM,IXCORD,IYCORD)\\ .SKIP ^WHERE: .SKIP ^^FLTNUM\\ - IS THE FLOATING POINT NUMBER TO BE DISPLATED. .SKIP ^^IXCORD\\ - IS THE ABSOLUTE INTEGER ^X COORDINATE POSITION TO BEGIN THE DISPLAY. .SKIP ^^IYCORD\\ - IS THE ABSOLUTE INTEGER ^Y COORDINATE POSITION TO BEGIN THE DISPLAY. .SKIP .CENTER ******************** .SKIP .INDEX ^^SCURSR\\ .TEST PAGE 26 ^^SCURSR\\ - .SKIP 2 ^ROUTINE TO ACTIVATE THE GRAPHIC CURSOR(CROSS-HAIR), ALLOWING THE USER TO POSITION IT. ^THE CURSOR POSITION IS TRANSMITTED TO TO THE COMPUTER WHEN A KEYBOARD CHARACTER IS STRUCK. ^THIS CHARACTER ALONG WITH THE CURSOR POSITION IS RETURNED AS ARGUMENTS. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL SCURSR(ICHAR,IX,IY) .SKIP ^WHERE: .SKIP ^^ICHAR\\ - IS THE KEYBOARD CHARACTER TYPED .BREAK ##(RIGHT ADJUSTED IF NOT DECLARED AS A BYTE) .SKIP ^^IX\\ - IS THE ABSOLUTE INTEGER ^X SCREEN COORDINATE OF THE GRAPHIC CURSOR. .SKIP ^^IY\\ - IS THE ABSOLUTE INTEGER ^Y SCREEN COORDINATE OF THE GRAPHIC CURSOR. .SKIP .CENTER ******************** .INDEX ^^VCURSR\\ .TEST PAGE 29 ^^VCURSR\\ - .SKIP 2 ^ROUTINE TO ACTIVATE THE GRAPHIC CURSOR(CROSS-HAIR), ALLOWING THE USER TO POSITION IT. ^THE CURSOR POSITION IS TRANSMITTED TO TO THE COMPUTER WHEN A KEYBOARD CHARACTER IS STRUCK. ^THIS CHARACTER ALONG WITH THE CURSOR POSITION IS RETURNED AS ARGUMENTS. ^^VCURSR\\ TRANSFORMS THE RETURNED COORDINATES INTO VIRTUAL FLOATING POINT COORDINATES ACCORDING TO THE WINDOW ESTABLISHED BY ^^GRID\\. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL VCURSR(ICHAR,X,Y) .SKIP ^WHERE: .SKIP ^^ICHAR\\ - IS THE KEYBOARD CHARACTER TYPED .BREAK ##(RIGHT ADJUSTED IF NOT DECLARED AS A BYTE) .SKIP ^^X\\ - IS THE VIRTUAL FLOATING POINT ^X SCREEN COORDINATE OF THE GRAPHIC CURSOR. .SKIP ^^Y\\ - IS THE VIRTUAL FLOATING POINT ^Y SCREEN COORDINATE OF THE GRAPHIC CURSOR. .SKIP .CENTER ******************** .SKIP .INDEX ^^ERASE\\ .TEST PAGE 14 ^^ERASE\\ - .SKIP 2 ^ROUTINE TO ERASE THE SCREEN. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL ERASE\\ .SKIP .CENTER ******************** .SKIP .INDEX ^^COPY\\ .TEST PAGE 14 ^^COPY\\ - .SKIP 2 ^ROUTINE TO MAKE A HARDCOPY OF THE SCREEN. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL COPY\\ .SKIP .CENTER ******************* .INDEX ^^BELL\\ .TEST PAGE 18 ^^BELL\\ - .SKIP 2 ^ROUTINE TO RING THE TERMINAL BELL. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL BELL(N) .SKIP ^WHERE: .SKIP ^^N\\ - IS THE INTEGER NUMBER OF TIMES TO RING THE BELL. .SKIP .CENTER ******************* .INDEX ^^BAUD\\ .TEST PAGE 18 ^^BAUD\\ - .SKIP 2 ^ROUTINE TO INFORM SFGL70 OF THE BAUD RATE OF THE USER'S TERMINAL. IT IS ONLY NEEDED IF THE ROUTINES COPY, ERASE, OR BELL ARE USED. ^THE DEFAULT BAUD RATE IS 9600. .SKIP ^RETURNS IN ^PREVIOUS ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL BAUD(N) .SKIP ^WHERE: .SKIP ^^N\\ - IS THE INTEGER BAUD RATE OF THE TERMINAL. .SKIP .CENTER ******************* .INDEX ^^MVCURI\\ .TEST PAGE 25 ^^MVCURI\\ - .SKIP 2 ^ROUTINE TO MOVE THE CURSOR TO THE DESIRED SCREEN COORDINATES, USING THE ABSOLUTE INTEGER COORDINATES OF THE DISPLAY. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL MVCURI(IX,IY) .SKIP ^WHERE: .SKIP ^^IX\\ - IS THE ABSOLUTE INTEGER X COORDINATE POSITION TO MOVE THE CURSOR TO. .SKIP ^^IY\\ - IS THE ABSOLUTE INTEGER Y COORDINATE POSITION TO MOVE THE CURSOR TO. .SKIP .CENTER ******************* .INDEX ^^MVCUR\\ .TEST PAGE 25 ^^MVCUR\\ - .SKIP 2 ^ROUTINE TO MOVE THE CURSOR TO THE DESIRED SCREEN COORDINATES, USING THE VIRTUAL WINDOW ESTABLISHED BY ^^GRID\\. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL MVCUR(X,Y) .SKIP ^WHERE: .SKIP ^^X\\ - IS THE VIRTUAL FLOATING POINT COORDINATE POSITION TO MOVE THE CURSOR TO. .SKIP ^^Y\\ - IS THE VIRTUAL FLOATING POINT Y COORDINATE POSITION TO MOVE THE CURSOR TO. .SKIP .CENTER ******************* .INDEX ^^GTCURI\\ .TEST PAGE 25 ^^GTCURI\\ - .SKIP 2 ^ROUTINE TO OBTAIN THE CURRENT CURSOR SCREEN COORDINATES, USING THE ABSOLUTE INTEGER COORDINATES OF THE DISPLAY. (THIS ROUTINE IS NOT AVAILABLE ON A ^TEKTRONIX 4006) .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL GTCURI(IX,IY) .SKIP ^WHERE: .SKIP ^^IX\\ - IS THE ABSOLUTE INTEGER X COORDINATE POSITION OF THE CURSOR. .SKIP ^^IY\\ - IS THE ABSOLUTE INTEGER Y COORDINATE POSITION OF THE CURSOR. .SKIP .CENTER ******************* .INDEX ^^GTCUR\\ .TEST PAGE 25 ^^GTCUR\\ - .SKIP 2 ^ROUTINE TO OBTAIN THE CURRENT CURSOR SCREEN COORDINATES, USING THE VIRTUAL WINDOW ESTABLISHED BY ^^GRID\\. (THIS ROUTINE IS NOT AVAILABLE ON A ^TEKTRONIX 4006) .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL GTCUR(X,Y) .SKIP ^WHERE: .SKIP ^^X\\ - IS THE VIRTUAL FLOATING POINT COORDINATE POSITION OF THE CURSOR. .SKIP ^^Y\\ - IS THE VIRTUAL FLOATING POINT Y COORDINATE POSITION OF THE CURSOR. .SKIP .CENTER ******************* .SKIP .INDEX ^^BACK\\ .TEST PAGE 18 ^^BACK\\ - .SKIP 2 ^ROUTINE TO MOVE THE CURSOR BACK N SPACES. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL BACK(N) .SKIP ^WHERE: .SKIP ^^N\\ - IS THE INTEGER NUMBER OF TIMES TO BACKSPACE. .SKIP .CENTER ******************* .SKIP .INDEX ^^UP\\ .TEST PAGE 18 ^^UP\\ - .SKIP 2 ^ROUTINE TO MOVE THE CURSOR UP N LINES. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL UP(N) .SKIP ^WHERE: .SKIP ^^N\\ - IS THE INTEGER NUMBER OF LINES TO MOVE THE CURSOR UP. .SKIP .CENTER ******************* .INDEX ^^DOWN\\ .TEST PAGE 18 ^^DOWN\\ - .SKIP 2 ^ROUTINE TO MOVE THE CURSOR DOWN N LINES. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL DOWN(N) .SKIP ^WHERE: .SKIP ^^N\\ - IS THE INTEGER NUMBER OF LINES TO MOVE THE CURSOR DOWN. .SKIP .CENTER ******************** .SKIP .INDEX ^^HOME\\ .TEST PAGE 14 ^^HOME\\ - .SKIP 2 ^ROUTINE TO MOVE THE CURSOR TO THE HOME POSITION (TOP LEFT CORNER OF THE SCREEN). .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL HOME\\ .SKIP .CENTER ******************** .SKIP .INDEX ^^ALPHA\\ .TEST PAGE 14 ^^ALPHA\\ - .SKIP 2 ^ROUTINE TO RETURN THE TERMINAL TO ^ALPHA MODE. .SKIP ^RETURNS IN ^ALPHA ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL ALPHA\\ .SKIP .CENTER ******************** .SKIP .INDEX ^^BLKBOX\\ .TEST PAGE 14 ^^BLKBOX\\ - .SKIP 2 ^ROUTINE TO INFORM THE GRAPHICS PACKAGE THAT THE GRAPHICS TERMINAL IS ON A SHARED LINE WITH THE HARDCOPY DEVICE. .SKIP ^RETURNS IN ^PREVIOUS ^MODE .SKIP ^CALLING ^FORMAT: .SKIP ^^CALL BLKBOX\\ .SKIP .CENTER ******************** .SKIP .DO INDEX