;============================================================================== ; 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