Mercurial > hg > Members > kono > os9 > sbc09
annotate os9/level2/vrbf.asm @ 49:947cbecdd8d5
read and dir worked.
exec failed
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 21 Jul 2018 19:25:53 +0900 |
parents | ea1b17311bf3 |
children | 51b437557f42 |
rev | line source |
---|---|
46 | 1 *******************************************************************2 |
2 * Virtual RBF - Random Block File Manager * | |
45 | 3 |
4 nam VRBF | |
5 ttl VRandom Block File Manager | |
6 | |
7 ifp1 | |
8 use defsfile | |
9 endc | |
10 | |
11 rev set $00 | |
12 ty set FlMgr | |
13 IFNE H6309 | |
14 lg set Obj6309 | |
15 ELSE | |
16 lg set Objct | |
17 ENDC | |
18 tylg set ty+lg | |
19 atrv set ReEnt+rev | |
20 edition set 37 | |
21 | |
22 org $00 | |
23 size equ . | |
24 | |
25 mod eom,name,tylg,atrv,start,size | |
26 | |
27 name fcs /VRBF/ | |
28 fcb edition | |
29 | |
30 *L0012 fcb DRVMEM | |
31 | |
32 | |
33 **************************** | |
34 * | |
35 * Main entry point for RBF | |
36 * | |
37 * Entry: Y = Path descriptor pointer | |
38 * U = Register stack pointer | |
39 | |
46 | 40 start lbra Create |
45 | 41 lbra Open |
42 lbra MakDir | |
43 lbra ChgDir | |
44 lbra Delete | |
45 lbra Seek | |
46 lbra Read | |
47 lbra Write | |
48 lbra ReadLn | |
49 lbra WriteLn | |
50 lbra GetStat | |
51 lbra SetStat | |
52 lbra Close | |
53 | |
46 | 54 * |
55 * | |
56 * | |
57 | |
45 | 58 |
59 * | |
60 * I$Create Entry Point | |
61 * | |
62 * Entry: A = access mode desired (0 read, 1 write, 2 update, bit 4 for exex) | |
63 * B = file attributes | |
64 * X = address of the pathlist | |
65 * | |
66 * Exit: A = pathnum | |
67 * X = last byte of pathlist address | |
68 * | |
69 * Error: CC Carry set | |
70 * B = errcode | |
71 * | |
46 | 72 Create pshs y,u,cc Preserve path desc ptr |
73 orcc #IntMasks | |
45 | 74 bsr setuppd |
75 stb 4,u put file attribute | |
46 | 76 ldb #$d1 |
77 stb ,u do IO b,x will be rewrited | |
45 | 78 ldb ,u |
79 beq ok00 | |
46 | 80 bra er00 |
45 | 81 |
82 * | |
83 * I$Open Entry Point | |
84 * | |
85 * Entry: A = access mode desired | |
86 * X = address of the pathlist | |
87 * | |
88 * Exit: A = pathnum | |
89 * X = last byte of pathlist address | |
90 * | |
91 * Error: CC Carry set | |
92 * B = errcode | |
93 * | |
46 | 94 Open pshs y,u,cc |
95 orcc #IntMasks | |
45 | 96 bsr setuppd |
46 | 97 ldb #$d2 |
47 | 98 stb ,x |
99 ldb ,x | |
46 | 100 cmpb #0 |
45 | 101 beq ok00 |
102 bra er00 | |
103 | |
46 | 104 * u user stack |
105 * y path descriptor | |
106 * PD.PD.y path number | |
107 * PD.PD.MOD.y mode | |
108 * PD.RGS,y caller's rega = u | |
109 * PD.DEV,y device table | |
110 * PD.DRV,y drive number | |
111 | |
112 setuppd ldx #$FFc0 vdisk port | |
47 | 113 sty 7,x path descriptor |
46 | 114 stu 5,x caller stack |
115 lda <PD.DRV,y | |
116 sta 1,x | |
117 clra | |
47 | 118 ldy <D.Proc get process pointer |
119 cmpy <D.SysPrc | |
46 | 120 beq sysmode |
121 lda #1 | |
122 sysmode sta 2,x | |
123 lda R$A,u | |
124 bita #EXEC. | |
125 bne usechx | |
49 | 126 ldb P$DIO+3,y get curwdir #pdnumber |
46 | 127 bra s1 |
49 | 128 usechx ldb P$DIO+9,y get curxdir #pdnumber |
129 s1 stb 4,x | |
46 | 130 rts |
131 | |
132 er00 puls y,u,cc | |
48
ea1b17311bf3
dir /v0 worked but dir /v0/src and chd /v0; dir does not
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
133 lda R$Cc,u |
ea1b17311bf3
dir /v0 worked but dir /v0/src and chd /v0; dir does not
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
134 ora #Carry |
ea1b17311bf3
dir /v0 worked but dir /v0/src and chd /v0; dir does not
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
135 sta R$Cc,u |
46 | 136 rts |
137 ok00 puls y,u,cc,pc | |
138 | |
45 | 139 * |
140 * I$MakDir Entry Point | |
141 * | |
142 * Entry: X = address of the pathlist | |
143 * | |
144 * Exit: X = last byte of pathlist address | |
145 * | |
146 * Error: CC Carry set | |
147 * B = errcode | |
148 * | |
46 | 149 MakDir pshs y,u,cc |
150 orcc #IntMasks | |
45 | 151 bsr setuppd |
46 | 152 ldb #$d3 |
47 | 153 stb ,x |
154 ldb ,x | |
46 | 155 cmpb #0 |
45 | 156 beq ok00 |
157 bra er00 | |
158 | |
159 * | |
160 * I$Close Entry Point | |
161 * | |
162 * Entry: A = path number | |
163 * | |
164 * Exit: | |
165 * | |
166 * Error: CC Carry set | |
167 * B = errcode | |
168 * | |
46 | 169 Close pshs y,u,cc |
170 orcc #IntMasks | |
45 | 171 bsr setuppd |
172 ldb #$db | |
47 | 173 stb ,x |
174 ldb ,x | |
46 | 175 cmpb #0 |
45 | 176 beq ok00 |
177 bra er00 | |
178 | |
179 * | |
180 * I$ChgDir Entry Point | |
181 * | |
182 * Entry: | |
183 * | |
184 * Exit: | |
185 * | |
186 * Error: CC Carry set | |
187 * B = errcode | |
188 * | |
46 | 189 ChgDir pshs y,u,cc |
190 orcc #IntMasks | |
45 | 191 bsr setuppd |
192 ldb #$d4 | |
47 | 193 stb ,x |
194 ldb ,x | |
195 ldy 1,s | |
196 ldx <D.Proc get process pointer | |
46 | 197 ldu PD.RGS,y |
198 lda R$A,u | |
45 | 199 ldb PD.MOD,y get current file mode |
200 bitb #UPDAT. read or write mode? | |
201 beq CD30D no, skip ahead | |
202 * Change current data dir | |
49 | 203 sta P$DIO+3,x |
45 | 204 CD30D bitb #EXEC. is it execution dir? |
46 | 205 beq ok01 no, skip ahead |
45 | 206 * Change current execution directory |
49 | 207 sta P$DIO+9,x |
46 | 208 bra ok01 |
45 | 209 |
210 * | |
211 * I$Delete Entry Point | |
212 * | |
213 * Entry: | |
214 * | |
215 * Exit: | |
216 * | |
217 * Error: CC Carry set | |
218 * B = errcode | |
219 * | |
220 * | |
46 | 221 Delete pshs y,u,cc |
222 orcc #IntMasks | |
223 lbsr setuppd | |
45 | 224 ldb #$d5 |
47 | 225 stb ,x |
226 ldb ,x | |
46 | 227 cmpb #0 |
228 beq ok01 | |
229 bra er01 | |
45 | 230 |
231 * | |
232 * I$Seek Entry Point | |
233 * | |
234 * Entry: | |
235 * | |
236 * Exit: | |
237 * | |
238 * Error: CC Carry set | |
239 * B = errcode | |
240 * | |
46 | 241 Seek pshs y,u,cc |
242 orcc #IntMasks | |
243 lbsr setuppd | |
45 | 244 ldb #$d6 |
47 | 245 stb ,x |
246 ldb ,x | |
46 | 247 cmpb #0 |
248 beq ok01 | |
249 bra er01 | |
45 | 250 |
251 * | |
252 * I$ReadLn Entry Point | |
253 * | |
254 * Entry: | |
255 * | |
256 * Exit: | |
257 * | |
258 * Error: CC Carry set | |
259 * B = errcode | |
260 * | |
46 | 261 ReadLn pshs y,u,cc |
262 orcc #IntMasks | |
263 lbsr setuppd | |
45 | 264 ldb #$d7 |
47 | 265 stb ,x |
266 ldb ,x | |
46 | 267 beq ok01 |
268 bra er01 | |
45 | 269 |
270 * | |
271 * I$Read Entry Point | |
272 * | |
273 * Entry: | |
274 * | |
275 * Exit: | |
276 * | |
277 * Error: CC Carry set | |
278 * B = errcode | |
279 * | |
46 | 280 Read pshs y,u,cc |
281 orcc #IntMasks | |
282 lbsr setuppd | |
45 | 283 ldb #$d8 |
47 | 284 stb ,x |
285 ldb ,x | |
46 | 286 beq ok01 |
287 bra er01 | |
45 | 288 |
289 | |
290 * | |
291 * I$WritLn Entry Point | |
292 * | |
293 * Entry: | |
294 * | |
295 * Exit: | |
296 * | |
297 * Error: CC Carry set | |
298 * B = errcode | |
299 * | |
46 | 300 WriteLn pshs y,u,cc |
301 orcc #IntMasks | |
302 lbsr setuppd | |
45 | 303 ldb #$d9 |
47 | 304 stb ,x |
305 ldb ,x | |
46 | 306 beq ok01 |
307 bra er01 | |
45 | 308 |
309 * | |
310 * I$Write Entry Point | |
311 * | |
312 * Entry: | |
313 * | |
314 * Exit: | |
315 * | |
316 * Error: CC Carry set | |
317 * B = errcode | |
318 * | |
46 | 319 Write pshs y,u,cc |
320 orcc #IntMasks | |
321 lbsr setuppd | |
45 | 322 ldb #$da |
47 | 323 stb ,x |
324 ldb ,x | |
46 | 325 beq ok01 |
326 er01 puls y,u,cc | |
48
ea1b17311bf3
dir /v0 worked but dir /v0/src and chd /v0; dir does not
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
327 lda R$Cc,u |
ea1b17311bf3
dir /v0 worked but dir /v0/src and chd /v0; dir does not
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
328 ora #Carry |
ea1b17311bf3
dir /v0 worked but dir /v0/src and chd /v0; dir does not
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents:
47
diff
changeset
|
329 sta R$Cc,u |
46 | 330 orcc #Carry |
331 rts | |
332 ok01 puls y,u,cc,pc | |
45 | 333 |
334 * | |
335 * I$GetStat Entry Point | |
336 * | |
337 * Entry: | |
338 * | |
339 * Exit: | |
340 * | |
341 * Error: CC Carry set | |
342 * B = errcode | |
343 * | |
46 | 344 GetStat pshs y,u,cc |
345 orcc #IntMasks | |
45 | 346 ldb R$B,u get function code |
46 | 347 lbsr setuppd |
45 | 348 ldb #$dc |
47 | 349 stb ,x |
350 ldb ,x | |
46 | 351 beq ok01 |
352 bra er01 | |
45 | 353 |
354 | |
355 * | |
356 * I$SetStat Entry Point | |
357 * | |
358 * Entry: | |
359 * | |
360 * Exit: | |
361 * | |
362 * Error: CC Carry set | |
363 * B = errcode | |
364 * | |
46 | 365 SetStat pshs y,u,cc |
366 orcc #IntMasks | |
45 | 367 ldb R$B,u get function code |
46 | 368 lbsr setuppd |
45 | 369 ldb #$dd |
47 | 370 stb ,x |
371 ldb ,x | |
46 | 372 beq ok01 |
373 bra er01 | |
45 | 374 |
375 | |
376 emod | |
377 eom equ * | |
378 end | |
379 |