annotate level1/modules/ioman.asm @ 0:6641a883d6b0

Initial revision
author boisy
date Thu, 04 Apr 2002 16:34:12 +0000 (2002-04-04)
parents
children ce04e3883dec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
2 * IOMan - OS-9 Level One V2 I/O Manager module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
3 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
4 * $Id$
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
5 *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
6 * Ed. Comments Who YY/MM/DD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
7 * ------------------------------------------------------------------
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
8 * 11 Tandy/Microware original version
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
9
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
10 nam IOMan
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
11 ttl OS-9 Level One V2 I/O Manager module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
12
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
13 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
14 use defsfile
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
15 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
16
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
17 tylg set Systm+Objct
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
18 atrv set ReEnt+rev
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
19 rev set $01
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
20 * edition $0B = Stock OS-9 Level One Vr. 2.00 IOMan
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
21 * edition $0C = IO Queue sort bug fixed
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
22 edition equ $0C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
23
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
24 mod eom,name,tylg,atrv,IOManEnt,size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
25
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
26 size equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
27
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
28 name fcs /IOMan/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
29 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
30
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
31 * IOMan is called from OS9p2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
32 IOManEnt equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
33 * allocate device and polling tables
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
34 ldx <D.Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35 lda PollCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
36 ldb #POLSIZ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
37 mul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
38 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
39 lda DevCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
40 ldb #DEVSIZ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41 mul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
43 addd 2,s add devsize to polsiz
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44 addd #$0018
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45 addd #$00FF bring up to next page
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
47 os9 F$SRqMem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
48 bcs Crash
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 * clear allocated mem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50 leax ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 L0033 clr ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
52 subd #$0001
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
53 bhi L0033
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
54 stu <D.PolTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55 ldd ,s++ get dev size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 leax d,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57 stx <D.DevTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
58 addd ,s++ get poll size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 leax d,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60 stx <D.CLTB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
61 ldx <D.PthDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
62 os9 F$All64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
63 bcs Crash
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
64 stx <D.PthDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
65 os9 F$Ret64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
66 leax >DPoll,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
67 stx <D.Poll
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 * install I/O system calls
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 leay <IOCalls,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70 os9 F$SSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
71 rts return to OS9p2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
72
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
73 Crash jmp [>$FFFE]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
74
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
75 IOCalls fcb $7F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
76 fdb UsrIO-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
77
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
78 fcb F$Load
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
79 fdb FLoad-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
81 fcb F$PErr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
82 fdb FPErr-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
83
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
84 fcb F$IOQu+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
85 fdb FIOQu-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
86
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
87 fcb $FF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
88 fdb SysIO-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
89
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
90 fcb F$IRQ+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
91 fdb FIRQ-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
92
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
93 fcb F$IODel+$80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
94 fdb FIODel-*-2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
95
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
96 fcb $80
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
97
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
98 FIODel ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
99 ldu <D.Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
100 ldb DevCnt,u get device count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
101 ldu <D.DevTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
102 L0083 ldy V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
103 beq L0094
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
104 cmpx V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
105 beq L009B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
106 cmpx V$DRIV,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
107 beq L009B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
108 cmpx V$FMGR,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
109 beq L009B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
110 L0094 leau DEVSIZ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
111 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
112 bne L0083
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
113 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
114 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
115 L009B comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
116 ldb #E$ModBsy
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
117 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
118
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
119 UsrIODis fdb IAttach-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
120 fdb IDetach-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
121 fdb IDup-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
122 fdb IUsrCall-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
123 fdb IUsrCall-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
124 fdb IMakDir-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
125 fdb IChgDir-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
126 fdb IDelete-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
127 fdb UISeek-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
128 fdb UIRead-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
129 fdb UIWrite-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
130 fdb UIRead-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
131 fdb UIWrite-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
132 fdb UIGetStt-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
133 fdb UISeek-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
134 fdb UIClose-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
135 fdb IDeletX-UsrIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
136
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
137 SysIODis fdb IAttach-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
138 fdb IDetach-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
139 fdb SIDup-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
140 fdb ISysCall-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
141 fdb ISysCall-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
142 fdb IMakDir-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
143 fdb IChgDir-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
144 fdb IDelete-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
145 fdb SISeek-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
146 fdb SIRead-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
147 fdb SIWrite-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
148 fdb SIRead-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
149 fdb SIWrite-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
150 fdb SIGetStt-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
151 fdb SISeek-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
152 fdb SIClose-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
153 fdb IDeletX-SysIODis
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
154
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
155 UsrIO leax <UsrIODis,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 bra IODsptch
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
157 SysIO leax <SysIODis,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
158 IODsptch cmpb #I$DeletX
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
159 bhi L00FA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
160 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
161 lslb multiply by 2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
162 ldd b,x offset
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
163 leax d,x get addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
164 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
165 jmp ,x jump to it!
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
166 L00FA comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
167 ldb #E$UnkSvc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
168 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
169
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
170 IAttach ldb #$11
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
171 L0100 clr ,-s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
172 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
173 bpl L0100
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
174 stu <$10,s caller regs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
175 lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
176 sta $09,s device mode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
177 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
178 lda #Devic+0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
179 os9 F$Link link to device desc.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
180 bcs L0139
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
181 stu $04,s address of mod hdr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
182 ldy <$10,s get caller regs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
183 stx R$X,y save updated ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
184 ldd M$Port+1,u get port addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
185 std $0C,s save on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
186 ldd M$PDev,u get driver name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
187 leax d,u point X to driver name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
188 lda #Drivr+0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
189 os9 F$Link link to driver
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
190 bcs L0139
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
191 stu ,s save driver addr on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
192 ldu $04,s get addr of dev desc.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
193 ldd M$FMgr,u get file mgr name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
194 leax d,u point X to fmgr name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
195 lda #FlMgr+0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
196 os9 F$Link link to fmgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
197 L0139 bcc L0149
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
198 * error on attach, so detach
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
199 L013B stb <$11,s save fmgr addr on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
200 leau ,s point U to S
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
201 os9 I$Detach
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
202 leas <$11,s clean up stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
203 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
204 puls pc,b return to caller
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
205 L0149 stu $06,s save fmgr addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
206 ldx <D.Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
207 ldb DevCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
208 lda DevCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
209 ldu D.DevTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
210 L0153 ldx V$DESC,u get desc addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
211 beq L0188
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
212 cmpx $04,s same?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
213 bne L016E branch if not
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
214 ldx V$STAT,u get stat
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
215 bne L016C branch if zero
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
216 pshs a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
217 lda V$USRS,u get user count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
218 beq L0168
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
219 os9 F$IOQu
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
220 L0168 puls a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
221 bra L0153
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
222 L016C stu $0E,s save dev entry on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
223 L016E ldx V$DESC,u get dev desc ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
224 ldy M$Port+1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
225 cmpy $0C,s compare to port addr on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
226 bne L0188
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
227 ldx V$DRIV,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
228 cmpx ,s compare to driver addr on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
229 bne L0188
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
230 ldx V$STAT,u get static
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
231 stx $02,s save static on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
232 tst V$USRS,u test user count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
233 beq L0188 branch if zero
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
234 sta $0A,s store on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
235 L0188 leau DEVSIZ,u go to next entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
236 decb decrement count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
237 bne L0153 go back to loop if not zero
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
238 ldu $0E,s get dev entry off stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
239 lbne L01E6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
240 ldu D.DevTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
241 L0195 ldx V$DESC,u get dev desc ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
242 beq L01A6 branch if zero
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
243 leau DEVSIZ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
244 deca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245 bne L0195 continue loop
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
246 ldb #E$DevOvf device table overflow
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
247 bra L013B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
248 L01A2 ldb #E$BMode bad mode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
249 bra L013B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
250 L01A6 ldx $02,s get static storage off stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
251 lbne L01DD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
252 stu $0E,s save off dev entry on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
253 ldx ,s get driver addr off stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
254 ldd M$Mem,x get memory requirement
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
255 addd #$00FF round up to next page
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
256 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
257 os9 F$SRqMem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
258 lbcs L013B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
259 stu $02,s save off on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
260 L01BF clr ,u+ clear static mem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
261 subd #$0001
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
262 bhi L01BF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
263 ldd $0C,s get port addr off stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
264 ldu $02,s get static storage ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
265 clr V.PAGE,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
266 std V.PORT,u save addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
267 ldy $04,s get dev desc addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
268 ldx ,s get driver addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
269 ldd M$Exec,x get driver exec
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
270 jsr d,x call Init routine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
271 lbcs L013B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
272 ldu $0E,s get dev entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
273 L01DD ldb #$08 copy 8 bytes from stack to dev entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
274 L01DF lda b,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
275 sta b,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
276 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
277 bpl L01DF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
278 L01E6 ldx V$DESC,u get dev desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
279 ldb M$Revs,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
280 lda $09,s get device mode off stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
281 anda M$Mode,x AND mode with desc mode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
282 ldx V$DRIV,u get driver ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
283 anda M$Mode,x AND mode with driver mode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
284 cmpa $09,s compare with passed mode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
285 lbne L01A2 branch if error
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
286 inc V$USRS,u else inc user count of dev entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
287 bne L01FE branch if not overflow from 255->0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
288 dec V$USRS,u else dec
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
289 L01FE ldx <$10,s get caller regs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
290 stu R$U,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
291 leas <$12,s restore stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
292 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
293 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
294
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
295 IDetach ldu R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
296 ldx V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
297 ldb V$USRS,u get user count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
298 bne L0218 branch if not zero
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
299 pshs u,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
300 ldu V$STAT,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
301 pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
302 bra L0254
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
303 L0218 lda #255
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
304 cmpa V$USRS,u 255 users?
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
305 lbeq L0283 branch if so
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
306 dec V$USRS,u else dec user count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
307 lbne L0271 branch if dec not 0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
308 ldx <D.Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
309 ldb DevCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
310 pshs u,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
311 ldx V$STAT,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
312 clr V$STAT,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
313 clr V$STAT+1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
314 ldy <D.DevTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
315 L0235 cmpx V$STAT,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
316 beq L0267
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
317 leay DEVSIZ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
318 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
319 bne L0235
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
320 ldy <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
321 ldb P$ID,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
322 stb V$USRS,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
323 ldy V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
324 ldu V$DRIV,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
325 exg x,u X pts to driver, U pts to static
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
326 ldd M$Exec,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
327 leax d,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
328 pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
329 jsr $0F,x call term routine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
330 L0254 puls u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
331 ldx 1,s get U from stack (dev entry to detach)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
332 ldx V$DRIV,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
333 ldd M$Mem,x get memory requirements
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
334 addd #$00FF round up to next page
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
335 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
336 os9 F$SRtMem return mem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
337 ldx 1,s get U from stack (dev entry to detach)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
338 ldx V$DESC,x get dev desc ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
339 L0267 puls u,b get U,B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
340 ldx V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
341 clr V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
342 clr V$DESC+1,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
343 clr V$USRS,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
344 L0271 ldy V$DRIV,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
345 ldu V$FMGR,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
346 os9 F$UnLink unlink file manager
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
347 leau ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
348 os9 F$UnLink unlink driver
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
349 leau ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
350 os9 F$UnLink unlink descriptor
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
351 L0283 lbsr L04D9
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
352 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
353 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
354
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
355 * user state I$Dup
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
356 IDup bsr FindPath
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
357 bcs IDupRTS
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
358 pshs x,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
359 lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
360 lda a,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
361 bsr L02A1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
362 bcs L029D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
363 puls x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
364 stb R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
365 sta b,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
366 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
367 L029D puls pc,x,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
368
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
369 * system state I$Dup
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
370 SIDup lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
371 L02A1 lbsr FindPDsc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
372 bcs IDupRTS
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
373 inc PD.CNT,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
374 IDupRTS rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
375
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
376
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
377 * find next free path position in current proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
378 FindPath ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
379 leax <P$PATH,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
380 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
381 L02AF tst a,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
382 beq L02BC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
383 inca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
384 cmpa #NumPaths
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
385 bcs L02AF
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
386 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
387 ldb #E$PthFul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
388 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
389 L02BC andcc #^Carry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
390 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
391
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
392 IUsrCall bsr FindPath
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
393 bcs L02D1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
394 pshs u,x,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
395 bsr ISysCall
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
396 puls u,x,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
397 bcs L02D1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
398 ldb R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
399 stb a,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
400 sta R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
401 L02D1 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
402
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
403 ISysCall pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
404 ldb R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
405 bsr L0349
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
406 bcs L02E6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
407 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
408 lbsr CallFMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
409 bcs L02F5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
410 lda PD.PD,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
411 sta R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
412 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
413 L02E6 puls pc,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
414
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
415 * make directory
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
416 IMakDir pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
417 ldb #DIR.+WRITE.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
418 L02EC bsr L0349
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
419 bcs L02E6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
420 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
421 lbsr CallFMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
422 L02F5 pshs b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
423 ldu PD.DEV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
424 os9 I$Detach
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
425 lda PD.PD,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
426 ldx <D.PthDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
427 os9 F$Ret64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
428 puls pc,b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
429
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
430 * change directory
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
431 IChgDir pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
432 ldb R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
433 orb #DIR.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
434 bsr L0349
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
435 bcs L02E6
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
436 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
437 lbsr CallFMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
438 bcs L02F5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
439 ldu <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
440 ldb PD.MOD,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
441 bitb #PWRIT.+PREAD.+UPDAT.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
442 beq L0329
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
443 ldx PD.DEV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
444 stx <P$DIO,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
445 inc V$USRS,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
446 bne L0329
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
447 dec V$USRS,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
448 L0329 bitb #PEXEC.+EXEC.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
449 beq L0338
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
450 ldx PD.DEV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
451 stx <P$DIO+6,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
452 inc V$USRS,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
453 bne L0338
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
454 dec V$USRS,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
455 L0338 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
456 bra L02F5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
457
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
458 IDelete pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
459 ldb #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
460 bra L02EC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
461
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
462 IDeletX ldb #$87
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
463 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
464 ldb $01,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
465 bra L02EC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
466
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
467 * create path descriptor and initialize
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
468 * Entry:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
469 * B = path mode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
470 L0349 pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
471 ldx <D.PthDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
472 os9 F$All64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
473 bcs L03A8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
474 inc PD.CNT,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
475 stb PD.MOD,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
476 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
477 L0358 lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
478 cmpa #$20
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
479 beq L0358
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
480 leax -1,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
481 stx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
482 ldb PD.MOD,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
483 cmpa #PDELIM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
484 beq L037E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
485 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
486 bitb #PEXEC.+EXEC.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
487 beq L0373
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
488 ldx <P$DIO+6,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
489 bra L0376
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
490 L0373 ldx <P$DIO,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
491 L0376 beq L03AA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
492 ldx V$DESC,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
493 ldd M$Name,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
494 leax d,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
495 L037E pshs y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
496 os9 F$PrsNam
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
497 puls y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
498 bcs L03AA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
499 lda PD.MOD,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
500 os9 I$Attach
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
501 stu PD.DEV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
502 bcs L03AC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
503 ldx V$DESC,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
504 leax <M$Opt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
505 ldb ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
506 leau <PD.DTP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
507 cmpb #$20
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
508 bls L03A4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
509 ldb #$1F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
510 L03A0 lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
511 sta ,u+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
512 L03A4 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
513 bpl L03A0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
514 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
515 L03A8 puls pc,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
516 L03AA ldb #E$BPNam
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
517 L03AC pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
518 lda ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
519 ldx <D.PthDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
520 os9 F$Ret64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
521 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
522 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
523 bra L03A8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
524 L03BA lda $01,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
525 cmpa #$10
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
526 bcc L03CB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
527 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
528 leax <$26,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
529 andcc #^Carry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
530 lda a,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
531 bne L03CE
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
532 L03CB comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
533 ldb #E$BPNum
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
534 L03CE rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
535
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
536 UISeek bsr L03BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
537 bcc GetPDsc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
538 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
539
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
540 SISeek lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
541 GetPDsc bsr FindPDsc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
542 lbcc CallFMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
543 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
544
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
545 UIRead bsr L03BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
546 bcc L03E4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
547 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
548
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
549 SIRead lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
550 L03E4 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
551 ldb #$05
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
552 L03E8 bsr FindPDsc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
553 bcs L040B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
554 bitb $01,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
555 beq L0409
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
556 ldd $06,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
557 beq L03F8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
558 addd $04,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
559 bcs L03FD
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
560 L03F8 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
561 lbra CallFMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
562 L03FD ldb #$F4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
563 lda ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
564 bita #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
565 beq L040B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
566 ldb #$F5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
567 bra L040B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
568 L0409 ldb #E$BMode
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
569 L040B com ,s+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
570 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
571
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
572 UIWrite bsr L03BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
573 bcc L0415
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
574 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
575
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
576 SIWrite lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
577 L0415 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
578 ldb #$02
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
579 bra L03E8
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
580
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
581
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
582 * find path descriptor of path passed in A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
583 * Exit:
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
584 * Y = addr of path desc (if no error)
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
585 FindPDsc pshs x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
586 ldx <D.PthDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
587 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
588 puls x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
589 lbcs L03CB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
590 L0428 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
591
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
592 UIGetStt lbsr L03BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
593 bcc L0431
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
594 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
595
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
596 SIGetStt lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
597 L0431 pshs b,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
598 lda R$B,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
599 sta 1,s place in B on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
600 puls a get A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
601 bsr GetPDsc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
602 puls a A holds func code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
603 pshs b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
604 ldb <PD.DTP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
605 cmpb #DT.NFM
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
606 beq L044D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
607 tsta test func code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
608 beq GSOpt
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
609 cmpa #SS.DevNm
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
610 beq GSDevNm
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
611 L044D puls pc,b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
612 GSOpt leax <PD.DTP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
613 L0452 ldy R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
614 ldb #32
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
615 L0457 lda ,x+ copy 32 bytes from X to Y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
616 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
617 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
618 bne L0457
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
619 leas 2,s fix stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
620 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
621 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
622 * get device name
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
623 GSDevNm ldx PD.DEV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
624 ldx V$DESC,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
625 ldd M$Name,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
626 leax d,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
627 bra L0452
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
628
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
629 UIClose lbsr L03BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
630 bcs L0428
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
631 pshs b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
632 ldb R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
633 clr b,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
634 puls b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
635 bra L047D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
636
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
637 SIClose lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
638 L047D bsr FindPDsc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
639 bcs L0428
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
640 dec PD.CNT,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
641 tst PD.CPR,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
642 bne L0489
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
643 bsr CallFMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
644 L0489 tst PD.CNT,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
645 bne L0428
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
646 lbra L02F5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
647
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
648 L0490 os9 F$IOQu
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
649 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
650 ldb <P$Signal,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
651 bne L04A4
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
652 L0499 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
653 ldb P$ID,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
654 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
655 lda PD.CPR,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
656 bne L0490
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
657 stb PD.CPR,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
658 L04A4 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
659
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
660 * B = entry point into FMgr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
661 * Y = path desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
662 CallFMgr pshs u,y,x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
663 bsr L0499
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
664 bcs L04C1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
665 stu PD.RGS,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
666 lda <PD.DTP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
667 ldx PD.DEV,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
668 ldx V$FMGR,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
669 ldd M$Exec,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
670 leax d,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
671 ldb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
672 subb #$83 subtract offset from B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
673 lda #$03 size of one entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
674 mul compute
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
675 jsr d,x branch into file manager
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
676 L04C1 pshs b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
677 bsr L04D9
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
678 ldy $05,s get path desc off stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
679 lda <PD.DTP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
680 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
681 lda P$ID,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
682 cmpa PD.CPR,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
683 bne L04D5
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
684 clr PD.CPR,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
685 L04D5 puls b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
686 puls pc,u,y,x,a
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
687
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
688 L04D9 pshs y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
689 ldy <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
690 lda <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
691 beq L04F3
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
692 clr <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
693 ldb #S$Wake
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
694 os9 F$Send
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
695 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
696 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
697 clr <P$IOQP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
698 L04F3 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
699 puls pc,y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
700
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
701 * IRQ install routine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
702 FIRQ ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
703 ldb ,x B = flip byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
704 ldx 1,x X = mask/priority
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
705 clra
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
706 pshs cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
707 pshs x,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
708 ldx <D.Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
709 ldb PollCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
710 ldx <D.PolTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
711 ldy R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
712 beq RmvIRQEn
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
713 tst 1,s mask byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
714 beq L0572
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
715 decb dec poll table count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
716 lda #POLSIZ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
717 mul
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
718 leax d,x point to last entry in table
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
719 lda Q$MASK,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
720 bne L0572
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
721 orcc #FIRQMask+IRQMask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
722 L051C ldb 2,s get priority byte
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
723 cmpb -1,x compare with prev entry's prior
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
724 bcs L052F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
725 ldb #POLSIZ else copy prev entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
726 L0524 lda ,-x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
727 sta POLSIZ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
728 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
729 bne L0524
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
730 cmpx <D.PolTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
731 bhi L051C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
732 L052F ldd R$D,u get dev stat reg
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
733 std Q$POLL,x save it
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
734 ldd ,s++ get flip/mask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
735 sta Q$FLIP,x save flip
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
736 stb Q$MASK,x save mask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
737 ldb ,s+ get priority
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
738 stb Q$PRTY,x save priority
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
739 ldd R$Y,u get IRQ svc addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
740 std Q$SERV,x save
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
741 ldd R$U,u get IRQ svc mem ptr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
742 std Q$STAT,x save
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
743 puls pc,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
744 * remove IRQ poll entry
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
745 RmvIRQEn leas 4,s clean stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
746 ldy R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
747 L054C cmpy Q$STAT,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
748 beq L0558
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
749 leax POLSIZ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
750 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
751 bne L054C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
752 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
753 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
754 L0558 pshs b,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
755 orcc #FIRQMask+IRQMask
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
756 bra L0565
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
757 L055E ldb POLSIZ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
758 stb ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
759 deca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
760 bne L055E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
761 L0565 lda #POLSIZ
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
762 dec 1,s dec count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
763 bne L055E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
764 L056B clr ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
765 deca
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
766 bne L056B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
767 puls pc,a,cc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
768 L0572 leas 4,s clean stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
769 L0574 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
770 ldb #E$Poll
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
771 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
772
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
773 * IRQ polling routine
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
774 DPoll ldy <D.PolTbl
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
775 ldx <D.Init
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
776 ldb PollCnt,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
777 bra L0586
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
778 L0581 leay POLSIZ,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
779 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
780 beq L0574
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
781 L0586 lda [Q$POLL,y]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
782 eora Q$FLIP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
783 bita Q$MASK,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
784 beq L0581
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
785 ldu Q$STAT,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
786 pshs y,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
787 jsr [<Q$SERV,y]
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
788 puls y,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
789 bcs L0581
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
790 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
791
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
792 * load a module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
793 FLoad pshs u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
794 ldx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
795 bsr L05BC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
796 bcs L05BA
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
797 inc $02,u increment link count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
798 ldy ,u get mod header addr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
799 ldu ,s get caller regs
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
800 stx R$X,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
801 sty R$U,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
802 lda M$Type,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
803 ldb M$Revs,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
804 std R$D,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
805 ldd M$Exec,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
806 leax d,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
807 stx R$Y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
808 L05BA puls pc,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
809
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
810 L05BC lda #EXEC.
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
811 os9 I$Open
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
812 bcs L0632
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
813 leas -$0A,s make room on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
814 ldu #$0000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
815 pshs u,y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
816 sta 6,s save path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
817 L05CC ldd 4,s get U (caller regs) from stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
818 bne L05D2
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
819 stu 4,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
820 L05D2 lda 6,s get path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
821 leax 7,s point to place on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
822 ldy #M$IDSize read M$IDSize bytes
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
823 os9 I$Read
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
824 bcs L061E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
825 ldd ,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
826 cmpd #M$ID12
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
827 bne L061C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
828 ldd $09,s get module size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
829 os9 F$SRqMem allocate mem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
830 bcs L061E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
831 ldb #M$IDSize
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
832 L05F0 lda ,x+ copy over first M$IDSize bytes
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
833 sta ,u+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
834 decb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
835 bne L05F0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
836 lda $06,s get path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
837 leax ,u point X at updated U
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
838 ldu $09,s get module size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
839 leay -M$IDSize,u subtract count
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
840 os9 I$Read
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
841 leax -M$IDSize,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
842 bcs L060B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
843 os9 F$VModul validate module
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
844 bcc L05CC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
845 L060B pshs u,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
846 leau ,x point U at memory allocated
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
847 ldd M$Size,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
848 os9 F$SRtMem return mem
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
849 puls u,b
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
850 cmpb #E$KwnMod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
851 beq L05CC
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
852 bra L061E
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
853 L061C ldb #E$BMID
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
854 L061E puls u,y,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
855 lda ,s get path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
856 stb ,s save error code
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
857 os9 I$Close close path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
858 ldb ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
859 leas $0A,s clear up stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
860 cmpu #$0000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
861 bne L0632
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
862 coma
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
863 L0632 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
864
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
865
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
866 ErrHead fcc /ERROR #/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
867 ErrNum equ *-ErrHead
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
868 fcb $2F,$3A,$30,$0D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
869 ErrLen equ *-ErrHead
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
870
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
871 FPErr ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
872 lda <P$PATH+2,x get stderr path
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
873 beq L0674
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
874 leas -ErrLen,s make room on stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
875 * copy error message to stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
876 leax <ErrHead,pcr
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
877 leay ,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
878 L064C lda ,x+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
879 sta ,y+
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
880 cmpa #$0D
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
881 bne L064C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
882 ldb R$B,u get error #
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
883 L0656 inc ErrNum+0,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
884 subb #$64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
885 bcc L0656
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
886 L065C dec ErrNum+1,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
887 addb #$0A
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
888 bcc L065C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
889 addb #$30
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
890 stb ErrNum+2,s
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
891 ldx <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
892 leax ,s point to error message
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
893 ldu <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
894 lda <P$PATH+2,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
895 os9 I$WritLn write message
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
896 leas ErrLen,s fix up stack
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
897 L0674 rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
898
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
899 FIOQu ldy <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
900 L0678 lda <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
901 beq L06A0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
902 cmpa R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
903 bne L0699
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
904 clr <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
905 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
906 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
907 lbcs L070F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
908 clr <P$IOQP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
909 ldb #S$Wake
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
910 os9 F$Send
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
911 ldu <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
912 bra L06AB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
913 L0699 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
914 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
915 bcc L0678
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
916 L06A0 lda R$A,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
917 ldu <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
918 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
919 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
920 bcs L070F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
921 L06AB leax ,y X = proc desc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
922 lda <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
923 beq L06D1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
924 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
925 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
926 bcs L070F
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
927 ldb P$Age,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
928
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
929 ifeq edition-$0B
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
930
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
931 * Note: the following line is a bug
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
932 cmpd P$Age,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
933
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
934 else
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
935
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
936 cmpb P$Age,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
937
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
938 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
939
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
940 bls L06AB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
941 ldb ,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
942 stb <P$IOQN,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
943 ldb P$ID,x
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
944 stb <P$IOQP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
945 clr <P$IOQP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
946 exg y,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
947 bra L06AB
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
948 L06D1 lda P$ID,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
949 sta <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
950 lda P$ID,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
951 sta <P$IOQP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
952 ldx #$0000
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
953 os9 F$Sleep
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
954 ldu <D.Proc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
955 lda <P$IOQP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
956 beq L070C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
957 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
958 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
959 bcs L070C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
960 lda <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
961 beq L070C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
962 lda <P$IOQN,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
963 sta <P$IOQN,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
964 beq L070C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
965 clr <P$IOQN,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
966 ldx <D.PrcDBT
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
967 os9 F$Find64
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
968 bcs L070C
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
969 lda <P$IOQP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
970 sta <P$IOQP,y
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
971 L070C clr <P$IOQP,u
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
972 L070F rts
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
973
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
974 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
975 eom equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
976 end