home *** CD-ROM | disk | FTP | other *** search
/ ftp.barnyard.co.uk / 2015.02.ftp.barnyard.co.uk.tar / ftp.barnyard.co.uk / cpm / walnut-creek-CDROM / CPM / PROGRAMS / VOICE / VOIC-EQU.LIB < prev    next >
Text File  |  2000-06-30  |  6KB  |  190 lines

  1. ;
  2. ; VOTRAX CROSS-COMPILER FOR ASCII TO VOICE PHONEMES
  3. ;
  4. ; ORIGINALLY WRITTEN AND RELEASED IN PUBLIC DOMAIN
  5. ; 9/22/81 BY ALAN JEWER, SHAWN EVERSON & WILLIAM WHITFORD
  6. ;
  7. ; MACR@ (MACRO) @DRIVER
  8. ;
  9. ; THE @DRIVER MACRO IS INCLUDED AT THE START OF THE
  10. ; VOICE PROGRAM, AND PROVIDES DRIVE TO THE SWEET TALKER
  11. ; SPEECH BOARD  THRU AN 8255 PROGRAMMABLE PARALLEL 
  12. ; INTERFACE CHIP. ANY OTHER BOARD USING THE VOTRAX SC-01 
  13. ; VOICE SYNTHESIS CHIP SHOULD BE ABLE TO BE SUPPORTED
  14. ; BY ONLY SMALL CHANGES TO THE DRIVER PROGRAM.
  15. ; WHEN USING THIS MACRO, A .COM FILE (MACHINE CODE)
  16. ; IS PRODUCED WHICH IS DIRECTLY EXECUTABLE AS A CP/M
  17. ; TRANSIENT. THIS DRIVER CONSISTS OF Z80 CODE, AND
  18. ; WILL NOT RUN ON AN 8080. THE MACRO @QUIT MUST BE USED 
  19. ; AT THE END OF THE VOICE PROGRAM TO PROVIDE AND 
  20. ; END-OF-FILE INDICATION. THE INVOKING SYNTAX IS:
  21. ;
  22. ;            @DRIVER    @FINISH
  23. ;
  24. ;            BODY
  25. ;            OF
  26. ;            SPEECH
  27. ;            PROGRAM
  28. ;
  29. ;            @QUIT
  30. ;
  31. @DRIVER    MACR@    @FINISH
  32.     I8255    EQU    24H    ;LOCATION OF THE 8255 I/O CHIP
  33.     IDATA    EQU    I8255    ;DATA OUTPUT PORT
  34.     ISTROBE    EQU    I8255+1    ;STROBE OUTPUT PORT
  35.     IREADY    EQU    I8255+2    ;READY STATUS LINE INPUT PORT
  36.     ISETUP    EQU    I8255+3    ;SETUP PORT FOR 8255
  37.     ICONFIG    EQU    89H    ;A&B OUTPUT, C IS INPUT
  38.     STBON    EQU    255    ;STROBE ACTIVE
  39.     STBOFF    EQU    000    ;STROBE INACTIVE
  40. ;
  41. ; THE 8255 BASE PORT (PORT A) IS THE DATA OUTPUT PORT
  42. ; THE B PORT LSB IS USED AS THE STROBE OUTPUT LINE
  43. ; THE C PORT LSB IS USED AS THE READY INPUT LINE
  44. ;
  45.     DB 3EH,ICONFIG        ;MVI A,ICONFIG    ;SET UP 8255
  46.     DB 0D3H,ISETUP        ;OUT ISETUP
  47.     DB 3EH,STBOFF        ;MVI A,STBOFF    ;SET STROBE POLARITY
  48.     DB 0D3H,ISTROBE       ;OUT ISTROBE
  49.     DB 0AFH            ;XRA A        ;CLEAR INFLECTION
  50.     DB 32H            ;STA INFLECT    ;THIS IS STORAGE
  51.     DW INFL
  52.     DB 21H                 ;LXI H,@START    ;BUFFER POINTER
  53.     DW @START
  54.     DB 11H             ;LXI D,@FINISH-@START ;COUNTER
  55.     DW @FINISH-@START
  56.     DB 0EH,IDATA         ;MVI C,IDATA    ;OUTPUT PORT ADDR
  57. DMPLP:    DB 3EH,3FH        ;MVI A,3FH    ;PHONEMES ARE SMALLER 
  58.     DB 0BEH            ;CMP M        ;IS PHONEME?
  59.     DB 30H,DMPIT-$-1    ;JRNC DMPIT    ;JUMP IF IT IS
  60.     DB 7EH            ;MOV A,M    ;GET INFLECTION
  61.     DB 0FEH,0FFH        ;CPI 0FFH    ;IS IT PITCH 0?
  62.     DB 20H,NOT0-$-1        ;JRNZ NOT0    ;JUMP IF NOT
  63.     DB 0AFH            ;XRA A        ;GET 0 FOR PITCH 0
  64. NOT0:    DB 32H            ;STA INFLECT    ;STORE IT
  65.     DW INFL
  66.     DB 23H            ;INX H        ;BUMP RAM POINTER
  67.     DB 18H,CNTEM-$-1    ;JMPR COUNTEM    ;CONTINUE TILL DONE
  68. DMPIT:    DB 3AH            ;LDA INFL    ;GET INFLECTION
  69.     DW INFL
  70.     DB 86H            ;ADD M        ;ADD PHONEME
  71.     DB 77H            ;MOV M,A    ;CRUDE, BUT EFFECTIVE
  72.     DB 2FH            ;CMA        ;FLIP FOR LIGHTS
  73.     DB 0D3H,0FFH        ;OUT FPANEL    ;ON THE LIGHTS
  74.     DB 0EDH,0A3H            ;OUTI        ;NEXT BYTE TO OUTPUT
  75.     DB 3EH,STBON          ;MVI A,STBON    ;TURN ON STROBE
  76.     DB 0D3H,ISTROBE        ;OUT ISTROBE
  77.     DB 06H,1EH        ;MVI B,30    ;WAIT FOR 100 US
  78. STLOOP:    DB 10H,STLOOP-$-1    ;DJNZ STLOOP    ;LOOP TILL TIME UP
  79.     DB 3EH,STBOFF        ;MVI A,STBOFF    ;TURN OFF STROBE
  80.     DB 0D3H,ISTROBE        ;OUT ISTROBE
  81. WFOR:    DB 0DBH,IREADY         ;IN IREADY    ;GET READY BIT
  82.     DB 1FH            ;RAR        ;TO CY
  83.     DB 30H,WFOR-$-1          ;JRNC WAITFOR    ;WAIT FOR VOTRAX
  84. CNTEM:    DB 1BH            ;DCX D        ;COUNT BYTE
  85.     DB 7AH            ;MOV A,D    ;CHECK FOR 0
  86.     DB 0B3H            ;ORA E
  87.     DB 20H,DMPLP-$-1    ;JRNZ DMPLOOP    ;LOOP TILL ALL DONE
  88.     DB 0C9H            ;RET        ;BACK TO CP/M
  89. INFL:    DB 0            ;INFLECTION STORAGE
  90. @START:
  91.     ENDM
  92. ;
  93. @QUIT    MACR@
  94.     DB 3FH    ;;SHUT UP
  95. @FINISH:
  96.     ENDM
  97. ;;
  98. PITCH0    MACR@
  99.     DB 0FFH    ;;LOWEST PITCH
  100.     ENDM
  101. PITCH1    MACR@
  102.     DB 40H    ;;2ND PITCH
  103.     ENDM
  104. PITCH2    MACR@
  105.     DB 080H    ;;3RD PITCH
  106.     ENDM
  107. PITCH3    MACR@
  108.     DB 0C0H ;;HIGHEST PITCH
  109.     ENDM
  110.  ;
  111. ;; FIRST WE DEFINE THE PHONEMES
  112. ;;
  113. EH3    EQU 00H    ;;59 MS    ;JACK/E/T
  114. EH2    EQU 01H    ;;71 MS    ;/E/NLIST
  115. EH1    EQU 02H    ;;121MS    ;H/EA/VY
  116. PA0    EQU 03H    ;;47 MS    ;NO SOUND
  117. DT    EQU 04H    ;;47 MS    ;BU/TT/ER
  118. A2    EQU 05H    ;;71 MS    ;M/A/DE
  119. A1    EQU 06H    ;;103MS    ;M/A/DE
  120. ZH     EQU 07H    ;;90 MS    ;A/Z/URE
  121. AH2    EQU 08H ;;71 MS    ;H/O/NEST
  122. I3     EQU 09H    ;;55 MS    ;INHIB/I/T
  123. I2     EQU 0AH    ;;80 MS    ;/I/NHIBIT
  124. I1     EQU 0BH    ;;121MS    ;INH/I/BIT
  125. @M     EQU 0CH    ;;103MS    ;/M/AT
  126. @N     EQU 0DH    ;;80 MS    ;SU/N/
  127. @B     EQU 0EH    ;;71 MS    ;/B/AG
  128. @V     EQU 0FH    ;;71 MS    ;/V/AN
  129. CH     EQU 10H    ;;71 MS    ;/CH/IP
  130.             ;;/T/ MUST PRECEDE /J/
  131.             ;;TO PRODUCE CH SOUND
  132. SH     EQU 11H    ;;121MS    ;/SH/OP
  133. @Z     EQU 12H    ;;71 MS    ;/Z/OO
  134. AW1    EQU 13H    ;;146MS    ;L/AW/FUL
  135. NG     EQU 14H    ;;121MS    ;THI/NG/
  136. AH1    EQU 15H    ;;146MS    ;F/A/THER
  137. OO1    EQU 16H    ;;103MS    ;L/OO/KING
  138. OO     EQU 17H    ;;185MS    ;B/OO/K
  139. @L     EQU 18H    ;;103MS    ;/L/AND
  140. @K     EQU 19H    ;;80 MS    ;TRI/CK/
  141. @J     EQU 1AH    ;;47 MS    ;/J/U/DG/E 
  142.             ;;/D/ MUST PRECEDE /J/ TO PRODUCE 
  143.             ;;J SOUND
  144. @H     EQU 1BH    ;;71 MS    ;/H/ELLO
  145. @G     EQU 1CH    ;;71 MS    ;/G/ET
  146. @F     EQU 1DH    ;;103MS    ;/F/AST
  147. @D     EQU 1EH    ;;55 MS    ;PAI/D/
  148. @S     EQU 1FH    ;;90 MS    ;PA/SS/
  149. @A     EQU 20H    ;;185MS    ;D/AY/
  150. AY     EQU 21H    ;;65 MS    ;D/AY/
  151. Y1     EQU 22H    ;;80 MS    ;/Y/ARD
  152. UH3    EQU 23H    ;;47 MS    ;MISS/IO/N
  153. AH     EQU 24H    ;;250MS    ;M/O/P
  154. @P     EQU 25H    ;;103MS    ;P/A/ST
  155. @O     EQU 26H    ;;185MS    ;C/O/LD
  156. @I     EQU 27H    ;;185MS    ;P/I/N
  157. @U     EQU 28H    ;;185MS    ;M/O/VE
  158. @Y     EQU 29H    ;;103MS    ;AN/Y/
  159. @T     EQU 2AH    ;;71 MS    ;/T/AP
  160. @R     EQU 2BH    ;;90 MS    ;/R/ED
  161. @E     EQU 2CH    ;;185MS    ;M/EE/T
  162. @W     EQU 2DH    ;;80 MS    ;/W/IN
  163. AE     EQU 2EH    ;;185MS    ;D/A/D
  164. AE1    EQU 2FH    ;;103MS    ;/A/FTER
  165. AW2    EQU 30H    ;;90 MS    ;S/A/LTY
  166. UH2    EQU 31H    ;;71 MS    ;/A/BOUT
  167. UH1    EQU 32H    ;;103MS    ;/U/NCLE
  168. UH     EQU 33H    ;;185MS    ;C/U/P
  169. O2     EQU 34H    ;;80 MS    ;F/O/R
  170. O1     EQU 35H    ;;121MS    ;AB/OA/RD
  171. IU     EQU 36H    ;;59 MS    ;Y/OU/
  172. U1     EQU 37H    ;;90 MS    ;Y/OU/
  173. THV    EQU 38H    ;;80 MS    ;/TH/E
  174. TH     EQU 39H    ;;71 MS    ;/TH/IN
  175. ER     EQU 3AH    ;;146MS    ;B/I/RD
  176. EH     EQU 3BH    ;;185MS    ;G/E/T
  177. E1     EQU 3CH    ;;121MS    ;B/E/
  178. AW     EQU 3DH    ;;250MS    ;C/A/LL
  179. PA1    EQU 3EH    ;;185MS    ;NO SOUND
  180. @STOP    EQU 3FH    ;;47 MS    ;NO SOUND
  181. ;;
  182. ;;
  183. ;; THE FOLLOWING LETTERS AND WORDS FORM THE
  184. ;; LIBRARY OF WORDS WHICH IS USED TO ASSEMBLE 
  185. ;; OBJECT FILES FROM SOURCE FILES.
  186. ;;
  187. ;; THE LIST OF WORDS IN THIS LIBRARY IS:
  188. ;;
  189.