From 03357652232b72f44fb44b1ba3507875c1d5d862 Mon Sep 17 00:00:00 2001 From: cuz Date: Wed, 23 Aug 2000 06:45:55 +0000 Subject: [PATCH] Move target handling and character set translation into the common directory. git-svn-id: svn://svn.cc65.org/cc65/trunk@297 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- src/cc65/ctrans.c | 137 --------------------------------------- src/cc65/ctrans.h | 57 ---------------- src/cc65/global.c | 1 - src/cc65/global.h | 17 ----- src/cc65/litpool.c | 4 +- src/cc65/main.c | 58 +++-------------- src/cc65/make/gcc.mak | 1 - src/cc65/make/watcom.mak | 2 - src/cc65/scanner.c | 13 +++- 9 files changed, 20 insertions(+), 270 deletions(-) delete mode 100644 src/cc65/ctrans.c delete mode 100644 src/cc65/ctrans.h diff --git a/src/cc65/ctrans.c b/src/cc65/ctrans.c deleted file mode 100644 index 626a49405..000000000 --- a/src/cc65/ctrans.c +++ /dev/null @@ -1,137 +0,0 @@ -/*****************************************************************************/ -/* */ -/* ctrans.c */ -/* */ -/* Character set translation for the cc65 C compiler */ -/* */ -/* */ -/* */ -/* (C) 1998 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#include "global.h" -#include "ctrans.h" - - - -/*****************************************************************************/ -/* data */ -/*****************************************************************************/ - - - -static unsigned char CTNone [256] = { - /* No system - no translation */ - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, - 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, - 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, - 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, - 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, - 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, - 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, - 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, - 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, - 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, - 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, - 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF -}; - -static unsigned char CTAtari [256] = { - /* ASCII -> ATASCII */ - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x7E,0x08,0x7F,0x9B,0x0B,0x7D,0x0D,0x0E,0x0F, - 0x10,0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, - 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, - 0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, - 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0x5B,0x5C,0x5D,0x5E,0x5F, - 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, - 0x90,0x91,0x92,0x93,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, - 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, - 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, - 0xC0,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, - 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0xDB,0xDC,0xDD,0xDE,0xDF, - 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, - 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF -}; - -static unsigned char CTPET [256] = { - /* ASCII -> PETSCII */ - 0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x14,0x09,0x0D,0x11,0x93,0x0A,0x0E,0x0F, - 0x10,0x0B,0x12,0x13,0x08,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D,0x1E,0x1F, - 0x20,0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D,0x2E,0x2F, - 0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F, - 0x40,0xC1,0xC2,0xC3,0xC4,0xC5,0xC6,0xC7,0xC8,0xC9,0xCA,0xCB,0xCC,0xCD,0xCE,0xCF, - 0xD0,0xD1,0xD2,0xD3,0xD4,0xD5,0xD6,0xD7,0xD8,0xD9,0xDA,0x5B,0x5C,0x5D,0x5E,0x5F, - 0xC0,0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4A,0x4B,0x4C,0x4D,0x4E,0x4F, - 0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5A,0xDB,0xDC,0xDD,0xDE,0xDF, - 0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8A,0x8B,0x8C,0x8D,0x8E,0x8F, - 0x90,0x91,0x92,0x0C,0x94,0x95,0x96,0x97,0x98,0x99,0x9A,0x9B,0x9C,0x9D,0x9E,0x9F, - 0xA0,0xA1,0xA2,0xA3,0xA4,0xA5,0xA6,0xA7,0xA8,0xA9,0xAA,0xAB,0xAC,0xAD,0xAE,0xAF, - 0xB0,0xB1,0xB2,0xB3,0xB4,0xB5,0xB6,0xB7,0xB8,0xB9,0xBA,0xBB,0xBC,0xBD,0xBE,0xBF, - 0x60,0x61,0x62,0x63,0x64,0x65,0x66,0x67,0x68,0x69,0x6A,0x6B,0x6C,0x6D,0x6E,0x6F, - 0x70,0x71,0x72,0x73,0x74,0x75,0x76,0x77,0x78,0x79,0x7A,0x7B,0x7C,0x7D,0x7E,0x7F, - 0xE0,0xE1,0xE2,0xE3,0xE4,0xE5,0xE6,0xE7,0xE8,0xE9,0xEA,0xEB,0xEC,0xED,0xEE,0xEF, - 0xF0,0xF1,0xF2,0xF3,0xF4,0xF5,0xF6,0xF7,0xF8,0xF9,0xFA,0xFB,0xFC,0xFD,0xFE,0xFF -}; - -static unsigned char* CTab [TGT_COUNT] = { - CTNone, /* No system */ - CTAtari, /* Atari */ - CTPET, /* C64 */ - CTPET, /* C128 */ - CTPET, /* ACE */ - CTPET, /* Plus/4 */ - CTPET, /* CBM610 */ - CTPET, /* PET */ - CTNone, /* NES */ - CTNone, /* Apple2 */ - CTNone, /* GEOS */ -}; - - - -/*****************************************************************************/ -/* code */ -/*****************************************************************************/ - - - -int ctrans (unsigned char C) -/* Translate a character from source charset into target charset */ -{ - /* Translate for the given system */ - return CTab [Target][C]; -} - - - diff --git a/src/cc65/ctrans.h b/src/cc65/ctrans.h deleted file mode 100644 index 01ec28931..000000000 --- a/src/cc65/ctrans.h +++ /dev/null @@ -1,57 +0,0 @@ -/*****************************************************************************/ -/* */ -/* ctrans.h */ -/* */ -/* Character set translation for the cc65 C compiler */ -/* */ -/* */ -/* */ -/* (C) 1998 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ -/* */ -/* */ -/* This software is provided 'as-is', without any expressed or implied */ -/* warranty. In no event will the authors be held liable for any damages */ -/* arising from the use of this software. */ -/* */ -/* Permission is granted to anyone to use this software for any purpose, */ -/* including commercial applications, and to alter it and redistribute it */ -/* freely, subject to the following restrictions: */ -/* */ -/* 1. The origin of this software must not be misrepresented; you must not */ -/* claim that you wrote the original software. If you use this software */ -/* in a product, an acknowledgment in the product documentation would be */ -/* appreciated but is not required. */ -/* 2. Altered source versions must be plainly marked as such, and must not */ -/* be misrepresented as being the original software. */ -/* 3. This notice may not be removed or altered from any source */ -/* distribution. */ -/* */ -/*****************************************************************************/ - - - -#ifndef CTRANS_H -#define CTRANS_H - - - -/*****************************************************************************/ -/* code */ -/*****************************************************************************/ - - - -int ctrans (unsigned char c); -/* Translate a character from source charset into target charset */ - - - -/* End of ctrans.h */ - -#endif - - - diff --git a/src/cc65/global.c b/src/cc65/global.c index ba93b6573..6a11ccd0a 100644 --- a/src/cc65/global.c +++ b/src/cc65/global.c @@ -43,7 +43,6 @@ -unsigned char Target = TGT_NONE; /* Target system */ unsigned char ANSI = 0; /* Strict ANSI flag */ unsigned char WriteableStrings = 0; /* Literal strings are r/w */ unsigned char NoWarn = 0; /* Suppress warnings */ diff --git a/src/cc65/global.h b/src/cc65/global.h index f384c3852..391ebda47 100644 --- a/src/cc65/global.h +++ b/src/cc65/global.h @@ -44,23 +44,6 @@ -/* Supported systems */ -#define TGT_NONE 0 -#define TGT_ATARI 1 -#define TGT_C64 2 -#define TGT_C128 3 -#define TGT_ACE 4 -#define TGT_PLUS4 5 -#define TGT_CBM610 6 -#define TGT_PET 7 -#define TGT_NES 8 -#define TGT_APPLE2 9 -#define TGT_GEOS 10 -#define TGT_COUNT 11 - - - -extern unsigned char Target; /* Target system */ extern unsigned char ANSI; /* Strict ANSI flag */ extern unsigned char WriteableStrings; /* Literal strings are r/w */ extern unsigned char NoWarn; /* Suppress warnings */ diff --git a/src/cc65/litpool.c b/src/cc65/litpool.c index 8886b6715..801a5ab43 100644 --- a/src/cc65/litpool.c +++ b/src/cc65/litpool.c @@ -37,10 +37,10 @@ /* common */ #include "check.h" +#include "tgttrans.h" /* cc65 */ #include "asmlabel.h" -#include "ctrans.h" #include "codegen.h" #include "error.h" #include "global.h" @@ -75,7 +75,7 @@ void TranslateLiteralPool (unsigned Offs) */ { while (Offs < LiteralOffs) { - LiteralPool[Offs] = ctrans (LiteralPool[Offs]); + LiteralPool[Offs] = TgtTranslateChar (LiteralPool[Offs]); ++Offs; } } diff --git a/src/cc65/main.c b/src/cc65/main.c index 4bf527f98..eed9bd8bb 100644 --- a/src/cc65/main.c +++ b/src/cc65/main.c @@ -43,6 +43,7 @@ #include "abend.h" #include "cmdline.h" #include "fname.h" +#include "target.h" #include "version.h" #include "xmalloc.h" @@ -61,29 +62,6 @@ -/*****************************************************************************/ -/* data */ -/*****************************************************************************/ - - - -/* Names of the target systems sorted by target name */ -static const char* TargetNames [] = { - "none", - "atari", - "c64", - "c128", - "ace", - "plus4", - "cbm610", - "pet", - "nes", - "apple2", - "geos", -}; - - - /*****************************************************************************/ /* Code */ /*****************************************************************************/ @@ -144,35 +122,10 @@ static void cbmsys (const char* sys) -static int MapSys (const char* Name) -/* Map a target name to a system code. Return -1 in case of an error */ -{ - unsigned I; - - /* Check for a numeric target */ - if (isdigit (*Name)) { - int Target = atoi (Name); - if (Target >= 0 && Target < TGT_COUNT) { - return Target; - } - } - - /* Check for a target string */ - for (I = 0; I < TGT_COUNT; ++I) { - if (strcmp (TargetNames [I], Name) == 0) { - return I; - } - } - /* Not found */ - return -1; -} - - - static void SetSys (const char* Sys) /* Define a target system */ { - switch (Target = MapSys (Sys)) { + switch (Target = FindTarget (Sys)) { case TGT_NONE: break; @@ -585,7 +538,7 @@ int main (int argc, char* argv[]) break; case 's': InlineStdFuncs = 1; - break; + break; } } break; @@ -623,6 +576,11 @@ int main (int argc, char* argv[]) AbEnd ("No input files"); } + /* If we did not have a target system given, use the "none" target */ + if (Target == TGT_UNKNOWN) { + Target = TGT_NONE; + } + /* Open the input file */ OpenMainFile (InputFile); diff --git a/src/cc65/make/gcc.mak b/src/cc65/make/gcc.mak index 3639d8544..09c5eb3c3 100644 --- a/src/cc65/make/gcc.mak +++ b/src/cc65/make/gcc.mak @@ -19,7 +19,6 @@ OBJS = anonname.o \ codegen.o \ compile.o \ cpu.o \ - ctrans.o \ datatype.o \ declare.o \ error.o \ diff --git a/src/cc65/make/watcom.mak b/src/cc65/make/watcom.mak index d171b2a87..36393448a 100644 --- a/src/cc65/make/watcom.mak +++ b/src/cc65/make/watcom.mak @@ -74,7 +74,6 @@ OBJS = anonname.obj \ codegen.obj \ compile.obj \ cpu.obj \ - ctrans.obj \ datatype.obj \ declare.obj \ error.obj \ @@ -133,7 +132,6 @@ FILE asmline.obj FILE codegen.obj FILE compile.obj FILE cpu.obj -FILE ctrans.obj FILE datatype.obj FILE declare.obj FILE error.obj diff --git a/src/cc65/scanner.c b/src/cc65/scanner.c index c981ad9f8..47446de4d 100644 --- a/src/cc65/scanner.c +++ b/src/cc65/scanner.c @@ -11,8 +11,11 @@ #include #include #include + +/* common */ +#include "tgttrans.h" -#include "ctrans.h" +/* cc65 */ #include "datatype.h" #include "error.h" #include "function.h" @@ -323,8 +326,12 @@ static void CharConst (void) /* Setup values and attributes */ nxttok = TOK_CCONST; - nxtval = SignExtendChar (ctrans (C)); /* Translate into target charset */ - nxttype = type_int; /* Character constants have type int */ + + /* Translate into target charset */ + nxtval = SignExtendChar (TgtTranslateChar (C)); + + /* Character constants have type int */ + nxttype = type_int; } -- 2.39.5