I have a version that may work but I have no way to test it. If you agree to provide feedback (that includes success) then I'm willing to publish.
I'll be willing to test it out also.
Excellent. Is delivery via Github acceptable?
If you don't mind, I'd like you to review the pin assignments for mistakes / opinions...
LED_PIN is assigned to digital pin 13. TinyISP uses a single LED for status. I chose the on-board LED.
TICK_TOCK_PIN is assigned to digital pin 47. The "Tick Tock" pin is used as a basic chronograph. When the pin toggles a timestamp is output. It allows basic performance monitoring and tuning. I have a version that uses Input Capture so I try to assign TICK_TOCK_PIN to ICP1 (Input Capture for Timer 1).
Knock-Bang is always assigned to MISO which is PB4 / digital pin 50.
The SPI pins are...
MISO is 50.
MOSI is 51.
SCK is 52.
SS is 53.
The SPI pin assignments are only relevant when PROGRAMMER_SPI_CLOCK == SLOW. I believe the Arduino core provides the assignments.
There are two more things that will have to be assigned pins: "Tuning Signal" and "Alternate Knock-Bang".
The Tuning Signal is one-half of a much improved Tiny Tuner. For the m328 processor the Tuning Signal is currently placed on a timer 2 output (OC2B). The only requirement is the pin must be a timer output. A pin close to the target (close to the SPI pins) is helpful.
There are times when MISO cannot be used for Knock-Bang. The Alternate is simply another choice for Knock-Bang. The only requirement is the pin has to support Pin Change Interrupts. I typically choose this pin based on physical location: a pin close to the SPI pins that does not conflict with any other pin assignment.
Finally, the Serial Relay code will have to be updated (this is a note to myself).
I've actually been trying to play with TinyISP on my mega2560 but didn't get too far with it.
The code is very poorly structured for porting so it's certainly understandable you ran into problems. I had to grep for a few things and I wrote the thing.