i think you still need to assign the proper values to these to variables
port = portOutputRegister(digitalPinToPort(p));
pinMask = digitalPinToBitMask(p);
because they are being referenced in show()
would that be
if(begun){
DDRE |= (1 << PE2);
PORTE |= ~(1 << PE2);
}
port = PORTE;
pinMask = (1 << PE2); // ?? this one in particular i am not sure.
return;