| 1 | /\r |
| 2 | / F4 LIBRARY P L O T . R A\r |
| 3 | /\r |
| 4 | / PLOT.RA RELEASE 22-MAY-74 ON S8-LFTNA-C-VAV\r |
| 5 | /\r |
| 6 | / UPDATES:\r |
| 7 | /\r |
| 8 | / CLRPLT: INSERTS THE DISPLY TASK ONLY ONCE INTO THE IDLE QUEUE.\r |
| 9 | / 11-SEP-80 HA\r |
| 10 | /\r |
| 11 | /\r |
| 12 | / CLRPLT: THERE IS AN OPTIONAL THIRD PARAMETER. IT SPECIFIES THE NUMBER\r |
| 13 | / OF (X,Y) POINTS ALREADY PRESENT IN THE BUFFER TO BE DISPLAYED.\r |
| 14 | / EACH (X,Y) PAIR CONSITS OF TWO SIGNED 10 BIT INTEGERS STORED IN ONE\r |
| 15 | / WORD EACH.\r |
| 16 | /\r |
| 17 | / EXAMPLE: CALL CLRPLT (BUFFER,LENGTH)\r |
| 18 | / CALL CLRPLT (SAMPLE,LENGHT,SAMCNT) DISPLAYES SAMCNT POINTS \r |
| 19 | /\r |
| 20 | / 11-SEP-80 HA\r |
| 21 | /\r |
| 22 | /\r |
| 23 | LINC=6141\r |
| 24 | PDP=2\r |
| 25 | DIS=140\r |
| 26 | COMMZ #PAGE0 /STANDARD PAGE 0\r |
| 27 | ORG 17\r |
| 28 | 0 /ALPHA REG FOR PDP-12\r |
| 29 | ENTRY #DISP /THIS IS SO #PAGE0 CAN BE LOADED\r |
| 30 | #DISP,\r |
| 31 | DISPLY, 0\r |
| 32 | TAD BUFADR+2 /GET BUFFER ADDRESS\r |
| 33 | DCA BUFADR\r |
| 34 | TAD DBFLD /SET UP CHANGABLE CDF\r |
| 35 | DCA FLDDB\r |
| 36 | DBFLD, HLT /GO TO FIRST FIELD OF BUFFER\r |
| 37 | TAD PLTXR+4 /NUMBER OF POINTS\r |
| 38 | CMA\r |
| 39 | DCA NPTS /NEGATED\r |
| 40 | JMP ENDDL /BEGIN DISPLAY\r |
| 41 | DSPLUP, /START OF DISPLAY LOOP\r |
| 42 | IFSW 8 <\r |
| 43 | TAD% BUFADR /GET X VALUE\r |
| 44 | 6053 /LOAD X DISPLACEMENT\r |
| 45 | CLA\r |
| 46 | ISZ BUFADR /BUMP ADDRESS\r |
| 47 | SKP CLA\r |
| 48 | JMS BUMPF /BUMP FIELD\r |
| 49 | TAD% BUFADR\r |
| 50 | 6054 /LOAD Y DISPLACEMENT\r |
| 51 | CLA\r |
| 52 | ISZ BUFADR /INCR ADDRESS\r |
| 53 | SKP CLA\r |
| 54 | JMS BUMPF /INCR FIELD\r |
| 55 | 6052 /SKIP ON BEAM POSITIONED\r |
| 56 | JMP .-1\r |
| 57 | 6055 /INTENSIFY POINT\r |
| 58 | >\r |
| 59 | IFNSW 8 <\r |
| 60 | TAD% BUFADR /GET X DISPLACEMENT\r |
| 61 | DCAZ 17 /INTO ALPHA REG\r |
| 62 | ISZ BUFADR /INCREMENT ADDRESS\r |
| 63 | SKP CLA\r |
| 64 | JMS BUMPF /INCREMENT DATA FIELD\r |
| 65 | TAD% BUFADR /GET Y DISPLACEMENT\r |
| 66 | CIF 10\r |
| 67 | LINC\r |
| 68 | DIS 17\r |
| 69 | PDP\r |
| 70 | CLA\r |
| 71 | ISZ BUFADR /INCR BUFFER POINTER\r |
| 72 | SKP CLA\r |
| 73 | JMS BUMPF\r |
| 74 | >\r |
| 75 | ENDDL, ISZ NPTS /INCREMENT COUNTER\r |
| 76 | JMP DSPLUP /LOOP\r |
| 77 | CDF 10\r |
| 78 | JMP% DISPLY /RETURN TO IDLE Q\r |
| 79 | BUMPF, 0 /FIELD CHANGER\r |
| 80 | TAD FLDDB /BUMP FIELD\r |
| 81 | TAD L10\r |
| 82 | DCA FLDDB\r |
| 83 | FLDDB, HLT /CHANGE IT NOW\r |
| 84 | JMP% BUMPF\r |
| 85 | PUTONQ, 0 /PUT DISPLY ONTO BACKROUND Q\r |
| 86 | TAD BUFADR+1 /CREATE CDF FOR DISPLAY LOOP\r |
| 87 | AND L7\r |
| 88 | CLL RAL\r |
| 89 | RTL\r |
| 90 | TAD FLD0\r |
| 91 | DCA DBFLD\r |
| 92 | IFSW 8 <\r |
| 93 | 6050 /CLEAR DISPLAY LOGIC\r |
| 94 | >\r |
| 95 | CDF CIF\r |
| 96 | SKP\r |
| 97 | JMP% PUTONQ\r |
| 98 | DCA .-2 /ONCE ONLY\r |
| 99 | CIF CDF 10\r |
| 100 | JMS% ONQBX+1\r |
| 101 | ADDR DISPLY\r |
| 102 | CIF CDF\r |
| 103 | JMP% PUTONQ /CALLED VIA TRAP4\r |
| 104 | EXTERN ONQB\r |
| 105 | ONQBX, ADDR ONQB\r |
| 106 | BUFADR, 0\r |
| 107 | 0\r |
| 108 | PLTXR, 0;0;0;-1;0;0\r |
| 109 | FLD0, CDF\r |
| 110 | L7, 7\r |
| 111 | L10, 10\r |
| 112 | NPTS, 0\r |
| 113 | \f SECT PLOT\r |
| 114 | JA #PLOT\r |
| 115 | NAME, TEXT +PLOT +\r |
| 116 | PLTBAS, 0;0;0\r |
| 117 | XLO,\r |
| 118 | X, 0;0;0\r |
| 119 | YLO,\r |
| 120 | Y, 0;0;0\r |
| 121 | XHI,\r |
| 122 | N, 0;0;0\r |
| 123 | YHI, 0;0;0\r |
| 124 | ADRBUF, 0;0;0\r |
| 125 | TEMP, 0;0;0\r |
| 126 | IFSW 8 <\r |
| 127 | YSCALE, F 1022.\r |
| 128 | YZERO, F 511.\r |
| 129 | ORG 10*3+PLTBAS\r |
| 130 | FNOP\r |
| 131 | JA NAME+3\r |
| 132 | 0\r |
| 133 | PLTRET, JA .\r |
| 134 | XSCALE, F 786.\r |
| 135 | XZERO, F 511.\r |
| 136 | RANGE, F 1022.\r |
| 137 | BASE, F 511.>\r |
| 138 | IFNSW 8 <\r |
| 139 | YSCALE, F 510.\r |
| 140 | YZERO, F 255.\r |
| 141 | ORG 10*3+PLTBAS\r |
| 142 | FNOP\r |
| 143 | JA NAME+3\r |
| 144 | 0\r |
| 145 | PLTRET, JA .\r |
| 146 | XSCALE, F 392.\r |
| 147 | XZERO, F 0.\r |
| 148 | RANGE, F 510.\r |
| 149 | BASE, F 255.>\r |
| 150 | L1P5, F 1.5\r |
| 151 | XYPAIR, 0;0;0\r |
| 152 | #PLOT, BASE PLTBAS\r |
| 153 | JSA SETUP\r |
| 154 | LDX 1,1\r |
| 155 | FLDA% PLTBAS,1 /GET ARG ADDRESSES\r |
| 156 | FSTA N\r |
| 157 | FLDA% PLTBAS,1+\r |
| 158 | FSTA X\r |
| 159 | FLDA% PLTBAS,1+\r |
| 160 | FSTA Y\r |
| 161 | STARTF\r |
| 162 | FLDA% N /NUMBER OF POINTS TO PLOT\r |
| 163 | FNEG\r |
| 164 | ATX 1 /INTO XR 1\r |
| 165 | LDX -1,2 /XR 2 IS THE INDEXER\r |
| 166 | PLTLUP, JXN PLOOP,3+ /ANY MORE ROOM IN PLOT BUFFER ?\r |
| 167 | LDX -1,3 /NO, FIX COUNT\r |
| 168 | JA PLTRET\r |
| 169 | PLOOP, FLDA% Y,2+ /GET Y VALUE\r |
| 170 | FMUL YSCALE /SCALE IT\r |
| 171 | FSUB YZERO /SUBTRACT LOWER LIMIT\r |
| 172 | ALN 0\r |
| 173 | FSTA XYPAIR\r |
| 174 | FLDA% X,2 /GET X VALUE OF PAIR\r |
| 175 | FMUL XSCALE /SCALE IT\r |
| 176 | FSUB XZERO /SUBTRACT LOWER LIMIT\r |
| 177 | ALN 0\r |
| 178 | STARTD\r |
| 179 | FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT\r |
| 180 | FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER\r |
| 181 | FSTA% ADRBUF,4\r |
| 182 | ADDX 1,4 /TROUBLE IS, WE WANT POST INCREMENT\r |
| 183 | STARTF\r |
| 184 | JXN PLTLUP,1+ /LOOP IF MORE POINTS\r |
| 185 | JA PLTRET\r |
| 186 | BASE 0\r |
| 187 | SETUP, JA .\r |
| 188 | STARTD\r |
| 189 | FLDA 30 /GET RETURN ADDRESS\r |
| 190 | FSTA PLTRET\r |
| 191 | FLDA 0 /GET ARG POINTER\r |
| 192 | BASE PLTBAS\r |
| 193 | SETB PLTBAS\r |
| 194 | SETX PLTXR\r |
| 195 | FSTA PLTBAS\r |
| 196 | JA SETUP\r |
| 197 | \f SECT PLOTR\r |
| 198 | BASE PLTBAS\r |
| 199 | JSA SETUP\r |
| 200 | LDX 1,1\r |
| 201 | FLDA% PLTBAS,1 /GET ARG ADDRESSES\r |
| 202 | FSTA N\r |
| 203 | FLDA% PLTBAS,1+\r |
| 204 | FSTA X\r |
| 205 | FLDA% PLTBAS,1+\r |
| 206 | FSTA Y\r |
| 207 | FLDA% PLTBAS,1+\r |
| 208 | FSTA YHI\r |
| 209 | STARTF\r |
| 210 | FLDA% YHI\r |
| 211 | ATX 5\r |
| 212 | FLDA% N /NUMBER OF POINTS TO PLOT\r |
| 213 | FNEG\r |
| 214 | ATX 1 /INTO XR 1\r |
| 215 | LDX -1,2 /XR 2 IS THE INDEXER\r |
| 216 | PLOTRL, FLDA% Y,2+ /GET Y VALUE\r |
| 217 | FMUL YSCALE /SCALE IT\r |
| 218 | FSUB YZERO /SUBTRACT LOWER LIMIT\r |
| 219 | ALN 0\r |
| 220 | FSTA XYPAIR\r |
| 221 | FLDA% X,2 /GET X VALUE OF PAIR\r |
| 222 | FMUL XSCALE /SCALE IT\r |
| 223 | FSUB XZERO /SUBTRACT LOWER LIMIT\r |
| 224 | ALN 0\r |
| 225 | STARTD\r |
| 226 | FSTA XYPAIR,0 /XYPAIR+1,+2 CONTAINS THE POINT\r |
| 227 | FLDA XYPAIR /STORE THIS DOUBLE WORD INTO PLOT BUFFER\r |
| 228 | FSTA% ADRBUF,5\r |
| 229 | ADDX 1,5 /TROUBLE IS, WE WANT POST INCREMENT\r |
| 230 | STARTF\r |
| 231 | JXN PLOTRL,1+ /LOOP IF MORE POINTS\r |
| 232 | JA PLTRET\r |
| 233 | \f SECT CLRPLT\r |
| 234 | BASE PLTBAS\r |
| 235 | JSA SETUP\r |
| 236 | LDX 0,4 /DISABLE DISPLAY LOOP\r |
| 237 | LDX 1,1\r |
| 238 | FLDA% PLTBAS,1 /GET ARG POINTERS\r |
| 239 | FSTA N\r |
| 240 | FLDA% PLTBAS,1+\r |
| 241 | FSTA ADRBUF\r |
| 242 | FSTA BUFADR+1\r |
| 243 | STARTF\r |
| 244 | FLDA% N /SIZE OF BUFFER\r |
| 245 | FMUL L1P5 /NUMBER OF 2 WORD PAIRS\r |
| 246 | FNEG\r |
| 247 | ATX 3 /INTO SOME CHOICE XRS\r |
| 248 | STARTD\r |
| 249 | FLDA% PLTBAS,0 / LOAD RETURN ADR. --> FAC\r |
| 250 | FSUB PLTBAS / SUBTRACT PARAMETER LIST ADR.\r |
| 251 | FSUB LC6 / FAC=0 <==> TWO PARAM. ELSE FAC=2 <==> THREE PAR.\r |
| 252 | JEQ CTRP0 / CONTINUE AT CTRP0 IF THERE ARE TWO PARA. ONLY\r |
| 253 | FLDA% PLTBAS,1+ / LOAD ADR. OF THIRD PARAMETER\r |
| 254 | FSTA TEMP / LOAD CONTENTS OF THIRD PARAMETER\r |
| 255 | STARTF\r |
| 256 | FLDA% TEMP / NUMBER OF POINTS ALREADY TO DISPLAY \r |
| 257 | ATX 4 / INSERT IT INTO X4 THE WORD COUNT REGISTER\r |
| 258 | CTRP0,\r |
| 259 | STARTF\r |
| 260 | CTRP, TRAP4 PUTONQ /PUTISPLY ONTO IDLE Q\r |
| 261 | STARTD / BUT PUT DISPLY ONLY ONCE ONTO THE IDLE LOOP\r |
| 262 | FLDA LFNOP\r |
| 263 | FSTA CTRP / CLEAR TRAP4 INTO FNOP\r |
| 264 | STARTF\r |
| 265 | LFNOP, FNOP / TWO FNOP INSTRUCTION MUST FOLLOW HERE!\r |
| 266 | FNOP\r |
| 267 | CLRRET, JA PLTRET\r |
| 268 | LC6, 0;2\r |
| 269 | \f SECT SCALE /SET SCALING FACTORS\r |
| 270 | BASE PLTBAS\r |
| 271 | JSA SETUP\r |
| 272 | LDX 1,1\r |
| 273 | FLDA% PLTBAS,1 /GET ARGS\r |
| 274 | FSTA XLO\r |
| 275 | FLDA% PLTBAS,1+\r |
| 276 | FSTA YLO\r |
| 277 | FLDA% PLTBAS,1+\r |
| 278 | FSTA XHI\r |
| 279 | FLDA% PLTBAS,1+\r |
| 280 | FSTA YHI\r |
| 281 | STARTF\r |
| 282 | FLDA% XHI /COMPUTE X RANGE\r |
| 283 | FSUB% XLO\r |
| 284 | FSTA XHI\r |
| 285 | FLDA% YHI /NOW Y RANGE\r |
| 286 | FSUB% YLO\r |
| 287 | FSTA YHI\r |
| 288 | FLDA RANGE /COMPUTE XSCALE\r |
| 289 | FDIV XHI\r |
| 290 | FSTA XSCALE\r |
| 291 | FLDA RANGE /NOW Y SCALE\r |
| 292 | FDIV YHI\r |
| 293 | FSTA YSCALE\r |
| 294 | FLDA% XLO /COMPUTE XZERO\r |
| 295 | FMUL RANGE\r |
| 296 | FDIV XHI\r |
| 297 | IFSW 8 <\r |
| 298 | FADD BASE>\r |
| 299 | FSTA XZERO\r |
| 300 | FLDA% YLO /NOW YZERO\r |
| 301 | FMUL RANGE\r |
| 302 | FDIV YHI\r |
| 303 | FADD BASE\r |
| 304 | FSTA YZERO\r |
| 305 | SCLRET, JA PLTRET\r |
| 306 | END\r |
| 307 | \f\1a\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0 |