Re: [cc65] cr/lf translation?

Date view Thread view Subject view

From: Ullrich von Bassewitz (
Date: 2002-07-12 08:21:08


On Fri, Jul 12, 2002 at 02:47:31AM +0200, MagerValp wrote:
> I started porting the Serial Slave tools to C (the tools need a
> rewrite), and I ran into a weird issue with cr and lf:
>   if (sendstring("<$\r\n") != OK) {
>     return(ERROR);
>   }
> gives me 3c 24 0a 0d 00 as the string. Fair enough. So I changed it to
>   if (sendstring("<$\x0d\x0a") != OK) {
>     return(ERROR);
>   }
> but that also gave me 3c 24 0a 0d 00 as the string. Surely, this can't
> be right? Oh well, \n\r works, but it looks weird...

All string literals get translated to the target character set - this is what
one would expect from the compiler. You would expect the '<' and '$' in the
same string to be converted into PETSCII, wouldn't you?

If you don't want translation, either use "-t none", or don't use string

	const char cmd[] = { 0x3C, 0x24, 0x0D, 0x0A, 0x00 };

Since there is also a translation for character constants, you can use this
method also if you need mixed (partially translated) strings:

	const char cmd[] = { '<', '$', 0x0D, 0x0A, 0x00 };

In this case, the first two characters get translated, but the last three will



Ullrich von Bassewitz                        
To unsubscribe from the list send mail to with
the string "unsubscribe cc65" in the body(!) of the mail.

Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2002-07-12 08:21:38 CEST