]>
Commit | Line | Data |
---|---|---|
30d1329e L |
1 | page 255\r |
2 | .z80\r | |
3 | \r | |
4 | \r | |
e4c4b148 | 5 | ; CP/M 3 compatible character i/o\r |
30d1329e L |
6 | \r |
7 | public ?cinit,?ci,?co,?cist,?cost\r | |
8 | public @ctbl\r | |
9 | \r | |
10 | extrn ff.init,ff.i.st,ff.in,ff.o.st,ff.out\r | |
2fe44122 L |
11 | extrn as0init,as0ista,as0inp,as0osta,as0out\r |
12 | extrn as1init,as1ista,as1inp,as1osta,as1out\r | |
e4c4b148 | 13 | \r |
30d1329e L |
14 | include config.inc\r |
15 | include z180reg.inc\r | |
16 | include modebaud.inc ; define mode bits and baud eqautes\r | |
17 | \r | |
18 | \r | |
2fe44122 | 19 | max$device equ 3\r |
30d1329e L |
20 | \r |
21 | cseg\r | |
22 | \r | |
23 | ; c = device\r | |
24 | \r | |
25 | ?cinit: ; init devices\r | |
26 | ld b,c\r | |
27 | call vector$io\r | |
28 | dw ff.init\r | |
2fe44122 L |
29 | dw as0init\r |
30 | dw as1init\r | |
30d1329e L |
31 | dw rret\r |
32 | \r | |
33 | ; b = device, c = output char, a = input char\r | |
34 | \r | |
35 | ?ci: ; character input\r | |
36 | call vector$io\r | |
37 | dw ff.in\r | |
2fe44122 L |
38 | dw as0inp\r |
39 | dw as1inp\r | |
30d1329e L |
40 | dw null$input\r |
41 | \r | |
42 | ?cist: ; character input status\r | |
43 | call vector$io\r | |
44 | dw ff.i.st\r | |
2fe44122 L |
45 | dw as0ista\r |
46 | dw as1ista\r | |
30d1329e L |
47 | dw null$status\r |
48 | \r | |
49 | ?co: ; character output\r | |
50 | call vector$io\r | |
51 | dw ff.out\r | |
2fe44122 L |
52 | dw as0out\r |
53 | dw as1out\r | |
30d1329e L |
54 | dw rret\r |
55 | \r | |
56 | ?cost: ; character output status\r | |
57 | call vector$io\r | |
58 | dw ff.o.st\r | |
2fe44122 L |
59 | dw as0osta\r |
60 | dw as1osta\r | |
30d1329e L |
61 | dw ret$true\r |
62 | \r | |
63 | vector$io:\r | |
64 | ld a,max$device\r | |
65 | ld e,b\r | |
66 | vector:\r | |
67 | pop hl\r | |
68 | ld d,0\r | |
69 | cp e\r | |
70 | jr nc,exist\r | |
71 | ld e,a ; use null device if a >= max$device\r | |
72 | exist: add hl,de\r | |
73 | add hl,de\r | |
74 | ld a,(hl)\r | |
75 | inc hl\r | |
76 | ld h,(hl)\r | |
77 | ld l,a\r | |
78 | jp (hl)\r | |
79 | \r | |
80 | \r | |
81 | null$input:\r | |
82 | ld a,1Ah\r | |
83 | rret:\r | |
84 | ret\r | |
85 | ret$true:\r | |
86 | or 0FFh\r | |
87 | ret\r | |
88 | \r | |
89 | null$status:\r | |
90 | xor a\r | |
91 | ret\r | |
92 | \r | |
93 | ;--------------------------------------------------------------\r | |
94 | \r | |
95 | \r | |
96 | @ctbl:\r | |
97 | db 'HOST ' ; device 0\r | |
2fe44122 | 98 | db mb$in$out\r |
30d1329e L |
99 | db baud$none\r |
100 | \r | |
e4c4b148 | 101 | db 'ASCI0 ' ; device 1\r |
2fe44122 L |
102 | db mb$in$out+mb$serial+mb$soft$baud\r |
103 | ser0$baud:\r | |
104 | db baud$19200\r | |
105 | \r | |
106 | db 'ASCI1 ' ; device 2\r | |
30d1329e L |
107 | db mb$in$out+mb$serial+mb$soft$baud\r |
108 | ser1$baud:\r | |
109 | db baud$19200\r | |
110 | \r | |
111 | db 0 ; table terminator\r | |
112 | \r | |
113 | end\r |