Add basic UART driver
This didn't have a chance to get tested so I hope it works. There is not fancy stuff here, just write to the register and wait till it is done.
This commit is contained in:
@@ -1 +1,6 @@
|
|||||||
SEVEN_SEG = $7ff0
|
SEVEN_SEG = $7ff0
|
||||||
|
|
||||||
|
UART = $7ff4
|
||||||
|
UART_TXB = UART
|
||||||
|
UART_RXB = UART
|
||||||
|
UART_STATUS = UART + 1
|
||||||
|
|||||||
11
sw/uart.h
Normal file
11
sw/uart.h
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#ifndef _UART_H
|
||||||
|
#define _UART_H
|
||||||
|
|
||||||
|
#include <stdint.h>
|
||||||
|
|
||||||
|
void uart_txb(uint8_t val);
|
||||||
|
void uart_txb_block(uint8_t val);
|
||||||
|
|
||||||
|
uint8_t uart_status();
|
||||||
|
|
||||||
|
#endif
|
||||||
29
sw/uart.s
Normal file
29
sw/uart.s
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
.include "io.inc65"
|
||||||
|
|
||||||
|
.importzp sp, sreg
|
||||||
|
|
||||||
|
.export _uart_txb
|
||||||
|
.export _uart_txb_block
|
||||||
|
.export _uart_status
|
||||||
|
|
||||||
|
.autoimport on
|
||||||
|
|
||||||
|
.code
|
||||||
|
|
||||||
|
; @in A: byte to transmit
|
||||||
|
; Transmits a byte over the UART
|
||||||
|
_uart_txb:
|
||||||
|
sta UART_TXB ; Just write value, don't wait
|
||||||
|
rts
|
||||||
|
|
||||||
|
_uart_txb_block:
|
||||||
|
sta UART_TXB ; Write value
|
||||||
|
@1: lda UART_STATUS ; Wait for status[0] to be 0
|
||||||
|
bit #$01
|
||||||
|
bne @1
|
||||||
|
rts
|
||||||
|
|
||||||
|
_uart_status:
|
||||||
|
lda UART_STATUS
|
||||||
|
ldx #$00
|
||||||
|
rts
|
||||||
Reference in New Issue
Block a user