|
|
1.1 root 1: ; This is the assembler source code for amiga 68000
2: ; It assumes Lattice-C is used. (v5.04 or higher)
3: ; Written by S. Fishman
4:
5: SECTION text
6:
7: XREF _global_precision
8: XDEF _P_ADDC ;make the linker know we're here
9:
10: _P_ADDC: link a6,#0
11: movem.l d4-d5/a0-a1,-(a7)
12: move.l 8(a6),a0
13: move.l 12(a6),a1
14: move.l 16(a6),d4
15: sne d4
16: moveq.l #0,d5
17: move.w _global_precision,d5
18: asl.l #2,d5
19: add.l d5,a0
20: add.l d5,a1
21: asr.l #2,d5
22: sub.l #1,d5
23: asr.b #1,d4
24: add_loop: addx.l -(a1),-(a0)
25: dbra d5,add_loop
26: scs d0
27: ext.w d0
28: ext.l d0
29: movem.l (a7)+,d4-d5/a0-a1
30: unlk a6 ;get A6 & A7 back
31: rts
32:
33: XDEF _P_SUBB
34:
35: _P_SUBB: link a6,#0
36: movem.l d4-d5/a0-a1,-(a7)
37: move.l 8(a6),a0
38: move.l 12(a6),a1
39: move.l 16(a6),d4
40: sne d4 ;fix old borrow bits
41: moveq.l #0,d5
42: move.w _global_precision,d5
43: asl.l #2,d5
44: add.l d5,a0
45: add.l d5,a1
46: asr.l #2,d5
47: sub.l #1,d5
48: asr.b #1,d4
49: sub_loop: subx.l -(a1),-(a0) ;come'n, let's do it !!!
50: dbra d5,sub_loop
51: scs d0
52: ext.w d0
53: ext.l d0
54: movem.l (a7)+,d4-d5/a0-a1
55: unlk a6
56: rts
57:
58: XDEF _P_ROTL
59:
60: _P_ROTL: link a6,#0
61: movem.l d4-d5/a0,-(a7)
62: move.l 8(a6),a0
63: move.l 12(a6),d4
64: moveq.l #0,d5
65: move.w _global_precision,d5
66: asl.l #1,d5
67:
68: sub.l #2,d5
69: asl (a0)+
70: scs d0
71: ext.w d0
72: ext.l d0
73: rotl_loop: asl (a0)+
74: bcc rotl_no_carry
75: bset #0,-3(a0)
76: rotl_no_carry: dbra d5,rotl_loop
77: tst.l d4
78: beq rotl_no_old_carry
79: bset #0,-1(a0)
80: rotl_no_old_carry:
81: movem.l (a7)+,d4-d5/a0
82: unlk a6
83: rts
84:
85: XDEF _P_SETP
86:
87: _P_SETP: rts
88: END
89:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.