Mercurial > hg > Members > kono > nitros9-code
comparison level1/modules/rs232.asm @ 0:6641a883d6b0
Initial revision
author | boisy |
---|---|
date | Thu, 04 Apr 2002 16:34:12 +0000 (2002-04-04) |
parents | |
children | 668388823050 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:6641a883d6b0 |
---|---|
1 ******************************************************************** | |
2 * RS232 - CoCo bit-banger driver | |
3 * | |
4 * $Id$ | |
5 * | |
6 * Ed. Comments Who YY/MM/DD | |
7 * ------------------------------------------------------------------ | |
8 * 7 Tandy/Microware original version | |
9 | |
10 nam RS232 | |
11 ttl CoCo bit-banger driver | |
12 | |
13 * Disassembled 98/08/23 17:32:49 by Disasm v1.6 (C) 1988 by RML | |
14 | |
15 ifp1 | |
16 use defsfile | |
17 use scfdefs | |
18 endc | |
19 | |
20 tylg set Drivr+Objct | |
21 atrv set ReEnt+rev | |
22 rev set $01 | |
23 edition set $07 | |
24 | |
25 mod eom,name,tylg,atrv,start,size | |
26 | |
27 u0000 rmb 29 | |
28 u001D rmb 1 | |
29 u001E rmb 1 | |
30 u001F rmb 1 | |
31 u0020 rmb 2 | |
32 u0022 rmb 2 | |
33 u0024 rmb 1 | |
34 u0025 rmb 1 | |
35 size equ . | |
36 fcb $03 | |
37 | |
38 name fcs /RS232/ | |
39 fcb edition | |
40 | |
41 L0014 fcb $04 | |
42 fcb $82 | |
43 fcb $01 | |
44 fcb $A2 " | |
45 fcb $00 | |
46 fcb $CD M | |
47 fcb $00 | |
48 fcb $63 c | |
49 fcb $00 | |
50 fcb $2D - | |
51 fcb $00 | |
52 fcb $13 | |
53 fcb $00 | |
54 fcb $05 | |
55 | |
56 start lbra Init | |
57 lbra Read | |
58 lbra Write | |
59 lbra GetStat | |
60 lbra SetStat | |
61 lbra Term | |
62 | |
63 * Init | |
64 * | |
65 * Entry: | |
66 * Y = address of device descriptor | |
67 * U = address of device memory area | |
68 * | |
69 * Exit: | |
70 * CC = carry set on error | |
71 * B = error code | |
72 * | |
73 Init pshs cc | |
74 orcc #IntMasks | |
75 ldx #PIA.U8 | |
76 clr $01,x | |
77 ldd <IT.COL,y get col/row bytes | |
78 std <u0024,u | |
79 lda #$FE | |
80 sta ,x | |
81 lda #$36 | |
82 sta $01,x | |
83 lda ,x | |
84 ldd <IT.PAR,y get parity/baud | |
85 lbsr L014D | |
86 puls cc | |
87 clrb | |
88 | |
89 * Term | |
90 * | |
91 * Entry: | |
92 * U = address of device memory area | |
93 * | |
94 * Exit: | |
95 * CC = carry set on error | |
96 * B = error code | |
97 * | |
98 Term rts | |
99 | |
100 * Read | |
101 * | |
102 * Entry: | |
103 * Y = address of path descriptor | |
104 * U = address of device memory area | |
105 * | |
106 * Exit: | |
107 * A = character read | |
108 * CC = carry set on error | |
109 * B = error code | |
110 * | |
111 Read bsr L00B1 | |
112 bcs L00CD | |
113 ldb #$08 | |
114 pshs b,cc | |
115 tst <u001E,u | |
116 beq L0066 | |
117 dec $01,s | |
118 L0066 bra L006E | |
119 L0068 ldx #$0001 | |
120 os9 F$Sleep | |
121 L006E lda >PIA.U8+2 | |
122 lsra | |
123 pshs x,a | |
124 lda >$FF69 | |
125 bpl L0091 | |
126 lda >PIA.U8+3 | |
127 bita #$01 | |
128 beq L0091 | |
129 bita #$80 | |
130 beq L0091 | |
131 orcc #Entire | |
132 leax <L0091,pcr | |
133 pshs x | |
134 pshs u,y,x,dp,b,a,cc | |
135 jmp [D.SvcIRQ] | |
136 L0091 puls x,a | |
137 bcs L0068 | |
138 orcc #IntMasks | |
139 clra | |
140 bsr L00DA | |
141 L009A bsr L00D3 | |
142 ldb >PIA.U8+2 | |
143 lsrb | |
144 rora | |
145 dec $01,s | |
146 bne L009A | |
147 bsr L00DA | |
148 tst <u001E,u | |
149 beq L00AD | |
150 lsra | |
151 L00AD puls b,cc | |
152 clrb | |
153 rts | |
154 L00B1 pshs a | |
155 lda <PD.BAU,y | |
156 anda #$0F | |
157 cmpa #$07 | |
158 bcc L00C9 | |
159 lsla | |
160 leax >L0014,pcr | |
161 ldd a,x | |
162 std <u0020,u | |
163 clrb | |
164 puls pc,a | |
165 L00C9 ldb #$CB | |
166 puls a | |
167 L00CD orcc #Carry | |
168 rts | |
169 L00D0 stb >PIA.U8 | |
170 L00D3 pshs b,a | |
171 ldd <u0020,u | |
172 bra L00E1 | |
173 L00DA pshs b,a | |
174 ldd <u0020,u | |
175 lsra | |
176 rorb | |
177 L00E1 subd #$0001 | |
178 bne L00E1 | |
179 puls pc,b,a | |
180 | |
181 * Write | |
182 * | |
183 * Entry: | |
184 * A = character to write | |
185 * Y = address of path descriptor | |
186 * U = address of device memory area | |
187 * | |
188 * Exit: | |
189 * CC = carry set on error | |
190 * B = error code | |
191 * | |
192 Write bsr L00B1 | |
193 bcs L00CD | |
194 ldb #$09 | |
195 pshs b,cc | |
196 orcc #IntMasks | |
197 tst <u001E,u | |
198 beq L00F9 | |
199 dec $01,s | |
200 L00F9 andcc #^Carry | |
201 L00FB ldb #$02 | |
202 bcs L0100 | |
203 clrb | |
204 L0100 bsr L00D0 | |
205 lsra | |
206 dec $01,s | |
207 bne L00FB | |
208 ldb <u001D,u | |
209 beq L0110 | |
210 andb #$FE | |
211 bsr L00D0 | |
212 L0110 ldb #$02 | |
213 bsr L00D0 | |
214 tst <u001F,u | |
215 beq L011D | |
216 ldb #$02 | |
217 bsr L00D0 | |
218 L011D puls pc,b,cc | |
219 | |
220 * GetStat | |
221 * | |
222 * Entry: | |
223 * A = function code | |
224 * Y = address of path descriptor | |
225 * U = address of device memory area | |
226 * | |
227 * Exit: | |
228 * CC = carry set on error | |
229 * B = error code | |
230 * | |
231 GetStat cmpa #SS.EOF | |
232 bne L0125 | |
233 L0123 clrb | |
234 rts | |
235 L0125 ldx PD.RGS,y | |
236 cmpa #SS.ScSiz | |
237 beq L0136 | |
238 cmpa #SS.ComSt | |
239 bne L0183 | |
240 ldd <u0022,u | |
241 std R$Y,x | |
242 bra L0123 | |
243 L0136 ldx PD.RGS,y | |
244 clra | |
245 ldb <u0024,u | |
246 std R$X,x | |
247 ldb <u0025,u | |
248 std R$Y,x | |
249 bra L0123 | |
250 | |
251 * SetStat | |
252 * | |
253 * Entry: | |
254 * A = function code | |
255 * Y = address of path descriptor | |
256 * U = address of device memory area | |
257 * | |
258 * Exit: | |
259 * CC = carry set on error | |
260 * B = error code | |
261 * | |
262 SetStat cmpa #SS.ComSt | |
263 bne L0183 | |
264 ldx PD.RGS,y | |
265 ldd R$Y,x | |
266 L014D std <u0022,u | |
267 clra | |
268 clrb | |
269 std <u001D,u | |
270 sta <u001F,u | |
271 ldd <u0022,u | |
272 tstb | |
273 bpl L0161 | |
274 inc <u001F,u | |
275 L0161 bitb #$40 | |
276 bne L017F | |
277 bitb #$20 | |
278 beq L016C | |
279 inc <u001E,u | |
280 L016C bita #$20 | |
281 beq L017E | |
282 bita #$80 | |
283 beq L017F | |
284 inc <u001D,u | |
285 bita #$40 | |
286 bne L017E | |
287 inc <u001D,u | |
288 L017E rts | |
289 L017F comb | |
290 ldb <E$BMode | |
291 rts | |
292 L0183 comb | |
293 ldb #E$UnkSvc | |
294 rts | |
295 | |
296 emod | |
297 eom equ * | |
298 end | |
299 |