;==============================================================================
; CLEAR buffers
;==============================================================================
;
; Toto může být potřeba při použití USB-RS232 rozhranní. V bufferu rozhranní
; mohou zůstat data, která je potřeba vymazat a nestačí prostě číst dokud
; jsou data přítomná v 16C550, protože přes RS232 nestihne občas přijít vše.
;

		cpu	z80undoc
		phase	1494

;------------------------------------------------------------------------------
; 0x5D6 - původně asi prostředek smyčky LD-LOOP
; clear input serial buffers (not only 16C550, but USB converters too)

SIF_CLEAR	ld	c,255			; reset counter to maximum
		nop
SIF_CLR_1	dec	c			; dec. timeout counter
		jr	z,SIF_CLR_RET		; Z = no data, timeout => return
		ld	b,10
SIF_CLRWAIT	djnz	SIF_CLRWAIT
		ld	a,127			; test key SPACE (BREAK)
		in	a,(254)
		rra
		jr	nc,SIF_CLR_RET		; NC = pressed
		xor	a
		in	a,(SIF_BASE+20)		; are any data ready?
		and	1
		jr	z,SIF_CLR_1		; Z = no data
		xor	a
		in	a,(SIF_BASE)
		and	00000111b
		out	(254),a
		jr	SIF_CLEAR

SIF_CLR_RET	ld	a,(23624)		; set BORDER color from BASIC variables
		and	00111000b
		rrca
		rrca
		rrca
		out	(254),a
		ret

		db	0			; výplň

		dephase

;------------------------------------------------------------------------------
; končí na 0x05DA
;------------------------------------------------------------------------------
; 0x0605	nesmí být přepsáno