aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/words/usart-rx-poll.asm
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/avr8/words/usart-rx-poll.asm')
-rw-r--r--amforth-6.5/avr8/words/usart-rx-poll.asm42
1 files changed, 42 insertions, 0 deletions
diff --git a/amforth-6.5/avr8/words/usart-rx-poll.asm b/amforth-6.5/avr8/words/usart-rx-poll.asm
new file mode 100644
index 0000000..9896175
--- /dev/null
+++ b/amforth-6.5/avr8/words/usart-rx-poll.asm
@@ -0,0 +1,42 @@
+; (c -- )
+; MCU
+; wait for one character and read it from the terminal connection using register poll
+VE_RX_POLL:
+ .dw $ff07
+ .db "rx-poll",0
+ .dw VE_HEAD
+ .set VE_HEAD = VE_RX_POLL
+XT_RX_POLL:
+ .dw DO_COLON
+PFA_RX_POLL:
+ ; wait for data ready
+ .dw XT_RXQ_POLL
+ .dw XT_DOCONDBRANCH
+ .dw PFA_RX_POLL
+ ; send to usart
+ .dw XT_DOLITERAL
+ .dw USART_DATA
+ .dw XT_CFETCH
+ .dw XT_EXIT
+
+; ( -- f)
+; MCU
+; check if a unread character in the input device is available
+VE_RXQ_POLL:
+ .dw $ff08
+ .db "rx?-poll"
+ .dw VE_HEAD
+ .set VE_HEAD = VE_RXQ_POLL
+XT_RXQ_POLL:
+ .dw DO_COLON
+PFA_RXQ_POLL:
+ .dw XT_PAUSE
+ .dw XT_DOLITERAL
+ .dw bm_USART_RXRD
+ .dw XT_DUP
+ .dw XT_DOLITERAL
+ .dw USART_A
+ .dw XT_CFETCH
+ .dw XT_AND
+ .dw XT_EQUAL
+ .dw XT_EXIT