If you want to use a higher clock frequency, then why not read the data sheet (which contains the number of cycles that each instruction takes - in your case I'd suggest you look at the 'nop' and 'decfsz' instructions etc plus the call/return overhead) and work out how many you need.
By the look of the code, it relies on the 'DELAY' function for al of the timing.
A (perhaps) more exact way to do the timing is to use a timer and an interrupt, creating a state machine that does the tone generation and advance the state for each interrupt. That way you only need the correct timer set up and it will work.
Susan