From: cuz Date: Mon, 20 Sep 2004 10:15:01 +0000 (+0000) Subject: New condes type interruptor X-Git-Tag: V2.12.0~647 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=777dcff9bffcbcbb7807c1a7852382508cd63d42;p=cc65 New condes type interruptor git-svn-id: svn://svn.cc65.org/cc65/trunk@3187 b7a2c559-68d2-44c3-8de9-860c34a00d81 --- diff --git a/src/ca65/pseudo.c b/src/ca65/pseudo.c index 3e0ecbb8e..f68239bcd 100644 --- a/src/ca65/pseudo.c +++ b/src/ca65/pseudo.c @@ -6,7 +6,7 @@ /* */ /* */ /* */ -/* (C) 1998-2003 Ullrich von Bassewitz */ +/* (C) 1998-2004 Ullrich von Bassewitz */ /* Römerstraße 52 */ /* D-70794 Filderstadt */ /* EMail: uz@cc65.org */ @@ -524,7 +524,8 @@ static void DoConDes (void) { static const char* Keys[] = { "CONSTRUCTOR", - "DESTRUCTOR", + "DESTRUCTOR", + "INTERRUPTOR", }; char Name [sizeof (SVal)]; long Type; @@ -567,7 +568,7 @@ static void DoConDes (void) /* Parse the remainder of the line and export the symbol */ ConDes (Name, (unsigned) Type); } - + 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) /* 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 @@ -1692,6 +1712,7 @@ static CtrlDesc CtrlCmdTab [] = { { ccNone, DoImportZP }, { ccNone, DoIncBin }, { ccNone, DoInclude }, + { ccNone, DoInterruptor }, { ccNone, DoInvalid }, /* .LEFT */ { ccNone, DoLineCont }, { ccNone, DoList }, diff --git a/src/ca65/scanner.c b/src/ca65/scanner.c index 1b87b78b4..9b8a6dfc2 100644 --- a/src/ca65/scanner.c +++ b/src/ca65/scanner.c @@ -200,6 +200,7 @@ struct DotKeyword { { ".IMPORTZP", TOK_IMPORTZP }, { ".INCBIN", TOK_INCBIN }, { ".INCLUDE", TOK_INCLUDE }, + { ".INTERRUPTOR", TOK_INTERRUPTOR }, { ".LEFT", TOK_LEFT }, { ".LINECONT", TOK_LINECONT }, { ".LIST", TOK_LIST }, @@ -480,7 +481,7 @@ static void NextChar (void) /* For better handling of files with unusual line endings (DOS * 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. */ Len = strlen (IFile->Line); diff --git a/src/ca65/scanner.h b/src/ca65/scanner.h index aa5cf6c7f..5c19a37f7 100644 --- a/src/ca65/scanner.h +++ b/src/ca65/scanner.h @@ -189,11 +189,12 @@ enum Token { TOK_IMPORTZP, TOK_INCBIN, TOK_INCLUDE, + TOK_INTERRUPTOR, TOK_LEFT, TOK_LINECONT, TOK_LIST, TOK_LISTBYTES, - TOK_LOBYTE, + TOK_LOBYTE, TOK_LOCAL, TOK_LOCALCHAR, TOK_LOWORD, diff --git a/src/common/cddefs.h b/src/common/cddefs.h index 5d8717931..4b2c97be7 100644 --- a/src/common/cddefs.h +++ b/src/common/cddefs.h @@ -6,10 +6,10 @@ /* */ /* */ /* */ -/* (C) 2000 Ullrich von Bassewitz */ -/* Wacholderweg 14 */ -/* D-70597 Stuttgart */ -/* EMail: uz@musoftware.de */ +/* (C) 2000-2004 Ullrich von Bassewitz */ +/* Römerstraße 52 */ +/* D-70794 Filderstadt */ +/* EMail: uz@cc65.org */ /* */ /* */ /* This software is provided 'as-is', without any expressed or implied */ @@ -60,6 +60,7 @@ /* Predefined types */ #define CD_TYPE_CON 0 /* Constructor */ #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 * one byte. In this case, the following macros access the fields: