Is there an issue when converting the £ sign in the compiler? Or is it the ZX80 that is somehow causing the issue, and if so why is it printing the winnings okay etc...?
I don't have permission to see the screenshot but I can guess what the problem is. The pound symbol is not an ascii character so you're making a string with a unicode encoded symbol in it. Try using code 0x60 or the ascii back-tick instead. On the spectrum that's where the pound symbol is and the ascii conversion for the zx80 may be using the same ascii character for pound.
This does mean that I'll have to not use the printf() command and use my own print routine instead; not a problem but I wanted to keep things fairly standard with this project.
For the zx80 (and zx81) printf does an ascii to zx80 character set conversion at runtime. The pound symbol is in there ( https://github.com/z88dk/z88dk/blob/mas ... ab.asm#L41 -- the zx80 shares the zx81's printf ) and it looks to be at ascii code 0xa3.
So you should be able to do something like this to see pound symbols:
Do you mean something like strcat() or the two quoted strings put together?
In C, two quoted strings next to each other are the same as a single quoted string.
So:
"The quick brown fox jumped over the lazy dogs"
is the same as:
"The quick brown" " fox jumped " "over the lazy dogs"
In the above, I couldn't do this:
printTab(2, "\xa3 \xa3 \xa3 = \xa310.00\n");
because the compiler would take the last hex constant as "\xa310" instead of "\xa3". There has to be a non-hex digit separating the hex constant from the rest of the literal string. One way to do that is to make two quoted strings out of it: