Routines |
Prev: 37579 | Up: Map | Next: 37675 |
Used by the routine at 34252. Returns with the zero flag reset if ENTER or the fire button is pressed while the tune is being played.
|
||||||||
37596 | LD A,(IY+0) | Pick up the next byte of tune data from the table at 33902 | ||||||
37599 | CP 255 | Has the tune finished? | ||||||
37601 | RET Z | Return (with the zero flag set) if so | ||||||
37602 | LD C,A | Copy the first byte of data for this note (which determines the duration) to C | ||||||
37603 | LD B,0 | Initialise B, which will be used as a delay counter in the note-producing loop | ||||||
37605 | XOR A | Set A=0 (for no apparent reasaon) | ||||||
37606 | LD D,(IY+1) | Pick up the second byte of data for this note | ||||||
37609 | LD A,D | Copy it to A | ||||||
37610 | CALL 37675 | Calculate the attribute file address for the corresponding piano key | ||||||
37613 | LD (HL),80 | Set the attribute byte for the piano key to 80 (INK 0: PAPER 2: BRIGHT 1) | ||||||
37615 | LD E,(IY+2) | Pick up the third byte of data for this note | ||||||
37618 | LD A,E | Copy it to A | ||||||
37619 | CALL 37675 | Calculate the attribute file address for the corresponding piano key | ||||||
37622 | LD (HL),40 | Set the attribute byte for the piano key to 40 (INK 0: PAPER 5: BRIGHT 0) | ||||||
37624 | OUT (254),A | Produce a sound based on the frequency parameters in the second and third bytes of data for this note (copied into D and E) | ||||||
37626 | DEC D | |||||||
37627 | JR NZ,37634 | |||||||
37629 | LD D,(IY+1) | |||||||
37632 | XOR 24 | |||||||
37634 | DEC E | |||||||
37635 | JR NZ,37642 | |||||||
37637 | LD E,(IY+2) | |||||||
37640 | XOR 24 | |||||||
37642 | DJNZ 37624 | |||||||
37644 | DEC C | |||||||
37645 | JR NZ,37624 | |||||||
37647 | CALL 37687 | Check whether ENTER or the fire button is being pressed | ||||||
37650 | RET NZ | Return (with the zero flag reset) if it is | ||||||
37651 | LD A,(IY+1) | Pick up the second byte of data for this note | ||||||
37654 | CALL 37675 | Calculate the attribute file address for the corresponding piano key | ||||||
37657 | LD (HL),56 | Set the attribute byte for the piano key back to 56 (INK 0: PAPER 7: BRIGHT 0) | ||||||
37659 | LD A,(IY+2) | Pick up the third byte of data for this note | ||||||
37662 | CALL 37675 | Calculate the attribute file address for the corresponding piano key | ||||||
37665 | LD (HL),56 | Set the attribute byte for the piano key back to 56 (INK 0: PAPER 7: BRIGHT 0) | ||||||
37667 | INC IY | Move IY along to the data for the next note in the tune | ||||||
37669 | INC IY | |||||||
37671 | INC IY | |||||||
37673 | JR 37596 | Jump back to play the next note |
Prev: 37579 | Up: Map | Next: 37675 |