]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blame - cbios/chario.180
new chario
[z180-stamp-cpm3.git] / cbios / chario.180
CommitLineData
ea5293bb
L
1 title 'Character I/O Module for the Modular CP/M 3 BIOS'\r
2 page 255\r
3 .z80\r
4\r
5\r
6\r
7 public ?cinit,?ci,?co,?cist,?cost\r
8 public @ctbl\r
9\r
10\r
11 extrn ff.init,ff.ist,ff.in,ff.ost,ff.out\r
12 extrn as0init,as0ista,as0inp,as0osta,as0out\r
13 extrn as1init,as1ista,as1inp,as1osta,as1out\r
50f3b8f0 14 extrn _b0call\r
ea5293bb
L
15\r
16 include config.inc\r
17 include z180reg.inc\r
18\r
19 include modebaud.inc ; define mode bits and baud equates\r
20\r
21max$devices equ 3\r
22\r
12f14a43
L
23O_CISTF equ 0\r
24O_CIF equ 2\r
25O_COSTF equ 4\r
26O_COF equ 6\r
27O_INITF equ 8\r
28O_CTBL equ 10\r
29\r
30;--------------------------------------------------------------\r
31\r
32 cseg\r
33@ctbl:\r
34 db 'USB0 ' ; device 0\r
35 db mb$in$out\r
36 db baud$none\r
37\r
38 db 'ASCI0 ' ; device 1\r
39 db mb$in$out+mb$serial+mb$soft$baud\r
40 db baud$19200\r
41\r
42 db 'ASCI1 ' ; device 2\r
43 db mb$in$out+mb$serial+mb$soft$baud\r
44 db baud$19200\r
45\r
46 db 0 ; table terminator\r
47\r
48\r
49 dseg\r
50xctbl:\r
51 dw ff_dev\r
52 dw as0_dev\r
53 dw as1_dev\r
54 dw null_dev\r
55\r
56 rept 16 - ($-xctbl)/2\r
57 dw 0\r
58 endm\r
59\r
60ff_dev:\r
61 dw ff.ist\r
62 dw ff.in\r
63 dw ff.ost\r
64 dw ff.out\r
65 dw ff.init\r
66 dw @ctbl+8*0\r
67\r
68as0_dev:\r
69 dw as0ista\r
70 dw as0inp\r
71 dw as0osta\r
72 dw as0out\r
73 dw as0init\r
74 dw @ctbl+8*1\r
75\r
76as1_dev:\r
77 dw as1ista\r
78 dw as1inp\r
79 dw as1osta\r
80 dw as1out\r
81 dw as1init\r
82 dw @ctbl+8*2\r
83\r
84null_dev:\r
85 dw null$status\r
86 dw null$input\r
87 dw ret$true\r
88 dw rret\r
89 dw rret\r
90 dw 0\r
91\r
ea5293bb
L
92\r
93;--------------------------------------------------------------\r
94; Init character device\r
95; c: device\r
96\r
2a413c0d 97 cseg\r
ea5293bb 98?cinit: ; init devices\r
50f3b8f0
L
99 b0call _cinit\r
100 ret\r
101\r
102 dseg\r
103_cinit:\r
ea5293bb 104 ld b,c\r
12f14a43
L
105 ld hl,O_INITF\r
106 jr vector_io\r
50f3b8f0 107\r
ea5293bb
L
108;--------------------------------------------------------------\r
109; Character input\r
110; b: device\r
111; return:\r
112; a: input char\r
113\r
2a413c0d 114 cseg\r
ea5293bb 115?ci: ; character input\r
2a413c0d
L
116 b0call _ci\r
117 ret\r
118\r
119 dseg\r
120_ci:\r
12f14a43
L
121 ld hl,O_CIF\r
122 jr vector_io\r
ea5293bb
L
123\r
124;--------------------------------------------------------------\r
125; Input status\r
126; b: device\r
127; return:\r
128; a: 0ffh if char available, else 0\r
129\r
2a413c0d
L
130 cseg\r
131?cist: ; character input\r
132 b0call _cist\r
133 ret\r
134\r
135 dseg\r
136_cist: ; character input status\r
12f14a43
L
137 ld hl,O_CISTF\r
138 jr vector_io\r
ea5293bb
L
139\r
140;--------------------------------------------------------------\r
141; Character output\r
142; b: device\r
143; c: output char\r
144; return:\r
145; a: output char\r
146\r
2a413c0d
L
147 cseg\r
148?co: ; character input\r
149 b0call _co\r
150 ret\r
151\r
152 dseg\r
153_co: ; character output\r
12f14a43
L
154 ld hl,O_COF\r
155 jr vector_io\r
ea5293bb
L
156\r
157\r
158;--------------------------------------------------------------\r
159; Output status\r
160; b: device\r
161; return:\r
162; a: 0ffh if device ready for next output char, else 0\r
163\r
164\r
2a413c0d
L
165 cseg\r
166?cost: ; character input\r
167 b0call _cost\r
168 ret\r
169\r
170 dseg\r
171_cost: ; character output status\r
12f14a43
L
172 ld hl,O_COSTF\r
173 jr vector_io\r
ea5293bb
L
174\r
175;--------------------------------------------------------------\r
176\r
2a413c0d 177 dseg\r
12f14a43 178vector_io:\r
b43b4662 179 push de\r
12f14a43 180 ex de,hl\r
f80331a6 181\r
12f14a43
L
182 ld hl,xctbl\r
183 ld a,max$devices\r
184 cp b\r
185 jr c,$+3\r
186 ld a,b\r
187 add a,a\r
188 add a,l\r
189 ld l,a\r
190 jr nc,$+3\r
191 inc h\r
192 ld a,(hl)\r
ea5293bb 193 inc hl\r
12f14a43
L
194 ld h,(hl)\r
195 ld l,a\r
f80331a6 196 ex de,hl\r
12f14a43
L
197 add hl,de\r
198 ld a,(hl)\r
199 inc hl\r
200 ld h,(hl)\r
201 ld l,a\r
202 ex (sp),hl\r
203 ex de,hl\r
204 ret\r
ea5293bb 205\r
12f14a43 206;--------------------------------------------------------------\r
ea5293bb
L
207\r
208null$input:\r
209 ld a,1Ah\r
210rret:\r
211 ret\r
212ret$true:\r
213 or 0FFh\r
214 ret\r
215\r
216null$status:\r
217 xor a\r
218 ret\r
219\r
ea5293bb 220 end\r