
Сообщение от
alone
Можно ли в сабже провернуть следующее? (Пример из ALASM - \0 тут первый параметр макроса.)
Если да, то как?
MACRO GETREALFRQ
CALL chn\0volumer ;не портит DE
chn\0frq=$+1
LD HL,0
chn\0glisson=$
CALL chn\0glisser ;не портит DE
LD A,H ;HL=frq
SUB E;_tmin+(_wmin*_div) ;минимальный период
JNC $+3
XOR A
ADD A,E;_tmin+(_wmin*_div)
LD (bch\0t),A ;realfrq
SUB _tmin ;CY=0
RRA
SRL A
LD C,A
LD A,(chn\0volH)
CP C
JC $+4
LD A,C
DEC A
SUB D;1
ADC A,D;1
LD (bch\0w1),A
;imp0=realfrq/div-imp1
SUB C
NEG
LD (bch\0w0),A
ENDM
можно. Если переделать в такое:
Код:
macro GETREALFRQ param
CALL param_volumer ;не портит DE
param_frq=$+1
LD HL,0
param_glisson=$
CALL param_glisser ;не портит DE
LD A,H ;HL=frq
SUB E;_tmin+(_wmin*_div) ;минимальный период
JNC $+3
XOR A
ADD A,E;_tmin+(_wmin*_div)
LD (param_t),A ;realfrq
SUB _tmin ;CY=0
RRA
SRL A
LD C,A
LD A,(param_volH)
CP C
JC $+4
LD A,C
DEC A
SUB D;1
ADC A,D;1
LD (param_w1),A
;imp0=realfrq/div-imp1
SUB C
NEG
LD (param_w0),A
endm
вопрос встал тут:
http://zx.pk.ru/showpost.php?p=157080&postcount=260
добавлено в официальную версию тут:
http://zx.pk.ru/showpost.php?p=163066&postcount=283
имплементация где-то между этими двумя постами.