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.LQB
/
VOIC-EQU.LIB
Wrap
Text File
|
2000-06-30
|
6KB
|
190 lines
;
; VOTRAX CROSS-COMPILER FOR ASCII TO VOICE PHONEMES
;
; ORIGINALLY WRITTEN AND RELEASED IN PUBLIC DOMAIN
; 9/22/81 BY ALAN JEWER, SHAWN EVERSON & WILLIAM WHITFORD
;
;
; MACR@ (MACRO) @DRIVER
;
; THE @DRIVER MACRO IS INCLUDED AT THE START OF THE
; VOICE PROGRAM, AND PROVIDES DRIVE TO THE SWEET TALKER
; SPEECH BOARD THRU AN 8255 PROGRAMMABLE PARALLEL
; INTERFACE CHIP. ANY OTHER BOARD USING THE VOTRAX SC-01
; VOICE SYNTHESIS CHIP SHOULD BE ABLE TO BE SUPPORTED
; BY ONLY SMALL CHANGES TO THE DRIVER PROGRAM.
; WHEN USING THIS MACRO, A .COM FILE (MACHINE CODE)
; IS PRODUCED WHICH IS DIRECTLY EXECUTABLE AS A CP/M
; TRANSIENT. THIS DRIVER CONSISTS OF Z80 CODE, AND
; WILL NOT RUN ON AN 8080. THE MACRO @QUIT MUST BE USED
; AT THE END OF THE VOICE PROGRAM TO PROVIDE AND
; END-OF-FILE INDICATION. THE INVOKING SYNTAX IS:
;
; @DRIVER @FINISH
;
; BODY
; OF
; SPEECH
; PROGRAM
;
; @QUIT
;
@DRIVER MACR@ @FINISH
I8255 EQU 24H ;LOCATION OF THE 8255 I/O CHIP
IDATA EQU I8255 ;DATA OUTPUT PORT
ISTROBE EQU I8255+1 ;STROBE OUTPUT PORT
IREADY EQU I8255+2 ;READY STATUS LINE INPUT PORT
ISETUP EQU I8255+3 ;SETUP PORT FOR 8255
ICONFIG EQU 89H ;A&B OUTPUT, C IS INPUT
STBON EQU 255 ;STROBE ACTIVE
STBOFF EQU 000 ;STROBE INACTIVE
;
; THE 8255 BASE PORT (PORT A) IS THE DATA OUTPUT PORT
; THE B PORT LSB IS USED AS THE STROBE OUTPUT LINE
; THE C PORT LSB IS USED AS THE READY INPUT LINE
;
DB 3EH,ICONFIG ;MVI A,ICONFIG ;SET UP 8255
DB 0D3H,ISETUP ;OUT ISETUP
DB 3EH,STBOFF ;MVI A,STBOFF ;SET STROBE POLARITY
DB 0D3H,ISTROBE ;OUT ISTROBE
DB 0AFH ;XRA A ;CLEAR INFLECTION
DB 32H ;STA INFLECT ;THIS IS STORAGE
DW INFL
DB 21H ;LXI H,@START ;BUFFER POINTER
DW @START
DB 11H ;LXI D,@FINISH-@START ;COUNTER
DW @FINISH-@START
DB 0EH,IDATA ;MVI C,IDATA ;OUTPUT PORT ADDR
DMPLP: DB 3EH,3FH ;MVI A,3FH ;PHONEMES ARE SMALLER
DB 0BEH ;CMP M ;IS PHONEME?
DB 30H,DMPIT-$-1 ;JRNC DMPIT ;JUMP IF IT IS
DB 7EH ;MOV A,M ;GET INFLECTION
DB 0FEH,0FFH ;CPI 0FFH ;IS IT PITCH 0?
DB 20H,NOT0-$-1 ;JRNZ NOT0 ;JUMP IF NOT
DB 0AFH ;XRA A ;GET 0 FOR PITCH 0
NOT0: DB 32H ;STA INFLECT ;STORE IT
DW INFL
DB 23H ;INX H ;BUMP RAM POINTER
DB 18H,CNTEM-$-1 ;JMPR COUNTEM ;CONTINUE TILL DONE
DMPIT: DB 3AH ;LDA INFL ;GET INFLECTION
DW INFL
DB 86H ;ADD M ;ADD PHONEME
DB 77H ;MOV M,A ;CRUDE, BUT EFFECTIVE
DB 2FH ;CMA ;FLIP FOR LIGHTS
DB 0D3H,0FFH ;OUT FPANEL ;ON THE LIGHTS
DB 0EDH,0A3H ;OUTI ;NEXT BYTE TO OUTPUT
DB 3EH,STBON ;MVI A,STBON ;TURN ON STROBE
DB 0D3H,ISTROBE ;OUT ISTROBE
DB 06H,1EH ;MVI B,30 ;WAIT FOR 100 US
STLOOP: DB 10H,STLOOP-$-1 ;DJNZ STLOOP ;LOOP TILL TIME UP
DB 3EH,STBOFF ;MVI A,STBOFF ;TURN OFF STROBE
DB 0D3H,ISTROBE ;OUT ISTROBE
WFOR: DB 0DBH,IREADY ;IN IREADY ;GET READY BIT
DB 1FH ;RAR ;TO CY
DB 30H,WFOR-$-1 ;JRNC WAITFOR ;WAIT FOR VOTRAX
CNTEM: DB 1BH ;DCX D ;COUNT BYTE
DB 7AH ;MOV A,D ;CHECK FOR 0
DB 0B3H ;ORA E
DB 20H,DMPLP-$-1 ;JRNZ DMPLOOP ;LOOP TILL ALL DONE
DB 0C9H ;RET ;BACK TO CP/M
INFL: DB 0 ;INFLECTION STORAGE
@START:
ENDM
;
@QUIT MACR@
DB 3FH ;;SHUT UP
@FINISH:
ENDM
;;
PITCH0 MACR@
DB 0FFH ;;LOWEST PITCH
ENDM
PITCH1 MACR@
DB 40H ;;2ND PITCH
ENDM
PITCH2 MACR@
DB 080H ;;3RD PITCH
ENDM
PITCH3 MACR@
DB 0C0H ;;HIGHEST PITCH
ENDM
;
;; FIRST WE DEFINE THE PHONEMES
;;
EH3 EQU 00H ;;59 MS ;JACK/E/T
EH2 EQU 01H ;;71 MS ;/E/NLIST
EH1 EQU 02H ;;121MS ;H/EA/VY
PA0 EQU 03H ;;47 MS ;NO SOUND
DT EQU 04H ;;47 MS ;BU/TT/ER
A2 EQU 05H ;;71 MS ;M/A/DE
A1 EQU 06H ;;103MS ;M/A/DE
ZH EQU 07H ;;90 MS ;A/Z/URE
AH2 EQU 08H ;;71 MS ;H/O/NEST
I3 EQU 09H ;;55 MS ;INHIB/I/T
I2 EQU 0AH ;;80 MS ;/I/NHIBIT
I1 EQU 0BH ;;121MS ;INH/I/BIT
@M EQU 0CH ;;103MS ;/M/AT
@N EQU 0DH ;;80 MS ;SU/N/
@B EQU 0EH ;;71 MS ;/B/AG
@V EQU 0FH ;;71 MS ;/V/AN
CH EQU 10H ;;71 MS ;/CH/IP
;;/T/ MUST PRECEDE /J/
;;TO PRODUCE CH SOUND
SH EQU 11H ;;121MS ;/SH/OP
@Z EQU 12H ;;71 MS ;/Z/OO
AW1 EQU 13H ;;146MS ;L/AW/FUL
NG EQU 14H ;;121MS ;THI/NG/
AH1 EQU 15H ;;146MS ;F/A/THER
OO1 EQU 16H ;;103MS ;L/OO/KING
OO EQU 17H ;;185MS ;B/OO/K
@L EQU 18H ;;103MS ;/L/AND
@K EQU 19H ;;80 MS ;TRI/CK/
@J EQU 1AH ;;47 MS ;/J/U/DG/E
;;/D/ MUST PRECEDE /J/ TO PRODUCE
;;J SOUND
@H EQU 1BH ;;71 MS ;/H/ELLO
@G EQU 1CH ;;71 MS ;/G/ET
@F EQU 1DH ;;103MS ;/F/AST
@D EQU 1EH ;;55 MS ;PAI/D/
@S EQU 1FH ;;90 MS ;PA/SS/
@A EQU 20H ;;185MS ;D/AY/
AY EQU 21H ;;65 MS ;D/AY/
Y1 EQU 22H ;;80 MS ;/Y/ARD
UH3 EQU 23H ;;47 MS ;MISS/IO/N
AH EQU 24H ;;250MS ;M/O/P
@P EQU 25H ;;103MS ;P/A/ST
@O EQU 26H ;;185MS ;C/O/LD
@I EQU 27H ;;185MS ;P/I/N
@U EQU 28H ;;185MS ;M/O/VE
@Y EQU 29H ;;103MS ;AN/Y/
@T EQU 2AH ;;71 MS ;/T/AP
@R EQU 2BH ;;90 MS ;/R/ED
@E EQU 2CH ;;185MS ;M/EE/T
@W EQU 2DH ;;80 MS ;/W/IN
AE EQU 2EH ;;185MS ;D/A/D
AE1 EQU 2FH ;;103MS ;/A/FTER
AW2 EQU 30H ;;90 MS ;S/A/LTY
UH2 EQU 31H ;;71 MS ;/A/BOUT
UH1 EQU 32H ;;103MS ;/U/NCLE
UH EQU 33H ;;185MS ;C/U/P
O2 EQU 34H ;;80 MS ;F/O/R
O1 EQU 35H ;;121MS ;AB/OA/RD
IU EQU 36H ;;59 MS ;Y/OU/
U1 EQU 37H ;;90 MS ;Y/OU/
THV EQU 38H ;;80 MS ;/TH/E
TH EQU 39H ;;71 MS ;/TH/IN
ER EQU 3AH ;;146MS ;B/I/RD
EH EQU 3BH ;;185MS ;G/E/T
E1 EQU 3CH ;;121MS ;B/E/
AW EQU 3DH ;;250MS ;C/A/LL
PA1 EQU 3EH ;;185MS ;NO SOUND
@STOP EQU 3FH ;;47 MS ;NO SOUND
;;
;;
;; THE FOLLOWING LETTERS AND WORDS FORM THE
;; LIBRARY OF WORDS WHICH IS USED TO ASSEMBLE
;; OBJECT FILES FROM SOURCE FILES.
;;
;; THE LIST OF WORDS IN THIS LIBRARY IS:
;;