* link/z80/lkmain.c,
[fw/sdcc] / link / z80 / aslink.h
index 04ddecbedd311cc3c56eff04036cf0e4fa5c20e5..fabdb1c3631894744ed20b44cc336346a2c4ba01 100644 (file)
 /*
  * Extensions: P. Felber
  */
+#include <limits.h>
+
+#ifndef PATH_MAX
+ #if defined(__BORLANDC__) || defined(_MSC_VER)
+  #include <stdlib.h>
+  #define PATH_MAX     _MAX_PATH
+ #else
+  #define PATH_MAX     255     /* define a reasonable value */
+ #endif
+#endif
 
 #define        VERSION "V01.75"
 
  */
 
 #ifdef SDK
-#define        NCPS    32              /* characters per symbol */
+#define        NCPS    80              /* characters per symbol.  Used to be 32... */
 #else /* SDK */
 #define        NCPS    8               /* characters per symbol */
 #endif /* SDK */
 /* #define     NCPS    32 */   /* characters per symbol */
 #define        NDATA   16              /* actual data */
-#define        NINPUT  128             /* Input buffer size */
+#define        NINPUT  PATH_MAX        /* Input buffer size */
 #define        NHASH   64              /* Buckets in hash table */
 #define        HMASK   077             /* Hash mask */
 #define        NLPP    60              /* Lines per page */
 #define        NTXT    16              /* T values */
-#define        FILSPC  80              /* File spec length */
+#define        FILSPC  PATH_MAX        /* File spec length */
 
 /*
  *     The "R_" relocation constants define values used in
 /*
  * File types
  */
+#define F_INV  0               /* invalid */
 #define        F_STD   1               /* stdin */
 #define        F_LNK   2               /* File.lnk */
 #define        F_REL   3               /* File.rel */
@@ -178,7 +189,7 @@ extern patch* patches;
 /*
  *     General assembler address type
  */
-typedef unsigned int addr_t;
+typedef unsigned int Addr_T;
 
 /*
  *     The structures of head, area, areax, and sym are created
@@ -224,8 +235,8 @@ struct      area
 {
        struct  area    *a_ap;  /* Area link */
        struct  areax   *a_axp; /* Area extension link */
-       addr_t  a_addr;         /* Beginning address of area */
-       addr_t  a_size;         /* Total size of the area */
+       Addr_T  a_addr;         /* Beginning address of area */
+       Addr_T  a_size;         /* Total size of the area */
        char    a_type;         /* Area subtype */
        char    a_flag;         /* Flag byte */
        char    a_id[NCPS];     /* Name */
@@ -251,8 +262,8 @@ struct      areax
        struct  areax   *a_axp; /* Area extension link */
        struct  area    *a_bap; /* Base area link */
        struct  head    *a_bhp; /* Base header link */
-       addr_t  a_addr;         /* Beginning address of section */
-       addr_t  a_size;         /* Size of the area in section */
+       Addr_T  a_addr;         /* Beginning address of section */
+       Addr_T  a_size;         /* Size of the area in section */
 };
 
 /*
@@ -273,7 +284,7 @@ struct      sym
        struct  areax   *s_axp; /* Symbol area link */
        char    s_type;         /* Symbol subtype */
        char    s_flag;         /* Flag byte */
-       addr_t  s_addr;         /* Address */
+       Addr_T  s_addr;         /* Address */
        char    s_id[NCPS];     /* Name */
 };
 
@@ -322,7 +333,7 @@ struct      sdp
 {
        struct  area  *s_area;  /* Paged Area link */
        struct  areax *s_areax; /* Paged Area Extension Link */
-       addr_t  s_addr;         /* Page address offset */
+       Addr_T  s_addr;         /* Page address offset */
 };
 
 /*
@@ -339,9 +350,9 @@ struct      rerr
 {
        int     aindex;         /* Linking area */
        int     mode;           /* Relocation mode */
-       addr_t  rtbase;         /* Base address in section */
+       Addr_T  rtbase;         /* Base address in section */
        int     rindex;         /* Area/Symbol reloaction index */
-       addr_t  rval;           /* Area/Symbol offset value */
+       Addr_T  rval;           /* Area/Symbol offset value */
 };
 
 /*
@@ -415,6 +426,7 @@ struct lbfile {
        char            *libspc;
        char            *relfil;
        char            *filspc;
+    long               offset; /*>=0 if rel file is embedded in a lib file at this offset*/
 };
 
 /*
@@ -436,10 +448,14 @@ extern    char    *rp;            /*      pointer into the LST file
 extern char    rb[NINPUT];     /*      LST file text line being
                                 *      address relocated
                                 */
-extern char    ctype[];        /*      array of character types, one per
+extern unsigned char   ctype[];        /*      array of character types, one per
                                 *      ASCII character
                                 */
 
+extern char sdccopt[NINPUT];
+extern char sdccopt_module[NINPUT];
+extern char curr_module[NINPUT];
+
 /*
  *     Character Type Definitions
  */
@@ -469,7 +485,7 @@ extern      char    ccase[];        /*      an array of characters which
 extern struct  lfile   *filep; /*      The pointers (lfile *) filep,
                                 *      (lfile *) cfp, and (FILE *) sfp
                                 *      are used in conjunction with
-                                *      the routine getline() to read
+                                *      the routine lk_getline() to read
                                 *      asmlnk commands from
                                 *      (1) the standard input or
                                 *      (2) or a command file
@@ -571,7 +587,7 @@ extern      int     pass;           /*      linker pass number
 extern int     rtcnt;          /*      count of elements in the
                                 *      rtval[] and rtflg[] arrays
                                 */
-extern addr_t  rtval[];        /*      data associated with relocation
+extern Addr_T  rtval[];        /*      data associated with relocation
                                 */
 extern int     rtflg[];        /*      indicates if rtval[] value is
                                 *      to be sent to the output file.
@@ -618,7 +634,7 @@ extern      VOID            bassav();
 extern VOID            gblsav();
 extern VOID            link();
 extern VOID            lkexit();
-extern VOID            main();
+extern int             main();
 extern VOID            map();
 #ifdef SDK
 extern VOID            sym();
@@ -633,12 +649,13 @@ extern    char            endline();
 extern char            get();
 extern VOID            getfid();
 extern VOID            getid();
-extern int             getline();
+extern int             lk_getline();
 extern int             getmap();
 extern char            getnb();
 extern int             more();
 extern VOID            skip();
 extern VOID            unget();
+extern VOID            chop_crlf();
 
 /* lkarea.c */
 extern VOID            lkparea();
@@ -659,14 +676,14 @@ extern    VOID            symdef();
 extern int             symeq();
 extern VOID            syminit();
 extern VOID            symmod();
-extern addr_t          symval();
+extern Addr_T          symval();
 
 /* lkeval.c */
 extern int             digit();
-extern addr_t          eval();
-extern addr_t          expr();
+extern Addr_T          eval();
+extern Addr_T          expr();
 extern int             oprio();
-extern addr_t          term();
+extern Addr_T          term();
 
 /* lklist.c */
 extern int             dgt();
@@ -678,13 +695,13 @@ extern    VOID            newpag();
 extern VOID            slew();
 
 /* lkrloc.c */
-extern addr_t          adb_b();
-extern addr_t          adb_hi();
-extern addr_t          adb_lo();
-extern addr_t          adw_w();
-extern addr_t          adw_hi();
-extern addr_t          adw_lo();
-extern addr_t          evword();
+extern Addr_T          adb_b();
+extern Addr_T          adb_hi();
+extern Addr_T          adb_lo();
+extern Addr_T          adw_w();
+extern Addr_T          adw_hi();
+extern Addr_T          adw_lo();
+extern Addr_T          evword();
 extern VOID            rele();
 extern VOID            reloc();
 extern VOID            relt();
@@ -698,7 +715,7 @@ extern      VOID            erpdmp();
 extern VOID            prntval();
 
 /* lklibr.c */
-extern VOID            addfile();
+extern int             addfile();
 extern VOID            addlib();
 extern VOID            addpath();
 extern int             fndsym();
@@ -711,3 +728,8 @@ extern      VOID            s19();
 
 /* lkihx.c */
 extern VOID            ihx();
+
+/* lkgb.h */
+VOID gb(int in);
+VOID gg(int in);
+