annotate level1/modules/pipeman.asm @ 2438:a0d17254fbb3

rfm continues
author aaronwolfe
date Thu, 25 Feb 2010 00:09:32 +0000
parents 48d47eb305dc
children a34c08cdfcb2
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
1 ********************************************************************
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
2 * PipeMan - OS-9 Pipe File Manager
0
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 *
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
6 * Some tests under NitrOS-9:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
7 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
8 * 'show grf.3.a | eat' (eat is cat, but just does a I$ReadLn, and not I$WritLn)
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
9 * April 10, 1996 14:05:15
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
10 * April 10, 1996 14:07:47
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
11 * 15.2 seconds per iteration
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
12 * i.e. everything but the screen writes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
13 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
14 * fast SCF+fast pipe
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
15 * 'show grf.3.a | cat', 10 times
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
16 * April 10, 1996 13:17:54
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
17 * April 10, 1996 13:21:57
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
18 * 24.3 seconds per iteration
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
19 * 9.1 solely for pipes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
20 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
21 * fast SCF+old slow pipe
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
22 * April 10, 1996 13:30:24
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
23 * April 10, 1996 13:38:04
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
24 * 46.0 seconds per iteration
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
25 * 30.8 solely for pipes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
26 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
27 * speedup percent is (30.8-9.1)/30.8 = 70%
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
28 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
29 * Pipes are more than doubled in speed!
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
30 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
31 * 32 byte read and write buffers
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
32 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
33 * Edt/Rev YYYY/MM/DD Modified by
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
34 * Comment
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
35 * ------------------------------------------------------------------
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
36 * 4 ????/??/?? Alan DeKok
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
37 * Enhanced and re-written.
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
38 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
39 * 5r0 2003/08/27 Boisy G. Pitre
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
40 * Back-ported from OS-9 Level Two to OS-9 Level One.
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
41
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
42 nam PipeMan
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
43 ttl OS-9 Pipe File Manager
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
44
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
45 ifp1
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
46 use defsfile
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
47 use pipedefs
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
48 use scfdefs
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
49 endc
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
50
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
51 tylg set FlMgr+Objct
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
52 atrv set ReEnt+Rev
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
53 rev set $00
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
54 edition set 5
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
55
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
56 mod eom,name,tylg,atrv,start,size
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
57
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
58 rmb $0000
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
59 size equ .
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
60
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
61
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
62 org $0000
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
63 P.CPR rmb 1 process ID
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
64 P.CNT rmb 1 count
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
65 P.SIG rmb 1 signal code
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
66 P.FLAG rmb 1 raw/edit flag
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
67
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
68 name fcs /PipeMan/
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
69 fcb edition
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
70
1279
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
71 start lbra Create
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
72 lbra Open
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
73 lbra MakDir
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
74 lbra ChgDir
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
75 lbra Delete
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
76 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
77 * I$Seek Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
78 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
79 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
80 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
81 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
82 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
83 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
84 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
85 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
86 Seek clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
87 rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
88 nop
1279
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
89 lbra Read
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
90 lbra Write
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
91 lbra ReadLn
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
92 lbra WritLn
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
93
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
94 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
95 * I$GetStat Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
96 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
97 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
98 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
99 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
100 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
101 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
102 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
103 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
104 GetStt clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
105 rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
106 nop
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
107
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
108 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
109 * I$SetStat Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
110 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
111 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
112 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
113 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
114 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
115 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
116 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
117 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
118 SetStt clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
119 rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
120 nop
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
121
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
122 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
123 * I$Close Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
124 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
125 * Entry: A = path number
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
126 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
127 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
128 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
129 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
130 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
131 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
132 Close lda PD.CNT,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
133 bne L008E
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
134 ldu PD.BUF,y if no one's using it,
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
135 clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
136 inca
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
137 os9 F$SRtMem return the memory
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
138 clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
139 rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
140
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
141 L008E leax PD.Read,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
142 cmpa PD.Read+P.CNT,y is the read count zero?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
143 beq L009C
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
144
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
145 cmpa PD.Writ+P.CNT,y is the write count zero?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
146 bne L00A9
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
147 leax PD.Writ,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
148
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
149 L009C lda P.CPR,x get process ID that's reading/writing
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
150 beq L00A9 if none
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
151 ldb P.SIG,x get signal code
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
152 beq L00A9
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
153 clr P.SIG,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
154 os9 F$Send send a wake-up signal to the process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
155 L00A9 clrb
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
156 rts
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
157
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
158 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
159 * I$MakDir Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
160 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
161 * Entry: X = address of the pathlist
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
162 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
163 * Exit: X = last byte of pathlist address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
164 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
165 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
166 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
167 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
168 MakDir equ *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
169
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
170 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
171 * I$ChgDir Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
172 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
173 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
174 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
175 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
176 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
177 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
178 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
179 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
180 ChgDir equ *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
181
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
182 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
183 * I$Delete Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
184 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
185 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
186 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
187 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
188 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
189 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
190 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
191 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
192 Delete equ *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
193 comb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
194 ldb #E$UnkSVC
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
195 rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
196
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
197 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
198 * I$Create Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
199 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
200 * Entry: A = access mode desired
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
201 * B = file attributes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
202 * X = address of the pathlist
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
203 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
204 * Exit: A = pathnum
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
205 * X = last byte of pathlist address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
206 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
207 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
208 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
209 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
210 Create equ *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
211
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
212 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
213 * I$Open Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
214 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
215 * Entry: A = access mode desired
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
216 * X = address of the pathlist
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
217 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
218 * Exit: A = pathnum
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
219 * X = last byte of pathlist address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
220 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
221 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
222 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
223 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
224 Open equ *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
225 ldx R$X,u get address of filename to open
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
226 pshs y save PD pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
227 os9 F$PrsNam parse /pipe
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
228 bcs L007B exit on error
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
229 IFGT Level-1
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
230 ldx <D.Proc current process ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
231 ldb P$Task,x get task number for call, below
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
232 leax -$01,y back up one character
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
233 os9 F$LDABX get last character of the filename
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
234 tsta check the character
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
235 ELSE
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
236 * leax -1,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
237 lda -1,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
238 ENDC
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
239 bmi L0060 if high bit set, it's OK
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
240 leax ,y point to next bit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
241 os9 F$PrsNam else parse name
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
242 bcc L007B if no error, it's a sub-dir, and we error out
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
243 L0060 sty R$X,u save new pathname ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
244 puls y restore PD pointer
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
245 ldd #$0100
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
246 os9 F$SRqMem request one page for the pipe
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
247 bcs L007A exit on error
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
248 stu PD.BUF,y save ptr to the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
249 stu <PD.NxtI,y save write pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
250 stu <PD.NxtO,y and read pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
251 leau d,u point to the end of the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
252 stu <PD.End,y save save the ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
253 L007A rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
254
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
255 L007B comb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
256 ldb #E$BPNam bad path name
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
257 puls pc,y
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
258
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
259 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
260 * I$ReadLn Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
261 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
262 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
263 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
264 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
265 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
266 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
267 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
268 *
1279
9a563c32979a ChangeLog updates
boisy
parents: 201
diff changeset
269 ReadLn ldb #$0D
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
270 fcb $21 skip one byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
271
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
272 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
273 * I$Read Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
274 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
275 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
276 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
277 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
278 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
279 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
280 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
281 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
282 Read clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
283 stb PD.Read+P.FLAG,y raw read
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
284 leax PD.Read,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
285 lbsr L0160 send wakeup signals to process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
286 bcs L0100 on error, wake up writing process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
287 ldx R$Y,u
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
288 beq L0100 if no bytes to rwad
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
289 ldd R$X,u start address to read from
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
290 leax d,x add in number of bytes: end address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
291
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
292 * NOTE: PD.RGS,Y will change as the processes read/write the pipe,
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
293 * and sleep.
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
294 pshs u save current caller's register stack
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
295 leas -32,s reserve a 32-byte buffer on the stack
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
296 leau ,s point to the start of the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
297 pshs d,x save start, end to read
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
298
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
299 clrb no bytes read to user yet
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
300 puls x restore number of data bytes read, read address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
301 L00DB bsr L01F2 are we blocked?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
302 bcs L00C8 yes, send a signal
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
303 sta b,u store the byte in the internal read buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
304 leax $01,x go up by one byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
305 incb one more byte in the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
306 cmpb #32 reached maximum size of the buffer?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
307 blo L00E0 no, continue
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
308 bsr read.out read 32 bytes of data to the caller
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
309
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
310 L00E0 tst PD.Read+P.FLAG,Y was it a raw read?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
311 beq L00ED skip ahead if raw
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
312 cmpa #C$CR was the character a CR?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
313 beq L00F1 yes, we're done: flush and exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
314 L00ED cmpx ,s or at end of data to read?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
315 blo L00DB no, keep reading
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
316
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
317 L00F1 bsr read.out flush the rest of the pipe buffer to the user
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
318 L00F2 tfr x,d this is how far we got
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
319 subd ,s++ take out start of buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
320 leas 32,s kill our on-stack buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
321 puls u restore caller's register stack ptr: NOT PD.RGS,Y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
322 addd R$Y,u add in number of bytes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
323 std R$Y,u save bytes read
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
324 bne L00FF if not zero
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
325 ldb #E$EOF zero bytes read:EOF error
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
326 fcb $21 skip one byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
327
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
328 L00FF clrb no errors
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
329 L0100 leax PD.Read,y read data ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
330 lbra L01BD signal other it's OK to go ahead
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
331
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
332 read.out pshs a,x,y,u save registers
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
333 tstb any data to write?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
334 beq read.ex no, skip ahead
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
335 IFGT Level-1
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
336 clra make 16-bit data length
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
337 tfr d,y number of data bytes to read to user
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
338 negb make it negative
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
339 leax b,x back up TO pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
340 pshs x save it
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
341 leax ,u point to the start of the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
342 ldu <D.Proc current process pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
343 ldb P$Task,u A=$00 from above, already
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
344 puls u restore TO pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
345 os9 F$Move move the data over
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
346 clrb no bytes read to the caller yet
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
347 ELSE
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
348 tfr b,a copy byte count to A
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
349 nega make it negative
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
350 leax a,x back up TO pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
351 ReadLoop lda ,u+
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
352 sta ,x+
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
353 decb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
354 bne ReadLoop
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
355 ENDC
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
356 read.ex puls a,x,y,u,pc restore registers and exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
357
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
358 L00C8 pshs x save read pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
359 bsr read.out dump data out to the user
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
360 pshs b save number of bytes read
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
361 leax PD.Read,y read data area ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
362 lbsr L018B setup for signal
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
363 puls x,b restore registers: note B=$00, but we CANNOT do a
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
364 bcc L00DB clrb, because this line needs CC.C!
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
365 bra L00F2 don't write data out again, but exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
366
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
367 * Check if we're blocked
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
368 L01F2 lda <PD.RFlg,y we blocked?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
369 bne L01F9 no, skip ahead
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
370 coma set flag: blocked
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
371 rts and return to the caller
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
372
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
373 L01F9 pshs x save read ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
374 ldx <PD.NxtO,y where to read from in the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
375 lda ,x+ get a byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
376 cmpx <PD.End,y at the end of the buffer?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
377 blo L0207 no, skip ahesd
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
378 ldx PD.BUF,y yes, go to start
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
379 L0207 stx <PD.NxtO,y save new read ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
380 cmpx <PD.NxtI,y caught up to the write pointer yet?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
381 bne L0212 no, skeip ahead
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
382 clr <PD.RFlg,y yes, set read is blocked
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
383 L0212 andcc #^Carry no errors
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
384 puls pc,x restore regs and exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
385
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
386 L0160 lda P.CPR,x get current process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
387 beq L0185 none, exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
388 cmpa PD.CPR,y current process ID
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
389 beq L0189 none, exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
390 inc P.CNT,x one more process using this pipe
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
391 ldb P.CNT,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
392 cmpb PD.CNT,y same as the number for this path?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
393 bne L0173 no, skip ahead
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
394 lbsr L009C no, send a wake-up signal
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
395 L0173 os9 F$IOQu and insert it in the others IO queue
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
396 dec P.CNT,x decrement count
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
397 pshs x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
398 ldx <D.Proc current process ptr
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
399 ldb <P$Signal,x signal code
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
400 puls x
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
401 beq L0160 if no signal code sent, do another process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
402 coma otherwise return CC.C set, and B=signal code
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
403 rts
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
404
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
405 L0185 ldb PD.CPR,y grab current PD process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
406 stb P.CPR,x save as current reading/writing process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
407 L0189 clrb no errors
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
408 rts and exit
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
409
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
410 L01CC pshs b,x save regs
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
411 ldx <PD.NxtI,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
412 ldb <PD.RFlg,y 0=READ, 1=WRITE
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
413 beq L01DE was reading, set to write and continue
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
414 cmpx <PD.NxtO,y caught up to the read pointer yet?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
415 bne L01E3
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
416 comb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
417 puls pc,x,b
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
418
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
419 L01DE inc <PD.RFlg,y set to writing into the pipe
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
420 L01E3 sta ,X+ save the byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
421 cmpx <PD.End,y if at the end of the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
422 blo L01EC
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
423 ldx PD.BUF,y reset to the beginning
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
424 L01EC stx <PD.NxtI,y
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
425 clrb
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
426 puls pc,x,b
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
427
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
428 write.in pshs a,x,y save registers
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
429 leau -32,u point to the start of the buffer again
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
430 IFGT Level-1
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
431 ldx <D.Proc current process pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
432 lda P$Task,x get FROM task number for this process
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
433 ldx 1,s get FROM pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
434 ldy #32 16 bytes to grab
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
435 clrb TO the system task
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
436 os9 F$Move
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
437 ELSE
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
438 ldb #31
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
439 WritLoop lda b,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
440 sta b,u
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
441 decb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
442 bpl WritLoop
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
443 ENDC
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
444 ldb #32 16 bytes in the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
445 puls a,x,y,pc
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
446
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
447 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
448 * I$WritLn Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
449 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
450 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
451 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
452 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
453 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
454 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
455 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
456 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
457 WritLn ldb #$0D
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
458 fcb $21 skip one byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
459
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
460 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
461 * I$Write Entry Point
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
462 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
463 * Entry:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
464 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
465 * Exit:
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
466 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
467 * Error: CC Carry set
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
468 * B = errcode
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
469 *
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
470 Write clrb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
471 stb <PD.Writ+P.FLAG,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
472 leax PD.Writ,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
473 bsr L0160 make sure it's OK
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
474 bcs L015C
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
475 ldx R$Y,u get number of bytes to write
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
476 beq L015C
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
477 ldd R$X,u start address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
478 leax d,x add in number of bytes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
479 pshs u
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
480 leau ,s point to the end of the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
481 leas -32,s
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
482 pshs d,x save start, end
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
483
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
484 ldx ,s get initial start pointer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
485 bsr write.in fill the write buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
486
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
487 puls x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
488 L0137 lda ,u
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
489 bsr L01CC save it in the buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
490 bcs L0124 caught up to reading process yet?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
491 leax $01,x up by one byte
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
492 leau 1,u
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
493 decb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
494 bne L0138
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
495 bsr write.in fill the buffer again
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
496
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
497 L0138 tst <PD.Writ+P.FLAG,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
498 beq L014B
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
499 cmpa #C$CR at the end of a line to output?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
500 beq L014F
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
501 L014B cmpx ,S at end yet?
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
502 blo L0137 if not, read more data
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
503 L014F clrb clear carry and error
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
504 L0150 ldu 2+32,s skip END, 32-byte write buffer, get U
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
505 pshs b,cc
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
506 tfr x,d
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
507 subd $02,s take out end address
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
508 addd R$Y,u add in number of bytes
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
509 std R$Y,u save bytes written
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
510 puls x,b,cc
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
511 leas 32,s kill write buffer
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
512 puls u
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
513
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
514 L015C leax PD.Writ,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
515 * can probably lose saving 'U' in next few lines... but only minor difference
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
516 * Signal read/write it's OK to go ahead
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
517 L01BD pshs u,b,cc
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
518 clr P.CPR,x NO process currently using this device
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
519 bsr Other signal other process to start
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
520 puls pc,u,b,cc
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
521
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
522 L0124 pshs x,b
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
523 leax PD.Writ,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
524 bsr L018B send signal to other
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
525 tfr b,a save error code, if applicable
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
526 puls x,b restore pointer, byte count
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
527 bcc L0137 continue if OK
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
528 tfr a,b otherwise restore error code
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
529 bra L0150 exit, returning the error code to the user
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
530
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
531 L018B ldb P.CNT,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
532 incb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
533 cmpb PD.CNT,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
534 beq L01B9
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
535 stb P.CNT,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
536 ldb #$01
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
537 stb P.SIG,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
538 clr PD.CPR,y
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
539 pshs x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
540 bsr Other
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
541 ldx #$0000 make X=0
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
542 os9 F$Sleep sleep forever
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
543 ldx <D.Proc
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
544 ldb <P$Signal,x get signal code
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
545 puls x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
546 dec P.CNT,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
547 tstb
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
548 bne L01BB if a signal, we can't wake up
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
549 clrb the writing process
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
550 rts
1280
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
551
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
552 L01B9 ldb #E$Write write error
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
553 L01BB coma
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
554 rts
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
555
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
556 Other exg x,d
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
557 eorb #$04 if r/w go to w/r
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
558 exg d,x
48d47eb305dc Back-ported from OS-9 Level Two
boisy
parents: 1279
diff changeset
559 lbra L009C
0
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
560
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
561 emod
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
562 eom equ *
6641a883d6b0 Initial revision
boisy
parents:
diff changeset
563 end