SOS! Speech synthesizer [2/6]
ZXNet echo conference «zx.spectrum»
From Wladimir Bulchukey → To All 13 November 1997
=== Cut ===
[End of Andrey's letter].
I am linking source texts without executable files, since it is
simpler (no need for uuen conversion). Please try
to convey Andrei's request to all coders, especially those who know
programming for IS-DOS (alas, I myself am powerless in the latter).
Although, it is probably possible to make a version for TR-DOS. As far as I
understand, in the original version, only the text file loader is linked to IS-DOS, and the sound synthesizer itself
works on its own, and can be assembled from any
address. Perhaps someone has already dealt with a similar problem, and
then, it is possible, it is simpler and better to write subj again altogether.
One requirement is clear and unambiguous: the program must
be controlled by the same keys, must have the functions listed
by Andrei, must provide sound quality no worse than
it was.
Request to the editors of local Spectrum publications:
please, pay attention reprint, mess up your
coders.
Let's help the person!
You can write to Andrey at:
fel...@litech.lviv.ua
^no typo!
If you need the "sintez" archive, signal to ZXNet 095/462. The Falcons
probably have enough worries...
Forward further.
=== Cut: ===
; 4th versionсинтезатора
ORG 31000
BEG_OP LD C,#8A
RST #10
LD (F_NUMB),A
LD C,#26
OR A
RET Z
RST #10
RET C
EXX
LD BC,#000E
ADD HL,BC
LD E,(HL)
INC HL
LD D,(HL)
LD (F_LENG),DE
LD A,E
LD (OSTAT),A
INC D
LD A,D
LD (NUM_BL),A
EXX
;
PROG
LD (SP_),SP
CALL READ
RET C
LD HL,NUM_BL
LD A,(TEBLOK)
CP (HL)
JR Z,LAST_B
CALL SET
CALL $SAY
JR PROG
LAST_B CALL SET ;можно сделать малый цикл
CALL $SAY
EXIT RET
;
READ LD HL,IN_BUF
LD DE,IN_BUF+1
LD BC,#00FF
LD (HL),32
LDIR
LD A,(TEBLOK)
LD E,A
LD D,#00
LD HL,IN_BUF
XOR A
LD C,#3D
RST #10
INC E
LD A,E
LD (TEBLOK),A
RET C
RET
SKIP_B LD A,(TEBLOK)
INC A
LD (TEBLOK),A
RET
;-----------------------
$R_KEY LD C,9
LD A,247 ; 4 SEMIROW
IN A,(#FE)
BIT 0,A ; "1"
JP Z, FAST
BIT 1,A ;"2"
JP Z, HALT
BIT 2,A
JP Z,SAVE
BIT 3,A
JP Z,LOAD
JP RTN
FAST LD HL,TEBLOK
LD A,(NUM_BL)
CP (HL)
RET Z
LD SP,(SP_)
JP PROG
RTN LD HL,#0400
LD ($SPEED),HL
RT RET
SAVE LD A,(TEBLOK)
DEC A
LD (TEBL2),A
RET
LOAD LD A,(TEBL2)
LD (TEBLOK),A
LD SP,(SP_)
JP PROG
BEEP LD HL,400
LD DE,261
CALL #03B5
RET
HALT
LD A,(TEBLOK)
CP 2
RET C
DEC A
DEC A
LD (TEBLOK),A
LD SP,(SP_)
JP PROG
TEBL2 DEFB #00
SP_ DEFW #0000
F_LENG DEFW #0000
F_NUMB DEFB #00
TEBLOK DEFB #00
IN_BUF DEFS 256
$T_ADR DEFS 1024
NUM_BL DEFB #00
OSTAT DEFB #00
=== Cut ===