Code: Select all
SetVolume1 ; Sets volume on Ch0...Ch2 (C=Ch, B=Vol)
PUSH HL
LD A, B
INC A
NEG
AND $7F
LD B, A
LD D, 0
LD A, C
ADD A
ADD A
ADD $80
LD E, A
LD H, 0
LD A, $60
ADD C
LD L, A
LD A, (HL)
LD HL, FMPORT1
OR A
JP Z, Algo01
DEC A
JP Z, Algo01
DEC A
JP Z, Algo01
DEC A
JP Z, Algo01
DEC A
JP Z, Algo11
DEC A
JP Z, Algo21
DEC A
JP Z, Algo21
DEC A
JP Z, Algo31
RET
Algo01 ; Change only in operator 4
LD A, $4C
ADD C
LD (HL), A
INC E
INC E
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp4Zero01
LD A, $7F
NoOp4Zero01
LD (FMPORT2), A
POP HL
RET
Algo11 ; Change in operators 3 and 4
LD A, $48 ; Set op3
ADD C
LD (HL), A
LD C, A
INC E
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp3Zero11
LD A, $7F
NoOp3Zero11
LD (FMPORT2), A
NOP #2
LD A, C
ADD $04 ; Set op4
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp4Zero11
LD A, $7F
NoOp4Zero11
LD (FMPORT2), A
POP HL
RET
Algo21 ; Change in operators 2, 3 and 4
LD A, $44 ; Set op2
ADD C
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp2Zero21
LD A, $7F
NoOp2Zero21
LD (FMPORT2), A
NOP #2
LD A, C
ADD $04 ; Set op3
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp3Zero21
LD A, $7F
NoOp3Zero21
LD (FMPORT2), A
NOP #2
LD A, C
ADD $04 ; Set op4
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp4Zero21
LD A, $7F
NoOp4Zero21
LD (FMPORT2), A
POP HL
RET
Algo31 ; Change in all operators
LD A, $40 ; Set op1
ADD C
LD (HL), A
LD C, A
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp1Zero31
LD A, $7F
NoOp1Zero31
LD (FMPORT2), A
NOP #2
LD A, C
ADD $04 ; Set op2
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp2Zero31
LD A, $7F
NoOp2Zero31
LD (FMPORT2), A
NOP #2
LD A, C
ADD $04 ; Set op3
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp3Zero31
LD A, $7F
NoOp3Zero31
LD (FMPORT2), A
NOP #2
LD A, C
ADD $04 ; Set op4
LD (HL), A
LD C, A
INC E
LD A, (DE)
ADD B
BIT 7, A
JP Z, NoOp4Zero31
LD A, $7F
NoOp4Zero31
LD (FMPORT2), A
POP HL
RET
Code: Select all
SetVolume2 ; Sets volume on Ch3...Ch5 (C=Ch, B=Vol)
PUSH HL
LD A, B
INC A
NEG
AND $7F
LD B, A
LD H, 0
LD A, $63
ADD C
LD L, A
LD A, (HL)
LD HL, FMPORT4
OR A
JP Z, Algo02
DEC A
JP Z, Algo02
DEC A
JP Z, Algo02
DEC A
JP Z, Algo02
DEC A
JP Z, Algo12
DEC A
JP Z, Algo22
DEC A
JP Z, Algo22
DEC A
JP Z, Algo32
RET
Algo02 ; Change only in operator 4
LD A, $4C
ADD C
LD (FMPORT3), A
NOP #3
LD (HL), B
POP HL
RET
Algo12 ; Change in operators 3 and 4
LD A, $48 ; Set op2
ADD C
LD (FMPORT3), A
NOP #3
LD (HL), B
NOP #3
ADD $04 ; Set op4
LD (FMPORT3), A
NOP #3
LD (HL), B
POP HL
RET
Algo22 ; Change in operators 2, 3 and 4
LD A, $44 ; Set op2
ADD C
LD (FMPORT3), A
NOP #3
LD (HL), B
NOP #3
ADD $04 ; Set op3
LD (FMPORT3), A
NOP #3
LD (HL), B
NOP #3
ADD $04 ; Set op4
LD (FMPORT3), A
NOP #3
LD (HL), B
POP HL
RET
Algo32 ; Change in all operators
LD A, $40 ; Set op1
ADD C
LD (FMPORT3), A
NOP #3
LD (HL), B
NOP #3
ADD $04 ; Set op2
LD (FMPORT3), A
NOP #3
LD (HL), B
NOP #3
ADD $04 ; Set op3
LD (FMPORT3), A
NOP #3
LD (HL), B
NOP #3
ADD $04 ; Set op4
LD (FMPORT3), A
NOP #3
LD (HL), B
POP HL
RET