-unsigned errflag = 0; // Error flag, goes TRUE on error
-unsigned waitflag = 0; // Wait for any keypress flag
-unsigned versflag = 0; // Version banner has been shown flag
-unsigned aflag = 0; // Absolute linking flag
-unsigned bflag = 0; // Don't remove mulitply def locals flag
-unsigned cflag = 0; // COF executable
-unsigned dflag = 0; // Wait for key after link flag
-unsigned gflag = 0; // Source level debug include flag
-unsigned lflag = 0; // Add local symbols to output flag
-unsigned mflag = 0; // Produce symbol load map flag
-unsigned oflag = 0; // Output filename specified
-unsigned rflag = 0; // Segment alignment size flag
-unsigned sflag = 0; // Output only global symbols
-unsigned vflag = 0; // Verbose flag
-unsigned wflag = 0; // Show warnings flag
-unsigned zflag = 0; // Suppress banner flag
-unsigned pflag, uflag; // Unimplemented flags
-unsigned hd = 0; // Index of next file handle to fill
-unsigned secalign = 7; // Section Alignment (8=phrase)
-unsigned tbase = 0; // TEXT base address
-unsigned dbase = 0; // DATA base address
-unsigned bbase = 0; // BSS base address
-unsigned textoffset = 0; // COF TEXT segment offset
-unsigned dataoffset = 0; // COF DATA segment offset
-unsigned bssoffset = 0; // COF BSS segment offset
-unsigned displaybanner = 1; // Display version banner
-unsigned symoffset = 0; // Symbol table offset in output file
-unsigned dosymi = 0; // Dosym() processing iterator
-unsigned dbgsymbase = 0; // Debug symbol base address
-//unsigned symtrunc = 0; // Symbol truncation -i and -ii
-int noheaderflag = 0; // No header flag for ABS files
-int hflags; // Value of the arg to -h option
-int ttype, dtype, btype; // Type flag: 0, -1, -2, -3, -4
-int tval, dval, bval; // Values of these abs bases
-int hflag[NHANDLES]; // True for include files
-int handle[NHANDLES]; // Open file handles
-int textsize, datasize, bsssize; // Cumulative segment sizes
-char libdir[FARGSIZE * 3]; // Library directory to search
-char ofile[FARGSIZE]; // Output file name (.o)
-char * name[NHANDLES]; // Associated file names
-char * cmdlnexec = NULL; // Executable name - pointer to ARGV[0]
-char * hsym1[SYMLEN]; // First symbol for include files
-char * hsym2[SYMLEN]; // Second symbol for include files
-struct OFILE * plist = NULL; // Object image list pointer
-struct OFILE * plast; // Last object image list pointer
-struct OFILE * olist = NULL; // Pointer to first object file in list
-struct OFILE * olast; // Pointer to last object file in list
-char obj_fname[512][FNLEN]; // Object file names
-unsigned obj_segsize[512][3]; // Object file seg sizes; TEXT,DATA,BSS
-unsigned obj_index = 0; // Object file index/count
-struct HREC * htable[NBUCKETS]; // Hash table
-struct HREC * unresolved = NULL; // Pointer to unresolved hash list
-struct HREC * lookup(char *); // Hash lookup
-char * ost; // Output symbol table
-char * ost_ptr; // Output symbol table; current pointer
-char * ost_end; // Output symbol table; end pointer
-char * oststr; // Output string table
-char * oststr_ptr; // Output string table; current pointer
-char * oststr_end; // Output string table; end pointer
-int ost_index = 0; // Index of next ost addition
-int endian; // Processor endianess
+unsigned errflag = 0; // Error flag, goes TRUE on error
+unsigned waitflag = 0; // Wait for any keypress flag
+unsigned versflag = 0; // Version banner has been shown flag
+unsigned aflag = 0; // Absolute linking flag
+unsigned bflag = 0; // Don't remove mulitply def locals flag
+unsigned cflag = 0; // COF executable
+unsigned dflag = 0; // Wait for key after link flag
+unsigned gflag = 0; // Source level debug include flag
+unsigned lflag = 0; // Add local symbols to output flag
+unsigned mflag = 0; // Produce symbol load map flag
+unsigned oflag = 0; // Output filename specified
+unsigned rflag = 0; // Segment alignment size flag
+unsigned sflag = 0; // Output only global symbols
+unsigned vflag = 0; // Verbose flag
+unsigned wflag = 0; // Show warnings flag
+unsigned zflag = 0; // Suppress banner flag
+unsigned pflag, uflag; // Unimplemented flags
+unsigned hd = 0; // Index of next file handle to fill
+unsigned secalign = 7; // Section Alignment (8=phrase)
+unsigned tbase = 0; // TEXT base address
+unsigned dbase = 0; // DATA base address
+unsigned bbase = 0; // BSS base address
+unsigned textoffset = 0; // COF TEXT segment offset
+unsigned dataoffset = 0; // COF DATA segment offset
+unsigned bssoffset = 0; // COF BSS segment offset
+unsigned displaybanner = 1; // Display version banner
+unsigned symoffset = 0; // Symbol table offset in output file
+unsigned dosymi = 0; // Dosym() processing iterator
+unsigned dbgsymbase = 0; // Debug symbol base address
+//unsigned symtrunc = 0; // Symbol truncation -i and -ii
+int noheaderflag = 0; // No header flag for ABS files
+int hflags; // Value of the arg to -h option
+int ttype, dtype, btype; // Type flag: 0, -1, -2, -3, -4
+int tval, dval, bval; // Values of these abs bases
+int hflag[NHANDLES]; // True for include files
+int handle[NHANDLES]; // Open file handles
+int textsize, datasize, bsssize; // Cumulative segment sizes
+char libdir[FARGSIZE * 3]; // Library directory to search
+char ofile[FARGSIZE]; // Output file name (.o)
+char * name[NHANDLES]; // Associated file names
+char * cmdlnexec = NULL; // Executable name - pointer to ARGV[0]
+char * hsym1[SYMLEN]; // First symbol for include files
+char * hsym2[SYMLEN]; // Second symbol for include files
+struct OFILE * plist = NULL; // Object image list pointer
+struct OFILE * plast; // Last object image list pointer
+struct OFILE * olist = NULL; // Pointer to first object file in list
+struct OFILE * olast; // Pointer to last object file in list
+char obj_fname[16384][FNLEN]; // Object file names
+unsigned obj_segsize[16384][3]; // Object file seg sizes; TEXT,DATA,BSS
+unsigned obj_index = 0; // Object file index/count
+char * arPtr[512];
+uint32_t arIndex = 0;
+struct HREC * htable[NBUCKETS]; // Hash table
+struct HREC * unresolved = NULL; // Pointer to unresolved hash list
+char * ost; // Output symbol table
+char * ost_ptr; // Output symbol table; current pointer
+char * ost_end; // Output symbol table; end pointer
+char * oststr; // Output string table
+char * oststr_ptr; // Output string table; current pointer
+char * oststr_end; // Output string table; end pointer
+int ost_index = 0; // Index of next ost addition
+int endian; // Processor endianess
+uint8_t nullStr[1] = "\x00"; // Empty string
+struct HREC * arSymbol = NULL; // Pointer to AR symbol table