]> cloudbase.mooo.com Git - z180-stamp-cpm3.git/blame - cbios/asci-cmn.180
asci0 int: Save intermediate state. Not working!
[z180-stamp-cpm3.git] / cbios / asci-cmn.180
CommitLineData
d6829fd3
L
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
30as_init:
31 ld hl,initab0
32 dec c
33 jr nz,$+5
34 ld hl,initab1
35
46c2044d 36 push hl ;save initab addr
d6829fd3
L
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
59as_ini_1:
60 ld b,h
61 ld c,l
46c2044d 62 pop de ;get back initab addr
d6829fd3
L
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
72bd150_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
94initab0:
95 db 1,stat0,0 ;Disable rx/tx interrupts
96 ;Enable baud rate generator
b8ad769f 97 db 1,asext0,M_BRGMOD+M_DCD0DIS ; +M_CTS0DIS
d6829fd3
L
98 db 2,astc0l
99init_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
105initab1:
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