]> cloudbase.mooo.com Git - z180-stamp.git/blame - z180/chario.180
CP/M 3 compatible character i/o handling
[z180-stamp.git] / z180 / chario.180
CommitLineData
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
18max$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
57vector$io:\r
58 ld a,max$device\r
59 ld e,b\r
60vector:\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
66exist: 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
75null$input:\r
76 ld a,1Ah\r
77rret:\r
78 ret\r
79ret$true:\r
80 or 0FFh\r
81 ret\r
82\r
83null$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
97ser1$baud:\r
98 db baud$19200\r
99\r
100 db 0 ; table terminator\r
101\r
102 end\r
103\r