ATTiny85 and MIT core not running at 8Mhz?

You're making an awful lot of assumptions there

Had I thought a little bit more, I would have put 2Mhz. That's what I get for trying to multi-task.

You're definitely right about the number of cycles per instruction, many thanks for reminding me about that! I've got the following code showing me 4 spikes per uS, hence 8Mhz if my math is right?

void setup()
{
  DDRB |= 0x1;	// setup pin 1 in data direction register as output
}

void loop()
{
  while(true) {
    PORTB |= 0x1;	// set pin 1 so that it is at vcc
    PORTB &= 0xFE;	// clear pin 1 so that it is grounded
    PORTB |= 0x1;	// set pin 1 so that it is at vcc
    PORTB &= 0xFE;	// clear pin 1 so that it is grounded
    PORTB |= 0x1;	// set pin 1 so that it is at vcc
    PORTB &= 0xFE;	// clear pin 1 so that it is grounded
    PORTB |= 0x1;	// set pin 1 so that it is at vcc
    PORTB &= 0xFE;	// clear pin 1 so that it is grounded
  }
}

So, my timing problems are of my own making, which is a consolation. If I can ask a secondary question then (and if I should set up another thread, I'd be happy to) I'm setting a timer interrupt on TIMER1, would this somehow affect the timing in my sketch (other than introducing another method to run at an interval)? The gist is below (and, I'd be happy to post more code if you'd like). I'm not sure how the Tiny core works but I didn't see any indication that it's using Timer1 and I'd assume it's using Timer0 for delay() and delayMicroseconds().

void start() {
  TCCR1 = _BV(CTC1) | _BV(CS12); 
  OCR1A = 1; // we're checking every other count
  TIMSK = _BV(OCIE1A); // Turn on interrupt
  TCNT1 = 0; // Set counter to 0
}

ISR(TIMER1_COMPA_vect) {
   // check the input pins and try to do 
   // manchester decoding.
}

Thanks much for the suggestions and the help, it's much appreciated.