]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blob - cbios/asci-cmn.180
Add RTS/CTS flow control for asci0.
[z180-stamp-cpm3.git] / cbios / asci-cmn.180
1
2 public as_init
3
4 extrn ioiniml
5 extrn f_cpu,add_hla,div32_r
6 extrn @ctbl
7
8 include config.inc
9 include z180reg.inc
10
11
12 ;--------------------------------------------------------------
13 ; TC = (f PHI /(2*baudrate*Clock_mode)) - 2
14 ;
15 ; Clock_mode == 16
16 ; TC = (f PHI / (32 * baudrate)) - 2
17 ;
18 ; br150 = baudrate/150
19 ; TC = (f PHI / (32 * 150 * br150)) - 2
20 ; TC = (f PHI / (32 * 150 * br150)) - 2
21
22
23 ;--------------------------------------------------------------
24 ; Init Serial I/O for console input and output (ASCI1)
25 ;
26 ; b: device number (0..15)
27 ; c: asci channel number (0/1)
28
29 dseg
30 as_init:
31 ld hl,initab0
32 dec c
33 jr nz,$+5
34 ld hl,initab1
35
36 push hl
37 ld c,8 ;
38 mlt bc ;
39 ld hl,@ctbl+7 ;get baudrate index
40 add hl,bc ;
41 ld a,(hl)
42 and 0fh
43 add a,a ;get factor
44 ld hl,bd150_tab
45 call add_hla
46 ld c,(hl)
47 inc hl
48 ld b,(hl)
49 ld hl,(f_cpu)
50 ld de,(f_cpu+2)
51 call div32_r
52 ld bc,32*150
53 call div32_r
54 ld de,2
55 or a
56 sbc hl,de
57 jr nc,as_ini_1
58 ld hl,0
59 as_ini_1:
60 ld b,h
61 ld c,l
62 pop de
63 ld hl,init_br_off
64 add hl,de
65 ld (hl),c
66 inc hl
67 ld (hl),b
68 ex de,hl
69 jp ioiniml
70
71
72 bd150_tab:
73 ; factor index baudrate orig. cp/m
74 dw 19200/150 ; 0 19200 -
75 dw 28800/150 ; 1 28800 50
76 dw 38400/150 ; 2 38400 75
77 dw 57600/150 ; 3 57600 110
78 dw 11520/15 ; 4 115200 134.5
79 dw 150/150 ; 5 150
80 dw 300/150 ; 6 300
81 dw 600/150 ; 7 600
82 dw 1200/150 ; 8 1200
83 dw 1800/150 ; 9 1800
84 dw 2400/150 ;10 2400
85 dw 3600/150 ;11 3600
86 dw 4800/150 ;12 4800
87 dw 7200/150 ;13 7200
88 dw 9600/150 ;14 9600
89 dw 19200/150 ;15 19200
90
91
92
93
94 initab0:
95 db 1,stat0,0 ;Disable rx/tx interrupts
96 ;Enable baud rate generator
97 db 1,asext0,M_BRGMOD+M_DCD0DIS ; +M_CTS0DIS
98 db 2,astc0l
99 init_br_off equ $ - initab0
100 dw 28
101 db 1,cntlb0,M_MPBT ;No MP Mode, X16
102 db 1,cntla0,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
103 db 0
104
105 initab1:
106 db 1,stat1,0 ;Disable rx/tx ints, disable CTS1
107 db 1,asext1,M_BRGMOD ;Enable baud rate generator
108 db 2,astc1l,low 3, high 3
109 db 1,cntlb1,M_MPBT ;No MP Mode, X16
110 db 1,cntla1,M_RE+M_TE+M_MOD2 ;Rx/Tx enable, 8N1
111 db 0
112
113 end