Routines |
Prev: EC2A | Up: Map | Next: EC5E |
|
||||||||
PlayMelody | EC35 | DI | Disable interrupts. | |||||
EC36 | XOR A | A=00. | ||||||
FetchNote | EC37 | LD C,(HL) | C=*HL. | |||||
Check for the terminator (FF).
|
||||||||
EC38 | INC C | Increment C by one. | ||||||
EC39 | JR NZ,PlayingMelody | Jump to PlayingMelody if C is not zero. | ||||||
The terminator (FF) was reached so return.
|
||||||||
EC3B | EI | Enable interrupts. | ||||||
EC3C | RET | Return. | ||||||
Restore the real value of the note after the terminator check.
|
||||||||
PlayingMelody | EC3D | DEC C | Decrease C by one. | |||||
EC3E | INC HL | Increment the music data pointer by one. | ||||||
EC3F | LD E,(HL) | E=*HL. | ||||||
EC40 | INC HL | Increment the music data pointer by one. | ||||||
EC41 | LD D,(HL) | D=*HL. | ||||||
EC42 | INC HL | Increment the music data pointer by one. | ||||||
PlayMelody_Speaker | EC43 | OUT ($FE),A | OUT FE | |||||
EC45 | LD B,C | B=C. | ||||||
EC46 | XOR %00010000 | Flip bit 4. | ||||||
PlayMelody_Loop | EC48 | DJNZ PlayMelody_Loop | Decrease counter by one and loop back to PlayMelody_Loop until counter is zero. | |||||
EC4A | LD B,A | B=A. | ||||||
EC4B | DEC DE | Decrease DE by one. | ||||||
EC4C | LD A,D | Is DE zero? | ||||||
EC4D | OR E | |||||||
EC4E | LD A,B | A=B. | ||||||
EC4F | JR NZ,PlayMelody_Speaker | Jump to PlayMelody_Speaker if DE is not zero. | ||||||
EC51 | LD D,$0F | D=0F. | ||||||
PlayMelody_Pause | EC53 | DEC DE | Decrease DE by one. | |||||
EC54 | LD A,D | Is DE zero? | ||||||
EC55 | OR E | |||||||
EC56 | JR NZ,PlayMelody_Pause | Jump to PlayMelody_Pause if DE is not zero. | ||||||
EC58 | LD A,B | A=B. | ||||||
EC59 | INC A | Increment A by one. | ||||||
EC5A | AND %00010111 | Keep only bits 0-2 and 4. | ||||||
EC5C | JR FetchNote | Jump to FetchNote. |
Prev: EC2A | Up: Map | Next: EC5E |