Commit | Line | Data |
---|---|---|
ddcb4516 BJ |
1 | / getw/getc -- get words/characters from input file |
2 | / fopen -- open a file for use by get(c|w) | |
3 | ||
4 | indir = 0 | |
5 | ||
6 | .globl _getc, _getw, _fopen | |
7 | .globl cerror | |
8 | .comm _errno,2 | |
9 | ||
10 | _fopen: | |
11 | mov r5,-(sp) | |
12 | mov sp,r5 | |
13 | mov 4(r5),0f | |
14 | sys 0; 9f | |
15 | .data | |
16 | 9: sys open; 0:..; 0 | |
17 | .text | |
18 | bes badret | |
19 | mov 6(r5),r1 | |
20 | mov r0,(r1)+ | |
21 | clr (r1)+ | |
22 | clr r0 | |
23 | mov (sp)+,r5 | |
24 | rts pc | |
25 | ||
26 | _getw: | |
27 | clr _errno | |
28 | mov r5,-(sp) | |
29 | mov sp,r5 | |
30 | mov 4(r5),r1 | |
31 | sub $2,2(r1) | |
32 | bge 1f | |
33 | cmp 2(r1),$-1 | |
34 | blt 2f | |
35 | movb *4(r1),-(sp) | |
36 | jsr pc,fill | |
37 | mov 4(r1),r0 | |
38 | br 3f | |
39 | 2: | |
40 | jsr pc,fill | |
41 | dec 2(r1) | |
42 | 1: | |
43 | mov 4(r1),r0 | |
44 | movb (r0)+,-(sp) | |
45 | 3: | |
46 | movb (r0)+,1(sp) | |
47 | mov r0,4(r1) | |
48 | mov (sp)+,r0 | |
49 | mov (sp)+,r5 | |
50 | rts pc | |
51 | ||
52 | _getc: | |
53 | mov r5,-(sp) | |
54 | mov sp,r5 | |
55 | mov 4(r5),r1 | |
56 | dec 2(r1) | |
57 | bge 1f | |
58 | jsr pc,fill | |
59 | 1: | |
60 | clr r0 | |
61 | bisb *4(r1),r0 | |
62 | inc 4(r1) | |
63 | mov (sp)+,r5 | |
64 | rts pc | |
65 | ||
66 | fill: | |
67 | mov r1,r0 | |
68 | add $6,r0 | |
69 | mov r0,0f | |
70 | mov r0,4(r1) | |
71 | mov (r1),r0 | |
72 | sys 0; 9f | |
73 | .data | |
74 | 9: sys read; 0:..; 512. | |
75 | .text | |
76 | bes badret | |
77 | dec r0 | |
78 | bmi badret | |
79 | mov r0,2(r1) | |
80 | rts pc | |
81 | ||
82 | badret: | |
83 | jmp cerror |