Changing the Y offset should be easy, but Changing the X offset is more difficult. The calculator stores pixels in Byte-Sized pieces (no pun intended), so you can only have an X offset as a multiple of 8 without having to do nasty rotation and shifting.
\\For this example, let's say that X is the X offset, Y is the Y offset, and B is the buffer.
B+(Y*13)+(X/8)->C \\104/8=13 There are 13 bytes in a buffer of 104
L6->D
For(A,1,64)
Copy(C,D,12)
C+13->C \\Again, the X length of the buffer is 13 bytes.
D+12->D \\PlotSScreen is 12 bytes wide.
End
This code is probably very buggy. This is just for the general idea. You want to copy 12 bytes from the buffer, loop to the next line, and repeat for 64 lines.
Unfortunately, this method limits itself to 8 pixel increments. Similarly, the buffer X width can only be divisible by 8. These problems can be overcome by doing bit rotation and shifting, but that would be more time consuming and probably require inline ASM.