But for the two shades of gray each byte of memory could be 4 different pixels, so if memory is the problem resolution should be able to go 4 times as high like this:
PORTB = (fb
- [y]) & 0x3;
- [y] >> 2) & 0x03;
- [y] >> 4) & 0x03;
- [y] >> 6) & 0x03;
A for loop to draw the screen didn't work for me but I didn't play with timing with it much.
delayMicroseconds of less than one microsecond also didn't work but I also didn't experiment much.
Assuming you can get more horizontal pixels (or you could repeat the pattern horizontally) I think the best thing to do is just get rid of the delays, and the delay of setting PORTB is the limiting time for horizontal resolution- though I'm seeing some strange things doing that while trying to repeat horizontally- the second set of pixels comes out thinner.