|
|
1.1 root 1: .text
2: .globl _main
3: .align 2
4: _main:link a6,#-36
5: moveml #0x400,a6@(-28)
6: clrl a6@(-24)
7: clrl _next:l
8: jra L3
9: L2:
10: lea a6@(-20),a2
11: movl a2,sp@
12: lea a6@(-24),a2
13: movl a2,sp@(4)
14: jbsr _lookup:l
15: movl d0,a2
16: addql #1,a2@
17: L3:
18: lea a6@(-20),a2
19: movl a2,sp@
20: jbsr _getword:l
21: tstl d0; jne L2
22: movl a6@(-24),sp@
23: jbsr _tprint:l
24: clrl d0
25: L1:
26: moveml a6@(-28),#0x400
27: unlk a6
28: rts
29: .globl _err
30: .align 2
31: _err:link a6,#-8
32: movl #L6,sp@
33: movl a6@(8),sp@(4)
34: jbsr _printf:l
35: movl #1,sp@
36: jbsr _exit:l
37: L5:
38: unlk a6
39: rts
40: .globl _getword
41: .align 2
42: _getword:link a6,#-20
43: moveml #0x2490,a6@(-16)
44: L8:
45: L9:
46: jbsr _getchar:l
47: movl d0,d7
48: cmpl #-1,d0; jeq L11
49: movl d7,sp@
50: jbsr _isletter:l
51: tstl d0; jeq L8
52: L11:
53: movl a6@(8),a5
54: jra L15
55: L12:
56: movl a5,a2
57: lea a2@(1),a5
58: movb d7,a2@
59: L13:
60: jbsr _getchar:l
61: movl d0,d7
62: L15:
63: movl d7,sp@
64: jbsr _isletter:l
65: movl d0,d7
66: tstl d0; jne L12
67: clrb a5@
68: movl a5,d4
69: cmpl a6@(8),d4; jls L16
70: movl #1,d0
71: jra L7
72: L16:
73: clrl d0
74: L7:
75: moveml a6@(-16),#0x2490
76: unlk a6
77: rts
78: .globl _isletter
79: .align 2
80: _isletter:link a6,#-0
81: movl a6@(8),d1
82: cmpl #65,d1; jlt L19
83: cmpl #90,d1; jgt L19
84: addl #32,d1
85: L19:
86: cmpl #97,d1; jlt L21
87: cmpl #122,d1; jgt L21
88: movl d1,d0
89: jra L18
90: L21:
91: clrl d0
92: L18:
93: unlk a6
94: rts
95: .globl _lookup
96: .align 2
97: _lookup:link a6,#-28
98: moveml #0x2418,a6@(-20)
99: movl a6@(12),a5
100: tstl a5@; jeq L24
101: movl a6@(8),sp@
102: movl a5@,a2
103: movl a2@(12),sp@(4)
104: jbsr _strcmp:l
105: movl d0,a6@(-4)
106: tstl a6@(-4); jge L26
107: movl a6@(8),sp@
108: movl a5@,a2
109: lea a2@(4),a2
110: movl a2,sp@(4)
111: jbsr _lookup:l
112: movl d0,d0
113: jra L23
114: L26:
115: tstl a6@(-4); jle L28
116: movl a6@(8),sp@
117: movl a5@,a2
118: lea a2@(8),a2
119: movl a2,sp@(4)
120: jbsr _lookup:l
121: movl d0,d0
122: jra L23
123: L28:
124: movl a5@,d0
125: jra L23
126: L24:
127: cmpl #2000,_next:l; jlt L30
128: movl #L32,sp@
129: jbsr _err:l
130: L30:
131: movl _next:l,d4
132: asll #4,d4
133: clrl @(_words:l,d4:l:1)
134: movl _next:l,d4
135: asll #4,d4
136: clrl @(_words+8:l,d4:l:1)
137: clrl @(_words+4:l,d4:l:1)
138: movl a6@(8),sp@
139: jbsr _strlen:l
140: movl d0,d4; addql #1,d4
141: movl d4,sp@
142: jbsr _malloc:l
143: movl _next:l,d4
144: asll #4,d4
145: movl d0,@(_words+12:l,d4:l:1)
146: movl _next:l,d4
147: asll #4,d4
148: tstl @(_words+12:l,d4:l:1); jne L36
149: movl #L39,sp@
150: jbsr _err:l
151: L36:
152: movl _next:l,d4
153: asll #4,d4
154: movl @(_words+12:l,d4:l:1),sp@
155: movl a6@(8),sp@(4)
156: jbsr _strcpy:l
157: movl _next:l,d4
158: movl d4,d3; addql #1,d3
159: movl d3,_next:l
160: asll #4,d4
161: lea @(_words:l,d4:l:1),a2
162: movl a2,a5@
163: movl a2,d0
164: L23:
165: moveml a6@(-20),#0x2418
166: unlk a6
167: rts
168: .globl _tprint
169: .align 2
170: _tprint:link a6,#-16
171: moveml #0x2000,a6@(-4)
172: movl a6@(8),a5
173: cmpl #0,a5; jeq L42
174: movl a5@(4),sp@
175: jbsr _tprint:l
176: movl #L44,sp@
177: movl a5@,sp@(4)
178: movl a5@(12),sp@(8)
179: jbsr _printf:l
180: movl a5@(8),sp@
181: jbsr _tprint:l
182: L42:
183: L41:
184: moveml a6@(-4),#0x2000
185: unlk a6
186: rts
187: .globl _strcmp
188: .align 2
189: _strcmp:link a6,#-12
190: moveml #0x418,a6@(-12)
191: movl a6@(8),a0
192: movl a6@(12),a1
193: jra L47
194: L46:
195: movl a0,a2
196: lea a2@(1),a0
197: tstb a2@; jne L49
198: clrl d0
199: jra L45
200: L49:
201: addql #1,a1
202: L47:
203: movb a0@,d4
204: cmpb a1@,d4; jeq L46
205: tstb a0@; jne L51
206: movl #-1,d0
207: jra L45
208: L51:
209: tstb a1@; jne L53
210: movl #1,d0
211: jra L45
212: L53:
213: movb a0@,d4
214: extbl d4
215: movb a1@,d3
216: extbl d3
217: movl d4,d0; subl d3,d0
218: L45:
219: moveml a6@(-12),#0x418
220: unlk a6
221: rts
222: .bss
223: .globl _next
224: .comm _next,4
225: .globl _words
226: .comm _words,32000
227: .text
228: .align 2; L44:.ascii "%d\011%s\012\000"
229: .align 2; L39:.ascii "out of word storage\000"
230: .align 2; L32:.ascii "out of node storage\000"
231: .align 2; L6:.ascii "? %s\012\000"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.