1
0
mirror of https://github.com/cc65/cc65.git synced 2024-06-28 19:29:53 +00:00

Added new .FATAL pseudo op.

git-svn-id: svn://svn.cc65.org/cc65/trunk@4903 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2011-01-09 11:00:22 +00:00
parent bee54df029
commit 839e2c4202
4 changed files with 66 additions and 20 deletions

View File

@ -148,7 +148,7 @@ Here is a description of all the command line options:
Set the default for the CPU type. The option takes a parameter, which
may be one of
6502, 65SC02, 65C02, 65816, sunplus, sweet16, HuC6280
The sunplus cpu is not available in the freeware version, because the
@ -294,7 +294,7 @@ Here is a description of all the command line options:
will take place. The assembler supports the same target systems as the
compiler, see there for a list.
Depending on the target, the default CPU type is also set. This can be
Depending on the target, the default CPU type is also set. This can be
overriden by using the <tt/<ref id="option--cpu" name="--cpu">/ option.
@ -2290,7 +2290,8 @@ Here's a list of all control commands and a description, what they do:
<sect1><tt>.ERROR</tt><label id=".ERROR"><p>
Force an assembly error. The assembler will output an error message
preceded by "User error" and will <em/not/ produce an object file.
preceded by "User error". Assembly is continued but no object file will
generated.
This command may be used to check for initial conditions that must be
set before assembling a source file.
@ -2307,8 +2308,9 @@ Here's a list of all control commands and a description, what they do:
.endif
</verb></tscreen>
See also the <tt><ref id=".WARNING" name=".WARNING"></tt> and <tt><ref
id=".OUT" name=".OUT"></tt> directives.
See also: <tt><ref id=".FATAL" name=".FATAL"></tt>,
<tt><ref id=".OUT" name=".OUT"></tt>,
<tt><ref id=".WARNING" name=".WARNING"></tt>
<sect1><tt>.EXITMAC, .EXITMACRO</tt><label id=".EXITMACRO"><p>
@ -2374,6 +2376,32 @@ Here's a list of all control commands and a description, what they do:
See: <tt><ref id=".ADDR" name=".ADDR"></tt>
<sect1><tt>.FATAL</tt><label id=".FATAL"><p>
Force an assembly error and terminate assembly. The assembler will output an
error message preceded by "User error" and will terminate assembly
immediately.
This command may be used to check for initial conditions that must be
set before assembling a source file.
Example:
<tscreen><verb>
.if foo = 1
...
.elseif bar = 1
...
.else
.fatal "Must define foo or bar!"
.endif
</verb></tscreen>
See also: <tt><ref id=".ERROR" name=".ERROR"></tt>,
<tt><ref id=".OUT" name=".OUT"></tt>,
<tt><ref id=".WARNING" name=".WARNING"></tt>
<sect1><tt>.FEATURE</tt><label id=".FEATURE"><p>
This directive may be used to enable one or more compatibility features
@ -3097,8 +3125,9 @@ Here's a list of all control commands and a description, what they do:
.out "This code was written by the codebuster(tm)"
</verb></tscreen>
See also the <tt><ref id=".WARNING" name=".WARNING"></tt> and <tt><ref
id=".ERROR" name=".ERROR"></tt> directives.
See also: <tt><ref id=".ERROR" name=".ERROR"></tt>,
<tt><ref id=".FATAL" name=".FATAL"></tt>,
<tt><ref id=".WARNING" name=".WARNING"></tt>
<sect1><tt>.P02</tt><label id=".P02"><p>
@ -3505,20 +3534,21 @@ Here's a list of all control commands and a description, what they do:
<tscreen><verb>
.macro jne target
.local L1
.ifndef target
.warning "Forward jump in jne, cannot optimize!"
beq L1
jmp target
.local L1
.ifndef target
.warning "Forward jump in jne, cannot optimize!"
beq L1
jmp target
L1:
.else
...
.endif
...
.endif
.endmacro
</verb></tscreen>
See also the <tt><ref id=".ERROR" name=".ERROR"></tt> and <tt><ref id=".OUT"
name=".OUT"></tt> directives.
See also: <tt><ref id=".ERROR" name=".ERROR"></tt>
<tt><ref id=".FATAL" name=".FATAL"></tt>,
<tt><ref id=".OUT" name=".OUT"></tt>
<sect1><tt>.WORD</tt><label id=".WORD"><p>

View File

@ -6,7 +6,7 @@
/* */
/* */
/* */
/* (C) 1998-2010, Ullrich von Bassewitz */
/* (C) 1998-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
@ -882,6 +882,19 @@ static void DoFarAddr (void)
static void DoFatal (void)
/* Fatal user error */
{
if (Tok != TOK_STRCON) {
ErrorSkip ("String constant expected");
} else {
Fatal ("User error: %m%p", &SVal);
SkipUntilSep ();
}
}
static void DoFeature (void)
/* Switch the Feature option */
{
@ -1874,6 +1887,7 @@ static CtrlDesc CtrlCmdTab [] = {
{ ccNone, DoExport },
{ ccNone, DoExportZP },
{ ccNone, DoFarAddr },
{ ccNone, DoFatal },
{ ccNone, DoFeature },
{ ccNone, DoFileOpt },
{ ccNone, DoForceImport },

View File

@ -6,7 +6,7 @@
/* */
/* */
/* */
/* (C) 1998-2010, Ullrich von Bassewitz */
/* (C) 1998-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
@ -194,6 +194,7 @@ struct DotKeyword {
{ ".EXPORT", TOK_EXPORT },
{ ".EXPORTZP", TOK_EXPORTZP },
{ ".FARADDR", TOK_FARADDR },
{ ".FATAL", TOK_FATAL },
{ ".FEATURE", TOK_FEATURE },
{ ".FILEOPT", TOK_FILEOPT },
{ ".FOPT", TOK_FILEOPT },

View File

@ -6,7 +6,7 @@
/* */
/* */
/* */
/* (C) 2007-2010, Ullrich von Bassewitz */
/* (C) 2007-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
@ -164,6 +164,7 @@ typedef enum Token {
TOK_EXPORT,
TOK_EXPORTZP,
TOK_FARADDR,
TOK_FATAL,
TOK_FEATURE,
TOK_FILEOPT,
TOK_FORCEIMPORT,
@ -220,7 +221,7 @@ typedef enum Token {
TOK_POPCPU,
TOK_POPSEG,
TOK_PROC,
TOK_PSC02,
TOK_PSC02,
TOK_PUSHCPU,
TOK_PUSHSEG,
TOK_REFERENCED,