richard's code has some merits, but in almost all cases interrupts just add overhead... they rarely speed things up if that's what you're looking for.

Here's another version of the code I posted with the array access time buried in the byte transmit time:
Code:
i  var     byte
b  var     byte[256]
txd var byte

for i = 0 to 255
    ' get byte from the array
    txd = b[i]
    ' wait for TRMT == 1
    while (TXSTA.1 = 0)
    wend
    ' send byte
    TXREG = txd
next