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