]> git.sur5r.net Git - cc65/commitdiff
Do not use a separate byte for an END opcode, instead place the bit into the
authoruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 2 Nov 2009 22:31:32 +0000 (22:31 +0000)
committeruz <uz@b7a2c559-68d2-44c3-8de9-860c34a00d81>
Mon, 2 Nov 2009 22:31:32 +0000 (22:31 +0000)
previous opcode. This saves one byte per character with the exception of
characters without a vector representation, where we loose one byte, because
we need to add a dummy vector just to apply our END bit.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4433 b7a2c559-68d2-44c3-8de9-860c34a00d81

src/chrcvt/main.c

index 4629ecfa121212b39f93d06ee2f8dca0fed22769..8b402655b756f70585e5e032d3f210402922754d 100644 (file)
@@ -238,7 +238,13 @@ static void ConvertChar (StrBuf* Data, const unsigned char* Buf)
 
             case 0x0000:
                 /* End */
-                SB_AppendChar (Data, 0x80);
+                if (SB_IsEmpty (Data)) {
+                    /* No ops. We need to add an empty one */
+                    SB_AppendChar (Data, 0x00);
+                    SB_AppendChar (Data, 0x00);
+                }
+                /* Add an end marker to the last op in the buffer */
+                SB_GetBuf (Data)[SB_GetLen (Data) - 2] |= 0x80;
                 return;
 
             case 0x0080: