mirror of
https://github.com/cc65/cc65.git
synced 2024-07-01 08:29:37 +00:00
New --label-break option
git-svn-id: svn://svn.cc65.org/cc65/trunk@3699 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
ceffc4e090
commit
7086da868b
|
@ -6,7 +6,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 2000-2005 Ullrich von Bassewitz */
|
/* (C) 2000-2006 Ullrich von Bassewitz */
|
||||||
/* Römerstrasse 52 */
|
/* Römerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
|
@ -69,6 +69,7 @@ unsigned Comments = 0; /* Add which comments to the output? */
|
||||||
|
|
||||||
/* Page formatting */
|
/* Page formatting */
|
||||||
unsigned PageLength = 0; /* Length of a listing page */
|
unsigned PageLength = 0; /* Length of a listing page */
|
||||||
|
unsigned LBreak = 7; /* Linefeed if labels exceed this limit */
|
||||||
unsigned MIndent = 9; /* Mnemonic indent */
|
unsigned MIndent = 9; /* Mnemonic indent */
|
||||||
unsigned AIndent = 17; /* Argument indent */
|
unsigned AIndent = 17; /* Argument indent */
|
||||||
unsigned CIndent = 49; /* Comment indent */
|
unsigned CIndent = 49; /* Comment indent */
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 2000-2005 Ullrich von Bassewitz */
|
/* (C) 2000-2006 Ullrich von Bassewitz */
|
||||||
/* Römerstrasse 52 */
|
/* Römerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
|
@ -74,6 +74,7 @@ extern unsigned Comments; /* Add which comments to the output? */
|
||||||
#define MIN_PAGE_LEN 32
|
#define MIN_PAGE_LEN 32
|
||||||
#define MAX_PAGE_LEN 127
|
#define MAX_PAGE_LEN 127
|
||||||
extern unsigned PageLength; /* Length of a listing page */
|
extern unsigned PageLength; /* Length of a listing page */
|
||||||
|
extern unsigned LBreak; /* Linefeed if labels exceed this limit */
|
||||||
extern unsigned MIndent; /* Mnemonic indent */
|
extern unsigned MIndent; /* Mnemonic indent */
|
||||||
extern unsigned AIndent; /* Argument indent */
|
extern unsigned AIndent; /* Argument indent */
|
||||||
extern unsigned CIndent; /* Comment indent */
|
extern unsigned CIndent; /* Comment indent */
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
#include <limits.h>
|
||||||
#if defined(_MSC_VER)
|
#if defined(_MSC_VER)
|
||||||
/* Microsoft compiler */
|
/* Microsoft compiler */
|
||||||
# include <io.h>
|
# include <io.h>
|
||||||
|
@ -86,6 +87,7 @@ static void GlobalSection (void)
|
||||||
{ "INPUTNAME", INFOTOK_INPUTNAME },
|
{ "INPUTNAME", INFOTOK_INPUTNAME },
|
||||||
{ "INPUTOFFS", INFOTOK_INPUTOFFS },
|
{ "INPUTOFFS", INFOTOK_INPUTOFFS },
|
||||||
{ "INPUTSIZE", INFOTOK_INPUTSIZE },
|
{ "INPUTSIZE", INFOTOK_INPUTSIZE },
|
||||||
|
{ "LABELBREAK", INFOTOK_LABELBREAK },
|
||||||
{ "OUTPUTNAME", INFOTOK_OUTPUTNAME },
|
{ "OUTPUTNAME", INFOTOK_OUTPUTNAME },
|
||||||
{ "PAGELENGTH", INFOTOK_PAGELENGTH },
|
{ "PAGELENGTH", INFOTOK_PAGELENGTH },
|
||||||
{ "STARTADDR", INFOTOK_STARTADDR },
|
{ "STARTADDR", INFOTOK_STARTADDR },
|
||||||
|
@ -160,6 +162,14 @@ static void GlobalSection (void)
|
||||||
InfoNextTok ();
|
InfoNextTok ();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case INFOTOK_LABELBREAK:
|
||||||
|
InfoNextTok ();
|
||||||
|
InfoAssureInt ();
|
||||||
|
InfoRangeCheck (0, UCHAR_MAX);
|
||||||
|
LBreak = (unsigned char) InfoIVal;
|
||||||
|
InfoNextTok ();
|
||||||
|
break;
|
||||||
|
|
||||||
case INFOTOK_OUTPUTNAME:
|
case INFOTOK_OUTPUTNAME:
|
||||||
InfoNextTok ();
|
InfoNextTok ();
|
||||||
InfoAssureStr ();
|
InfoAssureStr ();
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 1998-2005 Ullrich von Bassewitz */
|
/* (C) 1998-2006 Ullrich von Bassewitz */
|
||||||
/* Römerstrasse 52 */
|
/* Römerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
|
@ -37,6 +37,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <limits.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
/* common */
|
/* common */
|
||||||
|
@ -88,6 +89,7 @@ static void Usage (void)
|
||||||
" --help\t\tHelp (this text)\n"
|
" --help\t\tHelp (this text)\n"
|
||||||
" --hexoffs\t\tUse hexadecimal label offsets\n"
|
" --hexoffs\t\tUse hexadecimal label offsets\n"
|
||||||
" --info name\t\tSpecify an info file\n"
|
" --info name\t\tSpecify an info file\n"
|
||||||
|
" --label-break n\tAdd newline if label exceeds length n\n"
|
||||||
" --pagelength n\tSet the page length for the listing\n"
|
" --pagelength n\tSet the page length for the listing\n"
|
||||||
" --start-addr addr\tSet the start/load address\n"
|
" --start-addr addr\tSet the start/load address\n"
|
||||||
" --verbose\t\tIncrease verbosity\n"
|
" --verbose\t\tIncrease verbosity\n"
|
||||||
|
@ -198,6 +200,24 @@ static void OptInfo (const char* Opt attribute ((unused)), const char* Arg)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
static void OptLabelBreak (const char* Opt, const char* Arg)
|
||||||
|
/* Handle the --label-break option */
|
||||||
|
{
|
||||||
|
/* Convert the argument to a number */
|
||||||
|
unsigned long Val = CvtNumber (Opt, Arg);
|
||||||
|
|
||||||
|
/* Check for a valid range */
|
||||||
|
if (Val >= UCHAR_MAX) {
|
||||||
|
Error ("Argument for %s out of valid range (%d)",
|
||||||
|
Opt, UCHAR_MAX);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Use the value */
|
||||||
|
LBreak = (unsigned char) Val;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static void OptPageLength (const char* Opt attribute ((unused)), const char* Arg)
|
static void OptPageLength (const char* Opt attribute ((unused)), const char* Arg)
|
||||||
/* Handle the --pagelength option */
|
/* Handle the --pagelength option */
|
||||||
{
|
{
|
||||||
|
@ -392,6 +412,7 @@ int main (int argc, char* argv [])
|
||||||
{ "--help", 0, OptHelp },
|
{ "--help", 0, OptHelp },
|
||||||
{ "--hexoffs", 0, OptHexOffs },
|
{ "--hexoffs", 0, OptHexOffs },
|
||||||
{ "--info", 1, OptInfo },
|
{ "--info", 1, OptInfo },
|
||||||
|
{ "--label-break", 1, OptLabelBreak },
|
||||||
{ "--pagelength", 1, OptPageLength },
|
{ "--pagelength", 1, OptPageLength },
|
||||||
{ "--start-addr", 1, OptStartAddr },
|
{ "--start-addr", 1, OptStartAddr },
|
||||||
{ "--verbose", 0, OptVerbose },
|
{ "--verbose", 0, OptVerbose },
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 2000-2005 Ullrich von Bassewitz */
|
/* (C) 2000-2006 Ullrich von Bassewitz */
|
||||||
/* Römerstrasse 52 */
|
/* Römerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
|
@ -166,8 +166,10 @@ void DefLabel (const char* Name)
|
||||||
/* Define a label with the given name */
|
/* Define a label with the given name */
|
||||||
{
|
{
|
||||||
Output ("%s:", Name);
|
Output ("%s:", Name);
|
||||||
/* Don't start a new line if the label is fully in the left column */
|
/* If the label is longer than the configured maximum, or if it runs into
|
||||||
if (Col > MIndent) {
|
* the opcode column, start a new line.
|
||||||
|
*/
|
||||||
|
if (Col > LBreak+2 || Col > MIndent) {
|
||||||
LineFeed ();
|
LineFeed ();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* */
|
/* */
|
||||||
/* (C) 2000-2005 Ullrich von Bassewitz */
|
/* (C) 2000-2006 Ullrich von Bassewitz */
|
||||||
/* Römerstrasse 52 */
|
/* Römerstrasse 52 */
|
||||||
/* D-70794 Filderstadt */
|
/* D-70794 Filderstadt */
|
||||||
/* EMail: uz@cc65.org */
|
/* EMail: uz@cc65.org */
|
||||||
|
@ -73,6 +73,7 @@ typedef enum token_t {
|
||||||
INFOTOK_INPUTNAME,
|
INFOTOK_INPUTNAME,
|
||||||
INFOTOK_INPUTOFFS,
|
INFOTOK_INPUTOFFS,
|
||||||
INFOTOK_INPUTSIZE,
|
INFOTOK_INPUTSIZE,
|
||||||
|
INFOTOK_LABELBREAK,
|
||||||
INFOTOK_OUTPUTNAME,
|
INFOTOK_OUTPUTNAME,
|
||||||
INFOTOK_PAGELENGTH,
|
INFOTOK_PAGELENGTH,
|
||||||
INFOTOK_STARTADDR,
|
INFOTOK_STARTADDR,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user