aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/words/usart-rx-poll.asm
blob: 9896175a3a4a446cd4f2d3242cfb631ded9c7f86 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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