WRITTEN BY: BOB MCCASKEY REPUBLIC MANAGEMENT SYSTEMS ONE NESHAMINY INTERPLEX, SUITE 306 TREVOSE, PA. 19044 CRT FORMATTING SUBROUTINES DOCUMENTATION PREFACE: THE PDP 11/70 LOCATED IN THE S3/A SYSTEM GENERATION FACILITY CURRENTLY IS SUPPORTING DIGITAL VT100'S AND VT52'S. TO MAKE PROPER USE OF THIS HARDWARE AND FACILITATE MORE ACCECPTABLE SOFTWARE APPLICATIONS, SUBROUTINES HAVE BEEN DEVELOPED TO PROVIDE A COORDINATED, CONSISTANT USER INTERFACE FOR USER INPUT. THIS DOCUMENTATION WILL ASSUME THAT THE PROGRAMMING IS BEING COMPLETED IN FORTRAN 4 PLUS BUT THESE ROUTINES ARE ALSO AVAILABLE TO ANY LANGUAGE THAT MAKES USE OF DEC STANDARD CALLING SEQUENCE. DEFINITION: THE SCREEN IS DEFINED AS AN AREA 80 CHARACTERS WIDE BY 24 ROWS HIGH. ANY USE OF THESE ROUTINES MUST KEEP THIS IN MIND OR UNPREDICTABLE RESULTS WILL BE ASSURED. NOTE THAT ALL REFERANCE TO INTEGERS IN THIS DOCUMENT REFER TO I*2 OR CONSTANTS. LINES ARE NUMBERED 1 TO 24 AND COLUMNS ARE NUMBERED FROM 1 TO 80. LIST OF ROUTINES OPENS :OPENS THE SCREEN AND IT'S LOGICAL UNIT NUMBERS ERASE :CLEARS THE SCREEN AND OPTIONAL SELECTIONS SHOW :PLACES THE DESIRED ALPHA DATA ON THE SCREEN GETSCR :RECIEVES DATA AND TERMINATION CHARACTERS FROM CRT BEEP :CAUSES AUDIBLE ALARM TO SOUND CLEAR :ERASES A FIELD ON THE SCREEN GRAPH :PLACES GRAPHIC CHARACTERS ON THE SCREEN BLOCK :DRAWS AN OBLONG ON THE SCREEN AT DESIRED POSITION HIGH :WRITES TO THE SCREEN IN DOUBLE HIGH/WIDE MODE WIDE :WRITES TO THE SCREEN IN DOUBLE WIDTH MODE REVER :WRITES TO THE SCREEN IN REVERSE VIDEO (* THE LAST FOUR DO NOT WORK ON THE VT52) DESCRIPTION: CALL OPENS THIS IS THE INITIAL ROUTINE USED AND IT IS USED TO PREPARE THE CRT FOR ALL SUBSEQUENT ROUTINES IT MUST BE CALLED BEFORE ANY OTHER ROUTINE AND MAY ONLY BE USED ONCE CALL ERASE THIS ROUTINE ERASES THE SCREEN AND IF DOUBLE HIGH OR DOUBLE WIDE ROUTINES HAVE BEEN USED THE LINES ARE RESET TO THE INITIAL STATE. ( THIS ROUTINE HAS NO PARAMETERS) CALL SHOW (IROW,ICOL,ILEN,BUFFER) THIS SUBRTN IS USED TO PLACE A BUFFER OF ALPHA CHARACTERS(BUFFER) OR A STRING ENCLOSED IN QUOTES ON THE CRT AT THE ROW DESIGNATED BY INTEGER "IROW" AND THE COLUMN DESIGNATED BY INTEGER "ICOL" FOR THE LENGTH SPECIFIED BY INTEGER "ILEN". EXAMPLE: CALL SHOW(12,35,10,'CENTER CRT') NOTE: TO SHOW INTEGERS IN THIS MANNER IT IS NECESSARY TO FIRST USE THE "ENCODE" FUNCTION PLACING THESE VARIABLES IN BYTE BUFFRES, HTE ENCODE FUNCTION AND IT'S COUNTERPART FOR READING "DECODE" ARE EXPLAINED AND EXEMPLIFIED IN THE FORTRAN FOUR PLUS USER'S GUIDE. CALL GETSCR (IROW,ICOL,ILEN,ITERM,BUFFER) THIS ROUTINE SHOWS "BUFFER" ON THE TERMINAL AT THE CO- ORDINATES "IROW ICOL" AND WAITS FOR INPUT OF CHARACTERS INTO THIS BUFFER. TERMINATION CHARACTERS ARE RETURNED IN "ITERM". THE DELETE KEY REMOVES THE CURRENT CURSOR CHARACTER AND COMPRESSES THE BUFFER LEAVING BLANK AT THE END. LINEFEED KEY PLACES A BLANK AT CURRENT CURSOR POSITION AND EXPANDS CONTENTS OF BUFFER TO RIGHT (THUS ACTING AS INSERTCHARACTER KEY) THIS HOWEVER WILL LOSE THE LAST CHARACTER TO NEVER-NEVER LAND. SEE LIST OF TERMINATION CHARACTER INTEGER VALUES NOTE: TERMINATION CHARACTER IS NOT NECESSARY . EXAMPLE: GETSCR(8,12,6,ITERM,BUF) FOR THIS EXAMPLE BUF MUST BE DEFINED AS BYTE BUF(6) OR AN EQUIVALENT LENGTH BUFFER TERMINATION CHARACTER LIST 13 = RETURN 13 = ENTER 09 = TAB 10 = LINE FEED 08 = BACKSPACE 127 = DELETE 65 = UP ARROW 66 = DOWN ARROW 67 = RIGHT ARROW 68 = LEFT ARROW 80 = FUNCTION 1 81 = FUNCTION 2 82 = FUNCTION 3 83 = FUNCTION 4 CALL BEEP THIS CALL WITH NO PARAMETERS CAUSES THE TERMINAL TO EMIT AN AUDIBLE "BELL" SOUND. THIS IS IDEAL FOR NOTIFYING THE OPERATOR OF INPROPER INPUT OR FAILURE OF A VERIFICATION ROUTINE. EXAMPLE: CALL BEEP CALL CLEAR(INTROW,INTCOL,INTLEN) THIS CALL WILL ERASE A FIELD ON THE SCREEN BEGINING AT THE ROW AND COLUMN SPECIFIED AND PROCEEDING TO THE RIGHT AND HORIZONTALLY FOR THE LENGTH SPECIFIED IN ILEN. EXAMPLE: CALL CLEAR(12,12,40) CALL GRAPH (IROW,ICOL,CHAR) THIS ROUTINE WILL PLACE THE CHARACTER SPECIFIED BY "CHAR" ON THE CRT AT THE COORDINATES SPECIFIED AS ROW "IROW" AND COLUMN "ICOL" EXAMPLE: CALL GRAPH(10,1,"156) THIS WILL PLACE THE GRAPHIC CHARACTER FOR CROSSING LINES IN COLUMN ONE OF ROW TEN ON THE CRT CHARACTER LIST (VT100) *VT 52 HAS ANOTHER LIST OCTAL CODE CHAR 137 BLANK 140 DIAMOND 141 CHECKERBOARD 142 TAB SYMBOL 143 FORM FEED SYMBOL 144 CR SYMBOL 145 LF SYMBOL 146 DEGREE SYMBOL 147 PLUS OR MINUS SYMBOL 150 NL SYMBOL 151 VT SYMBOL 152 LOWERRIGHT CORNER 153 UPPER RIGHT CORNER 154 UPPER LEFT CORNER 155 LOWER LEFT CORNER 156 CROSSING LINES 157 HORIZONTAL LINE SCAN 1 160 SCAN 2 161 " SCAN 5 162 " SCAN 7 163 " SCAN 9 164 LEFT "T" 165 RIGHT "T"T 166 BOTTOM "T" 167 TOP "T" 170 VERTICAL BAR 171 LESS THAN OR EQUAL TO SIGN 172 GREATER TH OR EQUAL TO SIGN 173 PI 174 NOT EQUAL TO SIGN 175 U.K. POUND SIGN 176 CENTERED DOT CALL REVER(IROW,ICOL,ILEN,BUFFER) THIS ROUTINE IS IDENTICAL TO THE SHOW ROUTINE BUT SHOWS THE "BUFFER" AT ROW AND COL FOR LENGTH IN REVERSE VIDEO EXAMPLE: CALL REVER (12,12,10,'ALPHA NUMERIC') CALL HIGH(IROW,ICOL,ILEN,BUFFER) ROUTINE SHOWS THE BUFFER ON THE SCREEN AFTER CONV ERTING THE LINE TO DOUBLE HIGH/WIDE MODE ...NOTE THE ENTIRE LINE SPECIFIED BY "IROW" AND THE NEXT LINE WILL NOW HAVE DOUBLE ATTRIBUTES UNTIL ERASE IS CALLED EXAMPLE: CALL HIGH(1,12,10,'CENTER TOP') CALL WIDE (IROW,ICOL,ILEN,BUFFER) SAME AS THE ABOVE ROUTINE EXCEPT ONLY DOUBLE WIDE NOT DOUBLE HIGH ....NOTE THE LINE WIDTH IS NOW HALF OF IT'S PREVIOUS STATE (40 CHARACTERS) EXAMPLE: CALL WIDE(22,20,10,'BOTTOM CRT') CALL BLOCK (IULROW,IULCOL,ILRROW,ILRCOL) THIS PLACES AN OBLONG ON THE SCREEN AT COORDINATES OF THE UPPER LEFT ROW AND COL "IULROW" & "IUCOL" AND LOWER RIGHT ROW AND COLUMN "ILRROW" & "ILRCOL" THE BLOCK CAN BE ERASED,FILLED,OR WRITTEN OVER. EXAMPLE: CALL BLOCK(1,1,24,80) THIS WOULD DRAW A BOX ARROUND THE SCREEN ******************************************************************************** SAMPLE PROGRAM ******************************************************************************** PROGRAM SAMPLE C PROGRAM TO ENTER NUMBER AND SHOW IT SQUARED,ETC ON THE TERMINAL BYTE AREA(8) C CC OPEN THE SCREEN C CALL OPENS 10 CONTINUE CALL SHOW(6,35,12,'ENTER NUMBER') C CC C READ 2 CHARACTERS INTO AREA CC CALL GETSCR(6,47,2,ITERM,AREA) IF (ITERM.EQ.80) GOTO 99 C IF FUNCTION KEY ONE (PF1) IS HIT GOTO 99 C CC PUT 2 CHARACTERS INTO "I" FROM FORMAT 12 C DECODE(2,12,AREA,ERR=60)I 12 FORMAT(1I2) C C J=I CALL REVER(15,36,8,'VALUES :') DO 40 K=1,5 I=I*J ENCODE(6,13,AREA,ERR=60)I C PUT THE VALUE OF I INTO "AREA" TO SHOW ON THE SCREEN C I IS PLACED INTO "AREA" FOR LENGTH OF 6 USING FORMAT 13 IF ERROR C IS ENCOUNTERED WE GOTO 60 C 13 FORMAT(1I6) CALL SHOW((K+15),36,6,AREA) C SHOW THE VALUE ON THE TERMINAL 40 CONTINUE GOTO 10 60 CALL BEEP CALL SHOW (12,35,14,'ERROR IN ENTRY') GOTO 10 99 CALL BEEP CALL ERASE STOP END COMPILING PROGRAMS STANDARD FORTRAN COMPILE IS USED. EXAMPLE F4P SAMPLE=SAMPLE TASK BUILDING WITH CRT FORMATTING ROUTINES: NOTE: IN THIS EXAMPLE "SAMPLE" REFERS TO THE USER'S PROGRAM AND [200,56]SCREEN IS THE OBJECT CODE FOR THE CRT FORMATTING ROUTINES. A COMMAND FILE CAN BE CONSTRUCTED TO EASE IN THE TASK BUILD PHASE. THE SGF DOCUMENTATION EXEMPLIFIES COMMAND FILE FORMATS AND USE. BUILD EXAMPLE: MCR> TKB SAMPLE=SAMPLE,[200,56]SCREEN COMENTS AND REQUESTS SHOULD BE DIRECTED TO THE PROGRAMMING STAFF OF THE SGF WHO ASSUME NO RESPONSIBILITY FOR THE RELIABILITY OF THIS OR ANY OTHER SOFTWARE. R MC 08/29/80