Pristine Ack-5.5
[Ack-5.5.git] / mach / ns / libem / libem_s.a
1 eÿdup.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0Å\0.define     .dup
2 .sect .text
3 .sect .rom
4 .sect .data
5 .sect .bss
6 .sect .text
7
8         .sect .text
9
10 !r2 will save return addres
11 .dup:
12         movd tos, r2
13         addr 0(sp), tos
14         movd r0, tos
15         jsr @.los
16         movd r2, tos
17         ret 0
18 \0aar.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0ª\0.define .aar
19 .sect .text
20 .sect .rom
21 .sect .data
22 .sect .bss
23 .sect .text
24
25         .sect .text
26
27 .aar:
28         movd 8(sp), r3
29         subd 0(4(sp)), r3
30         muld 8(4(sp)), r3
31         addd r3, 12(sp)
32         ret 8
33 lar.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0ñ\0.define       .lar
34 .sect .text
35 .sect .rom
36 .sect .data
37 .sect .bss
38 .sect .text
39
40         .sect .text
41
42 .lar:
43         movd tos, r2
44         movd 4(sp), r0
45         subd 0(0(sp)), r0
46         muld 8(0(sp)), r0
47         addd r0, 8(sp)
48         movd 8(0(sp)), 4(sp)
49         adjspd -4
50         jsr @.los
51         movd r2, tos
52         ret 0
53 \0sar.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0ñ\0.define      .sar
54 .sect .text
55 .sect .rom
56 .sect .data
57 .sect .bss
58 .sect .text
59
60         .sect .text
61
62 .sar:
63         movd tos, r2
64         movd 4(sp), r0
65         subd 0(0(sp)), r0
66         muld 8(0(sp)), r0
67         addd r0, 8(sp)
68         movd 8(0(sp)), 4(sp)
69         adjspd -4
70         jsr @.sts
71         movd r2, tos
72         ret 0
73 \0los.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0C\ 1.define      .los
74 .sect .text
75 .sect .rom
76 .sect .data
77 .sect .bss
78 .sect .text
79
80         .sect .text
81
82 .los:
83         movd tos, r3
84         movd tos, r0
85         movd tos, r1
86         cmpqd 1, r0
87         beq 1f
88         cmpqd 2, r0
89         beq 2f
90         addd r0, r1
91 3:
92         addqd -4, r1
93         movd 0(r1), tos
94         acbd -4, r0, 3b
95 4:
96         movd r3, tos
97         ret 0
98 1:      
99         movzbd 0(r1), tos
100         br 4b
101 2:
102         movzwd 0(r1), tos
103         br 4b
104 \0rck.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0Ã\0.define      .rck
105 .sect .text
106 .sect .rom
107 .sect .data
108 .sect .bss
109 .sect .text
110
111         .sect .text
112
113 .rck:   
114         cmpd 0(4(sp)), 8(sp)
115         bgt 1f
116         cmpd 4(4(sp)), 8(sp)
117         bge 2f
118 1:
119         movd ERANGE, tos
120         jsr @.trp
121 2:
122         ret 4
123 dcsb.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0'\ 2.define      .csb
124 .sect .text
125 .sect .rom
126 .sect .data
127 .sect .bss
128 .sect .text
129
130         .sect .text
131
132 !r0 contains index
133 !r1 contains pointer to csb descriptor
134 .csb:
135         movd 4(r1), r2          !number of entries
136         cmpqd 0, r2
137         beq 3f
138         movd r1, r3
139 1:
140         addd 8, r3              !find addres of next index
141         cmpd 0(r3), r0          !compare indices
142         beq 2f
143         acbd -1, r2, 1b
144 3:                              !r1 now contains right pointer
145         cmpqd 0, 0(r1)          !test destination addres
146         beq 4f
147         movd 0(r1), tos         !jump to destination
148         ret 4
149 2:
150         addr 4(r3), r1          !put destination pointer in r1
151         br 3b
152 4:
153         movd ECASE, tos
154         jsr @.trp
155         ret 0
156 \0csa.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0e\ 2.define      .csa
157 .sect .text
158 .sect .rom
159 .sect .data
160 .sect .bss
161 .sect .text
162
163         .sect .text
164
165 !r0 contains index
166 !r1 contains pointer to csa descriptor
167 .csa:   movd 4(r1), r2          !get lower bound
168         cmpd r2, r0             
169         bgt 1f                  !index out of range
170         addd 8(r1), r2          !get upper bound
171         cmpd r2, r0
172         blt 1f                  !index out of range
173         addr 12(r1), r2         !pointer to first pointer
174         subd 4(r1), r0
175         muld 4, r0
176         addd r0,r2              !right pointer
177         cmpqd 0, 0(r2)
178         beq 1f                  !null pointer
179         movd 0(r2), tos         !jump now
180         ret 4
181 1:                              !jump to default pointer
182         cmpqd 0, 0(r1)
183         beq 2f                  !null pointer
184         movd 0(r1), tos
185         ret 4
186 2:
187         movd ECASE, tos
188         jsr @.trp
189         ret 0
190 \0exg.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0ô\0.define      .exg
191 .sect .text
192 .sect .rom
193 .sect .data
194 .sect .bss
195 .sect .text
196
197         .sect .text
198
199 .exg:
200         addr 8(sp), r3
201         movd r3, r2
202         addd r0, r3
203 1:
204         movd 0(r2), r1
205         movd 0(r3), 0(r2)
206         movd r1, 0(r3)
207         addr 4(r2), r2
208         addr 4(r3), r3
209         acbd -4, r0, 1b
210         ret 0
211 sts.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0G\ 1.define       .sts
212 .sect .text
213 .sect .rom
214 .sect .data
215 .sect .bss
216 .sect .text
217
218         .sect .text
219
220 .sts:
221         movd tos, r3
222         movd tos, r0
223         movd tos, r1
224         cmpqd 1, r0
225         beq 1f
226         cmpqd 2, r0
227         beq 2f
228 3:
229         movd tos, 0(r1)
230         addqd 4, r1
231         acbd -4, r0, 3b
232 4:
233         movd r3, tos
234         ret 0
235 1:      
236         movb tos, 0(r1)
237         adjspd -3
238         br 4b
239 2:
240         movw tos, 0(r1)
241         adjspd -2
242         br 4b
243 ngto.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0±\0.define      .gto
244 .sect .text
245 .sect .rom
246 .sect .data
247 .sect .bss
248 .sect .text
249
250         .sect .text
251
252 !r0 contains descriptor addres
253 .gto:   
254         lprd    fp,8(r0)
255         lprd    sp,4(r0)
256         movd    0(r0),tos
257         ret     0
258 :cii.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0b\ 1.define      .cii
259 .sect .text
260 .sect .rom
261 .sect .data
262 .sect .bss
263 .sect .text
264
265         .sect .text
266
267 !r3 will save return addres
268 .cii:   
269         movd tos, r3
270         cmpqd 4, tos
271         bne 3f
272         movd tos, r0
273         cmpqd 1, r0
274         beq 1f
275         cmpqd 2, r0
276         beq 2f
277         cmpqd 4, r0
278         beq 4f
279 3:
280         movd EILLINS, tos
281         jsr @.trp
282 4:
283         movd r3, tos
284         ret 0
285 1:      
286         movxbd 0(sp), 0(sp)
287         br 4b
288 2:
289         movxwd 0(sp), 0(sp)
290         br 4b
291 cms.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0g\ 1.define       .cms
292 .sect .text
293 .sect .rom
294 .sect .data
295 .sect .bss
296 .sect .text
297
298         .sect .text
299
300 .cms:   movd tos, r3            !return addres
301         addr 4(sp), r1
302         movd r1, r2
303         addd 0(sp), r2
304         movd 0(sp), r0
305         muld -2, r0
306         subd 4, r0
307 3:
308         cmpd 0(r2), 0(r1)
309         bne 2f
310         addr 4(r1), r1
311         addr 4(r2), r2
312         acbd -4, 0(sp), 3b
313         xord r1, r1
314 4:
315         adjspd r0
316         movd r3, tos
317         ret 0
318 2:
319         movd 1, r1
320         br 4b
321 )cmu.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0\87\ 1.define      .cmu
322 .sect .text
323 .sect .rom
324 .sect .data
325 .sect .bss
326 .sect .text
327
328         .sect .text
329
330 .cmu:   movd tos, r3            !return addres
331         addr 4(sp), r1
332         movd r1, r2
333         addd 0(sp), r2
334         movd 0(sp), r0
335         muld -2, r0
336         subd 4, r0
337 3:
338         cmpd 0(r2), 0(r1)
339         bhi 1f
340         blo 2f
341         addr 4(r1), r1
342         addr 4(r2), r2
343         acbd -4, 0(sp), 3b
344         xord r1, r1
345 4:
346         adjspd r0
347         movd r3, tos
348         ret 0
349 1:      
350         movd 1, r1
351         br 4b
352 2:
353         movd -1, r1
354         br 4b
355 rdvu.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\06\ 1.define      .dvu
356 .sect .text
357 .sect .rom
358 .sect .data
359 .sect .bss
360 .sect .text
361
362         .sect .text
363
364 .dvu:   
365         enter[r1,r2],0
366         movd 1,r2
367         andd 12(fp), r2
368         movd 12(fp), r0
369         lshd -1,r0
370         quod 8(fp), r0
371         lshd 1,r0
372         movd 12(fp), r1
373         lshd -1,r1
374         remd 8(fp), r1
375         lshd 1,r1
376         addd r2, r1
377         quod 8(fp),r1
378         addd r1, r0
379         exit[r1,r2]
380         ret 8
381 rmu.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0ç\0.define .rmu
382 .sect .text
383 .sect .rom
384 .sect .data
385 .sect .bss
386 .sect .text
387
388         .sect .text
389
390 .rmu:
391         enter[r2],0
392         movd 1,r2
393         andd 12(fp),r2
394         movd 12(fp),r0
395         lshd -1,r0
396         remd 8(fp),r0
397         lshd 1,r0
398         addd r2,r0
399         remd 8(fp), r0
400         exit[r2]
401         ret 8
402 pcff.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0î\0.define .cff
403 .sect .text
404 .sect .rom
405 .sect .data
406 .sect .bss
407 .sect .text
408
409         .sect .text
410
411 .cff :  cmpd 4(sp), 8(sp)
412         beq 1f
413         cmpd 4, 4(sp)
414         beq 4f
415         cmpd 8, 4(sp)
416         beq 8f
417 1:
418         ret 8
419 4:
420         movlf 12(sp),16(sp)
421         ret 12
422 8:
423         movfl 12(sp), 8(sp)
424         ret 4
425 cfi.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0Ô\0.define .cfi
426 .sect .text
427 .sect .rom
428 .sect .data
429 .sect .bss
430 .sect .text
431
432         .sect .text
433
434 .cfi:   cmpd 4, 8(sp)
435         beq 4f
436         cmpd 8, 8(sp)
437         beq 8f
438         ret 8
439 4:
440         roundfd 12(sp),12(sp)
441         ret 8
442 8:
443         roundld 12(sp), 16(sp)
444         ret 12
445 cif.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0Ï\0.define .cif
446 .sect .text
447 .sect .rom
448 .sect .data
449 .sect .bss
450 .sect .text
451
452         .sect .text
453
454 .cif :  cmpd 4, 4(sp)
455         beq 4f
456         cmpd 8, 4(sp)
457         beq 8f
458         ret 8
459 4:
460         movdf 12(sp),12(sp)
461         ret 8
462 8:
463         movdl 12(sp), 8(sp)
464         ret 4
465 ttrp.s\0\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0\81\ 1.define .trp
466 .sect .text
467 .sect .rom
468 .sect .data
469 .sect .bss
470 .sect .text
471
472         .sect .text
473
474 .trp:   
475         save [r0, r1]
476         movd 12(sp), r0         !error number
477         movd r0,tos
478         cmpd r0, 16
479         bge 1f
480         tbitd r0, @.ignmask
481         bfs 3f                  !do not trap
482 1:                              !do trap
483         movd @.trpreg, r1
484         cmpqd 0, r1
485         beq 2f
486         movqd 0, @.trpreg
487         jsr r1
488 3:
489         adjspd -4
490         restore [r0, r1]
491         ret 4
492 2:      
493         jump @.stop             !no trapprocedure supplied
494 bprint.s\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0u\ 1.define      .print
495 .sect .text
496 .sect .rom
497 .sect .data
498 .sect .bss
499 .sect .text
500
501         .sect .text
502
503 .print:
504         save[r0,r1,r2]
505         movd 16(sp), r0
506         movd 1000000000, r2
507         cmpqd 0, r0
508         ble 4f
509         movb "-", tos
510         jsr @.putchar
511         negd r0, r0
512 4:
513 !       deid r2, r0
514         movd r0, r1
515         divd r2, r1
516         modd r2, r0
517         addb "0", r1
518         movb r1, tos
519         jsr @.putchar
520         divd 10, r2
521         cmpqd 0, r2
522         bne 4b
523         restore[r0,r1,r2]
524         ret 4
525 rprstr.s\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0\1c\ 1.define      .prstr
526 .sect .text
527 .sect .rom
528 .sect .data
529 .sect .bss
530 .sect .text
531
532         .sect .text
533
534 !het adres van de af te drukken string staat op de stack.
535 .prstr:
536         save [r1]
537         movd 8(sp), r1
538 1:
539         cmpqb 0, 0(r1)
540         beq 2f
541         movb 0(r1), tos
542         jsr @.putchar
543         addqd 1, r1
544         br 1b
545 2:
546         restore [r1]
547         ret 4
548 prnl.s\0\0\0\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0\83\0.define       .prnl
549 .sect .text
550 .sect .rom
551 .sect .data
552 .sect .bss
553 .sect .text
554
555         .sect .text
556
557 .prnl:  movb "\n", tos
558         jsr @.putchar
559         ret 0
560 tputchar.s\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0Ø\0.define      .putchar
561 .sect .text
562 .sect .rom
563 .sect .data
564 .sect .bss
565 .sect .text
566
567         .sect .text
568
569 ! putchar, for a unix
570
571 .putchar:
572         enter [],0
573         movqd   1,tos
574         addr    8(fp),tos
575         movqd   1,tos
576         bsr     WRITE
577         adjspb  -12
578         exit    []
579         ret     0
580 strhp.s\0s\0\0\0\0\0\0\0\0\0\ 2\ 2¤\ 1\0\0\96\ 1#include "em_abs.h"
581 .sect .text; .sect .rom; .sect .data; .sect .bss; .sect .text
582 .define  .strhp
583
584         ! $Id: strhp.s,v 1.5 1994/06/24 13:10:51 ceriel Exp $
585
586
587 .strhp:
588         movd    tos,r3
589         movd    tos,r0
590         movd    r3,tos
591         movd    r0,@.reghp
592         cmpd    r0,@.limhp
593         blo     I2
594         addd    02000,r0
595         bicd    0777,r0
596         movd    r0,tos
597         jsr     @BRK
598         adjspd  -4
599         cmpqd   0,r0
600         beq     I2
601         movd    EHEAP,tos
602         jsr     @.trp
603 I2:
604         ret     0