software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape1 / FLOAT.SB
CommitLineData
7af5ad59
PH
1/ FLOATING POINT MATH PACKAGE
2/
3/
4/
5/
6/
7/
8/
9/
10/
11/COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION
12/
13/
14/
15/
16/
17/
18/
19/
20/
21/
22/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
23/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
24/CORPORATION. DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
25/FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL.
26/
27/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
28/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
29/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
30/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
31/
32/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
33/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
34/DIGITAL.
35/
36/
37/
38/
39/
40/
41/
42/
43/
44/
45\f/ VERSION 5A
46/ APRIL 28, 1977
47/ VERSION NUMBER IS AVAILABLE AT ENTRY POINTS
48/ ENTRIES
49/
50 ENTRY FAD
51 ENTRY FSB
52 ENTRY FMP
53 ENTRY FDV
54 ENTRY STO
55 ENTRY FLOT
56 ENTRY FLOAT
57 ENTRY FIX
58 ENTRY IFIX
59 ENTRY IFAD
60 ENTRY ISTO
61 ENTRY ABS
62 ENTRY CHS
63
64/THE FOLLOWING DEFINITIONS ENABLE LIBRARY OPTIMIZATIONS
65/WHERE CRITICAL TIMING CONSIDERATIONS EXIST.
66/THEY SHOULD BE USED WITH EXTREME CAUTION, AND MUST
67/REFERENCE CURRENT PAGE AND PAGE ZERO SYMBOLS ONLY.
68
69OPDEF TADI 1400
70OPDEF DCAI 3400
71OPDEF JMSI 4400
72OPDEF JMPI 5400
73SKPDF JMSKP 4000
74/
75/
76ABSYM HAC 20
77ABSYM MAC 21
78ABSYM LAC 22
79ABSYM SRH 23
80ABSYM SRM 24
81ABSYM SRL 25
82ABSYM ACS 26
83ABSYM ACX 27
84ABSYM SRS 30
85ABSYM SRX 31
86ABSYM MQH 30
87ABSYM MQM 31
88ABSYM MQL 32
89
90// ADDITION AND SUBTRACTION ROUTINE
91//
92
93 LAP /LEAVE AUTO PAGING
94
95ADSRAD, ADSRAC /SOME INDIRECTS TO SAVE CORE...
96ARSAB, ARS
97GTSPLA, GTSPLT
98NORMAD, NORMAC
99COMAD, COM
100
101FSB, BLOCK 1
102 5 /FLOATING POINT SUBTRACT
103 TAD FSB / CALL 1,FSB
104 DCA FAD / ARG <F.P. VARIABLE>
105 TAD FSB#
106 DCA FAD#
107 CLA CLL CML RAR
108 JMP ED1
109/
110ER1, FAD
111FAD, BLOCK 1
112 5 /FLOATING POINT ADD SUBROUTINE
113ED1, DCA FSB / CALL 1,FAD
114 TAD FAD / ARG <VARIABLE>
115 DCA FAD1
116FAD1, NOP /CDF TO PICK UP ARGUMENT
117 TADI FAD#
118 INC FAD#
119 DCA 7
120 CLA CMA
121 TADI FAD#
122 INC FAD#
123 DCA 10
124FADENT, TAD ER1
125 DCA ER0
126 TAD ACH /EXAMINE THE FLOATING AC
127 SNA CLA
128 JMP FADLD /IT'S ZERO, DO A LOAD...
129 JMSI GTSPLA
130 JMP FADEND
131 TAD SRS
132 TAD FSB
133 DCA SRS
134 TAD ACX
135 SNA
136 JMP SHFAC
137 CIA
138 TAD SRX
139 SMA
140 JMP SHFAC
141 DCA FSB
142SHFSR, TAD SRH
143 CLL RAR
144 DCA SRH
145 TAD SRM
146 RAR
147 DCA SRM
148 TAD SRL
149 RAR
150 DCA SRL
151 ISZ FSB
152 JMP SHFSR
153 JMP JD1
154/
155SHFAC, CMA
156 DCA FSB
157 TAD SRX
158 DCA ACX
159 JMP ED3A
160ED3, JMSI ARSAB
161ED3A, ISZ FSB
162 JMP ED3
163/
164JD1, TAD ACS
165 SMA CLA
166 JMP ED4
167 CLA CLL CMA RTL / GENERATE -3
168 JMSI COMAD
169ED4, TAD SRS
170 SPA CLA
171 JMSI COMAD
172 JMSI ADSRAD
173 TAD HAC
174 SMA CLA
175 JMP ED5
176 CLA CLL CMA RTL
177 JMSI COMAD
178 CLA CLL CML RAR
179ED5, DCA ACS
180 DCA RSW
181FADEND, JMSI NORMAD
182 JMP FADEX
183
184
185FADLD, TAD 7 /FLOATING LOAD WHEN AC=0
186 DCA FADSB#
187 JMS FADSB
188 SZA /CHECK FOR 0.-0. DON'T GIVE -0.
189 TAD FSB
190 AND ABSSW
191 DCA ACH
192 JMS FADSB
193 DCA ACM
194 JMS FADSB
195 DCA ACL
196FADEX, CLA CMA
197 DCA ABSSW
198 DCA FSB /FOR IFAD AFTER SUBTRACT
199 CLA STL RTL /=0002
200 TAD FAD /HIGH SPEED RETURN
201 DCA FAD3
202FAD3, NOP
203 JMPI FAD#
204
205ABSSW, 7777 /ABSOLUTE VALUE SWITCH
206
207FADSB, 0 /TIME SAVING SUBROUTINE
208 NOP /CHANGED TO CDF
209 TADI 10
210 JMPI FADSB
211
212/ FLOATING POINT ABSOLUTE VALUE FUNCTION
213
214ABS, BLOCK 1
215 5 / CALL 1,ABS
216 TAD ABS / ARG <F.P. VARIABLE>
217 DCA FAD
218 TAD ABS#
219 DCA FAD#
220 CLL STA RAR /=3777
221 DCA ABSSW
222 JMP ED1 /GO INTO ADD ROUTINE...
223
224 PAGE
225\f
226
227/ ROUTINE TO GET OPERAND INTO SR, SEPARATE SIGNS AND
228/ EXPONENTS OF AC AND SR, AND MOVE GLOBAL AC TO LOCAL AC.
229/
230
231GTSPLT, 0
232 TAD 7
233 DCA GTS1
234GTS1, NOP
235 TADI 10 /PICK UP HIGH ORDER WORD
236 JMS SPLIT /MUST NOT CHANGE DATA FIELD****
237 DCA SRH
238 TAD ACX
239 SZA
240 INC GTSPLT
241 DCA SRX
242 TAD ACS
243 DCA SRS
244 TADI 10 /PICK UP WORD 2
245 DCA SRM
246 TADI 10 /PICK UP WORD 3
247 DCA SRL
248 TAD ACH
249 JMS SPLIT /EXPAND THE FLOATING AC...
250 DCA HAC
251 DCA RSW
252GTS2, TAD ACM /NEEDS LABEL TO FORCE CDF!
253 DCA MAC
254 TAD ACL
255 DCA LAC
256 JMPI GTSPLT
257/
258
259SPLIT, 0 /BREAK UP SIGN, EXPON, AND HI-ORD BITS
260 DCA TMP /ROUTINE MUST NOT CHANGE DATA FIELD****
261 TAD TMP
262 RAR
263 RTR
264 AND (377
265 DCA ACX
266 CLA CLL CML RAR / = 4000
267 AND TMP
268 DCA ACS
269 TAD TMP
270 AND (7
271 JMPI SPLIT
272TMP, 0
273/
274/
275
276ALS, 0 /LOCAL AC SHIFT LEFT SUBROUTINE
277 TAD LAC
278 CLL RAL
279 DCA LAC
280 TAD MAC
281 RAL
282 DCA MAC
283 TAD HAC
284 RAL
285 DCA HAC
286 JMPI ALS
287/
288/ ADD SR TO AC
289/
290
291ADSRAC, 0 /ADD LOCAL SR TO LOCAL AC
292 CLL
293 TAD LAC
294 TAD SRL
295 DCA LAC
296 CLA RAL
297 TAD MAC
298 TAD SRM
299 DCA MAC
300 CLA RAL
301 TAD HAC
302 TAD SRH
303 DCA HAC
304 JMPI ADSRAC
305/
306/ ROUTINE TO NORMALIZE AND RECOMBINE ACCUMULATOR,
307/ AND PLACE LOCAL ACC. IN GLOBAL ACC.
308/
309ARSAD, ARS /SOME CORE SAVING INDIRECTS
310ERRAD, ERR
311RSW, 0 /ROUNDING BIT
312
313NORMAC, 0 /NORMALIZE AND PACKING SUBROUTINE
314ED6, TAD HAC
315 TAD (7770
316 SPA CLA
317 JMP RUND
318 JMSI ARSAD
319 ISZ ACX
320 JMP ED6
321/
322/ ROUNDOFF ROUTINE
323/
324RUND, TAD RSW
325 SNA CLA
326 JMP LEFTST
327 ISZ LAC
328 JMP LEFTST
329 ISZ MAC
330 JMP LEFTST
331 ISZ HAC
332 DCA RSW
333 JMP ED6
334/
335LEFTST, TAD ACX
336 SNA SPA
337 JMP ZEROUT
338 DCA ACX
339 CLA CLL CMA RTL / = -3
340 TAD HAC
341 SMA SZA CLA
342 JMP COMBIN
343 JMS ALS
344 CLA CMA
345 JMP LEFTST
346/
347COMBIN, TAD ACX
348 CLL RAL
349 RTL
350 SPA
351 JMPI ERRAD
352 TAD HAC
353 TAD ACS
354ED7, DCA ACH
355 TAD MAC
356 DCA ACM
357 TAD LAC
358 DCA ACL
359 JMPI NORMAC
360
361ZEROUT, CLA
362 DCA LAC
363 DCA MAC
364 JMP ED7
365
366 PAGE
367\f/
368/ INDIRECT STORE
369/
370
371ISTO, BLOCK 1
372 5 /FLOATING POINT INDIRECT STORE
373 TAD ISTO / CALL 1,ISTO
374 DCA IST1 / ARG <2WORD ADDRESS>
375IST1, NOP
376 TADI ISTO#
377 INC ISTO#
378 DCA IST2
379 TADI ISTO#
380 DCA 7
381 TAD ISTO
382 DCA STO
383 TAD ISTO#
384 DCA STO#
385IST2, NOP
386 TADI 7
387 INC 7
388 DCA ISTO
389 CLA CMA
390 TADI 7
391 DCA 10
392 TAD ISTO
393 DCA STOSB#
394 JMP STOX
395/
396/
397/ ROUTINE TO STORE CONTENTS OF FL. PT. ACC AND CLEAR IT
398/
399STO, BLOCK 1
400 5 / CALL 1,STO
401 TAD STO / ARG <F.P. VARIABLE>
402 DCA STO1
403STO1, NOP /REPLACED BY CDF
404 TADI STO#
405 INC STO#
406 DCA STOSB#
407 CLA CMA
408 TADI STO#
409 DCA 10
410STOX, TAD ACH
411 JMS STOSB
412 DCA ACH
413 TAD ACM
414 JMS STOSB
415 DCA ACM
416 TAD ACL
417 JMS STOSB
418 DCA ACL
419 INC STO#
420 CLA STL RTL /=0002
421 TAD STO /SOME TIME SAVING CODE...
422 DCA STO3
423STO3, NOP /REPLACED BY CIF CDF
424 JMPI STO#
425
426STOSB, 0 /TIME SAVING SUBROUTINE
427 NOP /CHANGED TO A CDF DESTINATION
428 DCAI 10
429 JMPI STOSB
430/
431/ FLOATING POINT TO FIXED POINT CONVERSION
432/
433FXER, 4611
434 3040 /"FIX" ERROR
435FIX, BLOCK 1
436 5
437FIXX, TAD ACH
438 JMS SPLIT
439 DCA HAC
440 TAD ACM
441 DCA MAC
442 TAD ACX
443 TAD (-214
444 SMA
445 JMP FIXERR
446 TAD (-3
447 DCA SRM
448RSH, JMS ARS
449 ISZ SRM
450 JMP RSH
451 TAD ACS
452 RAL
453 TAD MAC
454 SZL
455 CIA
456FIXRTN, DCA ACS
457 DCA ACH
458 DCA ACM
459 DCA ACL
460 TAD ACS
461 RETRN FIX
462/
463IFIX, BLOCK 1
464 5
465 TAD IFIX
466 DCA ADDR
467 TAD IFIX#
468 DCA ADDR#
469 CALL 1,IFAD
470ADDR, ARG 0
471 TAD IFIX
472 DCA FIX
473 CLA CLL CML RTL / = 2
474 TAD IFIX#
475 DCA FIX#
476 JMP FIXX
477
478FIXERR, CALL 1,ERROR
479 ARG FXER
480 CLA CLL CMA RAR
481 JMP FIXRTN /RETURN WITH 2047 IN FIXED AC
482
483 PAGE
484\f
485/
486/ FLOATING POINT MULTIPLICATION
487/
488
489ADSRAE, ADSRAC /SOME TIME SAVING INDIRECTS
490ARSAE, ARS
491COMAF, COM
492GTSPLB, GTSPLT
493NORMAG, NORMAC
494ER4, FDV
495ER01, ER0
496ER3, FMP
497FMP, BLOCK 1
498 5
499 TAD ER3
500 DCAI ER01
501 TAD FMP
502 DCA FMP1
503FMP1, NOP /CDF TO FIELD OF CALLING PROGRAM
504 TADI FMP#
505 INC FMP#
506 DCA 7
507 CLA CMA
508 TADI FMP#
509 INC FMP#
510 DCA 10
511 JMSI GTSPLB /WARNING ***THIS INSTRUCTION SKIPS***
512 JMP MULZRO
513 TAD ACS
514 TAD SRS
515 DCA ACS
516 TAD ACX
517 TAD SRX
518MULZRO, TAD (-201
519 DCA ACX
520 TAD HAC
521 DCA MQH
522 TAD MAC
523 DCA MQM
524 TAD LAC
525 DCA MQL
526 DCA HAC
527 TAD (-33
528 DCA FMP1
529/
530MULT, JMSI ARSAE
531 TAD MQH
532 RAR
533 DCA MQH
534 TAD MQM
535 RAR
536 DCA MQM
537 TAD MQL
538 RAR
539 DCA MQL
540 SZL
541 JMSI ADSRAE
542 ISZ FMP1
543 JMP MULT
544 JMSI NORMAG
545 RETRN FMP
546/
547/
548/ FLOATING POINT DIVISION
549/
550DIVZ, 4411
551 2632
552FDV, BLOCK 1
553 5
554 TAD ER4
555 DCAI ER01
556 TAD FDV
557 DCA FDV0
558FDV0, NOP /CDF TO FIELD OF CALLING PROGRAM
559 TADI FDV#
560 INC FDV#
561 DCA 7
562 CLA CMA
563 TADI FDV#
564 INC FDV#
565 DCA 10
566 JMSI GTSPLB
567 JMP DIVERR
568 TAD ACS
569 TAD SRS
570 DCA ACS
571 TAD SRX
572 CIA
573 TAD ACX
574 TAD (177
575 DCA ACX
576 DCA MQL
577 TAD (-35
578 DCA FDV0
579DVID, CLA CLL CML RAR / = 4000
580 AND SRH
581 TAD HAC
582 SPA CLA
583 JMP FDV1
584 JMSI COMAF
585FDV1, JMSI ADSRAE
586 TAD MQL
587 RAL
588 DCA MQL
589 TAD MQM
590 RAL
591 DCA MQM
592 TAD MQH
593 RAL
594 DCA MQH
595 JMS ALS
596 ISZ FDV0
597 JMP DVID
598/
599 TAD MQH
600 DCA HAC
601 TAD MQM
602 DCA MAC
603 TAD MQL
604 DCA LAC
605 JMSI NORMAG
606FDVRET, RETRN FDV
607
608DIVERR, CALL 1,ERROR
609 ARG DIVZ
610 CLA CLL CMA RAR
611 DCA ACH
612 JMP FDVRET
613
614 PAGE
615\f/
616/ ROUTINE TO GET TWO'S COMPLEMENT OF TRIPLE WORD NUMBER
617/ IF NO ADDRESS IN AC UPON ENTRY, SR IS ASSUMED.
618/
619COM, 0
620 TAD (25 /ADDRESS OF SRL
621 DCA PTR2
622 CLA CLL CMA RTL / = -3
623 DCA CTR2
624ED8, TAD I PTR2
625 CMA
626 SZL
627 CLL IAC
628 DCA I PTR2
629 CLA CMA CML
630 TAD PTR2
631 DCA PTR2
632 ISZ CTR2
633 JMP ED8
634 JMP I COM
635PTR2, 0
636CTR2, 0
637/
638/ CONVERT FIXED POINT TO FLOATING POINT
639/
640 CPAGE 14
641
642FLOAT, BLOCK 1
643 5 /FLOAT FUNCTION
644 TAD FLOAT / CALL 1,FLOAT
645 DCA FLO1 / ARG <INT. VARIABLE>
646FLO1, NOP
647 TADI FLOAT#
648 INC FLOAT#
649 DCA FLO2
650 TADI FLOAT#
651 INC FLOAT#
652 DCA 7
653 TAD FLOAT
654 DCA FLOT
655 TAD FLOAT#
656 DCA FLOT#
657FLO2, NOP /CDF TO FIELD OF ARGUMENT
658 TADI 7
659 JMP FLOTX
660/
661/ INTEGER TO FLOATING POINT CONVERSION
662/
663FLOT, BLOCK 1
664 5 / CALL 0,FLOT
665FLOTX, CLL /ASSUMES INTEGER VARIABLE IN AC
666 SPA
667 CIA CML
668 DCA MAC
669 DCA HAC
670 DCA LAC
671 RAR
672 DCA ACS
673 TAD (217
674 DCA ACX
675 DCA RSW
676 JMS NORMAC
677 RETRN FLOT
678
679/ INDIRECT FLOATING POINT ADD
680
681 CPAGE 36
682IFAD, BLOCK 1
683 5 / CALL 1,IFAD
684 TAD IFAD / ARG <2WORD ADDRESS>
685 DCA IFA1
686IFA1, NOP
687 TADI IFAD#
688 INC IFAD#
689 DCA IFA2
690 CLA CMA
691 TADI IFAD#
692 INC IFAD#
693 DCA 10
694IFA2, NOP
695 TADI 10
696 DCA 7
697 CLA CMA
698 TADI 10
699 DCA 10
700 TAD IFAD
701 DCA FAD
702 TAD IFAD#
703 DCA FAD#
704 JMP FADENT
705
706
707ARS, 0 /LOCAL AC SHIFT RIGHT SUBROUTINE
708 TAD HAC
709 CLL RAR
710 DCA HAC
711 TAD MAC
712 RAR
713 DCA MAC
714 TAD LAC
715 RAR
716 DCA LAC
717 CLA RAL
718 DCA RSW
719 JMPI ARS
720
721FPER, 5726
722 0614 /"OVFL" ERROR
723CHS, BLOCK 1
724 5 /FLOATING POINT NEGATION
725 TAD ACH / CALL 0,CHS
726 SZA
727 TAD (4000
728CHSRET, DCA ACH
729 RETRN CHS
730/
731/ ERROR ROUTINES
732/
733ER0, 0 /CONTAINS ADDRESS OF CURRENT ENTRY PT
734ERR, CLA
735 TAD I ER0 /BANK CALL IS FROM
736 DCA CHS
737 ISZ ER0 /INDEX TO ADDRESS
738 TAD I ER0 /ADDRESS
739 DCA CHS#
740 CALL 1,ERROR
741 ARG FPER
742 CLA CLL CMA RAR
743 JMP CHSRET
744
745 END
746\f