From 67d25d837ac55f28a366c0a3b262e439a6e75fc3 Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Sat, 19 Aug 2017 12:15:28 +0200 Subject: Add AmForth --- amforth-6.5/avr8/words/usart-rx-poll.asm | 42 ++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 amforth-6.5/avr8/words/usart-rx-poll.asm (limited to 'amforth-6.5/avr8/words/usart-rx-poll.asm') 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 -- cgit v1.2.3