1 /THIS IS A SET OF PLOTTING ROUTINES THAT ARE VERY SIMILAR TO THE CALCOMP
2 /SET OF PLOTTING ROUTINES, BUT ARE WRITTEN FOR A PDP8E WITH AN EAE.
4 //WRITTEN BY JONATHAN R. GROSS
5 /SOCIAL SCIENCES RESEARCH FACILITIES CENTER
7 /UNIVERSITY OF MINNESOTA, WEST BANK
8 /MINNEAPOLIS, MINNESOTA 55455
12 / PAGE0 FIELD 1 LAYOUT
14 /LOCATIONS 160-176 ON PAGE ZERO FIELD ONE ARE USED BECAUSE THE IS NO
15 /OTHER WAY I COULD THINK OF TO GENERATE A 12BIT ADDRESS FOR THE MODE B
16 /INSTRUCTIONS OF THE EAE. (TAKE NOTE DEC!)
18 COMMZ #PAGE0 /SAME AS SYSTEM
20 ORG 160 /START OF SECOND USER AREA
26 / THE REST ARE VALUES FOR LINE GENERATION
35 BZFLG, 0 /PLOTTING IN PROGRESS
39 / THIS IS THE PDP LINE GENERATION ROUTINE
58 CLL CLA CMA RAR /3777 /FOR SIGN TEST
59 SWAB /GO TO CORRECT MODE
61 MQA /OR PRODUCES 7777 ON NEG. DX
67 SWP /ORDER OF EAE REVERSED FROM FPP
76 DAD; DX /COMPARE DX AND DY
77 SMA CLA /EXCHANGE IF DY IS GREATER
80 DCM /DY WAS STORED AS NEG
87 CLL CLA CMA /-1 FOR FLAG
88 OK, DCA ESWCH /EXCHANGE SWITCH
90 / THIS TESTS THE VALUE OF IPEN
92 /A VALUE OF 2 MEANS THE LINE IS DRAWN WITH THE PEN DOWN
93 / A VALUE OF THREE MEANS THAT THE MOVE IS MADE WITH THE PEN UP
94 /ANYTHING ELSE PRODUCES NO CHANGE IN THE PEN STATUS
97 SNA CLA /COULD IT BE A 2 OR 3 ?
102 CLA CLL CMA RAL /-2 WILL PRODUCE A PEN UP COMMAND
104 NOPEN, DCA IPEN /SAVE IT
106 /THE NEXT CODE IS ONCE ONLY
108 PINIT, JMS% ONQI2+1 /ADDD IOT TO SKIP CHAIN
109 6501 /INSTRUCTION FOR SKIP
110 ADDR EXEC /SERVICE ROUTINE ADDRESS
111 TAD JMPIN /GET INSTRUCTION TO JUMP AROUND INIT
113 6507 /ENABLE INTERUPTS
115 JMS% WAITR+1 /WAIT FOR LAST LINE TO FINISH
118 DST; NR /NR=2*(DY) WHERE (DY)=-DY
122 DST; NC /COUNT IS NEG.
129 RAR /MAKE INTO POSATIVE Y
131 CLL CLA IAC RTL /0004 IS THE MINUS X BIT
134 ISZ ESWCH /WERE THEY EXCHANGED
135 SWP /NO, SO PUT MINOR MOVE INTO AC
136 MQA /MAKE A COMBINED MOVE
140 ISZZ BZFLG /SET GOING
141 TAD IPEN /GET PEN MOVE
142 SNA /ZERO MEANS NO CHANGE
144 CIA /SEE IF IT IS ALREADY CORRECT
145 TAD PENL /COMPARE WITH LAST MOVE
146 SZA CLA /SKIP IF SAME
148 NULL, 6506 /MOVE NOWHERE, BUT GENERATE A FAST INTERUPT
150 TAD IPEN /MOVE PEN UP OR DOWN
153 CIF CDF 0 /INTERUPTS WILL TAKE IT FROM HERE
157 IPEN, 0 /PEN CODE AND XR0
158 XSGN, 0 /SIGN OF X AND XR1
161 MAJ, /MAJOR PLOTTER MOVE
163 EXTERN ONQI /SYSTEM ROUTINE TO ENTER SKIP CHAIN
164 COMB, /COMBINED PLOTTER MOVE
165 ONQI2, ADDR ONQI /SYSTEM ROUTINE
168 / THIS IS THE FORTRAN INTERFACE TO THE PLOTTER
172 / CALL DELTAP(DX,DY,IABS(IPEN))
174 / WHERE DX IS THE DIFFERENCE BETWEEN THE CURRENT PEN POSITION AND THE
175 /END POINT OF THE DESIRED LINE MEASURED ALLONG THE X AXIS,
176 / DY IS THE DIFFERENCE MEASURED ALLONG THE Y AXIS,
177 /AND IPEN IS THE PEN CONTROL VALUE
180 BDELTA, F 0.0 /BASE PAGE
181 XPOINT, F 0.0 /POINTERS TO ARGS
182 YPOINT, F 0.0 /POINTERS TO ARGS
183 PPOINT, F 0.0 /POINTERS TO ARGS
184 DELTAP, BASE 0 /SO FLDA 30 AND 0 INSTRUCTIONS ASSEMBLE RIGHT
185 STARTD /2WORD MODE FOR ADDRESS PICKUP
186 FLDA 30 /GET RETURN ADDRESS
187 FSTA GOBAC /SAVE IT FOR RETURN
189 SETB BDELTA /NEW BASE PAGE
190 BASE BDELTA /MAYBE THE ASSEMBLER CAN SAVE US SPACE
191 FSTA BDELTA /POINTER TO ARG LIST
192 SETX IPEN /SET INDEXES
193 LDX 0,1 /FOR ARG PICKUP
194 FLDA% BDELTA,1+ /GET ADDRESS OF FIRST ARG
196 FLDA% BDELTA,1+ /NOW DY
198 FLDA% BDELTA,1+ /PEN UP-DOWN
200 STARTF /BE COMPATABLE WITH FORTRAN
201 FLDA% XPOINT /GET DX VALUE
203 STARTD /WEE ONLY NEED THE MANTISSA
205 STARTF /FORTRAN COMPATABLE
208 STARTD /WEE ONLY NEED THE MANTISSA
210 STARTF /FORTRAN COMPATABLE
212 ATX 0 /GIVE IPEN TO PDP
213 TRAP4 #DELTA2 /CALL PDP
218 / PLOTTER INTERUPT SERVICE
220 EXEC, 0 /PLOTTER SERVICE
221 TAD MOV /ARE WE READY AND WAITING ?
223 JMP NOTRED /NO, CHECK FOR TERMINATION
224 6506 /YES, DOIT AND USE TIME TILL NEXT INTERUPT
226 TADZ NC+1 /ARE WE DONE ?
227 SNA CLA /WE NEED CHECK ONLY THE HIGH ORDER BITS
229 JMS GEN /GENERATE NEXTVE
234 /THE PDP COMES HERE TWICE IN THE LIFE OF A LINE,
235 /ONCE TO START IT, AND ONCE TO FINISH IT
238 SNA CLA /LAST INCREMENT FOR THIS LINE, OR FIRST
240 JMS GEN /GET FIRST MOVE
242 DONE, 6502 /CLEAR PLOTTER FLAG
243 DCAZ BZFLG /SAY WE ARE DONE
245 JMP% HNGLOC+1 /RESTORE OR RETURN
248 GEN, 0 /BEST LINE GENERATION