|
|
1.1 root 1: / C library-- versions of long *, /, % for non-floating point hardware
2: / also =* =% =/
3:
4: .globl lmul, almul
5: .globl csv, cret
6:
7: /
8: / called:2(sp):LHS 6(sp):RHS
9: lmul:
10: jsr r5,csv
11: mov 4.(r5),r2
12: mov 6.(r5),r3
13: clr r0
14: clr r1
15: mov $32.,r4
16: 1:
17: asl r1
18: rol r0
19: rol r3
20: rol r2
21: bcc 2f
22: add 10.(r5),r1
23: adc r0
24: add 8.(r5),r0
25: 2:
26: sob r4,1b
27: jmp cret
28:
29: / call is 2(sp):LHSptr 4(sp):RHS
30: almul:
31: jsr r5,csv
32: mov 4.(r5),r3
33: mov (r3)+,r2
34: mov (r3)+,r3
35: clr r0
36: clr r1
37: mov $32.,r4
38: 1:
39: asl r1
40: rol r0
41: rol r3
42: rol r2
43: bcc 2f
44: add 8.(r5),r1
45: adc r0
46: add 6.(r5),r0
47: 2:
48: sob r4,1b
49: mov 4.(r5),r3
50: mov r0,(r3)+
51: mov r1,(r3)+
52: jmp cret
53:
54: .globl ldiv
55: .globl lrem
56:
57: / Both called 2(sp):LHS 6(sp):RHS
58: lrem:
59: jsr r5,csv
60: mov $100,-(sp)
61: br 1f
62:
63: ldiv:
64: jsr r5,csv
65: clr -(sp)
66: 1:
67: mov 6.(r5),r3
68: mov 4.(r5),r2
69: bpl 1f
70: inc (sp)
71: neg r2
72: neg r3
73: sbc r2
74: 1:
75: clr r0
76: clr r1
77: tst 8.(r5)
78: bge 1f
79: neg 8.(r5)
80: neg 10.(r5)
81: sbc 8.(r5)
82: inc (sp)
83: 1:
84: mov $32.,r4
85: 1:
86: ashc $1,r2
87: rol r1
88: rol r0
89: cmp 8.(r5),r0
90: blt 2f
91: bgt 3f
92: cmp 10.(r5),r1
93: blos 2f
94: 3:
95: sob r4,1b
96: br 1f
97: 2:
98: sub 10.(r5),r1
99: sbc r0
100: sub 8.(r5),r0
101: inc r3
102: sob r4,1b
103: 1:
104: bit $100,(sp)
105: beq 3f
106: tst 4.(r5)
107: bpl 1f
108: br 2f
109: 3:
110: mov r2,r0
111: mov r3,r1
112: bit $1,(sp)+
113: beq 1f
114: 2:
115: neg r0
116: neg r1
117: sbc r0
118: 1:
119: jmp cret
120:
121: .globl alrem, aldiv
122:
123: / Called 2(sp):LHSptr 4(sp):RHS
124:
125: alrem:
126: jsr r5,csv
127: mov $100,-(sp)
128: br 1f
129:
130: aldiv:
131: jsr r5,csv
132: clr -(sp)
133: 1:
134: mov 4.(r5),r2
135: mov 2(r2),r3
136: mov (r2),r2
137: bpl 1f
138: inc (sp)
139: neg r2
140: neg r3
141: sbc r2
142: 1:
143: clr r0
144: clr r1
145: tst 6.(r5)
146: bge 1f
147: neg 6.(r5)
148: neg 8.(r5)
149: sbc 6.(r5)
150: inc (sp)
151: 1:
152: mov $32.,r4
153: 1:
154: ashc $1,r2
155: rol r1
156: rol r0
157: cmp 6.(r5),r0
158: blt 2f
159: bgt 3f
160: cmp 8.(r5),r1
161: blos 2f
162: 3:
163: sob r4,1b
164: br 1f
165: 2:
166: sub 8.(r5),r1
167: sbc r0
168: sub 6.(r5),r0
169: inc r3
170: sob r4,1b
171: 1:
172: mov 4(r5),r4
173: bit $100,(sp)
174: beq 3f
175: tst (r4)
176: bpl 1f
177: br 2f
178: 3:
179: mov r2,r0
180: mov r3,r1
181: bit $1,(sp)+
182: beq 1f
183: 2:
184: neg r0
185: neg r1
186: sbc r0
187: 1:
188: mov r0,(r4)+
189: mov r1,(r4)
190: jmp cret
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.