<< Home | About Forth | About TurboForth | Download | Language Reference | Resources | Tutorials | YouTube >>

;   _____                      _      __          __            _     
;  / ____|                    | |     \ \        / /           | |    
; | (___  _ __   ___  ___  ___| |__    \ \  /\  / /___  _ __ __| |___ 
;  \___ \| '_ \ / _ \/ _ \/ __| '_ \    \ \/  \/ // _ \| '__/ _` / __|
;  ____) | |_) |  __/  __/ (__| | | |    \  /\  /| (_) | | | (_| \__ \
; |_____/| .__/ \___|\___|\___|_| |_|     \/  \/  \___/|_|  \__,_|___/
;        | |                                                          
;        |_|                                                          

; these routines are just dictionary entry stubs.
; see 1-04-Speech.a99 for the actual implementation.

; TALKING? ( -- flag )
; returns >0 if the speech synth is busy, else returns 0
spkngh  data panelh,8
        text 'TALKING?'
spkng   data $+2
        bl @bank1
        data _spkng             ; see 1-05-Speech.a99


; SAY ( addr cnt -- )
; says words from the speech synth's ROM. Use with DATA
; the addresses of the built in words are in ED/AS manual page 422
sayh    data spkngh,3
        text 'SAY '
say     data $+2
        bl @bank1
        data _say             ; see 1-05-Speech.a99


; STREAM ( addr cnt -- )
; streams raw speech data to the speech synth. Use with DATA
strmh   data sayh,6
        text 'STREAM'
strm    data $+2
        bl @bank1
        data _strem             ; see 1-05-Speech.a99


; DATA
; Compiling: DATA ( -- )  Executing: DATA ( -- addr count )
; E.g.
; When compiling:
;  DATA 5 9 8 7 6 5
;  Compiles 5 values (9 8 7 6 & 5) to memory
; At runtime:
;  When DATA is encountered, will push the start address (the address of 9)
;  to the stack, and the count (5). Execution will continue at the word 
; immediately following the data list.
datah   data strmh,immed+4
        text 'DATA'
        data docol
        data compile,rtdata     ; compile data run-time code
        data spword,number,drop ; get number of data items from input stream
        data dup,comma          ; and append to definition
        
        data lit0,do,data2      ; for each data item
data1   data spword,number,drop ; get number from input stream
        data comma              ; append directly to memory
        data loop,data1
data2   data exit

; (DATA) - run-time code for DATA
rtdath  data datah,6
        text '(DATA)'
rtdata  data $+2
        bl @bank1               
        data _data              ; see 1-05-Speech.a99