59 lines
1.3 KiB
JavaScript
59 lines
1.3 KiB
JavaScript
; -------------------------------------------------
|
|
; uart.inc.jsm
|
|
; -------------------------------------------------
|
|
; needs xmem-address definition for
|
|
; - uart_status (Status register)
|
|
; - uart_data (Data register)
|
|
UART_TX_EMPTY: equ 0x01
|
|
UART_TX_FULL: equ 0x02
|
|
UART_TX_CMPL: equ 0x04
|
|
UART_RX_PRESENT: equ 0x10
|
|
|
|
; -------------------------------------------------
|
|
; uart_puts
|
|
; -------------------------------------------------
|
|
; R1 : ptr to string
|
|
uart_puts: push R0
|
|
u_p_lp: movx R0, (R1)
|
|
inc R1
|
|
tst R0
|
|
jz ex_ugp
|
|
call uart_putchar
|
|
jmp u_p_lp
|
|
ex_ugp: pop R0
|
|
ret
|
|
|
|
|
|
; -------------------------------------------------
|
|
; uart_putchar
|
|
; -------------------------------------------------
|
|
; R0 = input
|
|
uart_putchar: jmp sout
|
|
|
|
; -------------------------------------------------
|
|
; sout
|
|
; -------------------------------------------------
|
|
; R0 = input
|
|
sout: push R1
|
|
sout1: xin R1, (uart_status)
|
|
and R1, UART_TX_FULL
|
|
jnz sout1
|
|
xout (uart_data), R0
|
|
pop R1
|
|
ret
|
|
|
|
; -------------------------------------------------
|
|
; sin
|
|
; -------------------------------------------------
|
|
; R0 = output
|
|
sin: push R1
|
|
sin1: xin R1, (uart_status)
|
|
and R1, UART_RX_PRESENT
|
|
jnz sin1
|
|
xin R0, (uart_data)
|
|
pop R1
|
|
ret
|
|
|
|
; -------------------------------------------------
|
|
|