Due support for Nokia 6100 display

There are two reasons for not using SPI:

  1. Neither the AVR nor the SAM chip (as far as I'm aware) have support for 9bit SPI, which means it is not possible to use the hardware SPI without some additional programming to disable it, send the first bit, reenable it, send the 8 bits. At that point it just becomes easier to use software SPI.

  2. As you noticed different boards have the hardware spi pins located in different places (take the mega for example which is what I originally programmed it for). Without some jumper wires it would mean the library couldn't be used. What should also be noted is that when I wrote the library it was written for a project which required an 8bit SPI device and the screen, so I used the hardware SPI for 8bit and a bitbanged one for 9 bit.

As for a buffer on the Arm chip, it would be possible. However the library is designed to work with both AVR and Arm and so I don't want to add features that only work on one or the other.
As always though the library is just a starting point. If there is a need for a change in it, the person using the library is free to add the features they require.

Bitmap images was one thing I have done previously but didn't incorperate into the library as it takes a fairly large buffer to process an image and print it to the display (as the bitmap format stores the data in the opposite direction to which it is needed). I did succeed in the end for the Mega bit it needed a 1.5kB buffer. I will have to find the time to clean up and post the code I wrote for this.