Routines |
Prev: F9C2 | Up: Map | Next: F9F0 |
Used by the routine at F9F5.
|
||||
The routine takes random bytes from 8000 - 9BFF and uses them as pairs of lengths to keep the speaker on or off, effectively determine the frequency and wave type.
|
||||
F9C4 | PUSH AF | Store AF, BC and HL. | ||
F9C5 | PUSH BC | |||
F9C6 | PUSH HL | |||
F9C7 | LD HL,($F9C2) | Get the current pointer to sound data. | ||
F9CA | LD B,$19 | Loop 19 times. | ||
F9CC | PUSH BC | Remember the count in BC. | ||
F9CD | LD B,(HL) | Get the current frequency. | ||
F9CE | INC HL | Move to the next position in the buffer. | ||
F9CF | LD A,$10 | Turn the speaker on. | ||
F9D1 | OUT ($FE),A | |||
F9D3 | PUSH BC | Remember the frequency count. | ||
F9D4 | DJNZ $F9D4 | Loop to keep the speaker on for this time. | ||
F9D6 | POP BC | Restore the count. | ||
F9D7 | LD B,(HL) | Get the next frequency count. | ||
F9D8 | INC HL | Move to the next place in the buffer. | ||
F9D9 | LD A,$00 | Turn the speaker off. | ||
F9DB | OUT ($FE),A | |||
F9DD | DJNZ $F9DD | Loop to keep the speaker off for this time. | ||
F9DF | POP BC | Restore the count in BC. | ||
F9E0 | DJNZ $F9CC | Loop while there is more to do. | ||
F9E2 | LD A,H | If HL reaches 9C set it back to 80. | ||
F9E3 | CP $9C | |||
F9E5 | JR NZ,$F9E9 | |||
F9E7 | LD H,$80 | |||
F9E9 | LD ($F9C2),HL | |||
F9EC | POP HL | Restore registers pushed earlier and return. | ||
F9ED | POP BC | |||
F9EE | POP AF | |||
F9EF | RET |
Prev: F9C2 | Up: Map | Next: F9F0 |