1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
|
;page 255
.z80
; iobyte:
; 0 = console on AVR-System
; 1 = console on SIO/ASCI
extrn iobyte
extrn ff.init,ff.i.st,ff.in
extrn ff.o.st,ff.out
if CPU_Z180
extrn as0init,as0ista,as0inp,as0osta,as0out
extrn as1init,as1ista,as1inp,as1osta,as1out
else
extrn ser.init,ser.ist,ser.in,ser.ost,ser.out
endif
public charini
public ?const,?conin
public ?conos,?cono
include config.inc
if CPU_Z180
include z180reg.inc
endif
cseg
if CPU_Z180
charini:
call ff.init
call as0init
jp as1init
?const:
ld a,(iobyte)
and 03h
jp z,ff.i.st
dec a
jp z,as0ista
dec a
jp z,as1ista
jr nullstatus
?conin:
ld a,(iobyte)
and 03h
jp z,ff.in
dec a
jp z,as0inp
dec a
jp z,as1inp
jr nullinput
?conos:
ld a,(iobyte)
and 03h
jp z,ff.o.st
dec a
jp z,as0osta
dec a
jp z,as1osta
jr rettrue
?cono:
ld a,(iobyte)
and 03h
jp z,ff.out
dec a
jp z,as0out
dec a
jp z,as1out
jr nulloutput
else
charini:
call ff.init
ld c,0
call ser.init
ld c,1
jp ser.init
?const:
ld a,(iobyte)
and 03h
jp z,ff.i.st
dec a
ld b,a
jp ser.ist
?conin:
ld a,(iobyte)
and 03h
jp z,ff.in
dec a
ld b,a
jp ser.in
?conos:
ld a,(iobyte)
and 03h
jp z,ff.o.st
dec a
ld b,a
jp ser.ost
?cono:
ld a,(iobyte)
and 03h
jp z,ff.out
dec a
ld b,a
jp ser.out
endif
nullinput:
ld a,1Ah
ret
nulloutput:
ld a,c
ret
rettrue:
or 0FFh
ret
nullstatus:
xor a
ret
end
|