.SPACING 1 .NOFILL ^^TTTTTTTTT XXX XXX TTTTTTTTT PPPPPPPP AAA DDDDDDD TTT XXX XXX TTT PPP PPP AAA AAA DDD DDD TTT XXX TTT PPPPPPPP AAA AAA DDD DDD TTT XXX XXX TTT PPP AAAAAAAAA DDD DDD TTT XXX XXX TTT PPP AAA AAA DDDDDDD\\ .SKIP .FILL ^^TXTPAD\\ ALLOWS THE USER TO CONSTRUCT ILLUSTRATIONS FORMED OF PRINTING CHARACTERS FOR USE IN DOCUMENTATION. ^A STYLUS IS USED TO POSITION AND DUPLICATE AND/OR REMOVE CHARACTERS OR GROUPS OF CHARACTERS ON A 60 CHARACTER BY 60 LINE GRID. ^THE RESULTING ILLUSTRATION IS MONITORED ON A STORAGE SCOPE, AND CAN BE STORED IN AND RETRIEVED FROM AN OUTPUT FILE. .SKIP ^^TXTPAD\\ DISPLAYS THE MENU SHOWN BELOW ON THE STORAGE SCOPE. ^THE 46 CHARACTERS ALONG THE LEFT, LOWER AND RIGHT MARGINS ARE AVAILABLE FOR INSERTION INTO THE ILLUSTRATION. ^WHEN ^^TXTPAD\\ IS STARTED, IT WILL ASK THE USER IF HE WISHES TO READ THIS PORTION OF THE MENU FROM HIS OWN FILE ^^TXTPA.DAT\\. ^UP TO 84 CHARACTERS FORMING THE FIRST LINE OF THIS FILE WILL BE SUBSTITUTED FOR THOSE SHOWN IF THE ANSWER TO THIS QUESTION IS A CARRIAGE RETURN, BLANK OR UPPER CASE ^Y. .SKIP .NOFILL ^^TTY LIN COPY MOV TRIM KIL WIP READ SWAP SAV HIH LOW ALL EXIT ------------------------------------------------------------ I I A I I B I I C I I D I I E I I F I I G I I H I I I I I J I I K I I L I I M I I N I I O I I P I I Q I I R I I S I I T I I U I I V I I W I I X I I Y I I Z\\ ------------------------------------------------------ 0 1 2 3 4 5 6 7 8 9 ( ) * / + - . , ' = .FILL .SPACING 1 .CENTER ^LENGTH OF ^DISPLAYED ^TEXT .CENTER ------ -- --------- ---- .SKIP ^ILLUSTRATIONS CREATED OR READ BY ^^TXTPAD\\ ARE 60 COLUMNS WIDE BY 60 LINES DEEP. ^EITHER THE UPPER OR LOWER 36 LINES CAN BE DISPLAYED IN THE SAME PROPORTIONS AS WOULD BE PRINTED BY A PRINTER OR TELETYPE, OR ALL 60 LINES CAN BE DISPLAYED ON A SQUARE GRID. ^INITIALLY, THE DISPLAY IS OF THE UPPER 36 LINES, AND THIS CAN BE RESELECTED BY RAISING THE STYLUS WHILE POINTING AT THE ^^HIGH\\ SWITCH . ^THE LOWER 36 LINES CAN BE SELECTED BY POINTING TO THE ^^LOW\\ SWITCH AS CAN BE ALL 60 LINES BY POINTING TO THE ^^ALL\\ SWITCH. .SKIP .CENTER ^GROUPS OF ^CHARACTERS .CENTER ------ -- ---------- .SKIP ^A GROUP OF CHARACTERS IS DEFINED AS A COLLECTION OF NON-BLANK CHARACTERS CONNECTED EITHER HORIZONTALLY, VERTICALLY OR DIAGONALLY. ^FOR EXAMPLE, THE CHARACTERS IN THE FIGURE AT THE LEFT BELOW FORM A SINGLE GROUP, WHILE THOSE AT THE RIGHT BELOW FORM 2 GROUPS WHICH CAN BE KILLED, MOVED OR COPIED INDEPENDENTLY OF EACH OTHER. ^A GROUP CAN EXTEND BEYOND THE BOTTOM OF THE DISPLAYED PORTION OF THE ILLUSTRATION IF ONLY THE UPPER 36 LINES ARE DISPLAYED, OR BEYOND THE TOP IF THE LOWER 36 LINES ARE DISPLAYED. ^EVEN IF NOT ENTIRELY DISPLAYED, THE ENTIRE GROUP CAN BE KILLED, MOVED OR COPIED (IT MUST BE PARTIALLY DISPLAYED THOUGH IN ORDER TO BE SELECTED). .SKIP .NOFILL ^^ XXXXXXX XXXXXXX X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X XXXXXXX XXXXXXX\\ .FILL .SKIP ^THE MAXIMUM SIZE OF A GROUP OF CHARACTERS IS DICTATED BY THE VARIABLE ^^MOST\\ IN THE PROGRAM, WHICH IS THE DIMENSION OF THE ^^LINE\\ ARRAY. ^THIS IS SET TO 1800 WHICH ALLOWS STRUCTURES OF UP TO 1800 NON-BLANK CHARACTERS (HALF OF THE PAGE BUFFER), BUT IS EASILY CHANGED IF NECESSARY. ^THE STRUCTURE IS GROWN IN A SQUARE SEARCH PATTERN AROUND THE CHARACTER POINTED TO, SO IT IS POSSIBLE TO KILL, MOVE OR COPY THE CENTER OF A GROUP LARGER THAN 1800 CHARACTERS LEAVING THE EXCESS INTACT. ^EVEN THOUGH NOT ALL THE STRUCTURE CAN BE PROCESSED AS INDICATED, THE OUTLINE OF SUCH LARGE STRUCTURES WILL SOMETIMES BE DRAWN CORRECTLY SINCE OUTLINING OF THE GROUP IS BASED ON A PERIMETER SEARCH MADE IN THE DISPLAY BUFFER STARTING AT THE UPPER LEFT CHARACTER IN THE ^^LINE\\ ARRAY. .PAGE .SPACING 1 .FILL .CENTER ^BEGINNING THE ^ILLUSTRATION .CENTER --------- --- ------------ .SKIP ^THE USER CAN POINT TO (LOWER AND RAISE THE STYLUS WHILE POINTING AT) ONE OF THE CHARACTERS ALONG THE LEFT, LOWER OR RIGHT MARGINS, THEN POSITION ONE OR MORE COPIES OF THE CHARACTER ON THE ILLUSTRATION BY POINTING TO THE POSITION OR POSITIONS AT WHICH IT IS TO BE PLACED. ^THE POSITION OF THE STYLUS WILL BE TRACKED USING THE CHARACTER SELECTED FROM THE MENU. ^THIS TRACKING CHARACTER WILL BE INSERTED INTO THE ILLUSTRATION WHEREVER THE STYLUS IS RAISED. ^IF THIS POSITION WAS PREVIOUSLY BLANK, THE CHARACTER WILL BE WRITTEN ON THE SCREEN. ^IF INSTEAD THIS POSITION ALREADY CONTAINS SOME CHARACTER OTHER THAN THAT USED FOR TRACKING, A RECTANGLE IS DRAWN AROUND THE LOCATION AND THE SCREEN WILL BE ERASED AND THE ILLUSTRATION CORRECTED WHEN THE USER NEXT MAKES A SELECTION FROM THE MENU. ^IN THE LATTER CASE, THE TRACKING CURSOR TEMPORARILY BECOMES A RECTANGLE WHILE THE STYLUS POINTS TO THE NON-BLANK POSITION. .SKIP ^A PREVIOUSLY CREATED ILLUSTRATION CAN BE READ IN FOR MODIFICATION BY POINTING TO THE ^^READ\\ SWITCH. ^WHEN THIS SWITCH IS SELECTED, THE TRACKING CURSOR CHANGES TO ^R, THE FIRST CHARACTER OF THE NAME OF THE SWITCH, AND THE FIRST (OR NEXT IF THE ^^READ\\ SWITCH HAS PREVIOUSLY BEEN SELECTED) 60 LINES OF THE FILE NAMED ^^INPUT.DAT\\ ON DEVICE NUMBER 1 WILL BE READ AND ADDED TO THE NON-BLANK PORTIONS OF THE CURRENTLY DISPLAYED ILLUSTRATION. .SKIP ^THE TABULATION CHARACTER IS HANDLED PROPERLY WHEN READ FROM THE INPUT FILE, AND IS CONVERTED TO THE APPROPRIATE NUMBER OF BLANKS. .SKIP .CENTER ^DRAWING ^LINES .CENTER ------- ----- .SKIP ^LINES CAN BE EXTENDED FROM CHARACTERS ALREADY IN THE ILLUSTRATION BY POINTING TO THE ^^LINE\\ SWITCH, THEN TO THE NON-BLANK CHARACTER ON THE ILLUSTRATION WHICH IS TO BE DUPLICATED TO FORM THE LINE AND TO THE LOCATION TO WHICH THE LINE IS TO BE DRAWN. ^THE TRACKING CURSOR CHANGES TO ^L WHEN THE ^^LINE\\ SWITCH IS SELECTED, AND THEN TEMPORARILY TO THE CHARACTER TO BE DUPLICATED, AND RECTANGLES ARE REPEATEDLY DRAWN AROUND THE ORIGIN, UNTIL THE END OF THE LINE IS INDICATED. ^TO AID IN THE DRAWING OF STRAIGHT LINES, A LINE DRAWN FROM THE ORIGIN TO THE CURRENT STYLUS LOCATION IS SUBSTITUTED FOR THE CHARACTER CURSOR WHILE THE STYLUS IS IN THE SAME ROW OR IN THE SAME COLUMN AS THE ORIGIN. .SKIP ^THE ILLUSTRATION ON THE NEXT PAGE DEMONSTRATES THE SEQUENCE OF OPERATIONS BY WHICH A SINGLE ^X IS DUPLICATED TO FORM A BOX DRAWN FROM ^X'S. ^LINES DRAWN WITH VECTOR INSTRUCTIONS ARE INDICATED BY MINUS SIGNS, ^I'S AND PLUS SIGNS. .PAGE .NOFILL LOWER AND RAISE MOVE RAISED LOWER AND RAISE STYLUS POINTING STYLUS STYLUS POINTING TO ORIGIN TO END OF LINE ^^(A) (B) (C) +-+ IXI X-------------- XXXXXXXXXXXXXXX +-+ (D) (E) (F) +-+ XXXXXXXXXXXXXIXI XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX +-+ I X I X I X I X I X I X I X I X (G) (H) (I) XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX X X X X X X X X X X X X X X X X X X +-+ X X IXI --------------X XXXXXXXXXXXXXXX +-+ (J) (K) (L) XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX X I X X X X I X X X X I X X X X I X X X X I X X X X I X X X +-+ X I X X X IXIXXXXXXXXXXXXX XXXXXXXXXXXXXXX XXXXXXXXXXXXXXX +-+\\ .FILL .PAGE .SPACING 1 .CENTER ^ERASING ^CHARACTERS OR ^GROUPS OF ^CHARACTERS .CENTER ------- ---------- -- ------ -- ---------- .SKIP ^THE ^^TRIM\\ AND ^^KILL\\ SWITCHES ARE USED TO DELETE PORTIONS OF AN ILLUSTRATION. ^REMOVAL OF INDIVIDUAL CHARACTERS WHILE IN ^^TRIM\\ MODE IS INDICATED IN THE DISPLAY BY ENCLOSING THESE CHARACTERS IN RECTANGLES. ^THE DISPLAY WILL BE CORRECTED WHEN THE NEXT ITEM SELECTED FROM THE MENU IS NEITHER ^^TRIM\\ NOR ^^KILL\\. .SKIP ^^KILL\\ MODE IS USED TO REMOVE GROUPS OF CHARACTERS WHICH ARE INDICATED BY POINTING TO MEMBERS OF THE GROUPS. ^THE DELETED GROUPS ARE OUTLINED IN THE DISPLAY UNTIL THE DISPLAY IS CORRECTED WHEN AN ITEM OTHER THAN ^^TRIM\\ OR ^^KILL\\ IS SELECTED FROM THE MENU. ^^KILL\\ MODE CAN BE USED TO DELETE BRANCHES OF A STRUCTURE IF THESE ARE FIRST DISCONNECTED FROM THE MAIN STRUCTURE WHILE IN ^^TRIM\\ MODE. .SKIP ^SELECTION OF THE ^^WIPE\\ SWITCH BLANKS OUT THE ENTIRE ILLUSTRATION. .SKIP .CENTER ^MOVING AND ^COPYING ^GROUPS OF ^CHARACTERS .CENTER ------ --- ------- ------ -- ---------- .SKIP ^THE ^^COPY\\ AND ^^MOVE\\ MODES ARE CONTROLLED IN A MANNER SIMILAR TO THAT USED DURING ^^LINE\\ MODE. ^FOLLOWING SELECTION OF EITHER OF THE ^^COPY\\ OR ^^MOVE\\ SWITCHES, THE USER POINTS TO A CHARACTER IN THE GROUP TO BE MOVED OR COPIED. ^THIS CHARACTER AT WHICH THE STYLUS IS INITIALLY RAISED BECOMES THE ORIGIN AND IS INDICATED BY REPEATEDLY DRAWING A RECTANGLE AROUND IT. ^THE CHARACTER AT THE ORIGIN IS ALSO USED AS THE TRACKING CURSOR UNTIL THE STYLUS IS LOWERED AND RAISED AT THE POINT TO WHICH THE GROUP OF CHARACTERS IS TO BE MOVED OR AT WHICH IT IS TO BE COPIED. ^TO AID IN HORIZONTAL OR VERTICAL MOVES OR COPIES, A LINE DRAWN FROM THE ORIGIN TO THE CURRENT STYLUS LOCATION IS SUBSTITUTED FOR THE CHARACTER CURSOR WHILE THE STYLUS IS IN THE SAME ROW OR IN THE SAME COLUMN AS THE ORIGIN. .SKIP ^IN ^^READ\\, ^^LINE\\, ^^MOVE\\, AND ^^COPY\\ MODES, CHARACTERS ALREADY DISPLAYED ON THE SCREEN ARE NOT DESTROYED BY THE ATTEMPT TO COPY OR MOVE OTHER CHARACTERS INTO THE POSITIONS WHICH THEY OCCUPY. .SKIP ^IN A MOVED GROUP OR IN A COPY OF A GROUP, CHARACTERS ARE LOST BEYOND THE LEFT, RIGHT, UPPER OR LOWER MARGINS OF THE 60 LINE ILLUSTRATION. ^WHEN ONLY 36 LINES OF THE ILLUSTRATION ARE BEING DISPLAYED, AT LEAST ONE LINE OF THE MOVED GROUP OR COPY MUST BE DISPLAYED, BUT NONE OF THE UNDISPLAYED PORTION IS LOST UNLESS IT IS LONGER THAN 24 LINES (60 LINES TOTAL MINUS 36 LINES DISPLAYED). .PAGE .CENTER ^ENTERING ^TEXT .CENTER -------- ---- .SKIP ^THE ^^TTY\\ MODE ALLOWS THE USER TO READ LINES OF TEXT FROM THE GRAPHICS TERMINAL KEYBOARD AND TO POSITION SUCH TEXT IN THE DISPLAY, IN A MANNER ANALOGOUS TO THAT USED FOR ^^LINE\\ MODE. ^AFTER SELECTING THE ^^TTY\\ SWITCH, THE TRACKING CURSOR CHANGES TO ^T. ^THE USER THEN SPECIFIES THE JUSTIFICATION OF THE INSERTED TEXT BY POINTING TO THE LOCATION AT WHICH IT IS TO BE INSERTED. ^AFTER LIFTING THE STYLUS, THE USER SELECTS THE SECOND END OF THE LINE (WHICH NEED NOT BE HORIZONTAL OR VERTICAL) ALONG WHICH THE TEXT IS TO BE INSERTED. ^IF THE SECOND POINT IS TO THE RIGHT OF THE FIRST, THE INSERTED TEXT WILL BE PLOTTED WITH THE LEFT CHARACTER AT THE POINT FIRST INDICATED. ^IF THE SECOND POINT IS TO THE LEFT OF THE FIRST, THE INSERTED TEXT WILL BE PLOTTED WITH THE RIGHT CHARACTER AT THE POINT FIRST INDICATED. ^WHEN THIS SECOND POINT HAS BEEN SELECTED, THE PROGRAM WILL TERMINATE TRACKING AND WAIT FOR THE TEXT (FOLLOWED BY A CARRIAGE RETURN) TO BE TYPED. ^INDIVIDUAL CHARACTERS ARE DISCARDED IF THE INDICATED DESTINATION ALREADY CONTAINS A NON-BLANK CHARACTER OR IF THESE CHARACTERS ARE EXCESS BEYOND THAT WHICH WOULD FILL THE INDICATED SPACE. .SKIP .SPACING 1 .CENTER ^STORAGE AND ^RETRIEVAL OF ^ILLUSTRATIONS .CENTER ------- --- --------- -- ------------- .SKIP ^THE PRESENTLY DISPLAYED ILLUSTRATION IS WRITTEN INTO A FILE NAMED ^^OUTPU.DAT\\ (UNLESS THIS DESIGNATION HAS BEEN MODIFIED BY SELECTING THE ^^SWAP\\ SWITCH DESCRIBED BELOW) WHEN THE ^^SAVE\\ SWITCH IS SELECTED. ^STORAGE OF THE ILLUSTRATION DOES NOT ALTER ITS DISPLAY. ^SEVERAL ILLUSTRATIONS CAN BE WRITTEN OUT INTO THE FILE, BUT MULTIPLE COPIES OF A SINGLE ILLUSTRATION CANNOT BE CREATED UNLESS IT IS MODIFIED IN SOME WAY. .SKIP ^SELECTION OF THE ^^SWAP\\ SWITCH CAUSES THE FOLLOWING OPERATIONS TO BE PERFORMED. .BREAK .RIGHT MARGIN 56 .LEFT MARGIN 8 .INDENT -4 (^A)#^THE CURRENTLY DISPLAYED ILLUSTRATION IS WRITTEN INTO THE OUTPUT FILE IF THIS ILLUSTRATION HAS NOT ALREADY BEEN WRITTEN OUT SINCE IT WAS LAST MODIFIED. .BREAK .INDENT -4 (^B)#^THE REMAINDER OF THE INPUT FILE, IF ANY, IS COPIED INTO THE OUTPUT FILE. .BREAK .INDENT -4 (^C)#^THE INPUT AND OUTPUT DESIGNATIONS OF THE FILE ^^INPUT.DAT\\ ON UNIT 1 (INITIALLY STORED IN THE PROGRAM AS ^^INAME\\ AND ^^ITAPE\\) AND OF THE FILE ^^OUTPU.DAT\\ ON UNIT 21 (^^JNAME\\ AND ^^JTAPE\\) ARE REVERSED. .BREAK .INDENT -4 (^D)#^THE PRESENT ILLUSTRATION IS CLEARED, AND THE FIRST ILLUSTRATION FROM THE FORMER OUTPUT FILE (NOW THE INPUT FILE) IS READ AND DISPLAYED. .RIGHT MARGIN 60 .LEFT MARGIN 0 .BREAK ^SELECTION OF THE ^^EXIT\\ SWITCH PERFORMS STEPS ^A AND ^B ABOVE, THEN TERMINATES EXECUTION OF THE PROGRAM. .PAGE .CENTER ^NECESSARY ^HARDWARE AND ITS ^ROUTINES .CENTER --------- -------- --- --- -------- .SKIP ^^TXTPAD\\ IS WRITTEN IN ^^FORTRAN\\ AND IS DESIGNED TO BE USED WITH A STORAGE SCOPE HAVING A TEMPORARILY VISIBLE CURSOR FEATURE AND A TABLET AND STYLUS. ^ROUTINES TO ACCESS THIS EQUIPMENT MUST BE AVAILABLE. ^THE FILE ^^ARDMAC.MAC\\ CONTAINS THE FOLLOWING ENTRY POINTS FOR USE OF THIS PROGRAM ON A ^^PDP\\-10 COMPUTER WITH A ^^ARDS\\ GRAPHIC TERMINAL. .SKIP .LEFT MARGIN 8 .SKIP .INDENT -8 ^^CRTLTR\\##LETTERS THE STRING GIVEN AS ITS FIRST ARGUMENT AT THE ^X AND ^Y COORDINATES GIVEN AS ITS 4TH AND 5TH ARGUMENTS. ^THE SCOPE COORDINATES ARE ASSUMED TO EXTEND FROM 0 THROUGH 1023 IN BOTH DIRECTIONS. ^THE 2ND AND 3RD ARGUMENTS ARE THE SEQUENCE NUMBER OF THE FIRST AND OF THE FINAL CHARACTERS TO BE PLOTTED FROM THE STRING. ^FOR EXAMPLE, THE STATEMENT .SKIP .INDENT 4 ^^CALL CRTLTR('ABCDEF',2,5,512,512) .SKIP \\WOULD PLOT THE LETTERS ^^BCDE\\ WITH THE LOWER LEFT CORNER OF THE LETTER ^B AT THE CENTER OF THE SCREEN. .SKIP .INDENT -8 ^^CRTOFF\\##POSITIONS THE BEAM OF THE CRT TUBE AT THE ^X AND ^Y COORDINATES GIVEN AS ARGUMENTS. .SKIP .INDENT -8 ^^CRTON\\###DRAWS A LINE FROM THE PRESENT BEAM POSITION (AS DETERMINED BY THE PREVIOUS CALL TO EITHER ^^CRTOFF\\ OR ^^CRTON\\) TO THE ^X AND ^Y COORDINATES GIVEN AS ARGUMENTS. .SKIP .INDENT -8 ^^CRTSTR\\##SELECTS WHETHER SUBSEQUENT PLOTTING WILL BE STORED ON THE SCREEN OR BE TEMPORARY. ^^CRTSTR\\ IS CALLED WITH ITS SINGLE ARGUMENT ONE FOR STORAGE OR ZERO FOR TEMPORARY. .SKIP .INDENT -8 ^^CRTWIP\\##CLEARS THE SCREEN OF THE TERMINAL. .SKIP .INDENT -8 ^^CRTXYZ\\##RETURNS AS ITS 3 ARGUMENTS THE ^X, ^Y AND ^Z COORDINATES OF THE STYLUS POSITION. ^THE ^Z COORDINATE IS ZERO WHILE THE STYLUS IS LOWERED TO THE SURFACE OF THE TABLET, AND IS NON-ZERO OTHERWISE. .SKIP 2 .NOFILL .LEFT MARGIN 33 AUTHOR:##^DONALD ^E.#^BARTH .LEFT MARGIN 42 ^CHEMISTRY ^DEPT. ^HARVARD ^UNIVERISTY ^OCTOBER, 1972