software: Added more and more
[pdp8.git] / sw / os8 / v3d / sources / system / dectapes / dectape3 / INTEGR.SB
CommitLineData
7af5ad59
PH
1/INTEGER MATH PACKAGE OS8 FORTRAN II LIBRARY
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/
49/
50 ENTRY IREM
51 ENTRY IABS
52 ENTRY DIV
53 ENTRY MPY
54 ENTRY IRDSW
55 ENTRY CLEAR
56 ENTRY SUBSC
57
58/THE FOLLOWING DEFINITIONS ARE TO ENABLE LIBRARY
59/OPTIMIZATIONS WHERE CRITICAL TIMING CONSIDERATIONS
60/EXIST. THEY SHOULD BE USED WITH EXTREME CAUTION,
61/AND MUST REFERENCE CURRENT PAGE AND PAGE ZERO SYMBOLS
62/ONLY.
63
64 OPDEF TADI 1400
65 OPDEF DCAI 3400
66 OPDEF JMSI 4400
67 OPDEF JMPI 5400
68
69 LAP /LV AUTO PAGING FOR PAL-III LIKE CODE
70
71AC, 0 /LOCATIONS USED BY MPY & DIV
72MQ, 0
73SIGN, 0
74CTR, 0
75LOC, 0
76SAV, 0
77
78MPY, BLOCK 1
79 5 /INTEGER MULTIPLY SUBROUTINE
80 DCA MQ / CALL 1,MPY
81 TAD MPY / ARG <NUMBER>
82 DCA MPY1
83MPY1, NOP /REPLACED BY CDF
84 TADI MPY#
85 INC MPY#
86 DCA MPY2
87 TADI MPY#
88 INC MPY#
89 DCA DIV
90MPY2, NOP /REPLACED BY CDF
91 TADI DIV
92 JMS MPYSB
93 RETRN MPY
94
95MPYSB, 0 /INTERNAL MULTIPLICATION SUBR
96 DCA DIV
97 TAD (-14
98 DCA CTR
99BACK, CLL RAL
100 DCA AC
101 TAD MQ
102 CLL RAL
103 DCA MQ
104 SZL
105 TAD DIV
106 TAD AC
107 ISZ CTR
108 JMP BACK
109 JMPI MPYSB
110/
111 CPAGE 4
112DIVZA, DIVZ
113DVERR, 4411 /"DIVZ" ERROR
114 2632
115DIV, BLOCK 1
116 5 /INTEGER DIVIDE SUBROUTINE
117 SMA / CALL 1,DIV
118 JMP AD1 / ARG <DIVISOR>
119 INC SIGN
120 CIA
121AD1, DCA MQ
122 DCA CTR
123 TAD DIV
124 DCA DIV1
125DIV1, NOP /REPLACED BY CDF
126 TADI DIV#
127 INC DIV#
128 DCA DIV2
129 TADI DIV#
130 INC DIV#
131 DCA MPY
132DIV2, NOP
133 TADI MPY
134 SNA
135 JMPI DIVZA /ATTEMPTING TO DIVIDE BY ZERO
136 SMA
137 JMP LOOP1
138 INC SIGN
139 CIA
140LOOP1, CLL RAL
141 INC CTR
142 SMA
143 JMP LOOP1
144 CLL RAR
145 DCA LOC
146 TAD LOC
147 CIA
148 DCA MPY
149 TAD CTR
150 CMA
151 DCA CTR
152 TAD CTR
153 DCA SAV
154 DCA AC
155 TAD MQ
156LOOP2, TAD MPY
157LOOP3, ISZ CTR
158 SKP
159 JMP DONE
160 STL
161 SPA
162 CLL
163 DCA MQ
164 TAD AC
165 RAL
166 DCA AC
167 TAD MQ
168 CLL RAL
169 SNL
170 JMP LOOP2
171 TAD LOC
172 JMP LOOP3
173DONE, CLA
174 TAD SIGN
175 RAR
176 CLA
177 DCA SIGN
178 TAD AC
179 SZL
180 CIA
181 RETRN DIV
182
183IREM, BLOCK 1
184 5 /INTEGER REMAINDER SUBROUTINE
185 CLA / CALL 1,IREM
186 INC IREM# / ARG <UNUSED VARIABLE>
187 INC IREM#
188 INC SAV /IREM MUST HAVE AN ARGUMENT
189 TAD MQ /BECAUSE IT IS A FUNCTION.
190 SPA /IREM CAN BE CALLED ONLY ONCE
191 TAD LOC /AFTER EACH DIVISION ...
192 SKP /SUBSEQUENT CALLS WILL RETURN ZERO.
193LOP, CLL RAR
194 ISZ SAV
195 JMP LOP
196 RETRN IREM
197/
198 PAGE
199\f
200IABS, BLOCK 1
201 5 /INTEGER ABS VALUE FUNCTION
202 TAD IABS / CALL 1,IABS
203 DCA IAB1 / ARG <INTEGER VARIABLE>
204IAB1, NOP
205 TADI IABS#
206 INC IABS#
207 DCA IAB2
208 TADI IABS#
209 INC IABS#
210 DCA IRDSW
211IAB2, NOP /CDF TO ARGUMENT FIELD
212 TADI IRDSW
213 SPA
214 CIA
215 RETRN IABS
216
217IRDSW, BLOCK 1
218 5 /READ SWITCH REGISTER FUNCTION
219 CLA OSR
220 INC IRDSW#
221 INC IRDSW#
222 RETRN IRDSW
223
224DIVZ, CALL 1,ERROR /ZERO DIVIDE ERROR
225 ARG DVERR
226 CLA CLL CMA RAR
227 RETRN DIV
228
229/THE FLOATING POINT CLEAR ROUTINE WAS ADDED TO "INTEGR"
230/SO THAT PROGRAMS WHICH DO NOT USE FLOATING POINT MATH
231/CAN RUN WITHOUT LOADING THE F.P. MATH PACKAGE.
232
233CLEAR, BLOCK 1
234 5 /FLOATING POINT CLEAR FUNCTION
235 DCA IRDSW
236 DCA ACH
237 DCA ACM
238 DCA ACL
239 TAD IRDSW
240 RETRN CLEAR
241
242\f
243/ THE FOLLOWING CAN BE USED FOR DOUBLY OR SINGLY
244/ SUBSCRIPTED ARRAYS. ON ENTRY THE AC SHOULD BE
245/ NEGATIVE FOR FLOATING POINT VARIABLES. THIS MAY
246/ BE ANY NEGATIVE NUMBER FOR SINGLY SUBSCRIPTED
247/ VARIABLES, AND MUST BE THE FIRST DIMENSION FOR
248/ DOUBLY SUBSCRIPTED VARIABLES. SOME EXAMPLES
249/ FOLLOW: (TO LOAD THE I,JTH ELEMENT OF AN FP ARRAY)
250
251/ TAD (-M /DIMENSIONS ARE M BY N
252/ CALL 3,SUBSC
253/ ARG J
254/ ARG I
255/ ARG ARRAY
256/ LOC /MUST BE A DUMMY VARIABLE
257/ CALL 1,IFAD
258/ ARG LOC
259
260/ TO LOAD THE JTH ELEMENT OF AN INTEGER ARRAY:
261
262/ CALL 2,SUBSC
263/ ARG J
264/ ARG INTARR
265/ LOC /STILL A DUMMY VARIABLE
266/ TAD I LOC
267
268
269S1, BLOCK 1 /ADDR OF 1ST SUBSC
270S2, BLOCK 1 /ADDR OF 2ND SUBSC
271A, BLOCK 2 /ADDR OF ARRAY
272R, BLOCK 1 /ADDR FOR RESULT
273TM, 0
274FL, 0 /DOUBLE SUBSC FLAG
275N, 0 /DIMENSION -- NEGATIVE IF FLOATING
276MQA, MQ /FOR INDIRECT DCA
277
278SUBSC, BLOCK 1
279 5 /FORTRAN SUBSCRIPTING ROUTINE
280 DCA N /SAVE THE DIMENSION
281 TAD N
282 SPA /... ALSO ABS VALUE
283 CMA
284 DCAI MQA /WARNING **THIS ASSUMES DF=CURR FIELD**
285 CLA CLL CMA RAL /HOW MANY ARGS?
286 TAD SUBSC#
287 DCA 10
288 TAD SUBSC
289 DCA SUB1
290SUB1, NOP /REPLACED BY CDF
291 TADI 10
292 AND (100
293 SNA CLA /DOUBLE SUBSCRIPTS?
294 JMP SB0
295 TADI 10 /YES, PICK UP ARGS...
296 DCA SB2
297 TADI 10
298 DCA S2
299 CMA
300SB0, DCA FL /SET DBL SUBSC FLAG
301 TADI 10
302 DCA SB1
303 TADI 10
304 DCA S1
305 TADI 10
306 DCA A
307 TADI 10
308 DCA A#
309 TAD SUBSC
310 DCA SUB2
311 TADI 10
312 DCA R
313 TAD 10
314 IAC
315 DCA SUBSC#
316 ISZ FL /DBL SUBSCRIPTING?
317 JMP SB1
318 CLA CMA /GET THE 2ND SUBSC
319SB2, NOP /CDF TO FIELD OF 2ND SUBSCRIPT
320 TADI S2
321 SZA /IS IT A 1?
322 JMSI MPYSBA /NO, MULTIPLY BY DIMENSION
323SB1, NOP /CDF TO FIELD OF 1ST SUBSCRIPT
324 TADI S1
325 TAD (-1 /MINUS ONE
326 DCA TM
327SUB2, NOP /REPLACED BY CDF
328 TAD A
329 DCAI R
330 INC R
331 TAD N
332 SPA CLA /FIXED OR FLOATING
333 TAD TM
334 CLL RAL
335 TAD TM
336 TAD A#
337 DCAI R
338 STL CLA RTL /FAST 'RETRN SUBSC'
339 TAD SUBSC
340 DCA SUB3
341SUB3, NOP /REPLACED BY 'CDF CIF'
342 JMPI SUBSC#
343
344MPYSBA, MPYSB
345
346 END
347\f