0
|
1 ********************************************************************
|
13
|
2 * Mdir - Show module directory
|
0
|
3 *
|
|
4 * $Id$
|
|
5 *
|
|
6 * Ed. Comments Who YY/MM/DD
|
|
7 * ------------------------------------------------------------------
|
15
|
8 * 5 Original Tandy version BGP 02/04/05
|
0
|
9
|
|
10 nam Mdir
|
13
|
11 ttl Show module directory
|
0
|
12
|
13
|
13 * Disassembled 02/04/05 12:49:18 by Disasm v1.6 (C) 1988 by RML
|
0
|
14
|
|
15 ifp1
|
13
|
16 use defsfile
|
0
|
17 endc
|
13
|
18
|
0
|
19 tylg set Prgrm+Objct
|
|
20 atrv set ReEnt+rev
|
|
21 rev set $01
|
92
|
22 stdout set 1
|
13
|
23
|
0
|
24 mod eom,name,tylg,atrv,start,size
|
13
|
25
|
92
|
26 MdirSt rmb 2
|
|
27 MdirEn rmb 2
|
0
|
28 u0004 rmb 2
|
|
29 u0006 rmb 1
|
92
|
30 bufptr rmb 1
|
0
|
31 u0008 rmb 1
|
|
32 u0009 rmb 3
|
|
33 u000C rmb 3
|
13
|
34 u000F rmb 1
|
|
35 u0010 rmb 1
|
|
36 u0011 rmb 1
|
92
|
37 buffer rmb 530
|
0
|
38 size equ .
|
13
|
39
|
|
40 name fcs /Mdir/
|
|
41 fcb $05
|
|
42
|
92
|
43 tophead fcb C$LF
|
13
|
44 fcc " Module directory at "
|
92
|
45 ltitle fcb C$LF
|
13
|
46 fcc "Addr Size Typ Rev Attr Use Module name"
|
|
47 fcb C$LF
|
|
48 fcc "---- ---- --- --- ---- --- ------------"
|
|
49 fcb C$CR
|
92
|
50 stitle fcb C$LF
|
13
|
51 fcc "Addr Size Ty Rv At Uc Name"
|
|
52 fcb C$LF
|
|
53 fcc "---- ---- -- -- -- -- ---------"
|
|
54 fcb C$CR
|
|
55
|
|
56 start stx <u0004
|
|
57 lda #$0C
|
|
58 ldb #$30
|
|
59 std <u000F
|
|
60 clr <u0011
|
92
|
61 lda #stdout
|
13
|
62 ldb #SS.ScSiz
|
|
63 os9 I$GetStt
|
|
64 bcc L00D2
|
|
65 cmpb #E$UnkSvc
|
92
|
66 lbne exit
|
13
|
67 bra L00DF
|
|
68 L00D2 cmpx #80
|
|
69 beq L00DF
|
|
70 inc <u0011
|
|
71 lda #$0A
|
|
72 ldb #$15
|
|
73 std <u000F
|
92
|
74 L00DF leax >tophead,pcr
|
13
|
75 ldy #$0017
|
92
|
76 lda #stdout
|
0
|
77 os9 I$WritLn
|
|
78 leax u0009,u
|
|
79 os9 F$Time
|
92
|
80 leax <buffer,u
|
|
81 stx <bufptr
|
0
|
82 leax u000C,u
|
13
|
83 lbsr L0224
|
92
|
84 lbsr write
|
13
|
85 ldx >D.ModDir
|
92
|
86 stx <MdirSt
|
13
|
87 ldd >D.ModDir+2
|
92
|
88 std <MdirEn
|
0
|
89 leax -$04,x
|
92
|
90 * Check for 'E' given as argument
|
0
|
91 ldy <u0004
|
|
92 lda ,y+
|
13
|
93 eora #'E
|
0
|
94 anda #$DF
|
13
|
95 bne L0157
|
|
96 tst <u0011
|
|
97 bne L0123
|
92
|
98 leax >ltitle,pcr
|
|
99 ldy #80 Maxlength to write
|
13
|
100 bra L012B
|
92
|
101 L0123 leax >stitle,pcr
|
|
102 ldy #$003E Maxlength to write
|
|
103 L012B lda #stdout
|
0
|
104 os9 I$WritLn
|
92
|
105 ldx <MdirSt
|
13
|
106 lbra L01B9
|
92
|
107 loop ldy ,x
|
13
|
108 beq L015D
|
0
|
109 ldd $04,y
|
|
110 leay d,y
|
13
|
111 lbsr L0205
|
|
112 L0141 lbsr L01F2
|
0
|
113 ldb <u0008
|
13
|
114 subb #$12
|
|
115 cmpb <u0010
|
|
116 bhi L0154
|
|
117 L014C subb <u000F
|
|
118 bhi L014C
|
|
119 bne L0141
|
|
120 bra L015D
|
92
|
121 L0154 lbsr write
|
|
122 L0157 leay <buffer,u
|
|
123 sty <bufptr
|
13
|
124 L015D leax $04,x
|
92
|
125 cmpx <MdirEn
|
|
126 bcs loop
|
|
127 lbsr write
|
13
|
128 bra L01BD
|
92
|
129 *
|
|
130 * A module entry is 2 twobyte pointers.
|
|
131 * If the first pointer is $0000, then the slot is unused
|
|
132 L0168 leay <buffer,u
|
|
133 sty <bufptr
|
0
|
134 ldy ,x
|
92
|
135 beq gotonxt Is slot unused? If yes, branch
|
0
|
136 ldd ,x
|
13
|
137 bsr L01C1
|
0
|
138 ldd $02,y
|
13
|
139 bsr L01C1
|
|
140 tst <u0011
|
|
141 bne L0181
|
|
142 bsr L01F2
|
|
143 L0181 lda $06,y
|
|
144 bsr L01C9
|
|
145 tst <u0011
|
|
146 bne L018B
|
|
147 bsr L01F2
|
|
148 L018B lda $07,y
|
0
|
149 anda #$0F
|
13
|
150 bsr L01C9
|
0
|
151 ldb $07,y
|
|
152 lda #$72
|
13
|
153 bsr L01FE
|
|
154 tst <u0011
|
|
155 bne L01A7
|
|
156 lda #$3F
|
|
157 bsr L01FE
|
|
158 lda #$3F
|
|
159 bsr L01FE
|
|
160 lda #$3F
|
|
161 bsr L01FE
|
|
162 L01A7 bsr L01F2
|
|
163 bsr L01F2
|
0
|
164 lda $02,x
|
13
|
165 bsr L01C9
|
0
|
166 ldd $04,y
|
|
167 leay d,y
|
13
|
168 bsr L0205
|
92
|
169 bsr write
|
|
170 gotonxt leax $04,x
|
|
171 L01B9 cmpx <MdirEn
|
13
|
172 bcs L0168
|
92
|
173
|
13
|
174 L01BD clrb
|
92
|
175 exit os9 F$Exit
|
|
176
|
13
|
177 L01C1 bsr L01CD
|
0
|
178 tfr b,a
|
13
|
179 bsr L01CF
|
|
180 bra L01F2
|
|
181 L01C9 bsr L01CD
|
|
182 bra L01F2
|
|
183 L01CD clr <u0006
|
|
184 L01CF pshs a
|
0
|
185 lsra
|
|
186 lsra
|
|
187 lsra
|
|
188 lsra
|
13
|
189 bsr L01DB
|
0
|
190 lda ,s+
|
|
191 anda #$0F
|
13
|
192 L01DB tsta
|
|
193 beq L01E0
|
0
|
194 sta <u0006
|
13
|
195 L01E0 tst <u0006
|
|
196 bne L01E8
|
0
|
197 lda #$20
|
92
|
198 bra ApndA
|
|
199 L01E8 adda #'0
|
|
200 cmpa #'9
|
|
201 bls ApndA
|
|
202 adda #$07 Make it A-F
|
|
203 bra ApndA
|
13
|
204 L01F2 lda #$20
|
92
|
205 *
|
|
206 * append a char (in reg a) to buffer
|
|
207 *
|
|
208 ApndA pshs x
|
|
209 ldx <bufptr
|
0
|
210 sta ,x+
|
92
|
211 stx <bufptr
|
0
|
212 puls pc,x
|
92
|
213
|
13
|
214 L01FE rolb
|
92
|
215 bcs ApndA
|
|
216 lda #'.
|
|
217 bra ApndA
|
13
|
218 L0205 lda ,y
|
0
|
219 anda #$7F
|
92
|
220 bsr ApndA
|
0
|
221 lda ,y+
|
13
|
222 bpl L0205
|
0
|
223 rts
|
92
|
224 *
|
|
225 * Append a CR to buffer and write it
|
|
226 *
|
|
227 write pshs y,x,a
|
|
228 lda #C$CR
|
|
229 bsr ApndA
|
|
230 leax <buffer,u
|
13
|
231 ldy #80
|
92
|
232 lda #stdout
|
0
|
233 os9 I$WritLn
|
|
234 puls pc,y,x,a
|
92
|
235
|
13
|
236 L0224 bsr L022C
|
|
237 bsr L0228
|
92
|
238 L0228 lda #':
|
|
239 bsr ApndA
|
13
|
240 L022C ldb ,x+
|
0
|
241 lda #$2F
|
13
|
242 L0230 inca
|
0
|
243 subb #$64
|
13
|
244 bcc L0230
|
0
|
245 cmpa #$30
|
13
|
246 beq L023B
|
92
|
247 bsr ApndA
|
13
|
248 L023B lda #$3A
|
|
249 L023D deca
|
0
|
250 addb #$0A
|
13
|
251 bcc L023D
|
92
|
252 bsr ApndA
|
0
|
253 tfr b,a
|
92
|
254 adda #'0
|
|
255 bra ApndA
|
13
|
256
|
0
|
257 emod
|
|
258 eom equ *
|
13
|
259 end
|