;============================================================================== ; SIF SETUP - serial port parameters ;============================================================================== ; ; call RANDOMIZE USR 1294 ; cpu z80undoc phase 1294 ;------------------------------------------------------------------------------ ; 0x50E - původně zde byla umístěno SA-PARITY SIF_BASE equ 131 ; SIF base port SIF_BPS equ 115200 S_UART equ 0 ; select 16C550 ; 0 = first ; 2 = second S_STOPB equ 1 ; possible values 0, 1, 2 S_PARITY equ 8+16 ; +8 = enable (+0 = disable) ; +16 = even (+0 = odd) S_CRTSCTS equ 11000000b ; possible values 0, disable HW flow control ; 11000000b = enable HW flow control S_IR equ 0 ; 01001000b = enable, but 1 only when HW isn't enabled ; 0 = IRDA disable ; S_BPSDIV dw 460800/SIF_BPS ; 460800/230400 = 2 ; ; 460800/115200 = 4 ; ; 460800/57600 = 8 ; ; 460800/38400 = 12 ; ; 460800/19200 = 24 ; ; 460800/9600 = 48 ; ; 460800/4800 = 96 ; ; 460800/2400 = 192 ; ; 460800/1200 = 384 ; ; 460800/600 = 768 ; ; 460800/300 = 1536 ; ; 460800/150 = 3072 S_BPSDIV_H equ 0 S_BPSDIV_L equ 4 ;============================================================================== SIF_INIT ld a,S_UART ; if (S_UART == 1) a=0; else a=2; out (SIF_BASE+28),a ; UART xor a ; prepare LCR or S_PARITY or 3 ; 8 bit (6 or 7 bits are not allowed) ld c,a ; and store LCR to C out (SIF_BASE+12),a ; LCR ld a,00011111b ; FCR out (SIF_BASE+8),a ld a,S_IR out (SIF_BASE+16),a ; MCR ld a,c ; before baud rate will set, copy LCR to A or 128 out (SIF_BASE+12),a ; LCR ld a,S_BPSDIV_L ; BPS divider, low byte out (SIF_BASE),a ld a,S_BPSDIV_H ; BPS divider, high byte out (SIF_BASE+4),a ld a,191 out (SIF_BASE+12),a ; LCR ld a,S_CRTSCTS out (SIF_BASE+8),a ; EFR ld a,c out (SIF_BASE+12),a ; LCR ld a,00000001b out (SIF_BASE+4),a ; IER ret dephase ;------------------------------------------------------------------------------ ; končí na 0x053E (nezbývá žádné volné místo) ;------------------------------------------------------------------------------ ; 0x053F nesmí být přepsáno