Mercurial > hg > Members > kono > nitros9-code
annotate level1/cmds/attr.asm @ 1678:40322608e006
tmode is now made from xmode, dsave modified to handle new tmode parameter
author | boisy |
---|---|
date | Thu, 29 Jul 2004 19:04:12 +0000 |
parents | 20841f236e32 |
children | 028161cd3535 |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
2 * Attr - Modify file attributes | |
3 * | |
4 * $Id$ | |
5 * | |
1325
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
6 * Edt/Rev YYYY/MM/DD Modified by |
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
7 * Comment |
0 | 8 * ------------------------------------------------------------------ |
1325
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
9 * 11 ????/??/?? |
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
10 * From Tandy OS-9 Level Two VR 02.00.01. |
0 | 11 |
12 nam Attr | |
13 ttl Modify file attributes | |
14 | |
15 * Disassembled 98/09/11 11:44:51 by Disasm v1.6 (C) 1988 by RML | |
16 | |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
17 ifp1 |
0 | 18 use defsfile |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
19 endc |
0 | 20 |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
21 DOHELP set 0 |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
22 |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
23 tylg set Prgrm+Objct |
0 | 24 atrv set ReEnt+rev |
1325
84ea83668304
Redid comments, reset all rev nibbles that weren't explictly set to 0
boisy
parents:
921
diff
changeset
|
25 rev set $00 |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
26 edition set 11 |
0 | 27 |
28 mod eom,name,tylg,atrv,start,size | |
29 | |
30 fpath rmb 1 | |
31 rawpath rmb 1 | |
32 parmptr rmb 2 | |
33 cmdperms rmb 2 | |
34 u0006 rmb 1 | |
35 u0007 rmb 1 | |
36 pathopts rmb 20 | |
37 u001C rmb 2 | |
38 u001E rmb 1 | |
39 u001F rmb 9 | |
40 u0028 rmb 32 | |
41 filename rmb 32 | |
42 fdesc rmb 16 | |
43 u0078 rmb 46 | |
44 u00A6 rmb 414 | |
45 size equ . | |
46 | |
47 name fcs /Attr/ | |
48 fcb edition | |
49 | |
846 | 50 IFNE DOHELP |
51 HelpMsg fcb C$LF | |
0 | 52 fcc "Use: Attr <pathname> {[-]<opts>}" |
53 fcb C$LF | |
54 fcc " opts: -d s r w e pr pw pe -a" | |
55 fcb C$CR | |
846 | 56 ENDC |
873 | 57 NotOwner fcb C$LF |
0 | 58 fcc "You do not own that file." |
59 fcb C$CR | |
873 | 60 UseMkDir fcb C$LF |
0 | 61 fcc "Use Makdir to create a directory" |
62 fcb C$CR | |
873 | 63 DirNtEmt fcb C$LF |
0 | 64 fcc "ERROR; the directory is not empty" |
65 fcb C$CR | |
873 | 66 Attrs fcc "dsewrewr" |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
67 fcb $FF |
0 | 68 |
873 | 69 start stx <parmptr save param ptr |
0 | 70 clr <u0007 |
71 com <u0007 | |
873 | 72 * Open file at X as file |
0 | 73 clra |
873 | 74 os9 I$Open open file on commandline |
75 bcc L00D9 branch if ok | |
76 * If error, try to open as directory with read permission | |
77 ldx <parmptr get saved param ptr | |
78 lda #DIR.!READ. load perms | |
79 os9 I$Open open as directory | |
80 bcc L00D9 branch if ok | |
81 * One last time, try open as directory only | |
82 ldx <parmptr get param ptr | |
83 lda #DIR. load different perms | |
84 os9 I$Open try one more time | |
85 bcs L0114 branch if error | |
86 L00D9 sta <fpath save off path | |
87 stx <cmdperms save updated parm ptr | |
88 leax pathopts,u point X to buffer | |
89 ldb #SS.Opt load with status code | |
90 os9 I$GetStt get status | |
91 bcs L0114 branch if error | |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
92 clrb |
873 | 93 lda ,x get path type |
94 cmpa #DT.RBF check if rbf path | |
95 lbne ShowHelp branch if not | |
96 ldx <parmptr else get parm ptr | |
0 | 97 leay <filename,u point to buffer |
873 | 98 lda ,x+ get file name character |
99 cmpa #PDELIM path delimiter? | |
100 bne L0106 no | |
101 L00FA sta ,y+ else save char in Y | |
102 lda ,x+ get next file name char | |
103 cmpa #C$PERD period? | |
104 bcs L0106 branch if not | |
105 cmpa #PDELIM path delimiter? | |
106 bne L00FA branch if not | |
226 | 107 L0106 lda #PENTIR |
0 | 108 ldb #C$SPAC |
109 std ,y++ | |
873 | 110 leax <filename,u point X to filename |
111 lda #READ.!WRITE. load perms | |
112 os9 I$Open open in raw mode | |
113 L0114 lbcs ShowHelp branch if error | |
0 | 114 sta <rawpath |
115 lda <fpath | |
116 clr <u001F,u | |
117 pshs u | |
873 | 118 ldx <u001C,u get MS 16 bits |
119 ldu <u001E,u get LS 16 bits | |
120 lda <rawpath get path | |
121 os9 I$Seek seek | |
0 | 122 puls u |
873 | 123 bcs ShowHelp branch if error |
124 leax <fdesc,u point to buffer | |
0 | 125 ldy #FD.SEG |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
126 os9 I$Read |
873 | 127 bcs ShowHelp |
128 os9 F$ID get ID | |
129 cmpy #$0000 super user? | |
130 beq L014B branch if so | |
131 cmpy <fdesc+FD.OWN,u is user same as file's owner? | |
132 bne L01C1 branch if not | |
133 L014B ldx <cmdperms point to perms on cmd line | |
0 | 134 lbsr L021D |
135 bcs L018B | |
136 L0152 lbsr L021D | |
137 bcc L0152 | |
138 clrb | |
139 lda ,x | |
226 | 140 cmpa #C$CR |
873 | 141 bne ShowHelp |
0 | 142 pshs u |
143 ldx <u001C,u | |
144 ldu <u001E,u | |
145 lda <rawpath | |
873 | 146 os9 I$Seek seek |
0 | 147 puls u |
873 | 148 bcs ShowHelp branch if error |
149 leax <fdesc,u point to file desc | |
150 ldy #1 only 1 byte | |
151 os9 I$Write write out new attributes | |
152 bcs ShowHelp branch if error | |
153 os9 I$Close close file | |
154 bcs ShowHelp branch if error | |
155 lda <fpath get file path | |
156 os9 I$Close close file | |
157 bcs ShowHelp branch if error | |
0 | 158 ldb <u0007 |
159 beq L01BE | |
873 | 160 L018B ldb <fdesc,u get attribute |
161 leax >Attrs,pcr | |
0 | 162 leay <u0078,u |
163 lda ,x+ | |
164 L0197 lslb | |
165 bcs L019C | |
166 lda #'- | |
167 L019C sta ,y+ | |
168 lda ,x+ | |
169 bpl L0197 | |
170 lda #C$CR | |
171 sta ,y+ | |
172 leax <u0078,u | |
173 clrb | |
174 bra L01B0 | |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
175 ShowHelp equ * |
846 | 176 IFNE DOHELP |
921
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
177 leax >HelpMsg,pcr |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
178 ELSE |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
179 clrb |
617c1b90e623
Added DOHELP conditionals, set all to zero to eliminate help from commands
boisy
parents:
873
diff
changeset
|
180 bra L01BE |
846 | 181 ENDC |
0 | 182 L01B0 pshs b |
183 lda #2 | |
184 ldy #256 | |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
185 os9 I$WritLn |
0 | 186 comb |
187 puls b | |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
188 L01BE os9 F$Exit |
0 | 189 L01C1 clrb |
873 | 190 leax >NotOwner,pcr |
0 | 191 bra L01B0 |
873 | 192 L01C8 leax >UseMkDir,pcr |
0 | 193 clrb |
194 bra L01B0 | |
195 L01CF pshs u,y,x | |
196 lda <fpath | |
197 ldx #$0000 | |
226 | 198 ldu #DIR.SZ*2 |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
199 os9 I$Seek |
0 | 200 ldu $04,s |
201 bcs L01BE | |
202 L01E0 leax <u0028,u | |
226 | 203 ldy #DIR.SZ |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
204 os9 I$Read |
0 | 205 bcs L01F7 |
206 tst ,x | |
207 beq L01E0 | |
873 | 208 leax >DirNtEmt,pcr |
0 | 209 clrb |
210 bra L01B0 | |
211 L01F7 puls u,y,x | |
226 | 212 cmpb #E$EOF |
873 | 213 bne ShowHelp |
0 | 214 rts |
215 L01FE fdb $ff41 | |
216 fdb $ff80,$44ff,$4053,$ff01,$52ff,$0257,$ff04,$45ff | |
217 fdb $0850,$52ff,$1050,$57ff,$2050,$45ff | |
218 fcb $00 | |
219 L021D clr <u0006 | |
220 L021F lda ,x+ | |
221 cmpa #C$SPAC | |
222 beq L021F | |
223 cmpa #C$COMA | |
224 beq L021F | |
225 cmpa #'- | |
226 bne L0231 | |
227 com <u0006 | |
228 lda ,x+ | |
229 L0231 leax -1,x | |
230 leay >L01FE,pcr | |
231 L0237 ldb ,y+ | |
232 pshs y,x | |
233 beq L027F | |
234 L023D lda ,x+ | |
235 eora ,y+ | |
236 anda #$DF | |
237 beq L023D | |
238 lda -1,y | |
239 bmi L0251 | |
240 puls y,x | |
241 L024B lda ,y+ | |
242 bpl L024B | |
243 bra L0237 | |
244 L0251 lda ,-x | |
245 cmpa #$30 | |
246 bcc L027F | |
247 cmpb #$FF | |
248 beq L0278 | |
249 bitb #$80 | |
250 beq L0268 | |
251 tst <u0006 | |
252 lbeq L01C8 | |
253 lbsr L01CF | |
254 L0268 puls y,b,a | |
255 lda <fdesc,u | |
256 eora <u0006 | |
257 ora -$01,y | |
258 eora <u0006 | |
259 sta <fdesc,u | |
260 clrb | |
261 rts | |
262 L0278 eorb <u0006 | |
263 stb <u0007 | |
264 clrb | |
265 puls pc,y,b,a | |
266 L027F coma | |
267 puls pc,y,x | |
268 | |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
269 emod |
0 | 270 eom equ * |
187
0d02be492d77
Brought up to same attr command in OS-9 Level Two, which is the same exact
boisy
parents:
0
diff
changeset
|
271 end |