aboutsummaryrefslogtreecommitdiff
path: root/octedit/uart.s
diff options
context:
space:
mode:
authorJacques Comeaux <jacquesrcomeaux@protonmail.com>2024-06-04 19:28:25 -0500
committerJacques Comeaux <jacquesrcomeaux@protonmail.com>2024-06-04 19:28:25 -0500
commitf2f186c3594a922e51abf25b24052c61f833a2bf (patch)
treea4cd5bb88adc8b94582ed40a8a7ad04235a9db69 /octedit/uart.s
parentb38a844ed9f6ad17d58db3e143ebc0c858762ec6 (diff)
Rename stage 0 editor
Diffstat (limited to 'octedit/uart.s')
-rw-r--r--octedit/uart.s33
1 files changed, 33 insertions, 0 deletions
diff --git a/octedit/uart.s b/octedit/uart.s
new file mode 100644
index 0000000..e79cbdc
--- /dev/null
+++ b/octedit/uart.s
@@ -0,0 +1,33 @@
+.syntax unified
+.cpu cortex-m0plus
+.thumb
+
+.equ UART0_BASE, 0x40034000
+.equ UARTDR_OFST, 0x00
+.equ UARTFR_OFST, 0x18
+
+.type uart_send, %function
+.global uart_send
+
+uart_send:
+ ldr r1, =UART0_BASE
+ movs r3, 0b1 << 5 // TX FIFO full
+1:
+ ldr r2, [r1, UARTFR_OFST]
+ tst r2, r3
+ bne 1b
+ strb r0, [r1, UARTDR_OFST]
+ bx lr
+
+.type uart_recv, %function
+.global uart_recv
+
+uart_recv:
+ ldr r1, =UART0_BASE
+ movs r3, 0b1 << 4 // RX FIFO empty
+1:
+ ldr r2, [r1, UARTFR_OFST]
+ tst r2, r3
+ bne 1b
+ ldrb r0, [r1, UARTDR_OFST]
+ bx lr