X-Git-Url: http://cloudbase.mooo.com/gitweb/z180-stamp-cpm3.git/blobdiff_plain/d6829fd3d7227d278aa32049665897a8a1b2d0d5..3c56f4c2ba4bfa53c22bd0b70453012dd94dee3e:/cbios/asci-cmn.180 diff --git a/cbios/asci-cmn.180 b/cbios/asci-cmn.180 index 76ade5a..515f205 100644 --- a/cbios/asci-cmn.180 +++ b/cbios/asci-cmn.180 @@ -1,113 +1,118 @@ - - public as_init - - extrn ioiniml - extrn f_cpu,add_hla,div32_r - extrn @ctbl - - include config.inc - include z180reg.inc - - -;-------------------------------------------------------------- -; TC = (f PHI /(2*baudrate*Clock_mode)) - 2 -; -; Clock_mode == 16 -; TC = (f PHI / (32 * baudrate)) - 2 -; -; br150 = baudrate/150 -; TC = (f PHI / (32 * 150 * br150)) - 2 -; TC = (f PHI / (32 * 150 * br150)) - 2 - - -;-------------------------------------------------------------- -; Init Serial I/O for console input and output (ASCI1) -; -; b: device number (0..15) -; c: asci channel number (0/1) - - dseg -as_init: - ld hl,initab0 - dec c - jr nz,$+5 - ld hl,initab1 - - push hl - ld c,8 ; - mlt bc ; - ld hl,@ctbl+7 ;get baudrate index - add hl,bc ; - ld a,(hl) - and 0fh - add a,a ;get factor - ld hl,bd150_tab - call add_hla - ld c,(hl) - inc hl - ld b,(hl) - ld hl,(f_cpu) - ld de,(f_cpu+2) - call div32_r - ld bc,32*150 - call div32_r - ld de,2 - or a - sbc hl,de - jr nc,as_ini_1 - ld hl,0 -as_ini_1: - ld b,h - ld c,l - pop de - ld hl,init_br_off - add hl,de - ld (hl),c - inc hl - ld (hl),b - ex de,hl - jp ioiniml - - -bd150_tab: -; factor index baudrate orig. cp/m - dw 19200/150 ; 0 19200 - - dw 28800/150 ; 1 28800 50 - dw 38400/150 ; 2 38400 75 - dw 57600/150 ; 3 57600 110 - dw 11520/15 ; 4 115200 134.5 - dw 150/150 ; 5 150 - dw 300/150 ; 6 300 - dw 600/150 ; 7 600 - dw 1200/150 ; 8 1200 - dw 1800/150 ; 9 1800 - dw 2400/150 ;10 2400 - dw 3600/150 ;11 3600 - dw 4800/150 ;12 4800 - dw 7200/150 ;13 7200 - dw 9600/150 ;14 9600 - dw 19200/150 ;15 19200 - - - - -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 -init_br_off equ $ - initab0 - dw 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 - - end + + public as_init + + extrn ioiniml + extrn f_cpu,add_hla,div32_r + extrn @ctbl + + maclib z180reg.inc + maclib config.inc + + +;-------------------------------------------------------------- +; TC = (f PHI /(2*baudrate*Clock_mode)) - 2 +; +; Clock_mode == 16 +; TC = (f PHI / (32 * baudrate)) - 2 +; +; br150 = baudrate/150 +; TC = (f PHI / (32 * 150 * br150)) - 2 +; TC = (f PHI / (32 * 150 * br150)) - 2 + + +;-------------------------------------------------------------- +; Init Serial I/O for console input and output (ASCI1) +; +; b: device number (0..15) +; c: asci channel number (0/1) + + dseg +as_init: + ld de,initab0 + dec c + jr nz,$+5 + ld de,initab1 + + ld c,8 ; + mlt bc ; + ld hl,@ctbl+7 ;get baudrate index + add hl,bc ; + ld a,(hl) + call as_br_div + ld b,h + ld c,l + ld hl,init_br_off + add hl,de + ld (hl),c + inc hl + ld (hl),b + ex de,hl + jp ioiniml + + +as_br_div: + push de + push bc + and 0fh + add a,a ;get factor + ld hl,bd150_tab + call add_hla + ld c,(hl) + inc hl + ld b,(hl) + ld hl,(f_cpu) + ld de,(f_cpu+2) + call div32_r + ld bc,32*150 + call div32_r + ld de,2 + or a + sbc hl,de + pop bc + pop de + ret nc + ld hl,0 + ret + +bd150_tab: +; factor index baudrate orig. cp/m + dw 19200/150 ; 0 19200 - + dw 28800/150 ; 1 28800 50 + dw 38400/150 ; 2 38400 75 + dw 57600/150 ; 3 57600 110 + dw 11520/15 ; 4 115200 134.5 + dw 150/150 ; 5 150 + dw 300/150 ; 6 300 + dw 600/150 ; 7 600 + dw 1200/150 ; 8 1200 + dw 1800/150 ; 9 1800 + dw 2400/150 ;10 2400 + dw 3600/150 ;11 3600 + dw 4800/150 ;12 4800 + dw 7200/150 ;13 7200 + dw 9600/150 ;14 9600 + dw 19200/150 ;15 19200 + + + + +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 +init_br_off equ $ - initab0 + dw 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 + + end