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
|
page 200
extrn ioiniml
global as0init
global as0ista,as0inp
global as0osta,as0out
global as1init
global as1ista,as1inp
global as1osta,as1out
include config.inc
include z180reg.inc
;-----------------------------------------------------
;
;
; TC = (f PHI /(2*baudrate*Clock_mode)) - 2
;
; TC = (f PHI / (32 * baudrate)) - 2
;
cseg
;
; Init Serial I/O for console input and output (ASCI1)
;
as0init:
ld hl,initab0
jp ioiniml
as1init:
ld hl,initab1
jp ioiniml
ld a,M_MPBT
out0 (cntlb1),a
ld a,M_RE + M_TE + M_MOD2 ;Rx/Tx enable
out0 (cntla1),a
ld a,M_RIE
out0 (stat1),a ;Enable rx interrupts
ret ;
initab0:
db 1,stat0,0 ;Disable rx/tx interrupts
;Enable baud rate generator
db 1,asext0,M_BRGMOD+M_DCD0DIS+M_CTS0DIS
db 2,astc0l,low 28, high 28
db 1,cntlb0,M_MPBT ;No MP Mode, X16
db 1,cntla0,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
db 0
initab1:
db 1,stat1,0 ;Disable rx/tx ints, disable CTS1
db 1,asext1,M_BRGMOD ;Enable baud rate generator
db 2,astc1l,low 3, high 3
db 1,cntlb1,M_MPBT ;No MP Mode, X16
db 1,cntla1,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
db 0
as0ista:
in0 a,(stat0)
and M_RDRF
ret z
or 0ffh
ret
as1ista:
in0 a,(stat1)
and M_RDRF
ret z
or 0ffh
ret
as0inp:
in0 a,(stat0)
rlca
jr nc,as0inp
in0 a,rdr0
ret
as1inp:
in0 a,(stat1)
rlca
jr nc,as1inp
in0 a,rdr1
ret
as0osta:
in0 a,(stat0)
and M_TDRE
ret z
or 0ffh
ret
as1osta:
in0 a,(stat1)
and M_TDRE
ret z
or 0ffh
ret
as0out:
in0 a,(stat0)
and M_TDRE
jr z,as0out
out0 (tdr0),c
ld a,c
ret
as1out:
in0 a,(stat1)
and M_TDRE
jr z,as1out
out0 (tdr1),c
ld a,c
ret
end
|