]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blame - cbios/chario.180
b0call - call functions in bank 0 from any bank
[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
14\r
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
23 cseg\r
24\r
25;--------------------------------------------------------------\r
26; Init character device\r
27; c: device\r
28\r
29?cinit: ; init devices\r
30 ld b,c\r
31 call vector$io\r
32 dw ff.init\r
33 dw as0init\r
34 dw as1init\r
35 dw rret\r
36\r
37;--------------------------------------------------------------\r
38; Character input\r
39; b: device\r
40; return:\r
41; a: input char\r
42\r
43?ci: ; character input\r
44 call vector$io\r
45 dw ff.in\r
46 dw as0inp\r
47 dw as1inp\r
48 dw null$input\r
49\r
50;--------------------------------------------------------------\r
51; Input status\r
52; b: device\r
53; return:\r
54; a: 0ffh if char available, else 0\r
55\r
56?cist: ; character input status\r
57 call vector$io\r
58 dw ff.ist\r
59 dw as0ista\r
60 dw as1ista\r
61 dw null$status\r
62\r
63;--------------------------------------------------------------\r
64; Character output\r
65; b: device\r
66; c: output char\r
67; return:\r
68; a: output char\r
69\r
70?co: ; character output\r
71 call vector$io\r
72 dw ff.out\r
73 dw as0out\r
74 dw as1out\r
75 dw rret\r
76\r
77\r
78;--------------------------------------------------------------\r
79; Output status\r
80; b: device\r
81; return:\r
82; a: 0ffh if device ready for next output char, else 0\r
83\r
84\r
85?cost: ; character output status\r
86 call vector$io\r
87 dw ff.ost\r
88 dw as0osta\r
89 dw as1osta\r
90 dw ret$true\r
91\r
92;--------------------------------------------------------------\r
93\r
94vector$io:\r
ea5293bb 95 pop hl\r
b43b4662 96 push de\r
f80331a6
L
97 ld de,max$devices ; default if\r
98 ld a,b ;\r
99 cp e ; b > max$devices\r
ea5293bb 100 jr nc,exist\r
f80331a6
L
101 ld e,a\r
102exist:\r
ea5293bb 103 add hl,de\r
f80331a6
L
104 add hl,de\r
105\r
106 ld e,(hl)\r
ea5293bb 107 inc hl\r
f80331a6
L
108 ld d,(hl)\r
109 ex de,hl\r
b43b4662 110 pop de\r
ea5293bb
L
111 jp (hl)\r
112\r
113\r
114null$input:\r
115 ld a,1Ah\r
116rret:\r
117 ret\r
118ret$true:\r
119 or 0FFh\r
120 ret\r
121\r
122null$status:\r
123 xor a\r
124 ret\r
125\r
126;--------------------------------------------------------------\r
127\r
128@ctbl:\r
129 db 'AVRCON' ; device 0\r
130 db mb$in$out\r
131 db baud$none\r
132\r
133 db 'ASCI0 ' ; device 1\r
134 db mb$in$out+mb$serial+mb$soft$baud\r
f80331a6 135 db baud$9600\r
ea5293bb
L
136\r
137 db 'ASCI1 ' ; device 2\r
138 db mb$in$out+mb$serial+mb$soft$baud\r
ea5293bb
L
139 db baud$19200\r
140\r
141 db 0 ; table terminator\r
142\r
143;--------------------------------------------------------------\r
144\r
145\r
146\r
147\r
148\r
149 end\r