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