is there a quick-n-dirty way to copy over a byte to four output pins?
If you're going to be doing this in many places, it may be beneficial to write a function to handle it. The code below (untested, but it compiles) allows writing in nibbles.
//
// This function writes four bits of output simultaneously without
// modifying the remaining bits of a port. Note that the four I/O
// pins must have previously been set to be outputs.
//
// The nibble number to port mapping matches the mega168-based
// Arduino boards. Modifications may be needed for other hardware.
//
void digitalWriteNibble(byte nibNum, byte nibVal)
{
byte sreg = SREG;
cli();
switch (nibNum)
{
case 0: // pins 0-3, PORTD
PORTD = (PORTD & 0xf0) | (nibVal & 0x0f);
break;
case 1: // pins 4-7, PORTD
PORTD = (PORTD & 0x0f) | (nibVal << 4);
break;
case 2: // pins 0-3, PORTB
PORTB = (PORTB & 0xf0) | (nibVal & 0x0f);
break;
}
SREG = sreg;
}