Mercurial > hg > Members > kono > nitros9-code
annotate level1/cmds/pxd.asm @ 519:6c626a142234
Eliminated SS disks... distribution is too large, now we only have
40DS disks
author | boisy |
---|---|
date | Thu, 10 Oct 2002 16:56:13 +0000 |
parents | baead4d344f1 |
children |
rev | line source |
---|---|
0 | 1 ******************************************************************** |
2 * pxd - Print execution directory | |
3 * | |
4 * $Id$ | |
5 * | |
6 * Ed. Comments Who YY/MM/DD | |
7 * ------------------------------------------------------------------ | |
200
e9ce43cc215e
Made major changes to headers for consistency and identification
boisy
parents:
15
diff
changeset
|
8 * 1 From Tandy OS-9 Level One VR 02.00.00 |
0 | 9 |
10 nam pxd | |
270 | 11 ttl Print execution directory |
0 | 12 |
13 * Disassembled 98/09/10 23:50:10 by Disasm v1.6 (C) 1988 by RML | |
14 | |
15 ifp1 | |
16 use defsfile | |
270 | 17 use rbfdefs |
0 | 18 endc |
19 | |
20 tylg set Prgrm+Objct | |
21 atrv set ReEnt+rev | |
22 rev set $01 | |
23 edition set 1 | |
24 | |
25 mod eom,name,tylg,atrv,start,size | |
26 | |
27 fildes rmb 1 | |
13 | 28 bufptr rmb 2 |
270 | 29 DotDotFD rmb 3 |
30 DotFD rmb 3 | |
31 DDCopy rmb 5 | |
32 dentry rmb 160 | |
13 | 33 buffer rmb 1 |
0 | 34 sttbuf rmb 282 |
35 size equ . | |
36 | |
37 name fcs /pxd/ | |
38 fcb edition | |
39 | |
40 badnam fcc "pxd: bad name in path" | |
41 fcb C$CR | |
42 dotdot fcc "." | |
43 dot fcc "." | |
44 cr fcb C$CR | |
45 rdmsg fcc "read error" | |
46 fcb C$CR | |
47 | |
13 | 48 start leax >buffer,u |
49 lda #C$CR | |
0 | 50 sta ,x |
13 | 51 stx <bufptr |
0 | 52 leax >dot,pcr |
53 bsr open | |
54 sta <fildes | |
55 lbsr rdtwo | |
270 | 56 ldd <DotDotFD |
57 std <DDCopy | |
58 lda <DotDotFD+2 | |
59 sta <DDCopy+2 | |
0 | 60 L0052 bsr L00C6 |
61 beq L0079 | |
62 leax >dotdot,pcr | |
63 bsr chdir | |
64 lda <fildes | |
65 os9 I$Close | |
66 bcs L008D | |
67 leax >dot,pcr | |
68 bsr open | |
69 bsr rdtwo | |
70 bsr L00A8 | |
71 bsr L00E2 | |
270 | 72 ldd <DotDotFD |
73 std <DDCopy | |
74 lda <DotDotFD+2 | |
75 sta <DDCopy+2 | |
0 | 76 bra L0052 |
77 L0079 lbsr L00FB | |
13 | 78 ldx <bufptr |
0 | 79 ldy #$0081 |
80 lda #$01 | |
81 os9 I$WritLn | |
82 lda <fildes | |
83 os9 I$Close | |
84 clrb | |
85 L008D os9 F$Exit | |
13 | 86 chdir lda #DIR.+EXEC.+READ. |
0 | 87 os9 I$ChgDir |
88 rts | |
13 | 89 open lda #DIR.+EXEC.+READ. |
0 | 90 os9 I$Open |
91 rts | |
270 | 92 |
0 | 93 read32 lda <fildes |
270 | 94 leax dentry,u |
95 ldy #DIR.SZ | |
0 | 96 os9 I$Read |
97 rts | |
270 | 98 |
0 | 99 L00A8 lda <fildes |
100 bsr read32 | |
101 bcs L010F | |
270 | 102 leax dentry,u |
103 leax <DIR.FD,x | |
104 leay DDCopy,u | |
0 | 105 bsr attop |
106 bne L00A8 | |
107 rts | |
270 | 108 |
0 | 109 attop ldd ,x++ |
110 cmpd ,y++ | |
111 bne L00C5 | |
112 lda ,x | |
113 cmpa ,y | |
114 L00C5 rts | |
270 | 115 |
116 L00C6 leax DotDotFD,u | |
117 leay DotFD,u | |
0 | 118 bsr attop * check if we're at the top |
119 rts | |
270 | 120 |
0 | 121 rdtwo bsr read32 * read "." from directory |
270 | 122 ldd <dentry+DIR.FD |
123 std <DotFD | |
124 lda <dentry+DIR.FD+2 | |
125 sta <DotFD+2 | |
0 | 126 bsr read32 * read ".." from directory |
270 | 127 ldd <dentry+DIR.FD |
128 std <DotDotFD | |
129 lda <dentry+DIR.FD+2 | |
130 sta <DotDotFD+2 | |
0 | 131 rts |
270 | 132 |
133 L00E2 leax dentry,u | |
0 | 134 prsnam os9 F$PrsNam |
135 bcs L0109 | |
13 | 136 ldx <bufptr |
0 | 137 L00EB lda ,-y |
138 anda #$7F | |
139 sta ,-x | |
140 decb | |
141 bne L00EB | |
270 | 142 lda #PDELIM |
0 | 143 sta ,-x |
13 | 144 stx <bufptr |
0 | 145 rts |
146 L00FB lda <fildes | |
13 | 147 ldb #SS.DevNm |
0 | 148 leax >sttbuf,u |
149 os9 I$GetStt | |
150 bsr prsnam | |
151 rts | |
152 L0109 leax >badnam,pcr | |
153 bra wrerr | |
154 L010F leax >rdmsg,pcr | |
155 bra wrerr | |
156 L0115 lda #$02 | |
157 os9 I$Write | |
158 bcs L0128 | |
159 rts | |
160 bsr L0115 | |
161 leax >cr,pcr | |
162 wrerr lda #$02 | |
163 os9 I$WritLn | |
164 L0128 ldb #$00 | |
165 os9 F$Exit | |
166 | |
167 emod | |
168 eom equ * | |
169 end | |
170 |