8fac3a64 |
1 | * |
2 | * |
3 | * |
4 | * MATRIX FORMAT: |
5 | * |
6 | * a11 a12 |
7 | * |
8 | * a21 a22 |
9 | * |
10 | * a11-a22 are single precision float variables (2 word). |
11 | * |
12 | * |
13 | * IN MEMORY LAYOUT: |
14 | * |
15 | * a11 |
16 | * a11 |
17 | * a12 |
18 | * a12 |
19 | * a21 |
20 | * a21 |
21 | * a22 |
22 | * a22 |
23 | * |
24 | * |
25 | * JST M$INIT INITIALIZE MATRIX TO IDENTITY |
26 | * DAC MATRIX ADDRESS |
27 | * |
28 | * |
29 | ******************************************************************************** |
30 | * |
31 | SUBR M$INIT,INIT INITIALIZE MATRIX |
32 | SUBR M$MUL,MUL MATRIX MULTIPLICATION |
33 | SUBR M$APLI,APLI APPLY MATRIX TO INTEGER VECTOR |
34 | SUBR M$APII,APII APPLY MATRIX TO PAIR OF INTEGERS |
35 | SUBR M$ROT,XXX ADD ROTATION TO MATRIX ARGUMENT |
36 | SUBR M$SCLE,SCLE SCALE MATRIX |
37 | * |
38 | REL |
39 | ORG '0 |
40 | * |
41 | * |
42 | * |
43 | * |
44 | * |
45 | ******************************************************************************** |
46 | * |
47 | * |
48 | INIT DAC ** |
49 | LDX* INIT |
50 | * |
51 | LDA* INIT GET MATRIX BASE ADDRESS |
52 | STA IM11 |
53 | ADD =6 |
54 | STA IM22 |
55 | IRS INIT |
56 | * |
57 | CRA |
58 | STA 2,1 |
59 | STA 3,1 |
60 | STA 4,1 |
61 | STA 5,1 |
62 | CALL FLOAT |
63 | DAC ONE |
64 | CALL H$22 |
65 | IM11 DEC 0 |
66 | CALL H$22 |
67 | IM22 DEC 0 |
68 | * |
69 | JMP* INIT |
70 | ONE DEC 1 |
71 | * |
72 | * |
73 | ******************************************************************************** |
74 | * |
75 | * C=A*B |
76 | * |
77 | * a11 a12 b11 b12 a11*b11 a21*b12 |
78 | * a21 a22 b21 b22 a12*b21 a22*b22 |
79 | * |
80 | * JST MUL |
81 | * DAC MC |
82 | * DAC MA |
83 | * DAC MB |
84 | * |
85 | MUL DAC ** |
86 | LDX* MUL |
87 | * |
88 | LDA* MUL |
89 | STA PC11 |
90 | ADD =2 |
91 | STA PC12 |
92 | ADD =2 |
93 | STA PC21 |
94 | ADD =2 |
95 | STA PC22 |
96 | IRS MUL |
97 | * |
98 | LDA* MUL |
99 | STA PA11 |
100 | ADD =2 |
101 | STA PA12 |
102 | ADD =2 |
103 | STA PA21 |
104 | ADD =2 |
105 | STA PA22 |
106 | ADD =2 |
107 | * |
108 | IRS MUL |
109 | * |
110 | LDA* MUL |
111 | STA PB11 |
112 | ADD =2 |
113 | STA PB12 |
114 | ADD =2 |
115 | STA PB21 |
116 | ADD =2 |
117 | STA PB22 |
118 | ADD =2 |
119 | * |
120 | IRS MUL |
121 | IRS MUL |
122 | * |
123 | * |
124 | * a11 a12 b11 b12 a11*b11 a21*b12 |
125 | * a21 a22 b21 b22 a12*b21 a22*b22 |
126 | * |
127 | CALL L$22 LOAD REAL |
128 | PA11 DAC 0 |
129 | CALL M$22 MULTIPLY |
130 | PB11 DAC 0 |
131 | CALL H$22 STORE |
132 | PC11 DEC 0 |
133 | * |
134 | CALL L$22 |
135 | PA21 DEC 0 |
136 | CALL M$22 |
137 | PB12 DEC 0 |
138 | CALL H$22 |
139 | PC12 DEC 0 |
140 | * |
141 | CALL L$22 |
142 | PA12 DEC 0 |
143 | CALL M$22 |
144 | PB21 DEC 0 |
145 | CALL H$22 |
146 | PC21 DEC 0 |
147 | * |
148 | CALL L$22 |
149 | PA22 DEC 0 |
150 | CALL M$22 |
151 | PB22 DEC 0 |
152 | CALL H$22 |
153 | PC22 DEC 0 |
154 | * |
155 | * |
156 | JMP* MUL |
157 | * |
158 | ******************************************************************************** |
159 | * |
160 | * |
161 | SCLE DAC ** SCALE MATRIX |
162 | LDX* SCLE |
163 | * |
164 | LDA* SCLE GET MATRIX BASE ADDRESS |
165 | STA SM11 |
166 | STA TM11 |
167 | ADD =6 |
168 | STA SM22 |
169 | STA TM22 |
170 | IRS SCLE |
171 | LDA* SCLE |
172 | STA SX |
173 | STA SY |
174 | IRS SCLE TALLY RETURN ADDRESS |
175 | * |
176 | CALL L$22 |
177 | SM11 DAC 0 |
178 | CALL M$22 |
179 | SX DAC 0 |
180 | CALL H$22 |
181 | TM11 DAC 0 |
182 | * |
183 | CALL L$22 |
184 | SM22 DAC 0 |
185 | CALL M$22 |
186 | SY DAC 0 |
187 | CALL H$22 |
188 | TM22 DAC 0 |
189 | * |
190 | JMP* SCLE |
191 | * |
192 | * |
193 | * |
194 | * |
195 | ******************************************************************************** |
196 | * |
197 | * |
198 | * Apply Pair of integers and round |
199 | * |
200 | * JST M$APII |
201 | * DAC MATRIX |
202 | * DAC X |
203 | * DAC Y |
204 | * DAC 0 |
205 | * |
206 | APII DAC ** |
207 | * |
208 | LDA* APII |
209 | STA MP11 |
210 | ADD =2 |
211 | STA MP12 |
212 | ADD =2 |
213 | STA MP21 |
214 | ADD =2 |
215 | STA MP22 |
216 | IRS APII |
217 | * |
218 | LDA* APII |
219 | STA XP1 |
220 | STA XP2 |
221 | IRS APII |
222 | LDA* APII |
223 | STA YP1 |
224 | STA YP2 |
225 | IRS APII |
226 | IRS APII |
227 | JST APL CALL REAL ROUTINE |
228 | JMP* APII |
229 | * |
230 | ******************************************************************************** |
231 | * |
232 | * |
233 | * Apply to integer vector and round |
234 | * |
235 | * JST M$APLI |
236 | * DAC MATRIX |
237 | * DAC X Y MUST FOLLOW IN NEXT LOCATION! |
238 | * |
239 | APLI DAC ** |
240 | * |
241 | LDA* APLI |
242 | STA MP11 |
243 | ADD =2 |
244 | STA MP12 |
245 | ADD =2 |
246 | STA MP21 |
247 | ADD =2 |
248 | STA MP22 |
249 | IRS APLI |
250 | * |
251 | LDA* APLI |
252 | STA XP1 |
253 | STA XP2 |
254 | AOA |
255 | STA YP1 |
256 | STA YP2 |
257 | IRS APLI |
258 | IRS APLI |
259 | JST APL |
260 | JMP* APLI |
261 | * |
262 | * |
263 | **************************************** |
264 | * |
265 | * |
266 | APL DAC ** REAL APPLY ROUTINE |
267 | * |
268 | CALL FLOAT LOAD SINGLE PRECISION FLOAT FROM 1-WORD INTEGER |
269 | XP1 DAC 0 |
270 | CALL M$22 MULTIPLY FLOAT*FLOAT |
271 | MP11 DAC 0 |
272 | CALL H$22 STORE FLOAT |
273 | DAC TMP |
274 | CALL FLOAT |
275 | YP1 DAC 0 |
276 | CALL M$22 |
277 | MP12 DAC 0 |
278 | CALL A$22 |
279 | DAC TMP |
280 | JST RND ROUND AND CONVERT TO INTEGER |
281 | STA PA21 STORE NEW X VALUE INTO TEMPORARY LOCATION |
282 | **** |
283 | CALL FLOAT |
284 | XP2 DAC 0 |
285 | CALL M$22 |
286 | MP21 DAC 0 |
287 | CALL H$22 |
288 | DAC TMP |
289 | * |
290 | CALL FLOAT |
291 | YP2 DAC 0 |
292 | CALL M$22 |
293 | MP22 DAC 0 |
294 | CALL A$22 |
295 | DAC TMP |
296 | JST RND NOW INTEGER IN AC |
297 | STA* YP1 STORE NEW Y VALUE |
298 | * |
299 | LDA PA21 |
300 | STA* XP1 |
301 | JMP* APL RETURN TO CALLER. |
302 | * |
303 | **************************************** |
304 | * |
305 | RND DAC ** ROUND A/B AND RETURN WITH INTEGER IN A |
306 | CALL A$22 ADD 0.5 |
307 | DAC HLF |
308 | CALL C$21 CONVERT TO INTEGER |
309 | NOP |
310 | JMP* RND |
311 | HLF OCT '040100 CONSTANT 0.5 |
312 | OCT '000000 |
313 | * |
314 | **************************************** |
315 | * |
316 | TMP BSS 2 |
317 | * |
318 | * |
319 | ******************************************************************************** |
320 | * |
321 | * |
322 | * |
323 | * |
324 | * |
325 | * |
326 | * |
327 | * |
328 | * |
329 | * |
330 | * |
331 | * |
332 | * |
333 | * |
334 | * |
335 | * |
336 | * |
337 | * |
338 | * |
339 | * |
340 | * |
341 | * |
342 | * |
343 | * |
344 | * |
345 | * |
346 | * |
347 | * |
348 | * |
349 | * |
350 | * |
351 | * |
352 | * |
353 | * |
354 | * |
355 | * |
356 | * |
357 | * |
358 | * |
359 | * |
360 | * |
361 | * |
362 | * |
363 | * |
364 | * |
365 | * |
366 | * |
367 | * |
368 | * |
369 | * |
370 | * |
371 | * |
372 | * |
373 | * |
374 | * |
375 | * |
376 | * |
377 | * |
378 | * |
379 | * |
380 | * |
381 | * |
382 | * |
383 | * |
384 | * |
385 | * |
386 | * |
387 | * |
388 | * |
389 | * |
390 | * |
391 | * |
392 | * |
393 | * |
394 | * |
395 | * |
396 | * |
397 | * |
398 | * |
399 | * |
400 | * |
401 | * |
402 | * |
403 | * |
404 | * |
405 | * |
406 | * |
407 | * |
408 | * |
409 | * |
410 | ******************************************************************************** |
411 | * |
412 | END |
413 | * |
414 | ******************************************************************************** |
415 | |
416 | |
417 | |
418 | |
419 | |
420 | |
421 | |
422 | |
423 | |
424 | |
425 | |
426 | |
427 | |
428 | |
429 | |
430 | |
431 | |
432 | |
433 | |
434 | |
435 | |
436 | |
437 | |
438 | |
439 | |
440 | |
441 | |
442 | |
443 | |
444 | |
445 | |
446 | |
447 | |
448 | |
449 | |
450 | |
451 | |
452 | |
453 | |
454 | |
455 | |
456 | |
457 | |
458 | |
459 | |
460 | |
461 | |
462 | |
463 | |
464 | |
465 | |
466 | |
467 | |
468 | |
469 | |
470 | |
471 | |
472 | |
473 | |
474 | |
475 | |
476 | |
477 | |
478 | |
479 | |
480 | |
481 | |
482 | |
483 | |
484 | |
485 | |
486 | |
487 | |
488 | |
489 | |
490 | |
491 | |
492 | |
493 | |
494 | |
495 | |
496 | |
497 | |
498 | |
499 | |
500 | |
501 | |
502 | |
503 | |
504 | |
505 | |
506 | |
507 | |
508 | |
509 | |
510 | |
511 | |
512 | |
513 | |
514 | |
515 | |
516 | |
517 | |