Research V6 development
[unix-history] / usr / source / s2 / tp1.s
CommitLineData
0834349e
KT
1/ tap1 -- dec-disk lod/dmp
2
3.globl _localtime, _end
4namep = 0
5mode = 2
6uid = 4; gid = 5
7size0 = 7
8size1 = 8
9time0 = 10.
10time1 = 12.
11tapea = 14.
12dirsiz = 16.
13mdirent = 496.
14
15 mov (sp),rnarg
16 mov (sp)+,narg
17 mov $cmr,command
18 incb flu
19 tst (sp)+
20 cmp narg,$2
21 bge 1f
22 mov $2,narg
23 br 3f
241:
25 mov (sp)+,r0
26 mov sp,parg
271:
28 movb (r0)+,r1
29 beq 3f
30 mov $swtab,r2
312:
32 cmp r1,(r2)+
33 beq 2f
34 tst (r2)+
35 bne 2b
36 br useerr
372:
38 jsr pc,*(r2)+
39 br 1b
403:
41 jsr pc,optap
42 mov $_end,r4 / string pointer
43 jsr pc,setb
44 jmp *command
45
46optap:
47 tstb flm
48 bne 2f
49 mov $578.,tapsiz
50 mov $192.,ndirent
51 sys open; tc; 2
52 br 3f
532:
54 mov $-1,tapsiz
55 mov $mdirent,ndirent
56 cmp command,$cmr
57 beq 2f
58 sys open; mt; 0
59 br 3f
602:
61 sys open; mt; 1
623:
63 bes 1f
64 mov r0,fio
65 mov ndirent,r1
66 ash $-3,r1
67 mov r1,ndentd8
68 mov ndirent,r1
69 mul $dirsiz,r1
70 add $dir,r1
71 mov r1,edir
72 rts pc
731:
74 jsr r5,mesg
75 <Tape open error\n\0>; .even
76 jmp done
77
78setcom:
79 cmp command,$cmr
80 bne useerr
81 mov (r5)+,command
82 rts r5
83
84noflag:
85 mov (r5)+,r0
86 beq 1f
87 tstb (r0)
88 beq noflag
89 br useerr
901:
91 rts r5
92
93useerr:
94 jsr r5,mesg
95 <Bad usage\n\0>; .even
96 jmp done
97
98swtab:
99 '0; dcof
100 '1; dcof
101 '2; dcof
102 '3; dcof
103 '4; dcof
104 '5; dcof
105 '6; dcof
106 '7; dcof
107 'c; dcc
108 'd; dcd
109 'f; dcf
110 'i; dci
111 'm; dcm
112 'r; dcr
113 't; dct
114 'u; dcu
115 'v; dcv
116 'w; dcw
117 'x; dcx
118 0; 0
119
120dcof:
121 movb r1,tcx
122 movb r1,mtx
123 rts pc
124
125dcc:
126 incb flc
127 rts pc
128
129dcf:
130 incb flf
131 rts pc
132
133dcd:
134 jsr r5,setcom; cmd
135 rts pc
136
137dci:
138 incb fli
139 rts pc
140
141dcm:
142 incb flm
143 rts pc
144
145dcu:
146 incb flu
147 jsr r5,setcom; cmr
148 rts pc
149
150dcr:
151 clrb flu
152 jsr r5,setcom; cmr
153 rts pc
154
155dct:
156 jsr r5,setcom; cmt
157 rts pc
158
159dcv:
160 incb flv
161 rts pc
162
163dcw:
164 incb flw
165 rts pc
166
167dcx:
168 jsr r5,setcom; cmx
169 rts pc
170
171cmd:
172 jsr r5,noflag; flm; flc; flf; 0
173 cmp narg,$2
174 bgt 1f
175 jmp useerr
1761:
177 jsr pc,rddir
178 jsr r5,gettape; delete
179 jsr pc,wrdir
180 br check
181
182cmr:
183 jsr r5,noflag; 0
184 tstb flc
185 bne 1f
186 tstb flm
187 bne 1f
188 jsr pc,rddir
189 br 2f
1901:
191 jsr pc,clrdir
1922:
193 jsr pc,getfiles
194 jsr pc,update
195 br check
196
197cmt:
198 jsr r5,noflag; flc; flf; flw; 0
199 jsr pc,rddir
200 tstb flv
201 beq 1f
202 jsr r5,mesg
203 < mode uid gid tapa size date time name\n\0>; .even
2041:
205 jsr r5,gettape; taboc
206 br check1
207
208cmx:
209 jsr r5,noflag; flc; flf; 0
210 jsr pc,rddir
211 jsr r5,gettape; xtract
212 br done
213
214check:
215
216check1:
217 jsr pc,usage
218
219done:
220 jsr r5,mesg
221 <END\n\0>; .even
222 sys exit
223
224encode:
225 mov r2,-(sp)
226 mov r4,(r1)
227 mov (r5)+,r2
2281:
229 movb (r2),(r4)+
230 jsr pc,setb
231 tstb (r2)+
232 bne 1b
233 mov (sp)+,r2
234 rts r5
235
236decode:
237 mov r2,-(sp)
238 mov r1,-(sp)
239 mov (r1),r1
240 mov (r5)+,r2
2411:
242 movb (r1)+,(r2)+
243 bne 1b
244 mov (sp)+,r1
245 mov (sp)+,r2
246 rts r5
247
248setb:
249 mov r0,-(sp)
250 mov r4,r0
251 add $513.,r0
252 cmp r0,sp
253 bhis 2f
254 bic $777,r0
255 cmp r0,0f
256 beq 1f
257 mov r0,0f
258 sys break; 0:..
259 bes 2f
2601:
261 mov (sp)+,r0
262 rts pc
263
2642:
265 jsr r5,mesg
266 <Out of core\n\0>; .even
267 jmp done