SOS! Cинтезатор речи [2/6]

ZXNet эхоконференция «zx.spectrum»

От Wladimir Bulchukey Кому All 13.11.1997


=== Cut ===

[ Окончание письма Андрея ].

Цепляю тексты исходников без исполняемых файлов, так как это
проще (не нужно uuen-преобразование). Пожалуйста, попытайтесь
довести просьбу Андрея до всех кодеров, особенно владеющих
программированием под IS-DOS (увы, в последнем я сам бессилен).
Хотя, вероятно, можно сделать версию и под TR-DOS. Hасколько я
понимаю, в исходном варианте привязку к IS-DOS имеет только
загрузчик текстовых файлов, а собственно звукосинтезатор
работает сам в себе, и его можно отассемблировать с любого
адреса. Возможно, кто-то уже занимался подобной проблемой, и
тогда, не исключено, проще и лучше вообще написать заново subj.
Одно только требование ясно однозначно: программа должна
управляться теми же клавишами, должна иметь перечисленные
Андреем функции, должна обеспечивать качество звука не хуже, чем
было.
Просьба к редакциям местных спектрумовских изданий:
пожалуйста, обратите внимание, перепечатайте, взлохматьте ваших
кодеров.
Поможем человеку!

Писать Андрею можно по адресу:
fel...@litech.lviv.ua
^опечатки нет!

Если нужен архив "sintez", сигнальте на ZXNet 095/462. У Falcons-ов,
наверно, и так забот хватает...

Форвардьте дальше.

=== Cut: ===

; 4-я версия синтезатора
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 ===