Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
06/09/07 08:03
Modified:
  06/09/07 08:13

Read: times


 
#140475 - Here is one way to do it
Responding to: ???'s previous message
Step 1. Make a file similar to this. Call it SYMBOLS.TXT.
First_Scr
Second_Scr
This_Scr
That_Scr
NextToLast_Scr
Last_Scr
Step 2. Write a program similar to this one that will run on your PC. If you know AWK, that would be a good language choice. Otherwise, use whatever you are familiar with.
/* ////////////////////////////////////////////////////////////////////////////
                                      x.c
///////////////////////////////////////////////////////////////////////////////
DESCRIPTION:    This program reads a list of symbols from SYMBOLS.TXT and
                automatically generates a corresponding set of #defines in
                SYMBOLS.H and a corresponding set of EQUs in SYMBOLS.INC.
                Adjust to suit if you don't like the hard coded filenames.

REVISIONS:       9 Jun 07 - RAC - Genesis
//////////////////////////////////////////////////////////////////////////// */

#include <stdio.h>

/* ////////////////////////////////////////////////////////////////////////////
                               Names for Numbers
//////////////////////////////////////////////////////////////////////////// */

#define BUF_SIZE        200

void main() {

    FILE        *pIn;                           // Pointer to input file
    FILE        *pH;                            // Pointer to .H output file
    FILE        *pI;                            // Pointer to .INC output file
    char        symbol[BUF_SIZE];               // A gigantic input buffer
    int         symbolCount;                    // Count symbols here

/*  Open all the input files, or die trying */

    if (((pIn = fopen("SYMBOLS.TXT", "rt")) == NULL) ||
        ((pH  = fopen("SYMBOLS.H",   "wt")) == NULL) ||
        ((pI  = fopen("SYMBOLS.INC", "wt")) == NULL)) {
        printf("File open error\n");
        return;
        }

/*  Write a line to each output file for every line in the input file  */

    symbolCount = 0;                            // No symbols yet
    while (fgets(symbol, BUF_SIZE, pIn)) {      // For each input line
        symbol[strlen(symbol) - 1] = '\0';      // Zap the newline character
        fprintf(pI, "%s\tEQU\t%d\n",            // Make ASM include file entry
            symbol, symbolCount);
        fprintf(pH, "#define\t%s\t%d\n",        // Make C header file entry
            symbol, symbolCount);
        symbolCount++;                          // Count symbol just processed
        }                                       // End 'for each input line'

/*  Close all the files  */

    fclose(pIn);  fclose(pI);  fclose(pH);
    }                                           // End main()
Step 3. Run the program. It will make two files like this:
#define First_Scr       0
#define Second_Scr      1
#define This_Scr        2
#define That_Scr        3
#define Penultimate_Scr 4
#define Last_Scr        5
and this:
First_Scr       EQU     0
Second_Scr      EQU     1
This_Scr        EQU     2
That_Scr        EQU     3
Penultimate_Scr EQU     4
Last_Scr        EQU     5
Step 4. Include these files with the rest of your program.

Step 5. Make the whole process automatic by creating a batch file or a make file that runs the program above whenever there is a change in SYMBOLS.TXT.

Step 6. Relax with a root beer.

-- Russ


List of 8 messages in thread
TopicAuthorDate
Constants as extern            01/01/70 00:00      
   Insufficient Information            01/01/70 00:00      
      tool-independent approach            01/01/70 00:00      
         Preprocessing            01/01/70 00:00      
   Example            01/01/70 00:00      
      RTFM?            01/01/70 00:00      
   Here is one way to do it            01/01/70 00:00      
   Thanks a lot            01/01/70 00:00      

Back to Subject List