1 /
\ e P1.RA FOR HP 7475 AND ADCOMP X80-SP
4 / PART ONE OF DEC'S XYPLOT DEC-S8-LPLTA-A-LA JULY 1973 M. HURLEY
5 / INCLUDED IS THE LATEST UPDATE F4 4.AAAA FROM LIBRARY FORLIB.RL NOV. 77
6 / COPIED: J.J. ANDRES 1.NOV. 1980
8 / PLOTTER ROUTINES FOR OS8 FORTRAN 4 FOR LAB 8/E ONLY!
9 / VER 1.0 1. NOV. 1980 H.A.
10 / VER 2.0 12. NOV. 1980 H.A.
11 / VER 2.1 18. NOV. 1981 H.A.
12 / VER 2.2 4. AUG. 1982 H.A.
13 / VER 2.3 24-NOV-83 H.A. INSERTS VARIABLES FOR XYPLOT VER 3.3
14 / VER 3.0 11-JUN-85 H.A. FOR ADCOMP X80-SP AND HP 7475 PLOTTER
17 / 1. PLEXIT DISABLED THE PLOTTER INTERRUPTS AT ALL AND PLOTS DID
18 / NOT SWITCH THEM ON A SECOND TIME.
19 / 2. X-Y PLOTTER CANNOT BE DRIVEN TO THE ORIGIN (0,0) BY PLOTS.
20 / * #XNTST IS CALLED FROM PLOTS EACH TIME PLOTS ITSELF IS CALLED.
21 / * NOW #XNTST TEST AND SETS THE ONCE FLAG.
22 / * #XNTST PUSHES THE PLOTTER 4095 TIMES INTO THE LOWER LEFT CORNER.
24 / 3. #XMSMBP = ADDR SYMBTB
25 / #XSMBP = ADDR SYMCNT
26 / THESE TWO VALUES ARE NOW INSERTED VIA A CALL TO SYMBOL.
27 / SYMBOL CALLS #XMBTB TO SWAP IN THE SYMBOL TABLE OVERLAY.
29 / 4. THE AMOUNT OF EXTERNAL REF TO XYPLOT IS REDUCED
30 / 5. ONLY ASCII PLOT OUTPUT FOR X80-SP OR HP7475 PLOTTER VIA
31 / FORTRAN UNIT 2 USEING THE OS/8 DEVICE HANDLER.
32 / NO CODE FOR CALCOMP INTERFACE. NO I/O BUFFERS .....
35 / THE PDP8 CODE LOCATED IN FIELD 1
38 / INTO THESE WORDS SYMBOL INSERTS THE ADR. OF THE SYMBOL TABLE AND LENGTH
39 / THIS MUST BE DONE SINCE THE SYMBOL TABLE #XMBTB MAY BE LOCATED INTO
40 / AN OVERLAY AND THEREFORE THE ADDR DIRECTIVE WILL PRODUCE WRONG CODE.
41 / THE LOADER INSERTS THE ADR. OF THE OVERLAY LOADER BUT NOT THE DESIRED
47 / EXTERNAL REFERENCED FROM XYPLOT ONLY
49 / ENTRIES USED BY XYPLOT:
52 / ENTRIES USED BY SYMBOL
63 PLCE= 06500 / CLEAR INTERRUPT ENABLE
64 PLSF= 06501 / SKIP ON PLOTTER FLAG SET
65 PLCF= 06502 / CLEAR PLOTTER FLAG
66 PLLR= 06504 / LOAD PLOTTER DIRECTION REGISTER
67 PLSE= 06507 / SET INTERRUPT ENABLE
72 / FPP 12 VARIABLES SET BY XYPLOT WICH MAY NOT BE LOADED INTO AN OVERLAY
74 #XORGX, ORG .+3 / LAST ABSOLUTE ORIGIN LOCATION OF PEN IN MOTOR STEPS
75 #XORGY, ORG .+3 / LAST ABSOLUTE ORIGIN LOCATION OF PEN IN MOTOR STEPS Y DIRECTION
76 #XABSX, ORG .+3 / ABSOLUTE LOCATION OF PEN IN MOTOR STEPS X DIRECTION (REAL)
77 #XABSY, ORG .+3 / ABSOLUTE LOCATION OF PEN IN MOTOR STEPS Y DIRECTION
78 #XOLDP, ORG .+3 / VALUE OF PEN AT LAST XYPLOT
79 #XXOLD, ORG .+3 / OLD X PT WITH EFFECT OF FACTOR
80 #XYOLD, ORG .+3 / OLD Y PT WITH EFFECT OF FACTOR
81 #XPENC, ORG .+3 / OLD PEN STATUS (SYMBOL & NUMBER)
82 #XINCX, ORG .+3 / INCREMENT SIZE DEPENDENT OF EACH PLOTTER X DIRECTION
83 #XINCY, ORG .+3 / INCREMENT SIZE DEPENDENT OF EACH PLOTTER Y DIRECTION
84 #XFCTX, ORG .+3 / X - FACTOR
85 #XFCTY, ORG .+3 / Y - FACTOR
89 / THESE ROUTINES GET THE PLOTTING CODES WITHIN A LETTER
90 / PASS THEM AS X,Y PAIRS FOR PLOT ROUTINE
92 JMS GETXYS / GET A #XLEFT HAND X,Y PAIR
101 DCA LETCD2 / SAVE X,Y PAIR
104 RAR / GET IN LO THREE BITS
106 DCA LETCD1 / PASS X VALUE
107 TAD LETCD2 / NOW FOR THE Y PART
109 DCA LETCD2 / PASS THE Y VALUE
111 #XRGHT, 0 / GET A #XRGHT HAND X,Y PAIR
119 \f/ THIS ROUTINE GETS X,Y PAIRS FROM THE PACKED SEQ FOR EACH LETTER
123 TAD LOCNPT / START OF LETTER CODE
124 DCA LETCD2 / UPDATE PTR TO LETTER
125 RAL / IF LINK SET, CROSSED FIELDS, SO UPDATE FIELD
127 TAD LOCNFL / FIELD PASSED FROM FINDIT ROUTINE
133 TAD% LETCD2 / GET PLOTTING CODES
141 PLETPS, ADDR LOCNPT / POINTS TO START OF CODE FOR PASSED LETTER
142 COUNT, / COUNT OF STEPS INTO CHAR PLOTTING CODE TABLE
143 PLCNM1, ADDR LOCNFL / USED TO PASS FIELD
146 0 / ADDRESS OF PACKED 6 BIT LETTERS TO PRINT
148 #XSMBP, / HERE WE INSERT THE ADR. OF THE SYMBOL TABLE
151 / THESE ROUTINES DETERMINE THE START OF PLOTTING CODES FOR A CHARACTER
152 / PASSED AS A HOLERITH (6 BIT) FROM SYMBOL ROUTINE.
153 / FIND LOCATION OF START OF PLOT VECTORS
154 / FOR THE LEFT HALF OF 2 6 BIT CHARACTERS
156 TAD #XTXAD+1 / DO FIELD STUFF
163 TAD% #XTXAD+2 / GET TWO 6 BIT VALUES
167 TAD LETTER / MOVE LEFT CHARACTER
171 AND P77 / INTO THE #XRGHTMOST 6 BITS
173 ISZ #XTXAD+2 / PREPARE FOR NEXT CHARACTER TO #XLEFT
174 JMP FLDOK / IF SKIPS, THEN AT FIELD BOUNDARY
175 ISZ #XTXAD+1 / SO UPDATE FIELD ALSO
178 \fFINDIT, 0 / GET LOC OF LETTER IN SYMBOL TABLE
179 SPA SNA / CHECK FOR ZERO
180 TAD P40 / WHICH DEFAULTS TO SPACE
181 CIA CLL / MAKE A COUNTER
183 DCA COUNT / ZERO TOTAL STEP COUNTER
185 DCA NXTLCN / POINTS TO LOCN IN POINTER TABLE
186 / THIS TABLE HAS STEPS FOR EACH LETTER, SO
187 / COUNT TOTAL STEPS TO DESIRED LETTER
194 TAD% NXTLCN / GET NEXT STEP COUNT
196 TAD COUNT / AND ADD IT TO TOTAL STEP COUNT
198 ISZ NXTLCN / BUMP POINTER
199 SKP / SKIP IF DIDN'T CROSS BOUNDARIES
200 TAD P10 / IT DID, UPDATE FIELD WORD
204 JMP SCANTB / NOT THERE YET
206 TAD COUNT / ADD COUNT TO
207 TAD PSYMB+1 / START OF CODE TABLE
208 DCA% PLETPS+1 / NOW IT'S CORRECT POINTER
209 RAL / IF LINK SET, WE CROSSED FIELD BOUNDARIES
210 TAD PSYMB / GET FIELD OF TABLE
211 DCA% PLCNM1+1 / PASS IT
212 JMP% FINDIT / GOT THE LETTER
215 #XMCNT, / HERE WE INSERT THE POINTER INTO THE SYMBOL TABLE
220 TAD LETTER / #XLEFT FROM LAST #XLEFT LETTER
225 / ROUTINE TO HANDLE NUMBERS FROM FORTRAN SUBR. NUMBER
226 / NOT CALLED BY USER DIRECTLY
231 JMP USZRO / IF EQ -1, USE 0
234 JMP USZRO / SO USE ZERO
236 SPA CLA / G.T. 9 BAD TOO
237 JMP USEIT / IT'S -3,-2,0-9
239 INDEX, TAD P60 / INDEX INTO TABLE
245 / PLOT AN INTEGER EQUIV OR CENTERED (100-117 DEC =144-165 OCT)
248 SPA SNA / .L.T. ZERO NO GOOD
250 TAD M166 / G.T. 117 DEC. BAD
255 JMP OKVAL / ITS A CENTERED 100-121 (0144-0165)
258 JMP USSPAC / 0100-0143 ILLEGAL
264 TAD P40 / DEFAULT TO SPACE
266 OKVAL, TAD P100 / PASS CENTERED AS 100-121