1
0
mirror of https://github.com/cc65/cc65.git synced 2025-08-10 04:25:21 +00:00

New condes type interruptor

git-svn-id: svn://svn.cc65.org/cc65/trunk@3187 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
cuz
2004-09-20 10:15:01 +00:00
parent cda34183c7
commit 777dcff9bf
4 changed files with 33 additions and 9 deletions

View File

@@ -6,7 +6,7 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 1998-2003 Ullrich von Bassewitz */ /* (C) 1998-2004 Ullrich von Bassewitz */
/* R<>merstra<72>e 52 */ /* R<>merstra<72>e 52 */
/* D-70794 Filderstadt */ /* D-70794 Filderstadt */
/* EMail: uz@cc65.org */ /* EMail: uz@cc65.org */
@@ -524,7 +524,8 @@ static void DoConDes (void)
{ {
static const char* Keys[] = { static const char* Keys[] = {
"CONSTRUCTOR", "CONSTRUCTOR",
"DESTRUCTOR", "DESTRUCTOR",
"INTERRUPTOR",
}; };
char Name [sizeof (SVal)]; char Name [sizeof (SVal)];
long Type; long Type;
@@ -567,7 +568,7 @@ static void DoConDes (void)
/* Parse the remainder of the line and export the symbol */ /* Parse the remainder of the line and export the symbol */
ConDes (Name, (unsigned) Type); ConDes (Name, (unsigned) Type);
} }
static void DoConstructor (void) static void DoConstructor (void)
@@ -1098,6 +1099,25 @@ static void DoInclude (void)
static void DoInterruptor (void)
/* Export a symbol as interruptor */
{
char Name [sizeof (SVal)];
/* Symbol name follows */
if (Tok != TOK_IDENT) {
ErrorSkip ("Identifier expected");
return;
}
strcpy (Name, SVal);
NextTok ();
/* Parse the remainder of the line and export the symbol */
ConDes (Name, CD_TYPE_INT);
}
static void DoInvalid (void) static void DoInvalid (void)
/* Handle a token that is invalid here, since it should have been handled on /* Handle a token that is invalid here, since it should have been handled on
* a much lower level of the expression hierarchy. Getting this sort of token * a much lower level of the expression hierarchy. Getting this sort of token
@@ -1692,6 +1712,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoImportZP }, { ccNone, DoImportZP },
{ ccNone, DoIncBin }, { ccNone, DoIncBin },
{ ccNone, DoInclude }, { ccNone, DoInclude },
{ ccNone, DoInterruptor },
{ ccNone, DoInvalid }, /* .LEFT */ { ccNone, DoInvalid }, /* .LEFT */
{ ccNone, DoLineCont }, { ccNone, DoLineCont },
{ ccNone, DoList }, { ccNone, DoList },

View File

@@ -200,6 +200,7 @@ struct DotKeyword {
{ ".IMPORTZP", TOK_IMPORTZP }, { ".IMPORTZP", TOK_IMPORTZP },
{ ".INCBIN", TOK_INCBIN }, { ".INCBIN", TOK_INCBIN },
{ ".INCLUDE", TOK_INCLUDE }, { ".INCLUDE", TOK_INCLUDE },
{ ".INTERRUPTOR", TOK_INTERRUPTOR },
{ ".LEFT", TOK_LEFT }, { ".LEFT", TOK_LEFT },
{ ".LINECONT", TOK_LINECONT }, { ".LINECONT", TOK_LINECONT },
{ ".LIST", TOK_LIST }, { ".LIST", TOK_LIST },
@@ -480,7 +481,7 @@ static void NextChar (void)
/* For better handling of files with unusual line endings (DOS /* For better handling of files with unusual line endings (DOS
* files that are accidently translated on Unix for example), * files that are accidently translated on Unix for example),
* first remove all whitespace at the end, then add a single * first remove all whitespace at the end, then add a single
* newline. * newline.
*/ */
Len = strlen (IFile->Line); Len = strlen (IFile->Line);

View File

@@ -189,11 +189,12 @@ enum Token {
TOK_IMPORTZP, TOK_IMPORTZP,
TOK_INCBIN, TOK_INCBIN,
TOK_INCLUDE, TOK_INCLUDE,
TOK_INTERRUPTOR,
TOK_LEFT, TOK_LEFT,
TOK_LINECONT, TOK_LINECONT,
TOK_LIST, TOK_LIST,
TOK_LISTBYTES, TOK_LISTBYTES,
TOK_LOBYTE, TOK_LOBYTE,
TOK_LOCAL, TOK_LOCAL,
TOK_LOCALCHAR, TOK_LOCALCHAR,
TOK_LOWORD, TOK_LOWORD,

View File

@@ -6,10 +6,10 @@
/* */ /* */
/* */ /* */
/* */ /* */
/* (C) 2000 Ullrich von Bassewitz */ /* (C) 2000-2004 Ullrich von Bassewitz */
/* Wacholderweg 14 */ /* R<>merstra<72>e 52 */
/* D-70597 Stuttgart */ /* D-70794 Filderstadt */
/* EMail: uz@musoftware.de */ /* EMail: uz@cc65.org */
/* */ /* */
/* */ /* */
/* This software is provided 'as-is', without any expressed or implied */ /* This software is provided 'as-is', without any expressed or implied */
@@ -60,6 +60,7 @@
/* Predefined types */ /* Predefined types */
#define CD_TYPE_CON 0 /* Constructor */ #define CD_TYPE_CON 0 /* Constructor */
#define CD_TYPE_DES 1 /* Destructor */ #define CD_TYPE_DES 1 /* Destructor */
#define CD_TYPE_INT 2 /* Interruptor */
/* When part of an export in an object file, type and priority are encoded in /* When part of an export in an object file, type and priority are encoded in
* one byte. In this case, the following macros access the fields: * one byte. In this case, the following macros access the fields: