Well, what I've come up with is 18 subroutines that handle 16 bit operations much like a Kernal call. I have set it up so that any two consecutive bytes in zero page can be a 16 bit register. So, for instance, to add the 16 bit value stored in 3C,3D to the 16 bit value stored in 1A,1B, the syntax would be:
This adds the values and returns the low byte in X and high byte in Y, and affects the Z,C,N, and V flags the same way that ADC does.
One can also use a sort of immediate mode. For instance, subtracting the hex value $4C1E from the 16 bit value stored in zero page addresses 4E,4F:
Results stored in X= lo byte Y=high byte, and the Z,C,N, and V flags are affected the same way as with SBC.
These subroutines are stored in Golden RAM as part of my upcoming update to my CX16 assembly language editor, but if people want I can post it here too, it's only 350 bytes.