Commit | Line | Data |
---|---|---|
4e754410 BJ |
1 | / |
2 | / IO operations | |
3 | / | |
4 | _GET: | |
5 | jsr pc,get | |
6 | jsr pc,iosync | |
7 | return | |
8 | _PUT: | |
9 | jsr pc,put | |
10 | return | |
11 | _MESSAGE: | |
12 | mov $_unit2,r0 | |
13 | jsr pc,unit | |
14 | mov fchain,r2 / flush all files | |
15 | 1: | |
16 | beq 2f | |
17 | bit $FWRITE,FUNIT(r2) | |
18 | beq 3f | |
19 | mov FBUF(r2),-(sp) | |
20 | jsr pc,_fflush | |
21 | tst (sp)+ | |
22 | 3: | |
23 | mov FCHAIN(r2),r2 | |
24 | br 1b | |
25 | 2: | |
26 | mov $_unit1,r2 | |
27 | mov FBUF(r2),-(sp) | |
28 | jsr pc,_fflush | |
29 | tst (sp)+ | |
30 | return | |
31 | _FNIL: | |
32 | mov (sp),r0 | |
33 | mov _file,-(sp) | |
34 | mov buf,-(sp) | |
35 | jsr pc,unit | |
36 | jsr pc,iosync | |
37 | mov (sp)+,buf | |
38 | mov (sp)+,_file | |
39 | return | |
40 | _BUFF: | |
41 | mov r3,bufopt | |
42 | return | |
43 | _EOF: | |
44 | mov (sp)+,r0 | |
45 | mov _file,-(sp) | |
46 | mov buf,-(sp) | |
47 | mov $EOF,-(sp) | |
48 | br 1f | |
49 | _EOLN: | |
50 | mov (sp)+,r0 | |
51 | mov _file,-(sp) | |
52 | mov buf,-(sp) | |
53 | mov $EOF+EOLN,-(sp) | |
54 | 1: | |
55 | jsr pc,unit | |
56 | cmp buf,$_unit0 | |
57 | bne 1f | |
58 | cmp bufopt,$1 | |
59 | bne 1f | |
60 | mov $u1buf,-(sp) | |
61 | jsr pc,_fflush | |
62 | tst (sp)+ | |
63 | 1: | |
64 | mov (sp)+,r1 | |
65 | clr -(sp) | |
66 | mov buf,r2 | |
67 | bit $EOF,FUNIT(r2) | |
68 | bne 2f | |
69 | jsr pc,iosync | |
70 | bit r1,FUNIT(r2) | |
71 | beq 1f | |
72 | 2: | |
73 | mov $1,(sp) | |
74 | 1: | |
75 | mov (sp)+,r0 | |
76 | mov (sp)+,buf | |
77 | mov (sp)+,_file | |
78 | mov r0,-(sp) | |
79 | return | |
80 | _RESET: | |
81 | bne 1f / branch if name given | |
82 | cmp *(sp),$_unit0 | |
83 | bne 1f | |
84 | tst _unit0+FNAME | |
85 | bne 1f | |
86 | clr r0 | |
87 | sys seek; 0; 0 | |
88 | bes 9f | |
89 | tst (sp)+ | |
90 | tst (lc)+ | |
91 | bic $EOF+EOLN,_unit0+FUNIT | |
92 | bis $SYNC,_unit0+FUNIT | |
93 | return | |
94 | 9: | |
95 | mov $stdin,_file | |
96 | mov r0,_errno | |
97 | mov $ESEEK,_perrno | |
98 | error ESEEK | |
99 | 1: | |
100 | jsr pc,getname | |
101 | mov r0,r1 | |
102 | mov PFNAME(r1),_file | |
103 | mov FNAME(r1),openrnm | |
104 | sys indir; openr | |
105 | bes eopen | |
106 | mov r0,*FBUF(r1) | |
107 | bis $SYNC|FREAD,r0 | |
108 | bis r0,FUNIT(r1) | |
109 | return | |
110 | ecreat: | |
111 | mov r0,_errno | |
112 | mov $ECREATE,_perrno | |
113 | error ECREATE | |
114 | eopen: | |
115 | mov r0,_errno | |
116 | mov $EOPEN,_perrno | |
117 | error EOPEN | |
118 | .data | |
119 | openr: sys open; openrnm: .. ; 0 | |
120 | creit: sys creat; crenm: ..; 0644 | |
121 | openw: sys open; openwnm: .. ; 1 | |
122 | .text | |
123 | _REWRITE: | |
124 | jsr pc,getname | |
125 | mov r0,r1 | |
126 | mov PFNAME(r1),_file | |
127 | mov FNAME(r1),crenm | |
128 | sys indir; creit | |
129 | bes ecreat | |
130 | sys close | |
131 | mov FNAME(r1),openwnm | |
132 | sys indir; openw | |
133 | bes eopen | |
134 | mov r0,*FBUF(r1) | |
135 | bis $EOF|FWRITE,r0 | |
136 | bis r0,FUNIT(r1) | |
137 | return | |
138 | _REMOVE: | |
139 | bne 1f | |
140 | mov (lc)+,r3 | |
141 | 1: | |
142 | mov sp,r1 | |
143 | mov r3,r2 | |
144 | inc r2 | |
145 | bic $1,r2 | |
146 | add r2,sp | |
147 | add r3,r1 | |
148 | mov r1,r0 | |
149 | movb (r1),r2 | |
150 | clrb (r1) | |
151 | 1: | |
152 | cmpb -1(r1),$' | |
153 | bne 1f | |
154 | clrb -(r1) | |
155 | dec r3 | |
156 | bne 1b | |
157 | 1: | |
158 | sub r3,r1 | |
159 | mov r1,1f | |
160 | mov r1,_file | |
161 | sys indir; 0f | |
162 | bes 9f | |
163 | movb r2,(r0) | |
164 | return | |
165 | .data | |
166 | 0: sys unlink; 1: .. | |
167 | .text | |
168 | 9: | |
169 | mov _file,sp | |
170 | mov r0,_errno | |
171 | mov $EREMOVE,_perrno | |
172 | error EREMOVE | |
173 | _UNITINP: | |
174 | cmp bufopt,$2 | |
175 | bge 1f / bufopt >= 2, don't flush on read | |
176 | cmp $512.,u1cnt | |
177 | beq 1f | |
178 | mov $u1buf,-(sp) | |
179 | jsr pc,_fflush | |
180 | tst (sp)+ | |
181 | 1: | |
182 | mov $_unit0,buf | |
183 | mov $stdin,_file | |
184 | return | |
185 | _UNITOUT: | |
186 | mov $_unit1,buf | |
187 | mov $stdout,_file | |
188 | return | |
189 | _UNIT: | |
190 | mov (sp)+,r0 | |
191 | cmp r0,$_unit0 | |
192 | beq _UNITINP | |
193 | jsr pc,unit | |
194 | return | |
195 | _READ8: | |
196 | sub $32.,sp | |
197 | mov sp,-(sp) | |
198 | mov $32.,-(sp) | |
199 | mov $1,-(sp) | |
200 | jsr pc,_preadn | |
201 | bcs 1f | |
202 | add $6,sp | |
203 | mov sp,-(sp) | |
204 | jsr pc,_atof | |
205 | add $34.,sp | |
206 | movf fr0,-(sp) | |
207 | return | |
208 | 1: | |
209 | add $38.,sp | |
210 | clrf -(sp) | |
211 | return | |
212 | _READ4: | |
213 | sub $20.,sp | |
214 | mov sp,-(sp) | |
215 | mov $20.,-(sp) | |
216 | clr -(sp) | |
217 | jsr pc,_preadn | |
218 | bcs 1f | |
219 | add $6.,sp | |
220 | mov sp,-(sp) | |
221 | jsr pc,_atol | |
222 | add $22.,sp | |
223 | mov r1,-(sp) | |
224 | mov r0,-(sp) | |
225 | return | |
226 | 1: | |
227 | add $26.,sp | |
228 | clr -(sp) | |
229 | sxt -(sp) | |
230 | return | |
231 | _READC: | |
232 | jsr pc,iosync | |
233 | clr -(sp) | |
234 | movb *buf,(sp) | |
235 | jsr pc,get | |
236 | return | |
237 | _READLN: | |
238 | jsr pc,iosync | |
239 | mov buf,r0 | |
240 | bit $EOLN+EOF,FUNIT(r0) | |
241 | bne 1f | |
242 | jsr pc,get | |
243 | br _READLN | |
244 | 1: | |
245 | jsr pc,get | |
246 | return | |
247 | _PAGE: | |
248 | mov $14,-(sp) | |
249 | br 1f | |
250 | _WRITC: | |
251 | beq 1f | |
252 | mov $323,r0 | |
253 | br pwriteit | |
254 | 1: | |
255 | movb (sp)+,*buf | |
256 | jsr pc,put | |
257 | tst bufopt | |
258 | beq 2f | |
259 | return | |
260 | _WRITLN: | |
261 | mov $327,r0 | |
262 | mov $'\n,-(sp) | |
263 | mov $1,r2 | |
264 | cmp buf,$_unit1 | |
265 | bne 1f | |
266 | cmp bufopt,$1 | |
267 | bgt 1f | |
268 | clr r2 | |
269 | br 1f | |
270 | _WRITG: | |
271 | mov $325,r0 | |
272 | mov (lc)+,-(sp) | |
273 | br pwriteit | |
274 | _WRHEX2: | |
275 | mov $267,r0 | |
276 | br 3f | |
277 | _WRHEX4: | |
278 | mov $277,r0 | |
279 | br 3f | |
280 | _WROCT2: | |
281 | mov $330,r0 | |
282 | br 3f | |
283 | _WROCT4: | |
284 | mov $331,r0 | |
285 | br 3f | |
286 | _WRIT2: | |
287 | mov $320,r0 | |
288 | br 3f | |
289 | _WRIT4: | |
290 | mov $321,r0 | |
291 | br 3f | |
292 | _WRIT8: | |
293 | mov $324,r0 | |
294 | br 3f | |
295 | _WRITB: | |
296 | mov $322,r0 | |
297 | br 3f | |
298 | _WRIT82: | |
299 | mov $326,r0 | |
300 | 3: | |
301 | pwriteit: | |
302 | mov bufopt,r2 | |
303 | 1: | |
304 | mov r3,-(sp) | |
305 | mov r0,-(sp) | |
306 | jsr pc,_pwrite | |
307 | mov r0,sp | |
308 | tst r2 | |
309 | bne 1f | |
310 | 2: | |
311 | cmp buf,$_unit1 | |
312 | bne 1f | |
313 | mov buf,r0 | |
314 | mov FBUF(r0),-(sp) | |
315 | jsr pc,_fflush | |
316 | tst (sp)+ | |
317 | 1: | |
318 | return | |
319 | _DEFNAME: | |
320 | jsr pc,getname | |
321 | bis $100000,FUNIT(r0) | |
322 | return | |
323 | _FLUSH: | |
324 | mov (sp)+,r0 | |
325 | jsr pc,unit | |
326 | mov buf,r0 | |
327 | bit $FWRITE,FUNIT(r0) | |
328 | beq 1f | |
329 | mov FBUF(r0),-(sp) | |
330 | jsr pc,_fflush | |
331 | tst (sp)+ | |
332 | 1: | |
333 | return |