     1                                  ;*********************************************************************
     2                                  ;*   MACHLINK.ASM                                                    *
     3                                  ;*                                                                   *
     4                                  ;*   By:            Michael Devore                                   *
     5                                  ;*   Date:          11/06/92                                         *
     6                                  ;*   Model:         Small                                            *
     7                                  ;*   Version:       2.5                                              *
     8                                  ;*   Assembler:     MASM 5.0                                         *
     9                                  ;*   Environment:   MS-DOS 2.x+                                      *
    10                                  ;*                                                                   *
    11                                  ;*   main driver for linker                                          *
    12                                  ;*                                                                   *
    13                                  ;*********************************************************************
    14                                  
    15                                  ;TITLE   WARPLINK machlink
    16                                  ;PAGE    50,80
    17                                  
    18                                  %IFNDEF  NODOS
    19                                  ;    DOSSEG
    20                                  %ENDIF
    21                                  
    22                                  ;.MODEL  SMALL
    23                                  ;.STACK  400h
    24                                  
    25                                  ;*****************************
    26                                  ;* Include files             *
    27                                  ;*****************************
    28                                  
    29                                  %include "mlequate.mac"
     1                              <1> ;*********************************************************************
     2                              <1> ;*   MLEQUATE.INC                                                    *
     3                              <1> ;*                                                                   *
     4                              <1> ;*   By:            Michael Devore                                   *
     5                              <1> ;*   Date:          04/29/93                                         *
     6                              <1> ;*   Model:         Small                                            *
     7                              <1> ;*   Version:       2.5                                              *
     8                              <1> ;*   Assembler:     MASM 5.0                                         *
     9                              <1> ;*   Environment:   MS-DOS 2.x+                                      *
    10                              <1> ;*                                                                   *
    11                              <1> ;*   Global file equates                                             *
    12                              <1> ;*                                                                   *
    13                              <1> ;*********************************************************************
    14                              <1> 
    15                              <1> 
    16                              <1> %include "nasm.mac"
     1                              <2> 
     2                              <2> %if 0
     3                              <2> 
     4                              <2> NASM macros to work with ported WarpLink sources
     5                              <2>  2023 by E. C. Masloch, Public Domain
     6                              <2> 
     7                              <2> %endif
     8                              <2> 
     9                              <2> 	cpu 8086
    10                              <2> 
    11                              <2> group DGROUP _DATA CONST _BSS STACK
    12                              <2> segment _TEXT class=CODE align=2
    13                              <2> segment _DATA class=DATA align=2
    14                              <2> segment CONST class=DATA align=2
    15                              <2> segment _BSS class=BSS bss align=2
    16                              <2> segment STACK class=STACK stack align=16
    17                              <2> segment _TEXT
    18                              <2> 
    19                              <2> %imacro .DATA 0.nolist
    20                              <2> 	segment _DATA
    21                              <2> %endmacro
    22                              <2> %imacro .DATA? 0.nolist
    23                              <2> 	segment _BSS
    24                              <2> %endmacro
    25                              <2> %imacro .CONST 0.nolist
    26                              <2> 	segment CONST
    27                              <2> %endmacro
    28                              <2> %imacro .CODE 0.nolist
    29                              <2> 	segment _TEXT
    30                              <2> %endmacro
    31                              <2> 
    32                              <2> 
    33                              <2> %imacro EVEN 0.nolist
    34                              <2>  %ifidni __SECT__, [segment _BSS]
    35                              <2> 	alignb 2
    36                              <2>  %else
    37                              <2> 	align 2, db 0
    38                              <2>  %endif
    39                              <2> %endmacro
    40                              <2> 
    41                              <2> 
    42                              <2> %unimacro section 1+.nolist
    43                              <2> %imacro section 1+.nolist
    44                              <2> %defstr %%string %1
    45                              <2> %strlen %%length %%string
    46                              <2> %assign %%ii 1
    47                              <2> %rep %%length
    48                              <2>  %substr %%sub %%string %%ii
    49                              <2>  %deftok %%token %%sub
    50                              <2>  %ifempty %%token
    51                              <2>   %exitrep
    52                              <2>  %else
    53                              <2>   %assign %%ii %%ii + 1
    54                              <2>  %endif
    55                              <2> %endrep
    56                              <2> %substr %%sub %%string 1, %%ii - 1
    57                              <2> %deftok %%token %%sub
    58                              <2> [%?? %1]
    59                              <2> %xdefine __SECT__ [%?? %%token]
    60                              <2> %endmacro
    61                              <2> 
    62                              <2> 
    63                              <2> %imacro LABEL 0-1+
    64                              <2> %endmacro
    65                              <2> 
    66                              <2> 
    67                              <2> %unimacro struc 1-2.nolist 0
    68                              <2> %unimacro struc 1.nolist
    69                              <2> %unimacro endstruc 0.nolist			; removes NASM's standard macro
    70                              <2> %unimacro endstruc 0-1.nolist
    71                              <2> 
    72                              <2> %imacro struc 0-2.nolist ,0
    73                              <2>     %push STRUCTURE
    74                              <2>  %ifempty %1
    75                              <2>         %define %$strucname %00
    76                              <2>  %else
    77                              <2>         %define %$strucname %1
    78                              <2>  %endif
    79                              <2>         [absolute %2]
    80                              <2>         %$strucname:        ; allow definition of `.member' to work sanely
    81                              <2> %endmacro
    82                              <2> 
    83                              <2> %imacro endstruc 0.nolist
    84                              <2>         %{$strucname}_size equ ($-%$strucname)
    85                              <2>     %pop
    86                              <2>     __SECT__
    87                              <2> %endmacro
    88                              <2> 
    89                              <2> %imacro ends 0.nolist
    90                              <2>  %ifnempty %00
    91                              <2>   %ifctx STRUCTURE
    92                              <2>         %{$strucname}_size equ ($-%$strucname)
    93                              <2>     %pop
    94                              <2>     __SECT__
    95                              <2>   %endif
    96                              <2>  %endif
    97                              <2> %endmacro
    98                              <2> 
    99                              <2> %idefine OFFSET
   100                              <2> %idefine PTR
   101                              <2> 
   102                              <2> %imacro EXTRN 1-*.nolist
   103                              <2>  %push
   104                              <2>   %rep %0
   105                              <2>    %defstr %$input %1
   106                              <2>    %strlen %$length %$input
   107                              <2>    %assign %$index 1
   108                              <2>    %rep %$length
   109                              <2>     %substr %$letter %$input %$index
   110                              <2>     %if %$letter == ':'
   111                              <2>      %exitrep
   112                              <2>     %endif
   113                              <2>     %assign %$index %$index + 1
   114                              <2>    %endrep
   115                              <2>    %substr %$output %$input 1, %$index - 1
   116                              <2>    %deftok %$label %$output
   117                              <2> 	extern %$label
   118                              <2>    %rotate 1
   119                              <2>   %endrep
   120                              <2>  %pop
   121                              <2> %endmacro
   122                              <2> 
   123                              <2> %idefine PUBLIC global
   124                              <2> 
   125                              <2> %imacro PROC 0-1.nolist
   126                              <2> %00:
   127                              <2>  %ifnempty %1
   128                              <2>   %ifnidni %1, NEAR
   129                              <2>    %error Unknown keyword to PROC macro
   130                              <2>   %endif
   131                              <2>  %endif
   132                              <2> %endmacro
   133                              <2> %imacro ENDP 0.nolist
   134                              <2> %ifidni %00, 0
   135                              <2> %endif
   136                              <2> %endmacro
   137                              <2> 
   138                              <2> %imacro END 0-1.nolist
   139                              <2> %endmacro
    17                              <1> 
    18                              <1> 
    19                              <1> 	struc TEMPWLLIST
    20 00000000 ??                  <1> twlLength:		resb 1
    21 00000001 ??                  <1> twlListUsed:		resb 1
    22 00000002 ??                  <1> twlSegmentIndex:	resb 1
    23 00000003 ??                  <1> twlGroupIndex:		resb 1
    24                              <1> twlExtdefIndex:		; word, overlapping
    25 00000004 ????????            <1> twlSegdefSizeOffset:	resd 1
    26 00000008 ????                <1> twlObjIndex:		resw 1
    27                              <1> 	endstruc
    28                              <1> 
    29                              <1> TEMPSTRINGWLLIST_size equ TEMPWLLIST_size + 256
    30                              <1> GRPDEFBUFFER_size equ 256
    31                              <1> LEDATA_LIMIT equ 128		; must be even
    32                              <1> 
    33                              <1> twlUsedInitial	equ 0
    34                              <1> twlUsedNewSeg	equ 1
    35                              <1> twlUsedNewGroup	equ 2
    36                              <1> twlUsedListItem	equ 3
    37                              <1> 
    38                              <1> twlNew:		equ 'N'
    39                              <1> twlSegment:	equ 'S'
    40                              <1> twlGroup:	equ 'G'
    41                              <1> twlList:	equ 'L'
    42                              <1> twlRepeat:	equ 'R'
    43                              <1> twlWidth:	equ 'W'
    44                              <1> 
    45                              <1> 
    46                              <1> %IFDEF	DEMO
    47                              <1>  %define	LINKER		"Freelink"
    48                              <1>  %define	LINKERCAPS	"FREELINK"
    49                              <1> %ELSE
    50                              <1>  %define	LINKER		"WarpLink"
    51                              <1>  %define	LINKERCAPS	"WARPLINK"
    52                              <1> %ENDIF
    53                              <1> 
    54                              <1> ; general use equates
    55                              <1> 
    56                              <1> STDIN   EQU 0               ; standard input device
    57                              <1> STDOUT  EQU 1               ; standard output device
    58                              <1> STDERR  EQU 2               ; standard error device
    59                              <1> 
    60                              <1> BELL    EQU     7           ; beep the speaker
    61                              <1> CR      EQU     13          ; carriage return
    62                              <1> LF      EQU     10          ; line feed
    63                              <1> 
    64                              <1> ; object record names
    65                              <1> 
    66                              <1> BLKDEF  EQU     7ah
    67                              <1> BLKEND  EQU     7ch
    68                              <1> DEBSYM  EQU     7eh
    69                              <1> 
    70                              <1> THEADR  EQU     80h
    71                              <1> LHEADR  EQU     82h
    72                              <1> COMENT  EQU     88h
    73                              <1> MODEND  EQU     8ah
    74                              <1> EXTDEF  EQU     8ch
    75                              <1> TYPDEF  EQU     8eh
    76                              <1> PUBDEF  EQU     90h
    77                              <1> LOCSYM  EQU     92h
    78                              <1> LINNUM  EQU     94h
    79                              <1> LNAMES  EQU     96h
    80                              <1> SEGDEF  EQU     98h
    81                              <1> GRPDEF  EQU     9ah
    82                              <1> FIXUPP  EQU     9ch
    83                              <1> LEDATA  EQU     0a0h
    84                              <1> LIDATA  EQU     0a2h
    85                              <1> COMDEF  EQU     0b0h
    86                              <1> 
    87                              <1> BAKPAT1 EQU     0b2h        ; Quick C back patch record type 1, not implemented
    88                              <1> BAKPAT2 EQU     0b3h        ; Quick C back patch record type 1, not implemented
    89                              <1> 
    90                              <1> LEXTDEF EQU     0b4h
    91                              <1> LPUBDEF1    EQU 0b6h
    92                              <1> LPUBDEF2    EQU 0b7h
    93                              <1> LCOMDEF EQU     0b8h
    94                              <1> CEXTDEF	EQU	0bch
    95                              <1> SEGDEF32	EQU	99h
    96                              <1> LEDATA32	EQU	0a1h
    97                              <1> 
    98                              <1> WKEXT   EQU     0a8h        ; weak extern, used by PDS 7.x, COMENT class
    99                              <1> 
   100                              <1> MSLIBR  EQU     0f0h        ; MS library header record (aka MSLHED)
   101                              <1> MSLHED  EQU     0f0h        ; MS library header record (aka MSLIBR)
   102                              <1> MSEXTDICT   EQU 0f2h        ; MS extended dictionary identifier byte
   103                              <1> MSLEND  EQU     0f1h        ; MS library end record
   104                              <1> 
   105                              <1> PASS_TWO_MARK   EQU 0a2h    ; COMENT class, linker pass two marker
   106                              <1> DOSSEG_MARK EQU 9eh         ; COMENT class, DOSSEG segment ordering
   107                              <1> LIB_SEARCH_1    EQU 81h     ; COMENT class, default library search name type 1
   108                              <1> LIB_SEARCH_2    EQU 9fh     ; COMENT class, default library search name type 2
   109                              <1> 
   110                              <1> ; boundary value equates
   111                              <1> 
   112                              <1> GRPDEF_MAX  EQU 21          ; maximum number of GRPDEF records in one object module 
   113                              <1> SEGDEF_MAX  EQU 255         ; maximum number of SEGDEF records in one object module
   114                              <1> LNAMES_MAX  EQU 511         ; maximum number of logical names (lnames entries)
   115                              <1> EXTDEF_MAX  EQU 1023        ; maximum number of external definitions in one object module
   116                              <1>                             ; must be 2^n-1
   117                              <1> RELOC_MAX   EQU 32768       ; maximum number of relocation items in .exe file
   118                              <1> IDATA_BLK_MAX   EQU 512     ; maximum size of iterated data block
   119                              <1> 
   120                              <1> IO_BUFF_SIZE    EQU 16384   ; buffer size for all file i/o
   121                              <1> REC_BUFF_SIZE   EQU 4096    ; maximum length of object record
   122                              <1> OVERLAY_MAX_COUNT   EQU 4095        ; maximum number of overlays and overlaid publics
   123                              <1> OVL_MOD_PUB_MAX EQU 2047    ; maximum number of overlaid publics in one overlay
   124                              <1> 
   125                              <1> HASH_ARRAY_SIZE EQU 1024    ; size of hash pointer array (10-bit)
   126                              <1> 
   127                              <1> LIB_MAX_READ    EQU 4096    ; maximum size of file read from library module
   128                              <1> 
   129                              <1> ;*****************************
   130                              <1> ;* Block structure equates   *
   131                              <1> ;*****************************
   132                              <1> 
   133                              <1> ; object module name block equates and structure
   134                              <1> ; make all block sizes a multiple of 16 bytes for allocate memory DOS function 48h
   135                              <1> OBJ_NAMELIST_SIZE   EQU (4*128+16-4)    ; allows worst case 4 entries per block
   136                              <1> OBJ_NAMBLK_SIZE EQU (OBJ_NAMELIST_SIZE+4)/16    ; size of block in paragraphs
   137                              <1> OBJ_NAMBLK_BYSIZE   EQU OBJ_NAMBLK_SIZE*16  ; size of block in bytes
   138                              <1> 
   139                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   140                              <1> OBJ_NAMBLK_STRUC    STRUC
   141 00000000 ????                <1>     free    DW  ?           ; free name list space in block
   142 00000002 ????                <1>     objblk_ptr  DW  ?       ; segment of next block, zero if none
   143 00000004 <res 20Ch>          <1>     namelist    DB  OBJ_NAMELIST_SIZE DUP (?)   ; space for object module names
   144                              <1> OBJ_NAMBLK_STRUC    ENDS
   145                              <1> 
   146                              <1> 
   147                              <1> ; library name block equates and structure
   148                              <1> ; make all block sizes a multiple of 16 bytes for allocate memory DOS function 48h
   149                              <1> LIB_NAMELIST_SIZE   EQU (2*128+16-4)    ; allows worst case 2 entries per block
   150                              <1> LIB_NAMBLK_SIZE EQU (LIB_NAMELIST_SIZE+4)/16    ; size of block in paragraphs
   151                              <1> LIB_NAMBLK_BYSIZE   EQU LIB_NAMBLK_SIZE*16  ; size of block in bytes
   152                              <1> 
   153                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   154                              <1> LIB_NAMBLK_STRUC STRUC
   155 00000000 ????                <1>     lns_free    DW  ?       ; free name list space in block
   156 00000002 ????                <1>     lib_namblk_ptr  DW  ?   ; segment of next block, zero if none
   157 00000004 <res 10Ch>          <1>     lns_namelist    DB  LIB_NAMELIST_SIZE DUP (?)   ; space for library names
   158                              <1> LIB_NAMBLK_STRUC ENDS
   159                              <1> 
   160                              <1> 
   161                              <1> ; public declaration entry equates and structure
   162                              <1> PUB_DECLENT_SIZE    EQU 16  ; size of an entry
   163                              <1> 
   164                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   165                              <1> PUB_DECLENT_STRUC   STRUC
   166 00000000 ????                <1>     seg_partent_ptr DW  ?   ; segment pointer to segdef partition entry
   167                              <1>                             ; if weak extdef, pointer to default resolution declaration entry
   168 00000002 ????                <1>     pdes_frame_number   DW  ?   ; frame number if absolute, pointer to group entry if not and group index
   169                              <1>                                 ; high word of communal length if communal
   170                              <1>                                 ; overlaid public number, if overlaid or referenced from overlay
   171 00000004 ????                <1>     pub_nameent_ptr DW  ?   ; offset pointer to pubdef name in pubdef names block
   172                              <1>                             ; current extdef count if local communal in local block
   173 00000006 ????                <1>     pub_nameblk_ptr DW  ?   ; segment pointer to pubdef name in pubdef names block
   174                              <1>                             ; length of name string if local communal in local block
   175 00000008 ????                <1>     pub_offset      DW  ?   ; public offset
   176                              <1>                             ; low word of communal length if communal
   177                              <1>                             ;  (changed to communal offset at resolution time)
   178 0000000A ????                <1>     pub_declent_loptr   DW  ?   ; segment pointer to entry with pubdef name alphabetically lower
   179                              <1>                                 ; low word of lib_id in nonlocal communal block if local communal from library
   180                              <1>                                 ; current_obj in nonlocal communal block if local communal from object module
   181 0000000C ????                <1>     pub_declent_hiptr   DW  ?   ; segment pointer to entry with pubdef name alphabetically higher
   182                              <1>                                 ; high word of lib_id in inlocal communal block if local communal from library
   183 0000000E ??                  <1>     def_flag        DB  ?   ; ==0 if weak extdef, ==1 if extdef or comdef entry, ==2 if pubdef, ==3 if absolute public
   184                              <1>                             ; high bit (80h) set if extdef and either is or could be weak
   185                              <1>                             ; bit 6 (40h) set if used in fixup
   186 0000000F ??                  <1>     gen_flag        DB  ?   ; high bit set (80h) if group index associated with public declaration
   187                              <1>                             ; bit 6 (40h) set if communal variable
   188                              <1>                             ; bit 5 (20h) set if local communal variable
   189                              <1>                             ; bit 4 (10h) set if NEAR communal
   190                              <1>                             ; bit 3 (8) set if overlay class
   191                              <1>                             ; bit 2 (4) set if local public
   192                              <1>                             ; bit 1 (2) set if vector written to lookup table
   193                              <1>                             ; bit 0 (1) set if in overlay
   194                              <1> PUB_DECLENT_STRUC   ENDS
   195                              <1> 
   196                              <1> 
   197                              <1> ; public declaration block equates and structure
   198                              <1> PUB_DECLENT_COUNT   EQU 128 ; number of entries in pubdef declarations block
   199                              <1> PUB_DECLBLK_SIZE    EQU (4+PUB_DECLENT_COUNT*PUB_DECLENT_SIZE+12)/16    ; size of block in paragraphs
   200                              <1> 
   201                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   202                              <1> PUB_DECLBLK_STRUC   STRUC
   203 00000000 ????                <1>     entry_count DW  ?       ; count of used entries in block
   204 00000002 ????                <1>     pub_declblk_ptr DW  ?   ; segment pointer to next block
   205 00000004 <res Ch>            <1>     pdbs_filler DB  12 DUP (?)  ; unused, pads block size out to even paragraph
   206 00000010 <res 800h>          <1>     pdbs_entry  DB  PUB_DECLENT_COUNT*PUB_DECLENT_SIZE DUP (?)  ; space for pubdef declaration entries
   207                              <1> PUB_DECLBLK_STRUC   ENDS
   208                              <1> 
   209                              <1> 
   210                              <1> ; segdef entry equates and structure
   211                              <1> SEG_DEFENT_SIZE EQU 32      ; size of an entry
   212                              <1> 
   213                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   214                              <1> SEG_DEFENT_STRUC    STRUC
   215 00000000 ????                <1>     sdes_frame_number   DW  ?   ; frame number
   216 00000002 ????????            <1>     sdes_offset DD  ?       ; offset from start of program
   217 00000006 ????                <1>     seg_len DW  ?           ; segment length
   218 00000008 ????                <1>     seg_nament_ptr  DW  ?   ; offset pointer to segment name in lnames block
   219 0000000A ????                <1>     seg_namblk_ptr  DW  ?   ; segment pointer to segment name in lnames block
   220 0000000C ????                <1>     class_nament_ptr    DW  ?   ; offset pointer to class name in lnames block
   221 0000000E ????                <1>     class_namblk_ptr    DW  ?   ; segment pointer to class name in lnames block
   222 00000010 ????                <1>     sdes_grp_ent_ptr DW  ?   ; pointer to group entry
   223 00000012 ????                <1>     sdes_fill2  DW  ?       ; unused, pads entry size to 32 bytes
   224 00000014 ????                <1>     seg_defent_nextptr  DW  ?   ; segment pointer to next segment name entry with same hash code
   225 00000016 ????                <1>     seg_partent_firstptr    DW  ?   ; segment pointer to first segment partition entry
   226 00000018 ????                <1>     seg_partent_lastptr DW  ?   ; segment pointer to last segment partition entry
   227 0000001A ??                  <1>     sdes_acbp_byte   DB  ?      ; acbp byte
   228 0000001B ??                  <1>     addr_resolved_flag  DB  ?   ; nonzero if segment was resolved to an address
   229 0000001C ??                  <1>     sdes_ovl_flag   DB  ?       ; bit 0 set if overlay class
   230                              <1>                                 ; bit 1 set if length updated due to overlay vectors
   231                              <1>                                 ; bit 2 set if DDLs and overlaid segment
   232                              <1>                                 ; bit 5 set if segment has end vectors (calls to overlays)
   233                              <1>                                 ; bit 6 set if vector values written for segment
   234 0000001D ??                  <1>     sdes_filler DB  ?           ; unused, pads entry size out to 32 bytes
   235 0000001E ????                <1>     sdes_end_vect   DW  ?       ; byte count of end vectors added to segment
   236                              <1>                                 ; only used if end vectors for this segment
   237                              <1> SEG_DEFENT_STRUC    ENDS
   238                              <1> 
   239                              <1> 
   240                              <1> ; segdef block equates and structure
   241                              <1> SEG_DEFENT_COUNT    EQU 32  ; number of entries in segdef block
   242                              <1> SEG_DEFBLK_SIZE EQU (4+SEG_DEFENT_COUNT*SEG_DEFENT_SIZE+12)/16  ; size of block in paragraphs
   243                              <1> 
   244                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   245                              <1> SEG_DEFBLK_STRUC    STRUC
   246 00000000 ????                <1>     sdbs_entry_count    DW  ?   ; count of used entries in block
   247 00000002 ????                <1>     seg_defblk_ptr  DW  ?   ; segment pointer to next block
   248 00000004 <res Ch>            <1>     sdbs_filler DB  12 DUP (?)  ; unused, pads block size out to even paragraph
   249 00000010 <res 400h>          <1>     sdbs_entry  DB  SEG_DEFENT_COUNT*SEG_DEFENT_SIZE DUP (?)    ; space for segdef entries
   250                              <1> SEG_DEFBLK_STRUC    ENDS
   251                              <1> 
   252                              <1> 
   253                              <1> ; segment partition entry equates and structure
   254                              <1> SEG_PARTENT_SIZE    EQU 16  ; size of an entry
   255                              <1> 
   256                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   257                              <1> SEG_PARTENT_STRUC   STRUC
   258 00000000 ????                <1>     spes_offset DW  ?           ; offset of start from true segment base
   259                              <1>                                 ; if overlaid segment, count of segment fixups/relocation items
   260 00000002 ????                <1>     seg_partent_nextptr DW  ?   ; segment pointer to next entry
   261 00000004 ????                <1>     seg_defent_backptr  DW  ?   ; segment pointer to master segdef entry, the
   262                              <1>                                 ; owner of linked segment partition entries
   263                              <1>                                 ; for overlaid segment after 1st pass changed to overlay identifier
   264 00000006 ????????            <1>     file_mod_id DD  ?       ; id number for object module or library file+module
   265 0000000A ??                  <1>     record_index    DB  ?   ; record index, used for pass 2 segdef entry lookup
   266 0000000B ??                  <1>     spes_acbp_byte  DB  ?   ; segment partition acbp byte
   267 0000000C ????                <1>     spes_part_len   DW  ?   ; segment partition length (prior to alignment adjustment)
   268 0000000E ??                  <1>     spes_vect_low   DB  ?   ; low byte of vector count
   269 0000000F ??                  <1>     spes_ovl_flag   DB  ?   ; high bit set if segment partition is an overlay
   270                              <1>                             ; bit 6 set if vector values written for segment
   271                              <1>                             ; bit 5 set if end vectors written, calls to overlays
   272                              <1>                             ; bit 4 set if length updated from near/shared vectors
   273                              <1>                             ; bit 3 set if Clipper object module and incremental link
   274                              <1>                             ; bit 0-2 contain high byte of vector count
   275                              <1> SEG_PARTENT_STRUC   ENDS
   276                              <1> 
   277                              <1> 
   278                              <1> ; segment partition block equates and structure
   279                              <1> SEG_PARTENT_COUNT   EQU 64  ; number of entries in segment partition block
   280                              <1> SEG_PARTBLK_SIZE    EQU (4+SEG_PARTENT_COUNT*SEG_PARTENT_SIZE+12)/16    ; size of block in paragraphs
   281                              <1> 
   282                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   283                              <1> SEG_PARTBLK_STRUC   STRUC
   284 00000000 ????                <1>     spbs_entry_count    DW  ?   ; count of used entries in block
   285 00000002 ????                <1>     seg_partblk_ptr DW  ?   ; segment pointer to next block
   286 00000004 <res Ch>            <1>     spbs_filler DB  12 DUP (?)  ; unused, pads block size out to even paragraph
   287 00000010 <res 400h>          <1>     spbs_entry  DB  SEG_PARTENT_COUNT*SEG_PARTENT_SIZE DUP (?)  ; space for segdef partition entries
   288                              <1> SEG_PARTBLK_STRUC   ENDS
   289                              <1> 
   290                              <1> 
   291                              <1> ; pubdef block equates and structure
   292                              <1> ; make all block sizes a multiple of 16 bytes for allocate memory DOS function 48h
   293                              <1> PUB_NAMELIST_SIZE   EQU (20*128+16-4)   ; allow worst case of 20 entries in pubdef names block
   294                              <1> PUB_NAMBLK_SIZE EQU (PUB_NAMELIST_SIZE+4)/16    ; size of block in paragraphs
   295                              <1> 
   296                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   297                              <1> PUB_NAMBLK_STRUC    STRUC
   298 00000000 ????                <1>     pns_free    DW  ?       ; free name list space in block
   299 00000002 ????                <1>     pdnameblk_ptr   DW  ?   ; segment of next block, zero if none
   300 00000004 <res A0Ch>          <1>     pns_namelist    DB  PUB_NAMELIST_SIZE DUP (?)   ; space for pubdef names
   301                              <1> PUB_NAMBLK_STRUC    ENDS
   302                              <1> 
   303                              <1> ; lnames logical name block equates and structure
   304                              <1> ; make all block sizes a multiple of 16 bytes for allocate memory DOS function 48h
   305                              <1> ; * IMPORTANT LNAMES NAME LIST (lbs_namelist) NOTE *
   306                              <1> ;     each lnames block logical name entry consists of a low segment:offset pointer to
   307                              <1> ;     another entry or NULL, a high segment:offset pointer to another entry or NULL,
   308                              <1> ;     and a variable length name
   309                              <1> LNAMES_LIST_SIZE    EQU (10*(4+4+128)+16-4)   ; allow worst case of 10 entries in lnames logical names block
   310                              <1> LNAMES_BLK_SIZE EQU (LNAMES_LIST_SIZE+4)/16 ; size of block in paragraphs
   311                              <1> 
   312                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   313                              <1> LNAMES_BLK_STRUC    STRUC
   314 00000000 ????                <1>     lbs_free    DW  ?       ; free name list space in block
   315 00000002 ????                <1>     lnamesblk_ptr   DW  ?   ; segment of next block, zero if none
   316 00000004 <res 55Ch>          <1>     lbs_namelist    DB  LNAMES_LIST_SIZE DUP (?)    ; space for lnames logical names, including hi/lo pointers
   317                              <1> LNAMES_BLK_STRUC    ENDS
   318                              <1> 
   319                              <1> 
   320                              <1> 
   321                              <1> ; group entry equates and structure
   322                              <1> GRP_ENT_SIZE    EQU 16      ; size of an entry
   323                              <1> 
   324                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   325                              <1> GRP_ENT_STRUC   STRUC
   326 00000000 ????????            <1>     ges_offset  DD  ?           ; offset from start of program, start of group
   327 00000004 ????                <1>     ges_grp_nament_ptr  DW  ?   ; offset pointer to group name in lnames block
   328 00000006 ????                <1>     ges_grp_namblk_ptr  DW  ?   ; segment pointer to group name in lnames block
   329 00000008 ????                <1>     ges_grp_index   DW  ?       ; group index value
   330 0000000A ????????            <1>     ges_filler  DB  4 DUP (?)   ; unused, pads entry size out to 16 bytes
   331 0000000E ????                <1>     ges_flags	dw ?		; cleared in get_group_entry (mlpass1c.nas)
   332                              <1> GRP_ENT_STRUC   ENDS
   333                              <1> 
   334                              <1> 
   335                              <1> ; group block equates and structure
   336                              <1> GRP_ENT_COUNT   EQU 16      ; number of entries in group block
   337                              <1> GRP_BLK_SIZE    EQU (4+GRP_ENT_COUNT*GRP_ENT_SIZE+12)/16    ; size of block in paragraphs
   338                              <1> 
   339                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   340                              <1> GRP_BLK_STRUC   STRUC
   341 00000000 ????                <1>     gbs_entry_count DW  ?   ; count of used entries in block
   342 00000002 ????                <1>     grp_blk_ptr DW  ?       ; segment pointer to next block
   343 00000004 <res Ch>            <1>     gbs_filler  DB  12 DUP (?)  ; unused, pads block size out to even paragraph
   344 00000010 <res 100h>          <1>     gbs_entry   DB  GRP_ENT_COUNT*GRP_ENT_SIZE DUP (?)  ; space for group entries
   345                              <1> GRP_BLK_STRUC   ENDS
   346                              <1> 
   347                              <1> ; relocation entry block equates and structure
   348                              <1> ; compute REL_ITEM_COUNT so that block size is an even paragraph including the 2 system information words
   349                              <1> REL_ITEM_COUNT  EQU 16*8-1  ; number of entries in group block
   350                              <1> REL_ITEM_SIZE   EQU 4       ; each relocation item is 2 words long
   351                              <1> REL_BLK_SIZE    EQU (4+REL_ITEM_COUNT*REL_ITEM_SIZE)/16    ; size of block in paragraphs
   352                              <1> 
   353                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   354                              <1> REL_BLK_STRUC   STRUC
   355 00000000 ????                <1>     rbs_entry_count DW  ?   ; count of used entries in block
   356 00000002 ????                <1>     rel_blk_ptr DW  ?       ; segment pointer to next block
   357 00000004 <res 1FCh>          <1>     rel_items   DB  REL_ITEM_COUNT*REL_ITEM_SIZE DUP (?)    ; space for relocation items
   358                              <1> REL_BLK_STRUC   ENDS
   359                              <1> 
   360                              <1> 
   361                              <1> ; library module entry equates and structure
   362                              <1> LIB_MODENT_SIZE   EQU 2     ; size of block in paragraphs
   363                              <1> 
   364                              <1> ; REFERENCE ONLY, block structure is not used (allocations made dynamically)
   365                              <1> LIB_MODENT_STRUC STRUC
   366 00000000 ????                <1>     lms_lib_number  DW  ?   ; number of library (current_lib at time of entry creation)
   367 00000002 ????                <1>     lms_page_number DW  ?   ; number of page where library module starts
   368 00000004 ????                <1>     lms_page_size   DW  ?   ; size of library pages
   369 00000006 ????                <1>     lms_mod_len     DW  ?   ; size of library module (60K max if exceeded)
   370 00000008 ????                <1>     lms_ems_page1   DW  ?   ; first logical EMS page of library module, if used
   371 0000000A ????                <1>     lms_ems_page2   DW  ?   ; second logical EMS page of library module
   372 0000000C ????                <1>     lms_ems_page3   DW  ?   ; third logical EMS page of library module
   373 0000000E ????                <1>     lms_ems_page4   DW  ?   ; fourth logical EMS page of library module
   374 00000010 ????                <1>     lms_ems_buffptr DW  ?   ; start of buffer segment in EMS pages
   375 00000012 <res Ch>            <1>     lms_filler  DB  12 DUP (?)   ; filler to pad entry out to full two paragraphs
   376 0000001E ????                <1>     lms_modent_ptr  DW  ?   ; segment pointer to next block
   377                              <1> LIB_MODENT_STRUC ENDS
   378                              <1> 
   379                              <1> %IFNDEF JUNIOR
   380                              <1> 
   381                              <1> ; overlaid public declarations block
   382                              <1> OVLPUB_BLK_SIZE EQU 40h     ; size of block in paragraphs
   383                              <1> OVLPUB_BLK_BYSIZE   EQU 16*OVLPUB_BLK_SIZE  ; size of block in bytes
   384                              <1> 
   385                              <1> OVLPUB_BLK_STRUC    STRUC
   386 00000000 ????                <1>     obs_blk_ptr     DW  ?   ; pointer to next overlaid public block
   387                              <1> 
   388                              <1> ; repeated sub-block
   389 00000002 ??                  <1>     obs_flag1       DB  ?   ; general use flag before all segment partition and public declaration pointers
   390 00000003 ????                <1>     obs_segpart_ptr DW  ?   ; pointer to segment partition entry owning following pubdefs
   391 00000005 ????                <1>     obs_near_pubcount   DW  ?   ; count of NEAR referenced publics/total overlaid public references
   392 00000007 ????                <1>     obs_far_pubcount    DW  ?   ; count of FAR referenced publics
   393 00000009 ????                <1>     obs_vect_count      DW  ?   ; running count of vector bytes for nonoverlaid segment
   394                              <1> 
   395                              <1> ; repeated sub-sub-block
   396 0000000B ??                  <1>     obs_flag2       DB  ?   ; general use flag
   397 0000000C ????                <1>     obs_pubdecl_ptr DW  ?   ; pointer to overlaid public owned by preceding segment partition entry
   398                              <1> OVLPUB_BLK_STRUC    ENDS
   399                              <1> 
   400                              <1> ; data overlay block
   401                              <1> DATA_OVLBLK_BYSIZE  EQU 2+126*2+2   ; next block pointer, 126 word entries, word padding
   402                              <1> DATA_OVLBLK_SIZE    EQU DATA_OVLBLK_BYSIZE/16
   403                              <1> 
   404                              <1> %ENDIF
    30                                  %include "mlglobal.mac"
     1                              <1> ;*********************************************************************
     2                              <1> ;*   MLGLOBAL.INC                                                    *
     3                              <1> ;*                                                                   *
     4                              <1> ;*   By:            Michael Devore                                   *
     5                              <1> ;*   Date:          12/21/92                                         *
     6                              <1> ;*   Model:         Small                                            *
     7                              <1> ;*   Version:       2.5                                              *
     8                              <1> ;*   Assembler:     MASM 5.0                                         *
     9                              <1> ;*   Environment:   MS-DOS 2.x+                                      *
    10                              <1> ;*                                                                   *
    11                              <1> ;*   Global data public declarations                                 *
    12                              <1> ;*                                                                   *
    13                              <1> ;*********************************************************************
    14                              <1> 
    15                              <1> PUBLIC  is_args,is_comfile,is_mapfile,is_casesense,is_nodeflib
    16                              <1> PUBLIC  is_ondisk,is_msextlib,is_dosseg,is_dgroup
    17                              <1> PUBLIC  is_inlib,is_inmem,is_mapexpand,is_reload,is_stackval
    18                              <1> PUBLIC  is_maxparval,is_nowarn,is_exit0,is_beep,is_linkinfo
    19                              <1> public	is_temp_forced
    20                              <1> public	is_wllist_error_as_warning, is_wlcalc_error_as_warning
    21                              <1> public	is_stack_warning, is_stack_exit0, is_stack_nowarn
    22                              <1> public	is_wlcalc_enabled, is_wlemitalign_enabled
    23                              <1> public	is_wllist_enabled, is_wllist_preserve_enabled
    24                              <1> public	_wllist_debug_flag
    25                              <1> public	is_comseg_set, comseg_relocation_factor
    26                              <1> public	is_comzero_set, is_combig_set, is_comstack_set
    27                              <1> public	comfile_cut_length
    28                              <1> PUBLIC  is_tempfile
    29                              <1> PUBLIC	is_quick,is_sympac,is_ohp,is_oht,is_umb,ems3_flag
    30                              <1> PUBLIC  ctrlbreak,dos_version,wrap_flag,prev_flag,eof_flag
    31                              <1> PUBLIC  warn_count,stack_value,maxpar_value
    32                              <1> PUBLIC  obj_count,lib_count,seg_count,current_obj, current_lib
    33                              <1> PUBLIC  module_count,segdef_count
    34                              <1> PUBLIC  number_reloc,communal_count
    35                              <1> PUBLIC  pub_sym_count,tot_sym_count
    36                              <1> PUBLIC  highest_exe_write
    37                              <1> 
    38                              <1> ; linker overlay and language specific related values
    39                              <1> %IFNDEF JUNIOR
    40                              <1> PUBLIC  is_anyovls,is_clip5,is_min_pool
    41                              <1> PUBLIC  obj_ovl_flag
    42                              <1> PUBLIC  ovl_ox_evar
    43                              <1> PUBLIC  ovl_class,exact_ovl_class,ovl_pool,ovl_mem_alloc
    44                              <1> PUBLIC  ovl_max_load,ovl_max_load_size,ovl_stack
    45                              <1> PUBLIC  ovl_filename,ovl_nopath,ddldat_filename
    46                              <1> PUBLIC  ovl_count
    47                              <1> PUBLIC  ovl_handle
    48                              <1> PUBLIC  ovl_ioblk
    49                              <1> PUBLIC  seg_ovlclass
    50                              <1> PUBLIC  ovlpub_array,ovl_reloc_array,lookup_tbl_array,ind_tbl_array
    51                              <1> PUBLIC  first_ovlpubblk_ptr,alloc_ovlpubblk_ptr
    52                              <1> PUBLIC  ovl_pubcount
    53                              <1> PUBLIC  lookup_tbl_segdef
    54                              <1> PUBLIC  ind_tbl_segdef
    55                              <1> PUBLIC  segcall_tbl_segdef
    56                              <1> PUBLIC  largest_ovl
    57                              <1> PUBLIC  second_ovl
    58                              <1> PUBLIC  ovl_code_id
    59                              <1> PUBLIC  ovl_data_id
    60                              <1> PUBLIC  data_ovlblk_ptr
    61                              <1> PUBLIC  nonovl_rvect
    62                              <1> PUBLIC  inc_padval,is_clpinc,is_smartmem,is_xms
    63                              <1> PUBLIC  is_clarion,is_internal,is_no_ems,is_ems_ovlpool
    64                              <1> PUBLIC  inc_seg_clcode
    65                              <1> PUBLIC  _dt_seg_size,_dat_seg_size
    66                              <1> PUBLIC  _dt_seg_index,_dat_seg_index
    67                              <1> PUBLIC  ems_handle,ems_base,ems_pagecount
    68                              <1> PUBLIC  ems_currmap,ems_page_avail
    69                              <1> PUBLIC  tmp_in_emsxms,tmp_in_xms
    70                              <1> PUBLIC  xms_addr
    71                              <1> PUBLIC  is_ddl,use_ddl,any_ddl
    72                              <1> PUBLIC  is_xtstash,is_xpstash
    73                              <1> PUBLIC  udl_proc_pass
    74                              <1> PUBLIC	ovl_ohp_size,ovl_oht_size
    75                              <1> PUBLIC	ovl_ohp_alloc,ovl_oht_alloc
    76                              <1> %ENDIF
    77                              <1> 
    78                              <1> PUBLIC  first_objblk_ptr,last_objblk_ptr,first_libblk_ptr,last_libblk_ptr
    79                              <1> PUBLIC  first_pdeclblk_ptr,first_cdeclblk_ptr
    80                              <1> PUBLIC  alloc_pdeclblk_ptr,alloc_cdeclblk_ptr
    81                              <1> PUBLIC  alloc_pdnameblk_ptr,alloc_lnamesblk_ptr
    82                              <1> PUBLIC  first_segdefblk_ptr,alloc_segdefblk_ptr
    83                              <1> PUBLIC  first_segpartblk_ptr,alloc_segpartblk_ptr
    84                              <1> PUBLIC  first_grpblk_ptr,alloc_grpblk_ptr
    85                              <1> PUBLIC  first_relblk_ptr,alloc_relblk_ptr
    86                              <1> PUBLIC  first_libent_ptr,alloc_libent_ptr
    87                              <1> ;***PUBLIC  first_local_ptr
    88                              <1> PUBLIC  first_fixblk_ptr,alloc_fixblk_ptr
    89                              <1> PUBLIC  first_binblk_ptr,alloc_binblk_ptr
    90                              <1> PUBLIC  psp
    91                              <1> PUBLIC  _edata_pubaddr,_end_pubaddr,_edata_segaddr,_end_segaddr
    92                              <1> PUBLIC  image_handle,image_mem_ptr,map_handle
    93                              <1> PUBLIC  memory_blk_base,memory_blk_size,memory_blk_end
    94                              <1> PUBLIC  allocation_base,allocation_top
    95                              <1> PUBLIC  buffer_base,buffer_end,buffer_head,buffer_tail,buffer_size
    96                              <1> PUBLIC  read_buff_ptr,prev_read_ptr,prev_rec_len
    97                              <1> PUBLIC  current_lnames,current_extdef,current_segdef,current_grpdef
    98                              <1> PUBLIC  eof_pos,data_fixup_count
    99                              <1> PUBLIC  stack_segval,stack_offval
   100                              <1> PUBLIC  entry_segval,entry_offval
   101                              <1> 
   102                              <1> PUBLIC  file_pos_adj,prev_pos_adj,lib_pos_adj
   103                              <1> PUBLIC  image_size,lib_id
   104                              <1> 
   105                              <1> PUBLIC  cmd_line,prev_libname,tmod_name,exe_name,map_name,ovl_class_name
   106                              <1> PUBLIC  pubdecl_hash,segdef_hash
   107                              <1> PUBLIC  zero_table
   108                              <1> PUBLIC  lnames_hash
   109                              <1> PUBLIC  frame_thrd_meth,target_thrd_meth
   110                              <1> PUBLIC  seg_partent_indptr,seg_defent_indptr
   111                              <1> PUBLIC  grp_ent_indptr,ext_defent_indptr
   112                              <1> PUBLIC  env_opt_storage,lib_page_storage,data_fixup_flag
   113                              <1> PUBLIC  frame_thrd_index,target_thrd_index
   114                              <1> PUBLIC  lnames_ent_indptr,ddl_symbol_lookup,ddl_hold_buff
   115                              <1> PUBLIC  master_segblk
   116                              <1> PUBLIC  ovl_filepos_blk
   117                              <1> public	_wllist_temp_handle, _wllist_temp_file_name
   118                              <1> public	_wllist_obj_handle, _wllist_obj_file_name
   119                              <1> 
   120                              <1> ;*****************************
   121                              <1> ;   Initialized data         *
   122                              <1> ;*****************************
   123                              <1> 
   124                              <1> .DATA
   125                              <1> 
   126                              <1> ; linker defaults, byte values
   127                              <1> EVEN                        ; maximize speed on 8086 and better
   128 00000000 00                  <1> is_args         DB  0       ; nonzero if arguments passed to linker
   129 00000001 00                  <1> EVEN
   130 00000002 00                  <1> is_comfile      DB  0       ; nonzero if .COM file creation indicated
   131 00000003 00                  <1> EVEN
   132 00000004 00                  <1> is_mapfile      DB  0       ; nonzero if .MAP file creation indicated
   133 00000005 00                  <1> EVEN
   134 00000006 00                  <1> is_mapexpand    DB  0       ; nonzero if expanded .MAP file indicated
   135 00000007 00                  <1> EVEN
   136 00000008 00                  <1> is_casesense    DB  0       ; nonzero if symbol names are case sensitive
   137 00000009 00                  <1> EVEN
   138 0000000A 00                  <1> is_ondisk       DB  0       ; nonzero if program image in temporary disk file
   139 0000000B 00                  <1> EVEN
   140 0000000C 00                  <1> is_inmem        DB  0       ; nonzero if program image is in memory
   141 0000000D 00                  <1> EVEN
   142 0000000E 00                  <1> is_msextlib     DB  0       ; nonzero if use extended ms lib format
   143 0000000F 00                  <1> EVEN
   144 00000010 00                  <1> is_nodeflib     DB  0       ; nonzero if no default libraries
   145 00000011 00                  <1> EVEN
   146 00000012 00                  <1> is_dosseg       DB  0       ; nonzero if DOSSEG segment ordering specified
   147 00000013 00                  <1> EVEN
   148 00000014 00                  <1> is_stackval     DB  0       ; nonzero if stack size set by /st option
   149 00000015 00                  <1> EVEN
   150 00000016 00                  <1> wrap_flag       DB  0       ; nonzero if read from file buffer wraps to beginning of buffer
   151 00000017 00                  <1> EVEN
   152 00000018 00                  <1> prev_flag       DB  0       ; nonzero if keeping previously read record (pass 2 L?DATA record prior to fixup)
   153 00000019 00                  <1> EVEN
   154 0000001A 00                  <1> eof_flag        DB  0       ; nonzero if end of file was encountered loading file buffer
   155 0000001B 00                  <1> EVEN
   156 0000001C 00                  <1> is_dgroup       DB  0       ; nonzero if DGROUP group encountered
   157 0000001D 00                  <1> EVEN
   158 0000001E 00                  <1> is_inlib        DB  0       ; nonzero if currently processing LIB file
   159 0000001F 00                  <1> EVEN
   160 00000020 00                  <1> is_anyovls      DB  0       ; nonzero if any overlaid modules were specified
   161 00000021 00                  <1> EVEN
   162 00000022 00                  <1> is_reload       DB  0       ; nonzero if reload active but swapped out overlays
   163 00000023 00                  <1> EVEN
   164 00000024 00                  <1> is_maxparval    DB  0       ; maximum paragraph allocation specified
   165 00000025 00                  <1> EVEN
   166 00000026 00                  <1> is_nowarn       DB  0       ; nonzero if warnings disabled
   167 00000027 00                  <1> EVEN
   168 00000028 00                  <1> is_exit0        DB  0       ; nonzero if warnings generate exit code of 0
   169 00000029 00                  <1> EVEN
   170 0000002A 00                  <1> is_wllist_error_as_warning:	db 0
   171 0000002B 00                  <1> EVEN
   172 0000002C 00                  <1> is_wlcalc_error_as_warning:	db 0
   173 0000002D 00                  <1> EVEN
   174 0000002E 00                  <1> is_temp_forced:		db 0
   175 0000002F 00                  <1> EVEN
   176 00000030 00                  <1> is_stack_warning:	db 0
   177 00000031 00                  <1> EVEN
   178 00000032 00                  <1> is_stack_exit0:		db 0
   179 00000033 00                  <1> EVEN
   180 00000034 00                  <1> is_stack_nowarn:	db 0
   181 00000035 00                  <1> EVEN
   182 00000036 00                  <1> is_wlcalc_enabled:	db 0
   183 00000037 00                  <1> EVEN
   184 00000038 00                  <1> is_wlemitalign_enabled:	db 0
   185 00000039 00                  <1> EVEN
   186 0000003A 00                  <1> is_wllist_enabled:	db 0
   187 0000003B 00                  <1> EVEN
   188 0000003C 00                  <1> is_wllist_preserve_enabled:	db 0
   189 0000003D 00                  <1> EVEN
   190 0000003E 00                  <1> _wllist_debug_flag:	db 0
   191 0000003F 00                  <1> EVEN
   192 00000040 00                  <1> is_comseg_set:		db 0
   193 00000041 00                  <1> EVEN
   194 00000042 00                  <1> is_comzero_set:		db 0
   195 00000043 00                  <1> EVEN
   196 00000044 00                  <1> is_combig_set:		db 0
   197 00000045 00                  <1> EVEN
   198 00000046 00                  <1> is_comstack_set:	db 0
   199 00000047 00                  <1> EVEN
   200 00000048 0001                <1> comfile_cut_length:	dw 256
   201                              <1> EVEN
   202 0000004A 00                  <1> is_beep         DB  0       ; nonzero if beep on exit
   203 0000004B 00                  <1> EVEN
   204 0000004C 00                  <1> is_linkinfo     DB  0       ; nonzero if print linker info
   205 0000004D 00                  <1> EVEN
   206 0000004E 00                  <1> is_tempfile     DB  0       ; nonzero if temporary file name specified
   207 0000004F 00                  <1> EVEN
   208 00000050 01                  <1> is_no_ems       DB  1       ; default is set, nonzero if don't use available EMS during link
   209 00000051 00                  <1> EVEN
   210 00000052 00                  <1> is_ems_ovlpool  DB  0       ; nonzero if EMS used for overlay pool
   211 00000053 00                  <1> EVEN
   212 00000054 00                  <1> is_internal     DB  0       ; nonzero if internal overlays specified
   213 00000055 00                  <1> EVEN
   214 00000056 00                  <1> is_clarion      DB  0       ; clarion overlays specified
   215 00000057 00                  <1> EVEN
   216 00000058 00                  <1> is_smartmem     DB  0       ; nonzero if using SMARTMEM.XXX functions
   217 00000059 00                  <1> EVEN
   218 0000005A 00                  <1> is_clpinc       DB  0       ; nonzero if Clipper incremental link
   219 0000005B 00                  <1> EVEN
   220 0000005C 30                  <1> inc_padval      DB  48      ; pad value to add to segments for incremental link
   221 0000005D 00                  <1> EVEN
   222 0000005E 00                  <1> is_clip5        DB  0       ; zero if Clipper 5 overlays specified
   223 0000005F 00                  <1> EVEN
   224 00000060 00                  <1> tmp_in_emsxms   DB  0       ; nonzero if temporary file image is in EMS/XMS
   225 00000061 00                  <1> EVEN
   226 00000062 00                  <1> tmp_in_xms      DB  0       ; nonzero if temporary file image in XMS only
   227 00000063 00                  <1> EVEN
   228 00000064 00                  <1> is_xms          DB  0       ; nonzero if XMS present and available
   229 00000065 00                  <1> EVEN
   230 00000066 00                  <1> is_min_pool     DB  0       ; nonzero if minimum pool specified through op:m option
   231 00000067 00                  <1> EVEN
   232 00000068 00                  <1> is_ddl          DB  0       ; nonzero if creating DDL
   233 00000069 00                  <1> EVEN
   234 0000006A 00                  <1> use_ddl         DB  0       ; nonzero if using DDL(s)
   235 0000006B 00                  <1> EVEN
   236 0000006C 00                  <1> any_ddl         DB  0       ; nonzero if creating OR using DDL(s)
   237 0000006D 00                  <1> EVEN
   238 0000006E 00                  <1> is_xtstash      DB  0       ; nonzero if stashing swapped overlays in extended memory (/ort)
   239 0000006F 00                  <1> EVEN
   240 00000070 00                  <1> is_xpstash      DB  0       ; nonzero if stashing swapped overlays in EMS 4.0 (/orp)
   241 00000071 00                  <1> EVEN
   242 00000072 00                  <1> is_quick		DB	0		; nonzero if QuickLinker option set (/ql)
   243 00000073 00                  <1> EVEN
   244 00000074 00                  <1> is_sympac		DB	0		; nonzero if automatic symbol table compaction for Clipper
   245 00000075 00                  <1> EVEN
   246 00000076 00                  <1> is_ohp			DB	0		; nonzero if ohp option used
   247 00000077 00                  <1> EVEN
   248 00000078 00                  <1> is_oht			DB	0		; nonzero if oht option used
   249 00000079 00                  <1> EVEN
   250 0000007A 00                  <1> is_umb			DB	0		; nonzero if UMB overlay option (/ou) used
   251 0000007B 00                  <1> EVEN
   252 0000007C 00                  <1> ems3_flag		DB	0		; nonzero if explicit EMS 3.0 compatibility specified for /ohp
   253                              <1> 
   254                              <1> ; linker defaults, word values
   255 0000007D 00                  <1> EVEN
   256 0000007E 0000                <1> stack_value DW  0           ; stack size set by /st option
   257 00000080 0000                <1> maxpar_value    DW  0       ; maximum paragraph allocation set by /pa option
   258 00000082 0000                <1> warn_count  DW  0           ; count of warning messages
   259 00000084 0000                <1> obj_count   DW  0           ; count of object modules
   260 00000086 0000                <1> lib_count   DW  0           ; count of libraries
   261 00000088 0000                <1> module_count    DW  0       ; count of all modules linked, object and library
   262 0000008A 0000                <1> seg_count   DW  0           ; count of all discrete (after combined) segments in all object modules
   263 0000008C 0000                <1> segdef_count    DW  0       ; count of all different segments
   264 0000008E 0000                <1> current_obj DW  0           ; current object module
   265 00000090 0000                <1> current_lib DW  0           ; current library
   266 00000092 0000                <1> number_reloc    DW  0       ; number of relocation items in .EXE header
   267 00000094 0000                <1> communal_count  DW  0       ; count of communal variables
   268 00000096 0000                <1> stack_segval    DW  0       ; program's initial stack segment (SS) value
   269 00000098 0000                <1> stack_offval    DW  0       ; program's initial stack pointer (SP) value
   270 0000009A 0000                <1> entry_segval    DW  0       ; program's initial code segment (CS) value
   271 0000009C 0000                <1> entry_offval    DW  0       ; program's initial instruction pointer (IP) value
   272                              <1> 
   273                              <1> ; linker defaults, doubleword values
   274 0000009E 00000000            <1> pub_sym_count   DD  0       ; count of all public symbols
   275 000000A2 00000000            <1> tot_sym_count   DD  0       ; count of all symbols
   276 000000A6 00000000            <1> highest_exe_write   DD  0   ; value of highest write for beginning of program
   277 000000AA FFFF                <1> _wllist_temp_handle:	dw -1
   278 000000AC FFFF                <1> _wllist_obj_handle:	dw -1
   279                              <1> 
   280                              <1> ; linker defaults, overlay related values
   281                              <1> %IFNDEF JUNIOR
   282 000000AE 000000000000000000- <1> ovl_ox_evar DB  32 DUP (0)  ; /ox environment variable setting
   282 000000B7 000000000000000000- <1>
   282 000000C0 000000000000000000- <1>
   282 000000C9 0000000000          <1>
   283 000000CE 434F44450000000000- <1> ovl_class   DB  'CODE',0,123 DUP (0)    ; overlay class name
   283 000000D7 000000000000000000- <1>
   283 000000E0 000000000000000000- <1>
   283 000000E9 000000000000000000- <1>
   283 000000F2 000000000000000000- <1>
   283 000000FB 000000000000000000- <1>
   283 00000104 000000000000000000- <1>
   283 0000010D 000000000000000000- <1>
   283 00000116 000000000000000000- <1>
   283 0000011F 000000000000000000- <1>
   283 00000128 000000000000000000- <1>
   283 00000131 000000000000000000- <1>
   283 0000013A 000000000000000000- <1>
   283 00000143 000000000000000000- <1>
   283 0000014C 0000                <1>
   284 0000014E 00                  <1> exact_ovl_class DB  0       ; nonzero if exact overlay class
   285 0000014F 00                  <1> EVEN
   286 00000150 00400200            <1> ovl_pool    DD  147456      ; overlay pool size, user set maximum 512K
   287 00000154 0002                <1> ovl_ohp_size	DW	512		; overlay expanded file stash amount in K
   288 00000156 0000                <1> ovl_oht_size	DW	0		; overlay extended file stash amount in K
   289 00000158 00                  <1> ovl_mem_alloc   DB  0       ; zero if overlay pool is free memory, nonzero if allocated memory
   290 00000159 00                  <1> udl_proc_pass   DB  0       ; 0 if not creating a LIB'ed UDL, 1 if first pass, 2 if second
   291 0000015A 00                  <1> ovl_ohp_alloc	DB	0		; zero if overlay stash amount in expanded is free, nonzero if allocated
   292 0000015B 00                  <1> ovl_oht_alloc	DB	0		; zero if overlay stash amount in extended is free, nonzero if allocated
   293                              <1> EVEN
   294 0000015C 6000                <1> ovl_max_load    DW  96     	; maximum number of loaded overlays, user set maximum 512
   295 0000015E 0006                <1> ovl_max_load_size   DW  96*16	; size of array for loaded overlay (ovl_max_load*16)
   296 00000160 0008                <1> ovl_stack   DW  2048        ; overlay stack size, user set maximum 63K
   297 00000162 0000                <1> ovl_count   DW  0           ; count of overlays
   298 00000164 0000                <1> ovl_pubcount    DW  0       ; count of overlaid publics
   299                              <1> ddldat_filename LABEL   BYTE    ; name of DAT file for DDL file to read
   299                              <2> ddldat_filename :
   300 00000166 000000000000000000- <1> ovl_filename    DB  128 DUP (0) ; name of overlay file, including .OVL extension and path
   300 0000016F 000000000000000000- <1>
   300 00000178 000000000000000000- <1>
   300 00000181 000000000000000000- <1>
   300 0000018A 000000000000000000- <1>
   300 00000193 000000000000000000- <1>
   300 0000019C 000000000000000000- <1>
   300 000001A5 000000000000000000- <1>
   300 000001AE 000000000000000000- <1>
   300 000001B7 000000000000000000- <1>
   300 000001C0 000000000000000000- <1>
   300 000001C9 000000000000000000- <1>
   300 000001D2 000000000000000000- <1>
   300 000001DB 000000000000000000- <1>
   300 000001E4 0000                <1>
   301 000001E6 000000000000000000- <1> ovl_nopath  DB  128 DUP (0) ; name of overlay file WITHOUT prepended path (if any)
   301 000001EF 000000000000000000- <1>
   301 000001F8 000000000000000000- <1>
   301 00000201 000000000000000000- <1>
   301 0000020A 000000000000000000- <1>
   301 00000213 000000000000000000- <1>
   301 0000021C 000000000000000000- <1>
   301 00000225 000000000000000000- <1>
   301 0000022E 000000000000000000- <1>
   301 00000237 000000000000000000- <1>
   301 00000240 000000000000000000- <1>
   301 00000249 000000000000000000- <1>
   301 00000252 000000000000000000- <1>
   301 0000025B 000000000000000000- <1>
   301 00000264 0000                <1>
   302 00000266 0000                <1> first_ovlpubblk_ptr DW  0   ; segment of first overlaid public declarations block
   303 00000268 0000                <1> alloc_ovlpubblk_ptr DW  0   ; segment of last allocated overlaid public declarations block
   304 0000026A 0000                <1> largest_ovl DW  0           ; size of largest overlay
   305 0000026C 0000                <1> second_ovl  DW  0           ; size of second largest overlay
   306 0000026E 0000                <1> ovl_code_id DW  0           ; overlay code segment identifier, for writing L?DATA segments
   307 00000270 0000                <1> ovl_data_id DW  0           ; overlay data segment identifier, for writing Clarion _DT and _DAT LEDATA segments
   308 00000272 0000                <1> ovl_handle  DW  0           ; handle of .OVL overlay file
   309 00000274 0000                <1> data_ovlblk_ptr DW  0       ; segment of first data overlay block
   310 00000276 0000                <1> ems_handle  DW  0           ; handle of EMS blocks used by WarpLink
   311 00000278 FFFFFFFFFFFFFFFF    <1> ems_currmap DW  4 DUP (-1)  ; current logical page mapping of EMS physical pages
   312                              <1> %ENDIF
   313                              <1> 
   314                              <1> ; zero initialized segment word pointers to various control blocks
   315                              <1> 
   316 00000280 0000                <1> first_objblk_ptr    DW  0   ; segment of first object module name block
   317 00000282 0000                <1> last_objblk_ptr     DW  0   ; segment of last object module name block
   318 00000284 0000                <1> first_libblk_ptr    DW  0   ; segment of first library block
   319 00000286 0000                <1> last_libblk_ptr     DW  0   ; segment of last library block
   320 00000288 0000                <1> first_pdeclblk_ptr  DW  0   ; segment of first allocated pubdef declaration block
   321 0000028A 0000                <1> first_cdeclblk_ptr  DW  0   ; segment of first allocated comdef declaration block
   322 0000028C 0000                <1> alloc_pdeclblk_ptr  DW  0   ; segment of last allocated pubdef declaration block
   323 0000028E 0000                <1> alloc_cdeclblk_ptr  DW  0   ; segment of last allocated comdef declaration block
   324 00000290 0000                <1> alloc_pdnameblk_ptr DW  0   ; segment of last allocated pubdef names block
   325 00000292 0000                <1> alloc_lnamesblk_ptr DW  0   ; segment of last allocated lnames logical names block
   326 00000294 0000                <1> first_segdefblk_ptr DW  0   ; segment of first allocated segdef block
   327 00000296 0000                <1> alloc_segdefblk_ptr DW  0   ; segment of last allocated segdef block
   328 00000298 0000                <1> first_grpblk_ptr    DW  0   ; segment of first allocated group block
   329 0000029A 0000                <1> alloc_grpblk_ptr    DW  0   ; segment of last allocated group block
   330 0000029C 0000                <1> first_segpartblk_ptr    DW  0   ; segment of first allocated segment partition block
   331 0000029E 0000                <1> alloc_segpartblk_ptr    DW  0   ; segment of last allocated segment partition block
   332 000002A0 0000                <1> first_relblk_ptr    DW  0   ; pointer to first allocated relocation table block
   333 000002A2 0000                <1> alloc_relblk_ptr    DW  0   ; pointer to last allocated relocation table block
   334 000002A4 0000                <1> first_libent_ptr    DW  0   ; pointer to first allocated library module entry
   335 000002A6 0000                <1> alloc_libent_ptr    DW  0   ; pointer to last allocated library module entry
   336                              <1> ;***first_local_ptr     DW  0   ; pointer to first allocated local declaration
   337 000002A8 0000                <1> first_fixblk_ptr    DW  0   ; pointer to first allocated fixup block (for DDL)
   338 000002AA 0000                <1> alloc_fixblk_ptr    DW  0   ; pointer to last allocated fixup block (for DDL)
   339 000002AC 0000                <1> first_binblk_ptr    DW  0   ; pointer to first allocated binary block (for DDL)
   340 000002AE 0000                <1> alloc_binblk_ptr    DW  0   ; pointer to last allocated binary block (for DDL)
   341                              <1> ; used only if DOSSEG switch set
   342 000002B0 0000                <1> _edata_pubaddr  DW  0       ; address of public declaration entry of _edata
   343 000002B2 0000                <1> _end_pubaddr    DW  0       ; address of public declaration entry of _end
   344 000002B4 0000                <1> _edata_segaddr  DW  0       ; address of BSS segment's segdef entry that _edata points to
   345 000002B6 0000                <1> _end_segaddr    DW  0       ; address of STACK segment's segdef entry that _end points to
   346                              <1> 
   347                              <1> ;*****************************
   348                              <1> ;   Uninitialized data       *
   349                              <1> ;*****************************
   350                              <1> 
   351                              <1> .DATA?
   352                              <1> 
   353                              <1> EVEN
   354                              <1>  global to_zero_initialise, to_zero_initialise_length_words
   355                              <1> to_zero_initialise:
   356 00000000 <res 80h>           <1> exe_name    DB  128 DUP (?) ; executable file name, including any path
   357                              <1> EVEN
   358 00000080 <res 80h>           <1> map_name    DB  128 DUP (?) ; map file name, including any path
   359                              <1> EVEN
   360 00000100 ????                <1> 	dw ?			; used as a flag
   361 00000102 <res 80h>           <1> _wllist_temp_file_name:	resb 128
   362                              <1> EVEN
   363 00000182 ????                <1> 	dw ?			; used as a flag
   364 00000184 <res 80h>           <1> _wllist_obj_file_name:	resb 128
   365                              <1> 
   366                              <1> EVEN
   367                              <1> ; word arrays
   368 00000204 <res 800h>          <1> pubdecl_hash    DW  HASH_ARRAY_SIZE DUP (?) ; hashed pointers to public declaration entries
   369 00000A04 <res 800h>          <1> segdef_hash     DW  HASH_ARRAY_SIZE DUP (?) ; hashed pointers to segdef entries
   370 00001204 <res 200h>          <1> zero_table  DW  256 DUP (?) ; table of 512-byte page of zeros
   371                              <1> 
   372                              <1> ; doubleword arrays
   373 00001404 <res 1000h>         <1> lnames_hash     DD  HASH_ARRAY_SIZE DUP (?) ; hashed pointers to lnames logical name entries
   374                              <1> 
   375                              <1> EVEN
   376 00002404 ????                <1> data_fixup_count:	dw ?	; count of elements in data_fixup_flag array
   377                              <1> 	; ecm: if proc2_fixupp is never called, then its init
   378                              <1> 	;	of this variable doesn't happen. therefore put
   379                              <1> 	;	the variable into the part to zero-initialise.
   380                              <1> 
   381                              <1> EVEN
   382                              <1> to_zero_initialise_length_words equ ($ - to_zero_initialise + 1) / 2
   383                              <1> 
   384                              <1> ; byte values
   385                              <1> EVEN                        ; maximize speed on 8086 and better
   386 00002406 ??                  <1> ctrlbreak   DB  ?           ; status of Ctrl-Break checking
   387 00002407 ??                  <1> EVEN
   388 00002408 ??                  <1> dos_version DB  ?           ; major version number of DOS
   389 00002409 ??                  <1> EVEN
   390 0000240A ??                  <1> obj_ovl_flag    DB  ?       ; nonzero if object module is in an overlay
   391                              <1> 
   392                              <1> %IFNDEF JUNIOR
   393 0000240B ??                  <1> EVEN
   394 0000240C ??                  <1>     seg_ovlclass    DB  ?   ; nonzero if at least one segment in module is overlay class
   395 0000240D ??                  <1> EVEN
   396 0000240E ??                  <1>     nonovl_rvect    DB  ?   ; nonzero if module is overlaid but overlay->root calls aren't vectored
   397 0000240F ??                  <1> EVEN
   398 00002410 ????                <1>     ovl_ioblk   DW  ?       ; segment of 4K .OVL i/o block
   399 00002412 ????                <1>     lookup_tbl_segdef   DW  ?   ; segdef entry of lookup table segment
   400 00002414 ????                <1>     ind_tbl_segdef   DW  ?  ; segdef entry of indirect call table segment
   401 00002416 ????                <1>     segcall_tbl_segdef  DW  ?   ; segdef entry of segment call segment
   402 00002418 ????                <1>     _dt_seg_size    DW  ?   ;  size of current Clarion _DT segment
   403 0000241A ????                <1>     _dat_seg_size   DW  ?   ;  size of current Clarion _DAT segment
   404 0000241C ????                <1>     _dt_seg_index   DW  ?       ; segment index of clarion _DT segment
   405 0000241E ????                <1>     _dat_seg_index  DW  ?       ; segment index of clarion _DAT segment
   406 00002420 ????                <1>     ems_base    DW  ?       ; base of EMS page
   407 00002422 ????                <1>     ems_pagecount   DW  ?   ; count of WarpLink allocated EMS pages
   408 00002424 ????                <1>     ems_page_avail  DW  ?   ; EMS pages available for WarpLink use after i/o buffer
   409 00002426 ????????            <1>     xms_addr    DD  ?       ; XMS entry point address
   410                              <1> %ENDIF
   411                              <1> 
   412                              <1> EVEN                        ; maximize speed on 8086 and better
   413                              <1> ; word values
   414 0000242A ????                <1> psp DW  ?                   ; machlink's PSP value
   415 0000242C ????                <1> image_handle    DW  ?       ; handle of temporary file containing program's memory image
   416 0000242E ????                <1> image_mem_ptr   DW  ?       ; segment pointer to program's image in memory
   417 00002430 ????                <1> map_handle      DW  ?       ; handle of map file
   418 00002432 ????                <1> memory_blk_base DW  ?       ; segment of memory block allocated thru DOS function 48h
   419 00002434 ????                <1> memory_blk_size DW  ?       ; size of allocated memory block in paragraphs
   420 00002436 ????                <1> memory_blk_end  DW  ?       ; end of memory block (first segment value past end)
   421 00002438 ????                <1> allocation_base DW  ?       ; first available segment for block allocations
   422 0000243A ????                <1> allocation_top  DW  ?       ; last+1 available segment for block allocations
   423 0000243C ????                <1> buffer_base     DW  ?       ; base of buffer for file i/o (segment)
   424 0000243E ????                <1> buffer_end      DW  ?       ; end of buffer in memory (offset)
   425 00002440 ????                <1> buffer_head     DW  ?       ; address to begin load in buffer (offset)
   426 00002442 ????                <1> buffer_tail     DW  ?       ; address to end load in buffer (offset)
   427 00002444 ????                <1> buffer_size     DW  ?       ; size of buffer for file i/o in paragraphs
   428 00002446 ????                <1> read_buff_ptr   DW  ?       ; file i/o buffer read offset (curr_buff_ptr before update)
   429 00002448 ????                <1> prev_read_ptr   DW  ?       ; file i/o buffer read offset for previous object record
   430 0000244A ????                <1> prev_rec_len    DW  ?       ; length of previous (L?DATA) record
   431 0000244C ????                <1> current_lnames  DW  ?       ; number of current LNAMES record
   432 0000244E ????                <1> current_extdef  DW  ?       ; number of current EXTDEF record
   433 00002450 ????                <1> current_segdef  DW  ?       ; number of current SEGDEF record
   434 00002452 ????                <1> current_grpdef  DW  ?       ; number of current GRPDEF record
   435 00002454 ????                <1> eof_pos     DW  ?           ; offset position of end of file in i/o buffer
   436 00002456 ????                <1> master_segblk   DW  ?       ; address of block holding master segdef pointers for overlaid segparts
   437 00002458 ????                <1> ovl_filepos_blk DW  ?       ; segment of block holding dword file positions of overlays
   438 0000245A ????                <1> comseg_relocation_factor:	dw ?
   439                              <1> 
   440                              <1> ; double word values
   441 0000245C ????????            <1> file_pos_adj    DD  ?       ; file bytes adjustment from wrapped buffer to get true offset of file
   442 00002460 ????????            <1> prev_pos_adj    DD  ?       ; adjustment value for previous record pointer
   443 00002464 ????????            <1> lib_pos_adj     DD  ?       ; adjustment for library files, to compute offset from module start
   444 00002468 ????????            <1> image_size      DD  ?       ; program's executable image size
   445 0000246C ????????            <1> lib_id          DD  ?       ; library identification number (((current_lib|0x8000)*65536L)+lib_module)
   446                              <1> 
   447                              <1> ; character or byte strings
   448                              <1> EVEN
   449 00002470 <res 80h>           <1> cmd_line        DB  128 DUP (?) ; command line from PSP
   450                              <1> EVEN
   451                              <1> prev_libname    LABEL   BYTE    ; name of library holding last processed module, shared with tmod_name
   451                              <2> prev_libname :
   452 000024F0 <res 80h>           <1> tmod_name       DB  128 DUP (?) ; name from T-module name field of THEADR record
   453                              <1> EVEN
   454 00002570 <res 20h>           <1> ovl_class_name  DB  32 DUP (?)  ; overlay class name
   455                              <1> 
   456                              <1> ; byte arrays
   457                              <1> EVEN
   458 00002590 ????????            <1> frame_thrd_meth     DB  4 DUP (?)   ; frame fixup thread method
   459                              <1> EVEN
   460 00002594 ????????            <1> target_thrd_meth    DB  4 DUP (?)   ; target fixup thread method
   461                              <1> 
   462                              <1> ; word arrays
   463                              <1> EVEN
   464                              <1> seg_partent_indptr  LABEL   WORD    ; seg_partent_indptr and seg_defent_indptr share same memory space
   464                              <2> seg_partent_indptr :
   465 00002598 <res 1FEh>          <1> seg_defent_indptr   DW  SEGDEF_MAX DUP (?)  ; indexed segment pointers to segdef entries of last read segdef record
   466 00002796 <res 2Ah>           <1> grp_ent_indptr      DW  GRPDEF_MAX DUP (?)  ; indexed segment pointers to grpdef entries of last read grpdef record
   467                              <1> %IFNDEF JUNIOR
   468                              <1> inc_seg_clcode      LABEL   BYTE    ; shared memory space with ext_defent_indptr, used by incremental link
   468                              <2> inc_seg_clcode :
   469                              <1> %ENDIF
   470 000027C0 <res 7FEh>          <1> ext_defent_indptr   DW  EXTDEF_MAX DUP (?)  ; indexed segment pointers to pubdef declaration entries of extdefs in object module
   471                              <1> 
   472                              <1> %IFNDEF JUNIOR
   473                              <1> ind_tbl_array       LABEL   WORD    ; share memory space with lookup_tbl_array, used after lookup_tbl_array
   473                              <2> ind_tbl_array :
   474                              <1> lookup_tbl_array    LABEL   WORD    ; share memory space with ovl_reloc_array and ovlpub_array, used between pass 1 and 2
   474                              <2> lookup_tbl_array :
   475                              <1> ovl_reloc_array     LABEL   WORD    ; share memory space with ovlpub_array, used in pass 2
   475                              <2> ovl_reloc_array :
   476 00002FBE <res 800h>          <1> ovlpub_array        DW  EXTDEF_MAX+1 DUP (?)    ; index byte of overlaid public declaration entries, use in pass 1
   477                              <1>                                                 ; bit 15 set if far called, bit 14 if near
   478                              <1> %ENDIF
   479                              <1> 
   480                              <1> env_opt_storage     LABEL   BYTE    ; shared, used prior to pass one
   480                              <2> env_opt_storage :
   481                              <1> lib_page_storage    LABEL   WORD    ; shared memory space with data_fixup_flag,used in pass 1
   481                              <2> lib_page_storage :
   482                              <1> ddl_hold_buff       LABEL   WORD    ; used by ddl's to hold pub/com/extdef's prior to file write
   482                              <2> ddl_hold_buff :
   483 000037BE <res 802h>          <1> data_fixup_flag     DW  1025 DUP (?)    ; positions in data record that flag a segment fixup, used pass 2
   484 00003FC0 ????????????????    <1> frame_thrd_index    DW  4 DUP (?)   ; frame fixup thread index
   485 00003FC8 ????????????????    <1> target_thrd_index   DW  4 DUP (?)   ; target fixup thread index
   486                              <1> 
   487                              <1> ; doubleword arrays
   488                              <1> ddl_symbol_lookup   LABEL   DWORD   ; used by ddl's to translate symbol seg:off to file position
   488                              <2> ddl_symbol_lookup :
   489 00003FD0 <res 7FCh>          <1> lnames_ent_indptr   DD  LNAMES_MAX DUP (?)  ; indexed segment:offset pointers to lnames entries of last read lnames record
    31                                  %include "mlerrmes.mac"
     1                              <1> ;*********************************************************************
     2                              <1> ;*   MLERRMES.INC                                                    *
     3                              <1> ;*                                                                   *
     4                              <1> ;*   By:            Michael Devore                                   *
     5                              <1> ;*   Date:          02/10/93                                         *
     6                              <1> ;*   Model:         Small                                            *
     7                              <1> ;*   Version:       2.5                                              *
     8                              <1> ;*   Assembler:     MASM 5.0                                         *
     9                              <1> ;*   Environment:   MS-DOS 2.x+                                      *
    10                              <1> ;*                                                                   *
    11                              <1> ;*   Error message feedback strings with lookup table                *
    12                              <1> ;*   Data space is only allocated if ALLOCATE_ERROR_DATA is defined  *
    13                              <1> ;*                                                                   *
    14                              <1> ;*********************************************************************
    15                              <1> 
    16                              <1> ;PAGE    50,80
    17                              <1>      
    18                              <1> ;*****************************
    19                              <1> ;* Constant data             *
    20                              <1> ;*****************************
    21                              <1> 
    22                              <1> .CONST
    23                              <1> 
    24                              <1> ;*****************************************************************************
    25                              <1> 
    26                              <1> ; equates and address table for error/warning feedback
    27                              <1> ; four word values per entry
    28                              <1> ; first word flags the type of error using the following table
    29                              <1> ;   bit     value   type of feedback
    30                              <1> ;   ---     -----   ----------------
    31                              <1> ;    0        0     warning [0]
    32                              <1> ;    0        1     fatal [1]
    33                              <1> ;   2,1      0,0    unknown error [0]
    34                              <1> ;   2,1      0,1    internal error [2]
    35                              <1> ;   2,1      1,0    command line (user) error [4]
    36                              <1> ;   2,1      1,1    error in file [6]
    37                              <1> ;   4,3      0,0    no error value given [0]
    38                              <1> ;   4,3      0,1    8-bit error value [8]
    39                              <1> ;   4,3      1,0    16-bit error value [10h]
    40                              <1> ;   4,3      1,1    no offset or error value for file [18h]
    41                              <1> ;    5        0     non-DOS error
    42                              <1> ;    5        1     DOS error
    43                              <1> ;    6        1     Unspecified fatal error
    44                              <1> ;    7        0     no extra symbol specified [0]
    45                              <1> ;    7        1     extra symbol specified [80h]
    46                              <1> ; second word is offset to the problem message
    47                              <1> ; third word is offset to the cause of the problem, i.e. user, machlink, dos, software
    48                              <1> ; fourth word is offset to the solution message
    49                              <1> 
    50                              <1> %idefine OR |
    51                              <1> 
    52                              <1> ; error type equates
    53                              <1> WARNING_ERRVAL  EQU 0
    54                              <1> FATAL_ERRVAL    EQU 1
    55                              <1> UNKNOWN_ERRVAL  EQU 0
    56                              <1> INTERNAL_ERRVAL EQU 2
    57                              <1> COMMAND_ERRVAL  EQU 4
    58                              <1> FILE_ERRVAL     EQU 6
    59                              <1> NOVAL_ERRVAL    EQU 0
    60                              <1> BIT8_ERRVAL     EQU 8
    61                              <1> BIT16_ERRVAL    EQU 16
    62                              <1> NO_OFF_ERRVAL   EQU 24
    63                              <1> DOS_ERRVAL      EQU 32
    64                              <1> NOSPEC_ERRVAL   EQU 64
    65                              <1> EXTRA_SYM_ERRVAL equ 80h
    66                              <1> 
    67                              <1> ; error name equates and address table
    68                              <1> INTERNAL_ERR        EQU 0           ; machlink internal error
    69                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
    70                              <1> error_table_start   EQU $           ; for init'ing variables to start of error message table
    71                              <1>     DW  FATAL_ERRVAL OR INTERNAL_ERRVAL
    72                              <1>     DW  OFFSET  stpro_internal
    73                              <1>     DW  OFFSET  stcause_machlink
    74                              <1>     DW  OFFSET  stsol_contact
    75                              <1> %ENDIF
    76                              <1> 
    77                              <1> %IFNDEF JUNIOR
    78                              <1> 
    79                              <1> UNM_LEFT_PAREN_ERR  EQU 1           ; unmatched left parenthesis
    80                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
    81                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
    82                              <1>     DW  OFFSET  stpro_left_paren
    83                              <1>     DW  OFFSET  stcause_user
    84                              <1>     DW  OFFSET  stsol_bal_paren     ; left and right unmatched parenthesis have same solution
    85                              <1> %ENDIF
    86                              <1> 
    87                              <1> UNM_RIGHT_PAREN_ERR EQU 2           ; unmatched right parenthesis
    88                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
    89                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
    90                              <1>     DW  OFFSET  stpro_right_paren
    91                              <1>     DW  OFFSET  stcause_user
    92                              <1>     DW  OFFSET  stsol_bal_paren     ; left and right unmatched parenthesis have same solution
    93                              <1> %ENDIF
    94                              <1> 
    95                              <1> NEST_PAREN_ERR  EQU 3               ; unmatched right parenthesis
    96                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
    97                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
    98                              <1>     DW  OFFSET  stpro_nest_paren
    99                              <1>     DW  OFFSET  stcause_user
   100                              <1>     DW  OFFSET  stsol_nest_paren    ; left and right unmatched parenthesis have same solution
   101                              <1> %ENDIF
   102                              <1> 
   103                              <1> %ELSE
   104                              <1>     DW  3*4 DUP (0)                 ; null the pointers
   105                              <1> %ENDIF
   106                              <1> 
   107                              <1> UNKNOWN_ERR     EQU 4               ; unknown error
   108                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   109                              <1>     DW  FATAL_ERRVAL OR UNKNOWN_ERRVAL
   110                              <1>     DW  OFFSET  stpro_unknown
   111                              <1>     DW  OFFSET  stcause_machlink
   112                              <1>     DW  OFFSET  stsol_contact
   113                              <1> %ENDIF
   114                              <1> 
   115                              <1> BAD_OPTION_ERR  EQU 5               ; bad linker option
   116                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   117                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   118                              <1>     DW  OFFSET  stpro_bad_option
   119                              <1>     DW  OFFSET  stcause_user
   120                              <1>     DW  OFFSET  stsol_bad_option
   121                              <1> %ENDIF
   122                              <1> 
   123                              <1> BAD_RECTYPE_ERR EQU 6               ; bad record type
   124                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   125                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   126                              <1>     DW  OFFSET  stpro_bad_rectype
   127                              <1>     DW  OFFSET  stcause_module
   128                              <1>     DW  OFFSET  stsol_bad_rec
   129                              <1> %ENDIF
   130                              <1> 
   131                              <1> MULT_THEADR_ERR EQU 7               ; more than one THEADR record
   132                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   133                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   134                              <1>     DW  OFFSET  stpro_mult_theadr
   135                              <1>     DW  OFFSET  stcause_module
   136                              <1>     DW  OFFSET  stsol_bad_rec
   137                              <1> %ENDIF
   138                              <1> 
   139                              <1> GRPDEF_VAL_ERR  EQU 8               ; GRPDEF index value too large
   140                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   141                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   142                              <1>     DW  OFFSET  stpro_grpdef_val
   143                              <1>     DW  OFFSET  stcause_module
   144                              <1>     DW  OFFSET  stsol_bad_rec
   145                              <1> %ENDIF
   146                              <1> 
   147                              <1> SEGDEF_VAL_ERR  EQU 9               ; SEGDEF index value too large
   148                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   149                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   150                              <1>     DW  OFFSET  stpro_segdef_val
   151                              <1>     DW  OFFSET  stcause_module
   152                              <1>     DW  OFFSET  stsol_bad_rec
   153                              <1> %ENDIF
   154                              <1> 
   155                              <1> UNEXPECT_EOF_ERR    EQU 10          ; unexpected end of file error
   156                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   157                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   158                              <1>     DW  OFFSET  stpro_unexpect_eof
   159                              <1>     DW  OFFSET  stcause_module
   160                              <1>     DW  OFFSET  stsol_unexpect_eof
   161                              <1> %ENDIF
   162                              <1> 
   163                              <1> INV_DSTYPE_ERR  EQU 11              ; invalid data segment type value
   164                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   165                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   166                              <1>     DW  OFFSET  stpro_inv_dstype
   167                              <1>     DW  OFFSET  stcause_module
   168                              <1>     DW  OFFSET  stsol_bad_rec
   169                              <1> %ENDIF
   170                              <1> 
   171                              <1> INV_COMFIELD_VAL_ERR    EQU 12      ; invalid communal length field value
   172                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   173                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   174                              <1>     DW  OFFSET  stpro_inv_comfval
   175                              <1>     DW  OFFSET  stcause_module
   176                              <1>     DW  OFFSET  stsol_bad_rec
   177                              <1> %ENDIF
   178                              <1> 
   179                              <1> LNAMES_COUNT_ERR    EQU 13          ; too many LNAMES logical names in file
   180                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   181                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NOVAL_ERRVAL
   182                              <1>     DW  OFFSET  stpro_lnames_count
   183                              <1>     DW  OFFSET  stcause_module
   184                              <1>     DW  OFFSET  stsol_bad_rec
   185                              <1> %ENDIF
   186                              <1> 
   187                              <1> GRPIND_VAL_ERR    EQU 14            ; Invalid GRPDEF group name index value
   188                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   189                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT16_ERRVAL
   190                              <1>     DW  OFFSET  stpro_grpind_val
   191                              <1>     DW  OFFSET  stcause_module
   192                              <1>     DW  OFFSET  stsol_bad_rec
   193                              <1> %ENDIF
   194                              <1> 
   195                              <1> SEGNAM_IND_ERR    EQU 15            ; Invalid SEGDEF segment name index value
   196                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   197                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT16_ERRVAL
   198                              <1>     DW  OFFSET  stpro_segnam_ind
   199                              <1>     DW  OFFSET  stcause_module
   200                              <1>     DW  OFFSET  stsol_bad_rec
   201                              <1> %ENDIF
   202                              <1> 
   203                              <1> CLASSNAM_IND_ERR    EQU 16          ; Invalid SEGDEF class name index value
   204                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   205                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT16_ERRVAL
   206                              <1>     DW  OFFSET  stpro_classnam_ind
   207                              <1>     DW  OFFSET  stcause_module
   208                              <1>     DW  OFFSET  stsol_bad_rec
   209                              <1> %ENDIF
   210                              <1> 
   211                              <1> COMBINE_VAL_ERR EQU 17              ; Invalid SEGDEF combine field value
   212                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   213                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   214                              <1>     DW  OFFSET  stpro_comfld_val
   215                              <1>     DW  OFFSET  stcause_module
   216                              <1>     DW  OFFSET  stsol_bad_rec
   217                              <1> %ENDIF
   218                              <1> 
   219                              <1> SEGMENT_LEN_ERR EQU 18              ; segment size exceeds 64 KiB
   220                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   221                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   222                              <1>     DW  OFFSET  stpro_seglen
   223                              <1>     DW  OFFSET  stcause_program
   224                              <1>     DW  OFFSET  stsol_seglen
   225                              <1> %ENDIF
   226                              <1> 
   227                              <1> NO_OBJMOD_ERR   EQU 19              ; no object modules were specified
   228                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   229                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   230                              <1>     DW  OFFSET  stpro_no_objmod
   231                              <1>     DW  OFFSET  stcause_user
   232                              <1>     DW  OFFSET  stsol_no_objmod
   233                              <1> %ENDIF
   234                              <1> 
   235                              <1> STACK_SIZE_ERR  EQU 20              ; stack segment larger than 65534 bytes
   236                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   237                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   238                              <1>     DW  OFFSET  stpro_stack_size
   239                              <1>     DW  OFFSET  stcause_program
   240                              <1>     DW  OFFSET  stsol_stack_size
   241                              <1> %ENDIF
   242                              <1> 
   243                              <1> COM_STACK_ERR   EQU 21              ; COM file contains stack segment
   244                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   245                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   246                              <1>     DW  OFFSET  stpro_com_stack
   247                              <1>     DW  OFFSET  stcause_program
   248                              <1>     DW  OFFSET  stsol_com_stack
   249                              <1> %ENDIF
   250                              <1> 
   251                              <1> COM_FIXUP_ERR   EQU 22              ; COM file has segment-relative fixups
   252                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   253                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   254                              <1>     DW  OFFSET  stpro_com_fixup
   255                              <1>     DW  OFFSET  stcause_program
   256                              <1>     DW  OFFSET  stsol_com_fixup
   257                              <1> %ENDIF
   258                              <1> 
   259                              <1> COM_SIZE_ERR    EQU 23              ; COM file is greater than 64 KiB
   260                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   261                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   262                              <1>     DW  OFFSET  stpro_com_size
   263                              <1>     DW  OFFSET  stcause_program
   264                              <1>     DW  OFFSET  stsol_com_size
   265                              <1> %ENDIF
   266                              <1> 
   267                              <1> EXTDEF_COUNT_ERR    EQU 24          ; too many external names
   268                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   269                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   270                              <1>     DW  OFFSET  stpro_extdef_count
   271                              <1>     DW  OFFSET  stcause_program
   272                              <1>     DW  OFFSET  stsol_extdef_count
   273                              <1> %ENDIF
   274                              <1> 
   275                              <1> ENDDAT_VAL_ERR  EQU 25              ; bad enddat field value in MODEND record
   276                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   277                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   278                              <1>     DW  OFFSET  stpro_enddat
   279                              <1>     DW  OFFSET  stcause_module
   280                              <1>     DW  OFFSET  stsol_bad_rec
   281                              <1> %ENDIF
   282                              <1> 
   283                              <1> LOC_VAL_ERR EQU 26                  ; bad loc field value in FIXUPP record
   284                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   285                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   286                              <1>     DW  OFFSET  stpro_loc
   287                              <1>     DW  OFFSET  stcause_module
   288                              <1>     DW  OFFSET  stsol_bad_rec
   289                              <1> %ENDIF
   290                              <1> 
   291                              <1> EXTDEF_VAL_ERR  EQU 27              ; EXTDEF index value too large
   292                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   293                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT16_ERRVAL
   294                              <1>     DW  OFFSET  stpro_extdef_val
   295                              <1>     DW  OFFSET  stcause_module
   296                              <1>     DW  OFFSET  stsol_bad_rec
   297                              <1> %ENDIF
   298                              <1> 
   299                              <1> INV_THRD_METH_ERR   EQU 28          ; invalid thread method field value
   300                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   301                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   302                              <1>     DW  OFFSET  stpro_inv_thrdmeth
   303                              <1>     DW  OFFSET  stcause_module
   304                              <1>     DW  OFFSET  stsol_bad_rec
   305                              <1> %ENDIF
   306                              <1> 
   307                              <1> IMAGE_BOUNDS_ERR    EQU 29          ; attempt to write data outside of program bounds
   308                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   309                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   310                              <1>     DW  OFFSET  stpro_bounds
   311                              <1>     DW  OFFSET  stcause_module
   312                              <1>     DW  OFFSET  stsol_bad_rec
   313                              <1> %ENDIF
   314                              <1> 
   315                              <1> RELOC_COUNT_ERR EQU 30              ; more than 32768 relocation table entries
   316                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   317                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   318                              <1>     DW  OFFSET  stpro_rel_count
   319                              <1>     DW  OFFSET  stcause_program
   320                              <1>     DW  OFFSET  stsol_rel_count
   321                              <1> %ENDIF
   322                              <1> 
   323                              <1> IDATA_BLK_SIZE_ERR  EQU 31          ; LIDATA iterated data block larger than 512 bytes
   324                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   325                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   326                              <1>     DW  OFFSET  stpro_idata
   327                              <1>     DW  OFFSET  stcause_module
   328                              <1>     DW  OFFSET  stsol_bad_rec
   329                              <1> %ENDIF
   330                              <1> 
   331                              <1> FIXUPP_DATA_ERR EQU 32              ; FIXUPP records contains a fixup field without preceding L?DATA record
   332                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   333                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   334                              <1>     DW  OFFSET  stpro_fix_data
   335                              <1>     DW  OFFSET  stcause_module
   336                              <1>     DW  OFFSET  stsol_bad_rec
   337                              <1> %ENDIF
   338                              <1> 
   339                              <1> RSP_LINE_ERR    EQU 33              ; response file line too long
   340                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   341                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   342                              <1>     DW  OFFSET  stpro_rsp_line
   343                              <1>     DW  OFFSET  stcause_user
   344                              <1>     DW  OFFSET  stsol_rsp_line
   345                              <1> %ENDIF
   346                              <1> 
   347                              <1> RSP_NEST_ERR    EQU 34              ; attempt to nest response files
   348                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   349                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   350                              <1>     DW  OFFSET  stpro_rsp_nest
   351                              <1>     DW  OFFSET  stcause_user
   352                              <1>     DW  OFFSET  stsol_rsp_nest
   353                              <1> %ENDIF
   354                              <1> 
   355                              <1> SEG_GRP_CONF_ERR    EQU 35          ; PUBDEF group and segment index values conflict
   356                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   357                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   358                              <1>     DW  OFFSET  stpro_seg_grp
   359                              <1>     DW  OFFSET  stcause_module
   360                              <1>     DW  OFFSET  stsol_bad_rec
   361                              <1> %ENDIF
   362                              <1> 
   363                              <1> DOS_FILE_FND_ERR    EQU 36          ; DOS file not found error
   364                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   365                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR DOS_ERRVAL OR NO_OFF_ERRVAL
   366                              <1>     DW  OFFSET  stpro_filefnd
   367                              <1>     DW  OFFSET  stcause_dos
   368                              <1>     DW  OFFSET  stsol_filefnd
   369                              <1> %ENDIF
   370                              <1> 
   371                              <1> DOS_PATH_FND_ERR    EQU 37          ; DOS path not found error
   372                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   373                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR DOS_ERRVAL OR NO_OFF_ERRVAL
   374                              <1>     DW  OFFSET  stpro_filefnd
   375                              <1>     DW  OFFSET  stcause_dos
   376                              <1>     DW  OFFSET  stsol_filefnd
   377                              <1> %ENDIF
   378                              <1> 
   379                              <1> DOS_OUT_HAND_ERR    EQU 38          ; DOS out of file handles error
   380                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   381                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR DOS_ERRVAL OR NO_OFF_ERRVAL
   382                              <1>     DW  OFFSET  stpro_outhand
   383                              <1>     DW  OFFSET  stcause_dos
   384                              <1>     DW  OFFSET  stsol_outhand
   385                              <1> %ENDIF
   386                              <1> 
   387                              <1> DOS_ACC_DEN_ERR     EQU 39          ; DOS access denied error
   388                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   389                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR DOS_ERRVAL OR NO_OFF_ERRVAL
   390                              <1>     DW  OFFSET  stpro_accden
   391                              <1>     DW  OFFSET  stcause_dos
   392                              <1>     DW  OFFSET  stsol_accden
   393                              <1> %ENDIF
   394                              <1> 
   395                              <1> DOS_INV_HAND_ERR    EQU 40          ; DOS invalid handle error
   396                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   397                              <1>     DW  FATAL_ERRVAL OR DOS_ERRVAL
   398                              <1>     DW  OFFSET  stpro_invhand
   399                              <1>     DW  OFFSET  stcause_dos
   400                              <1>     DW  OFFSET  stsol_contact
   401                              <1> %ENDIF
   402                              <1> 
   403                              <1> DOS_MCB_DSTRY_ERR   EQU 41          ; DOS memory control blocks destroyed error
   404                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   405                              <1>     DW  FATAL_ERRVAL OR DOS_ERRVAL
   406                              <1>     DW  OFFSET  stpro_mcb
   407                              <1>     DW  OFFSET  stcause_dos
   408                              <1>     DW  OFFSET  stsol_contact
   409                              <1> %ENDIF
   410                              <1> 
   411                              <1> DOS_INSUF_MEM_ERR   EQU 42          ; DOS insufficient memory error
   412                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   413                              <1>     DW  FATAL_ERRVAL OR DOS_ERRVAL
   414                              <1>     DW  OFFSET  stpro_mem
   415                              <1>     DW  OFFSET  stcause_dos
   416                              <1>     DW  OFFSET  stsol_mem
   417                              <1> %ENDIF
   418                              <1> 
   419                              <1> DOS_INV_MEM_BLK_ERR EQU 43          ; DOS invalid memory block error
   420                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   421                              <1>     DW  FATAL_ERRVAL OR DOS_ERRVAL
   422                              <1>     DW  OFFSET  stpro_memblk
   423                              <1>     DW  OFFSET  stcause_dos
   424                              <1>     DW  OFFSET  stsol_contact
   425                              <1> %ENDIF
   426                              <1> 
   427                              <1> NO_EXE_STACK_WARN   EQU 44          ; warning, no stack for .EXE file
   428                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   429                              <1>     DW  WARNING_ERRVAL
   430                              <1>     DW  OFFSET  stpro_nostack
   431                              <1>     DW  OFFSET  stcause_possible
   432                              <1>     DW  OFFSET  stsol_nostack
   433                              <1> %ENDIF
   434                              <1> 
   435                              <1> UNRES_EXT_WARN  EQU 45              ; warning, unresolved external
   436                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   437                              <1>     DW  WARNING_ERRVAL
   438                              <1>     DW  OFFSET  stpro_unres
   439                              <1>     DW  OFFSET  stcause_possible
   440                              <1>     DW  OFFSET  stsol_unres
   441                              <1> %ENDIF
   442                              <1> 
   443                              <1> MULT_DEF_SYM_WARN   EQU 46          ; warning, multiply defined symbol
   444                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   445                              <1>     DW  WARNING_ERRVAL
   446                              <1>     DW  OFFSET  stpro_multsym
   447                              <1>     DW  OFFSET  stcause_possible
   448                              <1>     DW  OFFSET  stsol_multsym
   449                              <1> %ENDIF
   450                              <1> 
   451                              <1> FIXUP_OVRFLW_WARN   EQU 47          ; warning, fixup overflow
   452                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   453                              <1>     DW  WARNING_ERRVAL
   454                              <1>     DW  OFFSET  stpro_fixup
   455                              <1>     DW  OFFSET  stcause_possible
   456                              <1>     DW  OFFSET  stsol_fixup
   457                              <1> %ENDIF
   458                              <1> 
   459                              <1> SEG_GRP_DECL_WARN   EQU 48          ; segment declared in more than one group
   460                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   461                              <1>     DW  WARNING_ERRVAL
   462                              <1>     DW  OFFSET  stpro_segdecl
   463                              <1>     DW  OFFSET  stcause_program
   464                              <1>     DW  OFFSET  stsol_segdecl
   465                              <1> %ENDIF
   466                              <1> 
   467                              <1> COM_ENTRY_ERR   EQU 49              ; COM file contains bad entry point
   468                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   469                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   470                              <1>     DW  OFFSET  stpro_com_entry
   471                              <1>     DW  OFFSET  stcause_program
   472                              <1>     DW  OFFSET  stsol_com_entry
   473                              <1> %ENDIF
   474                              <1> 
   475                              <1> SELF_REL_FIX_ERR    EQU 50          ; intersegment self-relative fixup
   476                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   477                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   478                              <1>     DW  OFFSET  stpro_selfrel
   479                              <1>     DW  OFFSET  stcause_module
   480                              <1>     DW  OFFSET  stsol_bad_rec
   481                              <1> %ENDIF
   482                              <1> 
   483                              <1> LIB_FORMAT_ERR  EQU 51              ; library format error
   484                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   485                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   486                              <1>     DW  OFFSET  stpro_libform
   487                              <1>     DW  OFFSET  stcause_library
   488                              <1>     DW  OFFSET  stsol_libform
   489                              <1> %ENDIF
   490                              <1> 
   491                              <1> FRAME_THRD_ERR  EQU 52              ; bad frame thread field value in FIXUPP record
   492                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   493                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   494                              <1>     DW  OFFSET  stpro_inv_frthrd
   495                              <1>     DW  OFFSET  stcause_module
   496                              <1>     DW  OFFSET  stsol_bad_rec
   497                              <1> %ENDIF
   498                              <1> 
   499                              <1> FRAME_METH_ERR  EQU 53              ; bad frame method in FIXUPP record
   500                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   501                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   502                              <1>     DW  OFFSET  stpro_inv_frmeth
   503                              <1>     DW  OFFSET  stcause_module
   504                              <1>     DW  OFFSET  stsol_bad_rec
   505                              <1> %ENDIF
   506                              <1> 
   507                              <1> TARGET_METH_ERR EQU 54              ; bad target method in FIXUPP record
   508                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   509                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   510                              <1>     DW  OFFSET  stpro_inv_tarmeth
   511                              <1>     DW  OFFSET  stcause_module
   512                              <1>     DW  OFFSET  stsol_bad_rec
   513                              <1> %ENDIF
   514                              <1> 
   515                              <1> ENDFRAME_THRD_ERR   EQU 55          ; bad frame thread field value in MODEND record
   516                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   517                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   518                              <1>     DW  OFFSET  stpro_inv_endframe
   519                              <1>     DW  OFFSET  stcause_module
   520                              <1>     DW  OFFSET  stsol_bad_rec
   521                              <1> %ENDIF
   522                              <1> 
   523                              <1> COMM_OVRFLW_ERR EQU 56              ; communal variable length overflow
   524                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   525                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   526                              <1>     DW  OFFSET  stpro_comm_ovr
   527                              <1>     DW  OFFSET  stcause_program
   528                              <1>     DW  OFFSET  stsol_comm_ovr
   529                              <1> %ENDIF
   530                              <1> 
   531                              <1> DEF_SEG_OVRFLW_ERR  EQU 57          ; default data segment overflow (due to communals)
   532                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   533                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   534                              <1>     DW  OFFSET  stpro_defseg_ovr
   535                              <1>     DW  OFFSET  stcause_program
   536                              <1>     DW  OFFSET  stsol_defseg_ovr
   537                              <1> %ENDIF
   538                              <1> 
   539                              <1> DISK_FULL_ERR   EQU 58              ; disk full error
   540                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   541                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   542                              <1>     DW  OFFSET  stpro_diskfull
   543                              <1>     DW  OFFSET  stcause_dos
   544                              <1>     DW  OFFSET  stsol_diskfull
   545                              <1> %ENDIF
   546                              <1> 
   547                              <1> TMP_DISK_FULL_ERR   EQU 59          ; disk specified by TMP variable is full
   548                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   549                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   550                              <1>     DW  OFFSET  stpro_diskfull
   551                              <1>     DW  OFFSET  stcause_dos
   552                              <1>     DW  OFFSET  stsol_tmpfull
   553                              <1> %ENDIF
   554                              <1> 
   555                              <1> %IFNDEF JUNIOR
   556                              <1> 
   557                              <1> OVLSEG_LEN_ERR  EQU 60              ; overlaid segment size exceeds 64 KiB
   558                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   559                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL
   560                              <1>     DW  OFFSET  stpro_ovlseglen
   561                              <1>     DW  OFFSET  stcause_program
   562                              <1>     DW  OFFSET  stsol_ovlseglen
   563                              <1> %ENDIF
   564                              <1> 
   565                              <1> ROOTSEG_LEN_ERR EQU 61              ; overlay root segment size exceeds 64 KiB
   566                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   567                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL
   568                              <1>     DW  OFFSET  stpro_rootseglen
   569                              <1>     DW  OFFSET  stcause_program
   570                              <1>     DW  OFFSET  stsol_rootseglen
   571                              <1> %ENDIF
   572                              <1> 
   573                              <1> OVERLAY_COUNT_ERR   EQU 62          ; more than 16383 overlays
   574                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   575                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL
   576                              <1>     DW  OFFSET  stpro_ovlmax
   577                              <1>     DW  OFFSET  stcause_program
   578                              <1>     DW  OFFSET  stsol_ovlmax
   579                              <1> %ENDIF
   580                              <1> 
   581                              <1> OVLCOM_CLASH_ERR    EQU 63          ; COM files clash with overlays
   582                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   583                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   584                              <1>     DW  OFFSET  stpro_ovlcom
   585                              <1>     DW  OFFSET  stcause_user
   586                              <1>     DW  OFFSET  stsol_ovlcom
   587                              <1> %ENDIF
   588                              <1> 
   589                              <1> OVLPUB_COUNT_ERR    EQU 64          ; more than 4095 publics of overlay class
   590                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   591                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL
   592                              <1>     DW  OFFSET  stpro_ovlpub
   593                              <1>     DW  OFFSET  stcause_program
   594                              <1>     DW  OFFSET  stsol_ovlpub
   595                              <1> %ENDIF
   596                              <1> 
   597                              <1> MISSING_OVLMGR_ERR  EQU 65          ; OVLMGR.OBJ missing
   598                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   599                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   600                              <1>     DW  OFFSET  stpro_missing
   601                              <1>     DW  OFFSET  stcause_user
   602                              <1>     DW  OFFSET  stsol_missing
   603                              <1> %ENDIF
   604                              <1> 
   605                              <1> OVL_MOD_PUB_MAX_ERR EQU 66          ; More than 255 overlaid publics in one overlay
   606                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   607                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   608                              <1>     DW  OFFSET  stpro_ovlmodpub
   609                              <1>     DW  OFFSET  stcause_user
   610                              <1>     DW  OFFSET  stsol_ovlmodpub
   611                              <1> %ENDIF
   612                              <1> 
   613                              <1> NONOVL_SEG_WARN EQU 67              ; warning, nonoverlayable segment reference
   614                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   615                              <1>     DW  WARNING_ERRVAL
   616                              <1>     DW  OFFSET  stpro_nonovlseg
   617                              <1>     DW  OFFSET  stcause_user
   618                              <1>     DW  OFFSET  stsol_nonovlsegsym
   619                              <1> %ENDIF
   620                              <1> 
   621                              <1> NONOVL_SYM_WARN EQU 68              ; warning, nonoverlayable symbol reference
   622                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   623                              <1>     DW  WARNING_ERRVAL
   624                              <1>     DW  OFFSET  stpro_nonovlsym
   625                              <1>     DW  OFFSET  stcause_user
   626                              <1>     DW  OFFSET  stsol_nonovlsegsym
   627                              <1> %ENDIF
   628                              <1> 
   629                              <1> NONCONT_OVLDATA_ERR EQU 69          ; noncontiguous overlay class segment binary data in overlay
   630                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   631                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL
   632                              <1>     DW  OFFSET  stpro_noncont
   633                              <1>     DW  OFFSET  stcause_program
   634                              <1>     DW  OFFSET  stsol_noncont
   635                              <1> %ENDIF
   636                              <1> 
   637                              <1> EMS_EMM_ERR EQU 70                  ; expanded memory manager error
   638                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   639                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL OR BIT8_ERRVAL
   640                              <1>     DW  OFFSET  stpro_ems
   641                              <1>     DW  OFFSET  stcause_ems
   642                              <1>     DW  OFFSET  stsol_ems
   643                              <1> %ENDIF
   644                              <1> 
   645                              <1> XMS_XMM_ERR EQU 71                  ; extended memory manager error
   646                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   647                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL OR BIT8_ERRVAL
   648                              <1>     DW  OFFSET  stpro_xms
   649                              <1>     DW  OFFSET  stcause_xms
   650                              <1>     DW  OFFSET  stsol_xms
   651                              <1> %ENDIF
   652                              <1> 
   653                              <1> COMCONFLICT_ERR EQU 72              ; /c linker option conflicts with /ddl, /udl
   654                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   655                              <1>     DW  FATAL_ERRVAL OR COMMAND_ERRVAL
   656                              <1>     DW  OFFSET  stpro_comcon
   657                              <1>     DW  OFFSET  stcause_user
   658                              <1>     DW  OFFSET  stsol_comcon
   659                              <1> %ENDIF
   660                              <1> 
   661                              <1> DDLMOD_COUNT_ERR    EQU 73          ; more than 1024 modules in DDL
   662                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   663                              <1>     DW  FATAL_ERRVAL OR NOSPEC_ERRVAL
   664                              <1>     DW  OFFSET  stpro_ddlmod
   665                              <1>     DW  OFFSET  stcause_user   
   666                              <1>     DW  OFFSET  stsol_ddlmod
   667                              <1> %ENDIF
   668                              <1> 
   669                              <1> SYMBOLTOKEN_ERR	EQU 74          	; bad Clipper symbol token
   670                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   671                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR BIT8_ERRVAL
   672                              <1>     DW  OFFSET  stpro_symtok
   673                              <1>     DW  OFFSET  stcause_program
   674                              <1>     DW  OFFSET  stsol_symtok
   675                              <1> %ENDIF
   676                              <1> 
   677                              <1> _WLCALC_WLLIST_MINIMUM equ 75
   678                              <1> 
   679                              <1> _WLCALC_ERR	EQU 75			; bad wlcalc request
   680                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   681                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   682                              <1>     DW  OFFSET  stpro_wlcalc
   683                              <1>     DW  OFFSET  stcause_module
   684                              <1>     DW  OFFSET  stsol_wlcalc
   685                              <1> %ENDIF
   686                              <1> 
   687                              <1> _WLCALC_OVERFLOW_ERR	EQU 76		; overflown wlcalc request
   688                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   689                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   690                              <1>     DW  OFFSET  stpro_wlcalc_overflow
   691                              <1>     DW  OFFSET  stcause_module
   692                              <1>     DW  OFFSET  stsol_wlcalc_overflow
   693                              <1> %ENDIF
   694                              <1> 
   695                              <1> _WLLIST_ERR	EQU 77		; bad wllist
   696                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   697                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   698                              <1>     DW  OFFSET  stpro_wllist
   699                              <1>     DW  OFFSET  stcause_module
   700                              <1>     DW  OFFSET  stsol_wllist
   701                              <1> %ENDIF
   702                              <1> 
   703                              <1> _WLLIST_INVALID_LIST_ITEM_ERR equ 78
   704                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   705                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   706                              <1>     DW  OFFSET  stpro_wllist_invalid_list_item
   707                              <1>     DW  OFFSET  stcause_module
   708                              <1>     DW  OFFSET  stsol_wllist
   709                              <1> %ENDIF
   710                              <1> 
   711                              <1> _WLLIST_WIDTH_NUMBER_INVALID_ERR equ 79
   712                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   713                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   714                              <1>     DW  OFFSET  stpro_wllist_width_number_invalid
   715                              <1>     DW  OFFSET  stcause_module
   716                              <1>     DW  OFFSET  stsol_wllist
   717                              <1> %ENDIF
   718                              <1> 
   719                              <1> _WLLIST_WIDTH_NUMBER_OVERFLOW_ERR equ 80
   720                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   721                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   722                              <1>     DW  OFFSET  stpro_wllist_width_number_overflow
   723                              <1>     DW  OFFSET  stcause_module
   724                              <1>     DW  OFFSET  stsol_wllist
   725                              <1> %ENDIF
   726                              <1> 
   727                              <1> _WLLIST_REPEAT_NUMBER_INVALID_ERR equ 81
   728                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   729                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   730                              <1>     DW  OFFSET  stpro_wllist_repeat_number_invalid
   731                              <1>     DW  OFFSET  stcause_module
   732                              <1>     DW  OFFSET  stsol_wllist
   733                              <1> %ENDIF
   734                              <1> 
   735                              <1> _WLLIST_REPEAT_NUMBER_OVERFLOW_ERR equ 82
   736                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   737                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   738                              <1>     DW  OFFSET  stpro_wllist_repeat_number_overflow
   739                              <1>     DW  OFFSET  stcause_module
   740                              <1>     DW  OFFSET  stsol_wllist
   741                              <1> %ENDIF
   742                              <1> 
   743                              <1> _WLLIST_NO_SECTION_ERR equ 83
   744                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   745                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   746                              <1>     DW  OFFSET  stpro_wllist_no_section
   747                              <1>     DW  OFFSET  stcause_module
   748                              <1>     DW  OFFSET  stsol_wllist
   749                              <1> %ENDIF
   750                              <1> 
   751                              <1> _WLLIST_GROUP_UNKNOWN_SECTION_ERR equ 84
   752                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   753                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   754                              <1>     DW  OFFSET  stpro_wllist_group_unknown_section
   755                              <1>     DW  OFFSET  stcause_module
   756                              <1>     DW  OFFSET  stsol_wllist
   757                              <1> %ENDIF
   758                              <1> 
   759                              <1> _WLLIST_UNKNOWN_LIST_ERR equ 85
   760                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   761                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   762                              <1>     DW  OFFSET  stpro_wllist_unknown_list
   763                              <1>     DW  OFFSET  stcause_module
   764                              <1>     DW  OFFSET  stsol_wllist
   765                              <1> %ENDIF
   766                              <1> 
   767                              <1> _WLLIST_INVALID_NEW_SEGMENT_ERR equ 86
   768                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   769                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   770                              <1>     DW  OFFSET  stpro_wllist_invalid_new_segment
   771                              <1>     DW  OFFSET  stcause_module
   772                              <1>     DW  OFFSET  stsol_wllist
   773                              <1> %ENDIF
   774                              <1> 
   775                              <1> _WLLIST_GROUP_MULTIPLE_ERR equ 87
   776                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   777                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   778                              <1>     DW  OFFSET  stpro_wllist_group_multiple
   779                              <1>     DW  OFFSET  stcause_module
   780                              <1>     DW  OFFSET  stsol_wllist
   781                              <1> %ENDIF
   782                              <1> 
   783                              <1> _WLCALC_SEG_NOT_FOUND_ERR equ 88
   784                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   785                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   786                              <1>     DW  OFFSET  stpro_wlcalc_seg_not_found
   787                              <1>     DW  OFFSET  stcause_module
   788                              <1>     DW  OFFSET  stsol_wlcalc
   789                              <1> %ENDIF
   790                              <1> 
   791                              <1> _WLCALC_UNKNOWN_SIZE_ERR equ 89
   792                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   793                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   794                              <1>     DW  OFFSET  stpro_wlcalc_unknown_size
   795                              <1>     DW  OFFSET  stcause_module
   796                              <1>     DW  OFFSET  stsol_wlcalc
   797                              <1> %ENDIF
   798                              <1> 
   799                              <1> _WLCALC_MISSING_OPERATION_ERR equ 90
   800                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   801                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   802                              <1>     DW  OFFSET  stpro_wlcalc_missing_operation
   803                              <1>     DW  OFFSET  stcause_module
   804                              <1>     DW  OFFSET  stsol_wlcalc
   805                              <1> %ENDIF
   806                              <1> 
   807                              <1> _WLCALC_OVERFLOW_PASS_ERR equ 91
   808                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   809                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   810                              <1>     DW  OFFSET  stpro_wlcalc_overflow_pass
   811                              <1>     DW  OFFSET  stcause_module
   812                              <1>     DW  OFFSET  stsol_wlcalc_overflow
   813                              <1> %ENDIF
   814                              <1> 
   815                              <1> _WLCALC_INVALID_PASS_ERR equ 92
   816                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   817                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   818                              <1>     DW  OFFSET  stpro_wlcalc_invalid_pass
   819                              <1>     DW  OFFSET  stcause_module
   820                              <1>     DW  OFFSET  stsol_wlcalc
   821                              <1> %ENDIF
   822                              <1> 
   823                              <1> _WLCALC_OPEXT_INVALID_ERR equ 93
   824                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   825                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   826                              <1>     DW  OFFSET  stpro_wlcalc_opext_invalid
   827                              <1>     DW  OFFSET  stcause_module
   828                              <1>     DW  OFFSET  stsol_wlcalc
   829                              <1> %ENDIF
   830                              <1> 
   831                              <1> _WLCALC_EXT_NOT_FOUND_ERR equ 94
   832                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   833                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   834                              <1>     DW  OFFSET  stpro_wlcalc_ext_not_found
   835                              <1>     DW  OFFSET  stcause_module
   836                              <1>     DW  OFFSET  stsol_wlcalc
   837                              <1> %ENDIF
   838                              <1> 
   839                              <1> _WLCALC_UNKNOWN_DO_ERR equ 95
   840                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   841                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   842                              <1>     DW  OFFSET  stpro_wlcalc_unknown_do
   843                              <1>     DW  OFFSET  stcause_module
   844                              <1>     DW  OFFSET  stsol_wlcalc
   845                              <1> %ENDIF
   846                              <1> 
   847                              <1> _WLCALC_MISSING_OPERAND_ERR equ 96
   848                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   849                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   850                              <1>     DW  OFFSET  stpro_wlcalc_missing_operand
   851                              <1>     DW  OFFSET  stcause_module
   852                              <1>     DW  OFFSET  stsol_wlcalc
   853                              <1> %ENDIF
   854                              <1> 
   855                              <1> _WLCALC_SEG_NOT_WORD_ERR equ 97
   856                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   857                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   858                              <1>     DW  OFFSET  stpro_wlcalc_seg_not_word
   859                              <1>     DW  OFFSET  stcause_module
   860                              <1>     DW  OFFSET  stsol_wlcalc
   861                              <1> %ENDIF
   862                              <1> 
   863                              <1> _WLCALC_OVERFLOW_CONSTANT_ERR equ 98
   864                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   865                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   866                              <1>     DW  OFFSET  stpro_wlcalc_overflow_constant
   867                              <1>     DW  OFFSET  stcause_module
   868                              <1>     DW  OFFSET  stsol_wlcalc_overflow
   869                              <1> %ENDIF
   870                              <1> 
   871                              <1> _WLCALC_INVALID_CONSTANT_ERR equ 99
   872                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   873                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   874                              <1>     DW  OFFSET  stpro_wlcalc_invalid_constant
   875                              <1>     DW  OFFSET  stcause_module
   876                              <1>     DW  OFFSET  stsol_wlcalc
   877                              <1> %ENDIF
   878                              <1> 
   879                              <1> _WLCALC_MISSING_REPEAT_ERR equ 100
   880                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   881                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   882                              <1>     DW  OFFSET  stpro_wlcalc_missing_repeat
   883                              <1>     DW  OFFSET  stcause_module
   884                              <1>     DW  OFFSET  stsol_wlcalc
   885                              <1> %ENDIF
   886                              <1> 
   887                              <1> _WLCALC_OVERFLOW_REPEAT_ERR equ 101
   888                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   889                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   890                              <1>     DW  OFFSET  stpro_wlcalc_overflow_repeat
   891                              <1>     DW  OFFSET  stcause_module
   892                              <1>     DW  OFFSET  stsol_wlcalc_overflow
   893                              <1> %ENDIF
   894                              <1> 
   895                              <1> _WLCALC_INVALID_REPEAT_ERR equ 102
   896                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   897                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   898                              <1>     DW  OFFSET  stpro_wlcalc_invalid_repeat
   899                              <1>     DW  OFFSET  stcause_module
   900                              <1>     DW  OFFSET  stsol_wlcalc
   901                              <1> %ENDIF
   902                              <1> 
   903                              <1> _WLCALC_MISSING_PASS_ERR equ 103
   904                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   905                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   906                              <1>     DW  OFFSET  stpro_wlcalc_missing_pass
   907                              <1>     DW  OFFSET  stcause_module
   908                              <1>     DW  OFFSET  stsol_wlcalc
   909                              <1> %ENDIF
   910                              <1> 
   911                              <1> _WLCALC_UNKNOWN_TRAILER_ERR equ 104
   912                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   913                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   914                              <1>     DW  OFFSET  stpro_wlcalc_unknown_trailer
   915                              <1>     DW  OFFSET  stcause_module
   916                              <1>     DW  OFFSET  stsol_wlcalc
   917                              <1> %ENDIF
   918                              <1> 
   919                              <1> _WLCALC_ABS_WRT_ERR equ 105
   920                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   921                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   922                              <1>     DW  OFFSET  stpro_wlcalc_abs_wrt
   923                              <1>     DW  OFFSET  stcause_module
   924                              <1>     DW  OFFSET  stsol_wlcalc
   925                              <1> %ENDIF
   926                              <1> 
   927                              <1> _WLCALC_QUOTE_NUL_ERR equ 106
   928                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   929                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   930                              <1>     DW  OFFSET  stpro_wlcalc_quote_nul
   931                              <1>     DW  OFFSET  stcause_module
   932                              <1>     DW  OFFSET  stsol_wlcalc
   933                              <1> %ENDIF
   934                              <1> 
   935                              <1> 
   936                              <1> _WLCALC_WLLIST_MAXIMUM equ 106
   937                              <1> 
   938                              <1> COM_PREFIX_UNKNOWN_WARN   EQU 107
   939                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   940                              <1>     DW  WARNING_ERRVAL
   941                              <1>     DW  OFFSET  stpro_prefix
   942                              <1>     DW  OFFSET  stcause_possible
   943                              <1>     DW  OFFSET  stsol_prefix
   944                              <1> %ENDIF
   945                              <1> 
   946                              <1> SHORT_READ_ERR   EQU 108
   947                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   948                              <1>     DW  FATAL_ERRVAL OR FILE_ERRVAL OR NO_OFF_ERRVAL
   949                              <1>     DW  OFFSET  stpro_shortread
   950                              <1>     DW  OFFSET  stcause_dos
   951                              <1>     DW  OFFSET  stsol_shortread
   952                              <1> %ENDIF
   953                              <1> 
   954                              <1> MULTIPLE_ENTRYPOINT_WARN   EQU 109
   955                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate jumptable space once
   956                              <1>     DW  WARNING_ERRVAL
   957                              <1>     DW  OFFSET  stpro_multi
   958                              <1>     DW  OFFSET  stcause_possible
   959                              <1>     DW  OFFSET  stsol_multi
   960                              <1> %ENDIF
   961                              <1> 
   962                              <1> 
   963                              <1> HIGH_ERR_CODE   EQU 109	; highest error code
   964                              <1> 
   965                              <1> 
   966                              <1> %ELSE
   967                              <1>     DW  15*4 DUP (0)                ; null the pointers
   968                              <1> %ENDIF
   969                              <1> 
   970                              <1> ;*****************************************************************************
   971                              <1> 
   972                              <1> %IFDEF   ALLOCATE_ERROR_DATA         ; only allocate message space once
   973                              <1> 
   974                              <1> ; the actual feedback messages strings
   975                              <1> ; string text is preceded by a one byte value containing the length of the text
   976                              <1> 
   977                              <1> ;********************************
   978                              <1> ;* message miscellaneous        *
   979                              <1> ;********************************
   980                              <1> 
   981                              <1> string_pro_len      DB  string_pro_stop-string_problem
   982                              <1> string_problem      DB  CR,LF,'  Problem:  '
   983                              <1> string_pro_stop equ   $
   984                              <1> 
   985                              <1> string_sol_len      DB  string_sol_stop-string_solution
   986                              <1> string_solution     DB  CR,LF,'  Solution: '
   987                              <1> string_sol_stop equ   $
   988                              <1> 
   989                              <1> string_sp_len       DB  string_sp_stop-string_spacer
   990                              <1> string_spacer       DB  CR,LF,'            '
   991                              <1> string_sp_stop  equ   $
   992                              <1> 
   993                              <1> ;********************************
   994                              <1> ;* messages for types of errors *
   995                              <1> ;********************************
   996                              <1> 
   997                              <1> sttyp_len0          DB  sttyp_0_stop-sttyp_fatal_internal
   998                              <1> sttyp_fatal_internal    DB  CR,LF,'FATAL internal error in ',LINKER
   999                              <1> sttyp_0_stop    equ   $
  1000                              <1> 
  1001                              <1> sttyp_len1          DB  sttyp_1_stop-sttyp_fatal_comline
  1002                              <1> sttyp_fatal_comline DB  CR,LF,'FATAL error in ',LINKER,' command line'
  1003                              <1> sttyp_1_stop    equ   $
  1004                              <1> 
  1005                              <1> sttyp_len2          DB  sttyp_2_stop-sttyp_fatal_unknown
  1006                              <1> sttyp_fatal_unknown DB  CR,LF,'FATAL unknown error'
  1007                              <1> sttyp_2_stop    equ   $
  1008                              <1> 
  1009                              <1> sttyp_len2a         DB  sttyp_2a_stop-sttyp_fatal_error
  1010                              <1> sttyp_fatal_error   DB  CR,LF,'FATAL error'
  1011                              <1> sttyp_2a_stop   equ   $
  1012                              <1> 
  1013                              <1> sttyp_len3          DB  sttyp_3_stop-sttyp_fatal_objmod
  1014                              <1> sttyp_fatal_objmod  DB  CR,LF,'FATAL error in '
  1015                              <1> sttyp_3_stop    equ   $
  1016                              <1> 
  1017                              <1> sttyp_len3a         DB  sttyp_3a_stop-sttyp_offset
  1018                              <1> sttyp_offset        DB  ', offset '
  1019                              <1> sttyp_3a_stop   equ   $
  1020                              <1> 
  1021                              <1> sttyp_len3b         DB  sttyp_3b_stop-sttyp_value
  1022                              <1> sttyp_value         DB  ', value '
  1023                              <1> sttyp_3b_stop   equ   $
  1024                              <1> 
  1025                              <1> sttyp_len4          DB  sttyp_4_stop-sttyp_fatal_dos
  1026                              <1> sttyp_fatal_dos     DB  CR,LF,'FATAL DOS error'
  1027                              <1> sttyp_4_stop    equ   $
  1028                              <1> 
  1029                              <1> sttyp_len5          DB  sttyp_5_stop-sttyp_fatal_dosmod
  1030                              <1> sttyp_fatal_dosmod  DB  CR,LF,'FATAL DOS error in '
  1031                              <1> sttyp_5_stop    equ   $
  1032                              <1> 
  1033                              <1> sttyp_colon         DB  ':  '
  1034                              <1> 
  1035                              <1> sttyp_len6          DB  sttyp_6_stop-sttyp_warning
  1036                              <1> sttyp_warning       DB  CR,LF,'Warning in '
  1037                              <1> sttyp_6_stop    equ   $
  1038                              <1> 
  1039                              <1> sttyp_len6a         DB  sttyp_6a_stop-sttyp_segment
  1040                              <1> sttyp_segment       DB  ', segment '
  1041                              <1> sttyp_6a_stop   equ   $
  1042                              <1> 
  1043                              <1> sttyp_len6b         DB  sttyp_6b_stop-sttyp_symbol
  1044                              <1> sttyp_symbol        DB  ', symbol '
  1045                              <1> sttyp_6b_stop   equ   $
  1046                              <1> 
  1047                              <1> sttyp_len7          DB  sttyp_7_stop-sttyp_module
  1048                              <1> sttyp_module        DB  ', module '
  1049                              <1> sttyp_7_stop    equ   $
  1050                              <1> 
  1051                              <1> sttyp_len8          DB  sttyp_8_stop-sttyp_option
  1052                              <1> sttyp_option        DB  ', option /'
  1053                              <1> sttyp_8_stop    equ   $
  1054                              <1> 
  1055                              <1> ;********************************
  1056                              <1> ;* messages for what problem is *
  1057                              <1> ;********************************
  1058                              <1> 
  1059                              <1> stpro_len0          DB  stpro_0_stop-stpro_internal
  1060                              <1> stpro_internal      DB  'Internal error in ',LINKER,'.'
  1061                              <1> stpro_0_stop    equ   $
  1062                              <1> 
  1063                              <1> %IFNDEF JUNIOR
  1064                              <1> stpro_len1          DB  stpro_1_stop-stpro_left_paren
  1065                              <1> stpro_left_paren    DB  'Unmatched left parenthesis or bracket in link syntax.'
  1066                              <1> stpro_1_stop    equ   $
  1067                              <1> 
  1068                              <1> stpro_len2          DB  stpro_2_stop-stpro_right_paren
  1069                              <1> stpro_right_paren   DB  'Unmatched right parenthesis or bracket in link syntax.'
  1070                              <1> stpro_2_stop    equ   $
  1071                              <1> 
  1072                              <1> stpro_len3          DB  stpro_3_stop-stpro_nest_paren
  1073                              <1> stpro_nest_paren    DB  'Nested parentheses or brackets in link syntax.'
  1074                              <1> stpro_3_stop    equ   $
  1075                              <1> %ENDIF
  1076                              <1> 
  1077                              <1> stpro_len4          DB  stpro_4_stop-stpro_unknown
  1078                              <1> stpro_unknown       DB  'Unknown error.'
  1079                              <1> stpro_4_stop    equ   $
  1080                              <1> 
  1081                              <1> stpro_len5          DB  stpro_5_stop-stpro_bad_option
  1082                              <1> stpro_bad_option    DB  'Invalid ',LINKER,' option or value. '
  1083                              <1> stpro_5_stop    equ   $
  1084                              <1> 
  1085                              <1> stpro_len6          DB  stpro_6_stop-stpro_bad_rectype
  1086                              <1> stpro_bad_rectype   DB  'Invalid object record type. '
  1087                              <1> stpro_6_stop    equ   $
  1088                              <1> 
  1089                              <1> stpro_len7          DB  stpro_7_stop-stpro_mult_theadr
  1090                              <1> ;*** stpro_mult_theadr   DB  'More than one THEADR object record.'
  1091                              <1> stpro_mult_theadr   DB  0
  1092                              <1> stpro_7_stop    equ   $
  1093                              <1> 
  1094                              <1> stpro_len8          DB  stpro_8_stop-stpro_grpdef_val
  1095                              <1> stpro_grpdef_val    DB  'GRPDEF index value too large or zero.'
  1096                              <1> stpro_8_stop    equ   $
  1097                              <1> 
  1098                              <1> stpro_len9          DB  stpro_9_stop-stpro_segdef_val
  1099                              <1> stpro_segdef_val    DB  'SEGDEF index value too large or zero.'
  1100                              <1> stpro_9_stop    equ   $
  1101                              <1> 
  1102                              <1> stpro_len10         DB  stpro_10_stop-stpro_unexpect_eof
  1103                              <1> stpro_unexpect_eof  DB  'Unexpected end of file.'
  1104                              <1> stpro_10_stop   equ   $
  1105                              <1> 
  1106                              <1> stpro_len11         DB  stpro_11_stop-stpro_inv_dstype
  1107                              <1> stpro_inv_dstype    DB  'Invalid COMDEF data segment type value.'
  1108                              <1> stpro_11_stop   equ   $
  1109                              <1> 
  1110                              <1> stpro_len12         DB  stpro_12_stop-stpro_inv_comfval
  1111                              <1> stpro_inv_comfval   DB  'Invalid COMDEF communal length field value.'
  1112                              <1> stpro_12_stop   equ   $
  1113                              <1> 
  1114                              <1> stpro_len13         DB  stpro_13_stop-stpro_lnames_count
  1115                              <1> stpro_lnames_count  DB  'Too many LNAMES logical names in module.'
  1116                              <1> stpro_13_stop   equ   $
  1117                              <1> 
  1118                              <1> stpro_len14         DB  stpro_14_stop-stpro_grpind_val
  1119                              <1> stpro_grpind_val    DB  'Invalid GRPDEF group name index value.'
  1120                              <1> stpro_14_stop   equ   $
  1121                              <1> 
  1122                              <1> stpro_len15         DB  stpro_15_stop-stpro_segnam_ind
  1123                              <1> stpro_segnam_ind    DB  'Invalid SEGDEF segment name index value.'
  1124                              <1> stpro_15_stop   equ   $
  1125                              <1> 
  1126                              <1> stpro_len16         DB  stpro_16_stop-stpro_classnam_ind
  1127                              <1> stpro_classnam_ind  DB  'Invalid SEGDEF class name index value.'
  1128                              <1> stpro_16_stop   equ   $
  1129                              <1> 
  1130                              <1> stpro_len17         DB  stpro_17_stop-stpro_comfld_val
  1131                              <1> stpro_comfld_val    DB  'Invalid SEGDEF combine field value.'
  1132                              <1> stpro_17_stop   equ   $
  1133                              <1> 
  1134                              <1> stpro_len18         DB  stpro_18_stop-stpro_seglen
  1135                              <1> stpro_seglen        DB  'Segment size exceeds 64 KiB.'
  1136                              <1> stpro_18_stop   equ   $
  1137                              <1> 
  1138                              <1> stpro_len19         DB  stpro_19_stop-stpro_no_objmod
  1139                              <1> stpro_no_objmod     DB  'No object modules specified in link syntax.'
  1140                              <1> stpro_19_stop   equ   $
  1141                              <1> 
  1142                              <1> stpro_len20         DB  stpro_20_stop-stpro_stack_size
  1143                              <1> stpro_stack_size    DB  'Stack segment larger than 65534 bytes.'
  1144                              <1> stpro_20_stop   equ   $
  1145                              <1> 
  1146                              <1> stpro_len21         DB  stpro_21_stop-stpro_com_stack
  1147                              <1> stpro_com_stack     DB  'Bad COM file format, program has stack segment.'
  1148                              <1> stpro_21_stop   equ   $
  1149                              <1> 
  1150                              <1> stpro_len22         DB  stpro_22_stop-stpro_com_fixup
  1151                              <1> stpro_com_fixup     DB  'Bad COM file format, program has segment fixups.'
  1152                              <1> stpro_22_stop   equ   $
  1153                              <1> 
  1154                              <1> stpro_len23         DB  stpro_23_stop-stpro_com_size
  1155                              <1> stpro_com_size      DB  'Bad COM file format, program larger than 64 KiB.'
  1156                              <1> stpro_23_stop   equ   $
  1157                              <1> 
  1158                              <1> stpro_len24         DB  stpro_24_stop-stpro_extdef_count
  1159                              <1> stpro_extdef_count  DB  'Too many external names in module.'
  1160                              <1> stpro_24_stop   equ   $
  1161                              <1> 
  1162                              <1> stpro_len25         DB  stpro_25_stop-stpro_enddat
  1163                              <1> stpro_enddat        DB  "Invalid MODEND 'end dat' field value."
  1164                              <1> stpro_25_stop   equ   $
  1165                              <1> 
  1166                              <1> stpro_len26         DB  stpro_26_stop-stpro_loc
  1167                              <1> stpro_loc           DB  "Invalid FIXUPP loc field value."
  1168                              <1> stpro_26_stop   equ   $
  1169                              <1> 
  1170                              <1> stpro_len27         DB  stpro_27_stop-stpro_extdef_val
  1171                              <1> stpro_extdef_val    DB  'EXTDEF index value too large or zero.'
  1172                              <1> stpro_27_stop   equ   $
  1173                              <1> 
  1174                              <1> stpro_len28         DB  stpro_28_stop-stpro_inv_thrdmeth
  1175                              <1> stpro_inv_thrdmeth  DB  'Invalid FIXUPP thread method field value.'
  1176                              <1> stpro_28_stop   equ   $
  1177                              <1> 
  1178                              <1> stpro_len29         DB  stpro_29_stop-stpro_bounds
  1179                              <1> stpro_bounds        DB  'Attempt to write data outside of program bounds.'
  1180                              <1> stpro_29_stop   equ   $
  1181                              <1> 
  1182                              <1> stpro_len30         DB  stpro_30_stop-stpro_rel_count
  1183                              <1> stpro_rel_count     DB  'More than 32768 EXE file relocation table items.'
  1184                              <1> stpro_30_stop   equ   $
  1185                              <1> 
  1186                              <1> stpro_len31         DB  stpro_31_stop-stpro_idata
  1187                              <1> stpro_idata         DB  'LIDATA iterated data block larger than 512 bytes.'
  1188                              <1> stpro_31_stop   equ   $
  1189                              <1> 
  1190                              <1> stpro_len32         DB  stpro_32_stop-stpro_fix_data
  1191                              <1> stpro_fix_data      DB  'FIXUPP contains fixup field without a data record.'
  1192                              <1> stpro_32_stop   equ   $
  1193                              <1> 
  1194                              <1> stpro_len33         DB  stpro_33_stop-stpro_rsp_line
  1195                              <1> stpro_rsp_line      DB  'Length of response file line exceeded 127 characters.'
  1196                              <1> stpro_33_stop   equ   $
  1197                              <1> 
  1198                              <1> stpro_len34         DB  stpro_34_stop-stpro_rsp_nest
  1199                              <1> stpro_rsp_nest      DB  'Attempt to nest response files.'
  1200                              <1> stpro_34_stop   equ   $
  1201                              <1> 
  1202                              <1> stpro_len35         DB  stpro_35_stop-stpro_seg_grp
  1203                              <1> stpro_seg_grp       DB  'PUBDEF group and segment index values conflict.'
  1204                              <1> stpro_35_stop   equ   $
  1205                              <1> 
  1206                              <1> stpro_len36         DB  stpro_36_stop-stpro_filefnd
  1207                              <1> stpro_filefnd       DB  'DOS could not find a file needed by ',LINKER,'.'
  1208                              <1> stpro_36_stop   equ   $
  1209                              <1> 
  1210                              <1> ; feedback for 37 is same as 36
  1211                              <1> 
  1212                              <1> stpro_len38         DB  stpro_38_stop-stpro_outhand
  1213                              <1> stpro_outhand       DB  'Too many open files or handles.'
  1214                              <1> stpro_38_stop   equ   $
  1215                              <1> 
  1216                              <1> stpro_len39         DB  stpro_39_stop-stpro_accden
  1217                              <1> stpro_accden        DB  'File access denied.'
  1218                              <1> stpro_39_stop   equ   $
  1219                              <1> 
  1220                              <1> stpro_len40         DB  stpro_40_stop-stpro_invhand
  1221                              <1> stpro_invhand       DB  'Invalid file handle.'
  1222                              <1> stpro_40_stop   equ   $
  1223                              <1> 
  1224                              <1> stpro_len41         DB  stpro_41_stop-stpro_mcb
  1225                              <1> stpro_mcb           DB  'DOS memory control blocks destroyed.'
  1226                              <1> stpro_41_stop   equ   $
  1227                              <1> 
  1228                              <1> stpro_len42         DB  stpro_42_stop-stpro_mem
  1229                              <1> stpro_mem           DB  'Not enough memory to operate ',LINKER,'.'
  1230                              <1> stpro_42_stop   equ   $
  1231                              <1> 
  1232                              <1> stpro_len43         DB  stpro_43_stop-stpro_memblk
  1233                              <1> stpro_memblk        DB  'Invalid DOS memory control block address.'
  1234                              <1> stpro_43_stop   equ   $
  1235                              <1> 
  1236                              <1> stpro_len44         DB  stpro_44_stop-stpro_nostack
  1237                              <1> stpro_nostack       DB  'No stack segment was found for the EXE file.'
  1238                              <1> stpro_44_stop   equ   $
  1239                              <1> 
  1240                              <1> stpro_len45         DB  stpro_45_stop-stpro_unres
  1241                              <1> stpro_unres         DB  'Externally declared symbol has no public definition.'
  1242                              <1> stpro_45_stop   equ   $
  1243                              <1> 
  1244                              <1> stpro_len46         DB  stpro_46_stop-stpro_multsym
  1245                              <1> stpro_multsym       DB  'Symbol has more than one public definition.'
  1246                              <1> stpro_46_stop   equ   $
  1247                              <1> 
  1248                              <1> stpro_len47         DB  stpro_47_stop-stpro_fixup
  1249                              <1> stpro_fixup         DB  'Fixup overflow.'
  1250                              <1> stpro_47_stop   equ   $
  1251                              <1> 
  1252                              <1> stpro_len48         DB  stpro_48_stop-stpro_segdecl
  1253                              <1> stpro_segdecl       DB  'Segment was declared in more than one group.'
  1254                              <1> stpro_48_stop   equ   $
  1255                              <1> 
  1256                              <1> stpro_len49         DB  stpro_49_stop-stpro_com_entry
  1257                              <1> stpro_com_entry     DB  'Bad COM file format, program has invalid entry point.'
  1258                              <1> stpro_49_stop   equ   $
  1259                              <1> 
  1260                              <1> stpro_len50         DB  stpro_50_stop-stpro_selfrel
  1261                              <1> stpro_selfrel       DB  'Intersegment self-relative fixup in FIXUPP record.'
  1262                              <1> stpro_50_stop   equ   $
  1263                              <1> 
  1264                              <1> stpro_len51         DB  stpro_51_stop-stpro_libform
  1265                              <1> stpro_libform       DB  'Bad library format.'
  1266                              <1> stpro_51_stop   equ   $
  1267                              <1> 
  1268                              <1> stpro_len52         DB  stpro_52_stop-stpro_inv_frthrd
  1269                              <1> stpro_inv_frthrd    DB  'Invalid FIXUPP frame thread field.'
  1270                              <1> stpro_52_stop   equ   $
  1271                              <1> 
  1272                              <1> stpro_len53         DB  stpro_53_stop-stpro_inv_frmeth
  1273                              <1> stpro_inv_frmeth    DB  'Invalid FIXUPP frame method field value.'
  1274                              <1> stpro_53_stop   equ   $
  1275                              <1> 
  1276                              <1> stpro_len54         DB  stpro_54_stop-stpro_inv_tarmeth
  1277                              <1> stpro_inv_tarmeth   DB  'Invalid FIXUPP target method field value.'
  1278                              <1> stpro_54_stop   equ   $
  1279                              <1> 
  1280                              <1> stpro_len55         DB  stpro_55_stop-stpro_inv_endframe
  1281                              <1> stpro_inv_endframe  DB  'Invalid MODEND frame thread field.'
  1282                              <1> stpro_55_stop   equ   $
  1283                              <1> 
  1284                              <1> stpro_len56         DB  stpro_56_stop-stpro_comm_ovr
  1285                              <1> stpro_comm_ovr      DB  'COMDEF communal variable length overflow.'
  1286                              <1> stpro_56_stop   equ   $
  1287                              <1> 
  1288                              <1> stpro_len57         DB  stpro_57_stop-stpro_defseg_ovr
  1289                              <1> stpro_defseg_ovr    DB  'Default data segment exceeds 64 KiB.'
  1290                              <1> stpro_57_stop   equ   $
  1291                              <1> 
  1292                              <1> stpro_len58         DB  stpro_58_stop-stpro_diskfull
  1293                              <1> stpro_diskfull      DB  'Insufficient disk space.'
  1294                              <1> stpro_58_stop   equ   $
  1295                              <1> 
  1296                              <1> ; feedback for 59 is same as 58
  1297                              <1> 
  1298                              <1> %IFNDEF JUNIOR
  1299                              <1> 
  1300                              <1> stpro_len60         DB  stpro_60_stop-stpro_ovlseglen
  1301                              <1> stpro_ovlseglen     DB  'Overlaid segment size exceeds 64 KiB.'
  1302                              <1> stpro_60_stop   equ   $
  1303                              <1> 
  1304                              <1> stpro_len61         DB  stpro_61_stop-stpro_rootseglen
  1305                              <1> stpro_rootseglen    DB  'Overlay class root segment size exceeds 64 KiB.'
  1306                              <1> stpro_61_stop   equ   $
  1307                              <1> 
  1308                              <1> stpro_len62         DB  stpro_62_stop-stpro_ovlmax
  1309                              <1> stpro_ovlmax        DB  'More than 4095 overlaid segments.'
  1310                              <1> stpro_62_stop   equ   $
  1311                              <1> 
  1312                              <1> stpro_len63         DB  stpro_63_stop-stpro_ovlcom
  1313                              <1> stpro_ovlcom        DB  '/c option specified with overlays.'
  1314                              <1> stpro_63_stop   equ   $
  1315                              <1> 
  1316                              <1> stpro_len64         DB  stpro_64_stop-stpro_ovlpub
  1317                              <1> stpro_ovlpub        DB  'Count of overlaid publics exceeds 4095.'
  1318                              <1> stpro_64_stop   equ   $
  1319                              <1> 
  1320                              <1> stpro_len65         DB  stpro_65_stop-stpro_missing
  1321                              <1> stpro_missing       DB  'Overlay manager module OVLMGR.OBJ missing or incorrect version.'
  1322                              <1> stpro_65_stop   equ   $
  1323                              <1> 
  1324                              <1> stpro_len66         DB  stpro_66_stop-stpro_ovlmodpub
  1325                              <1> stpro_ovlmodpub     DB  'Count of overlaid publics in one overlay exceeds 255.'
  1326                              <1> stpro_66_stop   equ   $
  1327                              <1> 
  1328                              <1> stpro_len67         DB  stpro_67_stop-stpro_nonovlseg
  1329                              <1> stpro_nonovlseg     DB  'Nonoverlayable segment reference, nonzero displacement.'
  1330                              <1> stpro_67_stop   equ   $
  1331                              <1> 
  1332                              <1> stpro_len68         DB  stpro_68_stop-stpro_nonovlsym
  1333                              <1> stpro_nonovlsym     DB  'Nonoverlayable symbol reference, nonzero displacement.'
  1334                              <1> stpro_68_stop   equ   $
  1335                              <1> 
  1336                              <1> stpro_len69         DB  stpro_69_stop-stpro_noncont
  1337                              <1> stpro_noncont       DB  'Overlaid module has noncontiguous overlay class code.'
  1338                              <1> stpro_69_stop   equ   $
  1339                              <1> 
  1340                              <1> stpro_len70         DB  stpro_70_stop-stpro_ems
  1341                              <1> stpro_ems           DB  'Error when accessing expanded memory.'
  1342                              <1> stpro_70_stop   equ   $
  1343                              <1> 
  1344                              <1> stpro_len71         DB  stpro_71_stop-stpro_xms
  1345                              <1> stpro_xms           DB  'Error when accessing extended memory.'
  1346                              <1> stpro_71_stop   equ   $
  1347                              <1> 
  1348                              <1> stpro_len72         DB  stpro_72_stop-stpro_comcon
  1349                              <1> stpro_comcon        DB  '/c option conflicts with /ddl or /udl option.'
  1350                              <1> stpro_72_stop   equ   $
  1351                              <1> 
  1352                              <1> stpro_len73         DB  stpro_73_stop-stpro_ddlmod
  1353                              <1> stpro_ddlmod        DB  'Too many modules in DDL file.'
  1354                              <1> stpro_73_stop   equ   $
  1355                              <1> 
  1356                              <1> stpro_len74         DB  stpro_74_stop-stpro_symtok
  1357                              <1> stpro_symtok        DB  'Bad symbol table token in Clipper file.'
  1358                              <1> stpro_74_stop   equ   $
  1359                              <1> 
  1360                              <1> stpro_len75         DB  stpro_75_stop-stpro_wlcalc
  1361                              <1> stpro_wlcalc        DB  'Unknown WLCALC request in label.'
  1362                              <1> stpro_75_stop   equ   $
  1363                              <1> 
  1364                              <1> stpro_len76         DB  stpro_76_stop-stpro_wlcalc_overflow
  1365                              <1> stpro_wlcalc_overflow:
  1366                              <1> 		DB  'Overflow processing WLCALC request in label.'
  1367                              <1> stpro_76_stop   equ   $
  1368                              <1> 
  1369                              <1> stpro_len77         DB  stpro_77_stop-stpro_wllist
  1370                              <1> stpro_wllist:
  1371                              <1> 		DB  'Invalid WLLIST request in label.'
  1372                              <1> stpro_77_stop   equ   $
  1373                              <1> 
  1374                              <1> 		db @FF - @F
  1375                              <1> stpro_wllist_invalid_list_item:
  1376                              <1> @@:		db "Invalid WLLIST list item."
  1377                              <1> @@:
  1378                              <1> 		db @FF - @F
  1379                              <1> stpro_wllist_width_number_invalid:
  1380                              <1> @@:		db "WLLIST width number invalid."
  1381                              <1> @@:
  1382                              <1> 		db @FF - @F
  1383                              <1> stpro_wllist_width_number_overflow:
  1384                              <1> @@:		db "WLLIST width number overflow."
  1385                              <1> @@:
  1386                              <1> 		db @FF - @F
  1387                              <1> stpro_wllist_repeat_number_invalid:
  1388                              <1> @@:		db "WLIST repeat number invalid."
  1389                              <1> @@:
  1390                              <1> 		db @FF - @F
  1391                              <1> stpro_wllist_repeat_number_overflow:
  1392                              <1> @@:		db "WLLIST repeat number overflow."
  1393                              <1> @@:
  1394                              <1> 		db @FF - @F
  1395                              <1> stpro_wllist_no_section:
  1396                              <1> @@:		db "WLLIST new list is missing a section."
  1397                              <1> @@:
  1398                              <1> 		db @FF - @F
  1399                              <1> stpro_wllist_group_unknown_section:
  1400                              <1> @@:		db "WLLIST group specifies unknown section."
  1401                              <1> @@:
  1402                              <1> 		db @FF - @F
  1403                              <1> stpro_wllist_unknown_list:
  1404                              <1> @@:		db "WLLIST list item doesn't belong to a known list."
  1405                              <1> @@:
  1406                              <1> 		db @FF - @F
  1407                              <1> stpro_wllist_invalid_new_segment:
  1408                              <1> @@:		db "WLLIST new list is invalid."
  1409                              <1> @@:
  1410                              <1> 		db @FF - @F
  1411                              <1> stpro_wllist_group_multiple:
  1412                              <1> @@:		db "WLLIST section name specified in multiple groups."
  1413                              <1> @@:
  1414                              <1> 
  1415                              <1> 		db @FF - @F
  1416                              <1> stpro_wlcalc_seg_not_found:
  1417                              <1> @@:		db "WLCALC segment not found."
  1418                              <1> @@:
  1419                              <1> 		db @FF - @F
  1420                              <1> stpro_wlcalc_unknown_size:
  1421                              <1> @@:		db "WLCALC unknown size keyword."
  1422                              <1> @@:
  1423                              <1> 		db @FF - @F
  1424                              <1> stpro_wlcalc_missing_operation:
  1425                              <1> @@:		db "WLCALC missing operation after size keyword."
  1426                              <1> @@:
  1427                              <1> 		db @FF - @F
  1428                              <1> stpro_wlcalc_overflow_pass:
  1429                              <1> @@:		db "WLCALC pass overflow."
  1430                              <1> @@:
  1431                              <1> 		db @FF - @F
  1432                              <1> stpro_wlcalc_invalid_pass:
  1433                              <1> @@:		db "WLCALC pass invalid number."
  1434                              <1> @@:
  1435                              <1> 		db @FF - @F
  1436                              <1> stpro_wlcalc_opext_invalid:
  1437                              <1> @@:		db "WLCALC OPEXT invalid next operation."
  1438                              <1> @@:
  1439                              <1> 		db @FF - @F
  1440                              <1> stpro_wlcalc_ext_not_found:
  1441                              <1> @@:		db "WLCALC extern label not found."
  1442                              <1> @@:
  1443                              <1> 		db @FF - @F
  1444                              <1> stpro_wlcalc_unknown_do:
  1445                              <1> @@:		db "WLCALC unknown operation keyword."
  1446                              <1> @@:
  1447                              <1> 		db @FF - @F
  1448                              <1> stpro_wlcalc_missing_operand:
  1449                              <1> @@:		db "WLCALC missing operand after operation keyword."
  1450                              <1> @@:
  1451                              <1> 		db @FF - @F
  1452                              <1> stpro_wlcalc_seg_not_word:
  1453                              <1> @@:		db "WLCALC SEG must operate on word size variable."
  1454                              <1> @@:
  1455                              <1> 		db @FF - @F
  1456                              <1> stpro_wlcalc_overflow_constant:
  1457                              <1> @@:		db "WLCALC constant overflow."
  1458                              <1> @@:
  1459                              <1> 		db @FF - @F
  1460                              <1> stpro_wlcalc_invalid_constant:
  1461                              <1> @@:		db "WLCALC constant invalid number."
  1462                              <1> @@:
  1463                              <1> 		db @FF - @F
  1464                              <1> stpro_wlcalc_missing_repeat:
  1465                              <1> @@:		db "WLCALC missing repetition count."
  1466                              <1> @@:
  1467                              <1> 		db @FF - @F
  1468                              <1> stpro_wlcalc_overflow_repeat:
  1469                              <1> @@:		db "WLCALC repetition count overflow."
  1470                              <1> @@:
  1471                              <1> 		db @FF - @F
  1472                              <1> stpro_wlcalc_invalid_repeat:
  1473                              <1> @@:		db "WLCALC repetition count invalid number."
  1474                              <1> @@:
  1475                              <1> 		db @FF - @F
  1476                              <1> stpro_wlcalc_missing_pass:
  1477                              <1> @@:		db "WLCALC pass number missing."
  1478                              <1> @@:
  1479                              <1> 		db @FF - @F
  1480                              <1> stpro_wlcalc_unknown_trailer:
  1481                              <1> @@:		db "WLCALC unknown trailer."
  1482                              <1> @@:
  1483                              <1> 		db @FF - @F
  1484                              <1> stpro_wlcalc_abs_wrt:
  1485                              <1> @@:		db "WLCALC cannot use WRT on absolute extern label."
  1486                              <1> @@:
  1487                              <1> 		db @FF - @F
  1488                              <1> stpro_wlcalc_quote_nul:
  1489                              <1> @@:		db "WLCALC WRT clause missing segment name."
  1490                              <1> @@:
  1491                              <1> 
  1492                              <1> 		db @FF - @F
  1493                              <1> stpro_prefix:
  1494                              <1> @@:		db "COM file cut prefix is neither all-zeroes nor NOPs."
  1495                              <1> @@:
  1496                              <1> 
  1497                              <1> 		db @FF - @F
  1498                              <1> stpro_shortread:
  1499                              <1> @@:		db "Short read from file."
  1500                              <1> @@:
  1501                              <1> 
  1502                              <1> 		db @FF - @F
  1503                              <1> stpro_multi:
  1504                              <1> @@:		db "Multiple entrypoints found for the EXE file."
  1505                              <1> @@:
  1506                              <1> 
  1507                              <1> %ENDIF
  1508                              <1> 
  1509                              <1> ;*******************************
  1510                              <1> ;* messages for cause of error *
  1511                              <1> ;*******************************
  1512                              <1> 
  1513                              <1> stcause_len0        DB  stcause_0_stop-stcause_machlink
  1514                              <1> stcause_machlink    DB  'This is an error in ',LINKER,'.'
  1515                              <1> stcause_0_stop  equ   $
  1516                              <1> 
  1517                              <1> stcause_len1        DB  stcause_1_stop-stcause_user
  1518                              <1> stcause_user        DB  'This is a user error.'
  1519                              <1> stcause_1_stop  equ   $
  1520                              <1> 
  1521                              <1> stcause_len2        DB  stcause_2_stop-stcause_module
  1522                              <1> stcause_module      DB  'This is an error in the module.'
  1523                              <1> stcause_2_stop  equ   $
  1524                              <1> 
  1525                              <1> stcause_len3        DB  stcause_3_stop-stcause_program
  1526                              <1> stcause_program     DB  'This is an error in your program.'
  1527                              <1> stcause_3_stop  equ   $
  1528                              <1> 
  1529                              <1> stcause_len4        DB  stcause_4_stop-stcause_dos
  1530                              <1> stcause_dos         DB  'This is an error returned by the operating system (DOS).'
  1531                              <1> stcause_4_stop  equ   $
  1532                              <1> 
  1533                              <1> stcause_len5        DB  stcause_5_stop-stcause_possible
  1534                              <1> stcause_possible    DB  'This is possibly an error in your program.'
  1535                              <1> stcause_5_stop  equ   $
  1536                              <1> 
  1537                              <1> stcause_len6        DB  stcause_6_stop-stcause_library
  1538                              <1> stcause_library     DB  'This is an error in the library.'
  1539                              <1> stcause_6_stop  equ   $
  1540                              <1> 
  1541                              <1> stcause_len7        DB  stcause_7_stop-stcause_ems
  1542                              <1> stcause_ems         DB  'This is an error returned by the EMS expanded memory manager.'
  1543                              <1> stcause_7_stop  equ   $
  1544                              <1> 
  1545                              <1> stcause_len8        DB  stcause_8_stop-stcause_xms
  1546                              <1> stcause_xms         DB  'This is an error returned by the XMS extended memory manager.'
  1547                              <1> stcause_8_stop  equ   $
  1548                              <1> 
  1549                              <1> ;***********************************
  1550                              <1> ;* messages for possible solutions *
  1551                              <1> ;***********************************
  1552                              <1> 
  1553                              <1> ; first byte before message length first line is number of lines in solution
  1554                              <1> 
  1555                              <1> stsol_len0a         DB  2,stsol_0a_stop-stsol_contact
  1556                              <1> stsol_contact       DB  'Try to link using ',LINKER,' again.  If the error recurs,'
  1557                              <1> stsol_0a_stop   equ   $
  1558                              <1> stsol_len0b         DB  stsol_0b_stop-stsol_contact1
  1559                              <1> stsol_contact1      DB  'carefully note the conditions and contact tech support.'
  1560                              <1> stsol_0b_stop   equ   $
  1561                              <1> 
  1562                              <1> %IFNDEF JUNIOR
  1563                              <1> stsol_len1a         DB  2,stsol_1a_stop-stsol_bal_paren
  1564                              <1> stsol_bal_paren     DB  'Correct the command line syntax to properly match the'
  1565                              <1> stsol_1a_stop   equ   $
  1566                              <1> stsol_len1b         DB  stsol_1b_stop-stsol_bal_paren1
  1567                              <1> stsol_bal_paren1    DB  'parenthesis or bracket for overlays.'
  1568                              <1> stsol_1b_stop   equ   $
  1569                              <1> 
  1570                              <1> stsol_len3a         DB  2,stsol_3a_stop-stsol_nest_paren
  1571                              <1> stsol_nest_paren    DB  'Remove or match the second left parenthesis or bracket'
  1572                              <1> stsol_3a_stop   equ   $
  1573                              <1> stsol_len3b         DB  stsol_3b_stop-stsol_nest_paren2
  1574                              <1> stsol_nest_paren2   DB  'in a row that comes before a right parenthesis or bracket.'
  1575                              <1> stsol_3b_stop   equ   $
  1576                              <1> %ENDIF
  1577                              <1> 
  1578                              <1> stsol_len5          DB  1,stsol_5_stop-stsol_bad_option
  1579                              <1> stsol_bad_option    DB  'Remove or correct the ',LINKER,' option in the link syntax.'
  1580                              <1> stsol_5_stop    equ   $
  1581                              <1> 
  1582                              <1> stsol_len6a         DB  3,stsol_6a_stop-stsol_bad_rec
  1583                              <1> stsol_bad_rec       DB  'Recreate the module by recompiling or reassembling.'
  1584                              <1> stsol_6a_stop   equ   $
  1585                              <1> stsol_len6b         DB  stsol_6b_stop-stsol_bad_rec2
  1586                              <1> stsol_bad_rec2      DB  'If the error recurs, report it to the company that wrote'
  1587                              <1> stsol_6b_stop   equ   $
  1588                              <1> stsol_len6c         DB  stsol_6c_stop-stsol_bad_rec3
  1589                              <1> stsol_bad_rec3      DB  'the software or supplied the module.'
  1590                              <1> stsol_6c_stop   equ   $
  1591                              <1> 
  1592                              <1> stsol_len7a         DB  3,stsol_7a_stop-stsol_unexpect_eof
  1593                              <1> stsol_unexpect_eof  DB  'The file ended before the end of a record was reached.'
  1594                              <1> stsol_7a_stop   equ   $
  1595                              <1> stsol_len7b         DB  stsol_7b_stop-stsol_unexpect_eof2
  1596                              <1> stsol_unexpect_eof2     DB  'This is usually due to file truncation caused by DOS error or'
  1597                              <1> stsol_7b_stop   equ   $
  1598                              <1> stsol_len7c         DB  stsol_7c_stop-stsol_unexpect_eof3
  1599                              <1> stsol_unexpect_eof3     DB  'system reset.  Recreate the module and relink.'
  1600                              <1> stsol_7c_stop   equ   $
  1601                              <1> 
  1602                              <1> stsol_len8a         DB  3,stsol_8a_stop-stsol_seglen
  1603                              <1> stsol_seglen        DB  'A segment contained more than 65,535 bytes of code or data.'
  1604                              <1> stsol_8a_stop   equ   $
  1605                              <1> stsol_len8b         DB  stsol_8b_stop-stsol_seglen2
  1606                              <1> stsol_seglen2       DB  'Break the segment into smaller segments or otherwise reduce'
  1607                              <1> stsol_8b_stop   equ   $
  1608                              <1> stsol_len8c         DB  stsol_8c_stop-stsol_seglen3
  1609                              <1> stsol_seglen3       DB  'the size of the segment, possibly by changing memory models.'
  1610                              <1> stsol_8c_stop   equ   $
  1611                              <1> 
  1612                              <1> stsol_len9          DB  1,stsol_9_stop-stsol_no_objmod
  1613                              <1> stsol_no_objmod     DB  'Supply the name of at least one object module in the link syntax.'
  1614                              <1> stsol_9_stop    equ   $
  1615                              <1> 
  1616                              <1> stsol_len10a        DB  2,stsol_10a_stop-stsol_stack_size
  1617                              <1> stsol_stack_size    DB  'The stack segment cannot be larger than 65,534 bytes.'
  1618                              <1> stsol_10a_stop  equ   $
  1619                              <1> stsol_len10b        DB  stsol_10b_stop-stsol_stack_size2
  1620                              <1> stsol_stack_size2   DB  'Reduce the amount of memory allocated to the stack.'
  1621                              <1> stsol_10b_stop  equ   $
  1622                              <1> 
  1623                              <1> stsol_len11a        DB  2,stsol_11a_stop-stsol_com_stack
  1624                              <1> stsol_com_stack     DB  'COM files cannot have a stack segment.'
  1625                              <1> stsol_11a_stop  equ   $
  1626                              <1> stsol_len11b        DB  stsol_11b_stop-stsol_com_stack2
  1627                              <1> stsol_com_stack2    DB  'Remove the stack segment or use EXE file format.'
  1628                              <1> stsol_11b_stop  equ   $
  1629                              <1> 
  1630                              <1> stsol_len12a        DB  2,stsol_12a_stop-stsol_com_fixup
  1631                              <1> stsol_com_fixup     DB  'COM files cannot have segment-relative fixups.'
  1632                              <1> stsol_12a_stop  equ   $
  1633                              <1> stsol_len12b        DB  stsol_12b_stop-stsol_com_fixup2
  1634                              <1> stsol_com_fixup2    DB  'Use the EXE file format for your program.'
  1635                              <1> stsol_12b_stop  equ   $
  1636                              <1> 
  1637                              <1> stsol_len13a        DB  2,stsol_13a_stop-stsol_com_size
  1638                              <1> stsol_com_size      DB  'COM files cannot be larger than 65536 bytes.'
  1639                              <1> stsol_13a_stop  equ   $
  1640                              <1> stsol_len13b        DB  stsol_13b_stop-stsol_com_size2
  1641                              <1> stsol_com_size2     DB  'Use the EXE file format for your program.'
  1642                              <1> stsol_13b_stop  equ   $
  1643                              <1> 
  1644                              <1> stsol_len14a        DB  2,stsol_14a_stop-stsol_extdef_count
  1645                              <1> stsol_extdef_count  DB  'Modules cannot contain more that 1023 external names.'
  1646                              <1> stsol_14a_stop  equ   $
  1647                              <1> stsol_len14b        DB  stsol_14b_stop-stsol_extdef_count
  1648                              <1> stsol_extdef_count2 DB  'Remove some of the external references in the module.'
  1649                              <1> stsol_14b_stop  equ   $
  1650                              <1> 
  1651                              <1> stsol_len15a        DB  3,stsol_15a_stop-stsol_rel_count
  1652                              <1> stsol_rel_count     DB  'Your program cannot contain a total of more than 32768'
  1653                              <1> stsol_15a_stop  equ   $
  1654                              <1> stsol_len15b        DB  stsol_15b_stop-stsol_rel_count2
  1655                              <1> stsol_rel_count2    DB  'far calls, far jumps, or other far pointers. Remove or'
  1656                              <1> stsol_15b_stop  equ   $
  1657                              <1> stsol_len15c        DB  stsol_15c_stop-stsol_rel_count3
  1658                              <1> stsol_rel_count3    DB  'replace some far references with near references.'
  1659                              <1> stsol_15c_stop  equ   $
  1660                              <1> 
  1661                              <1> stsol_len16a        DB  2,stsol_16a_stop-stsol_rsp_line
  1662                              <1> stsol_rsp_line      DB  'Break the line in the response file into two lines.'
  1663                              <1> stsol_16a_stop  equ   $
  1664                              <1> stsol_len16b        DB  stsol_16b_stop-stsol_rsp_line2
  1665                              <1> stsol_rsp_line2     DB  "Place a '+' at the end of the first line to continue it."
  1666                              <1> stsol_16b_stop  equ   $
  1667                              <1> 
  1668                              <1> stsol_len17a        DB  2,stsol_17a_stop-stsol_rsp_nest
  1669                              <1> stsol_rsp_nest      DB  'A response file cannot be called from within another'
  1670                              <1> stsol_17a_stop  equ   $
  1671                              <1> stsol_len17b        DB  stsol_17b_stop-stsol_rsp_nest2
  1672                              <1> stsol_rsp_nest2     DB  'response file.  Remove the nested response file.'
  1673                              <1> stsol_17b_stop  equ   $
  1674                              <1> 
  1675                              <1> stsol_len18a        DB  2,stsol_18a_stop-stsol_filefnd
  1676                              <1> stsol_filefnd       DB  'This file could not be found.  Check that you have'
  1677                              <1> stsol_18a_stop  equ   $
  1678                              <1> stsol_len18b        DB  stsol_18b_stop-stsol_filefnd2
  1679                              <1> stsol_filefnd2      DB  'typed the name and path of the file correctly.'
  1680                              <1> stsol_18b_stop  equ   $
  1681                              <1> 
  1682                              <1> stsol_len19a        DB  3,stsol_19a_stop-stsol_outhand
  1683                              <1> stsol_outhand       DB  'Too many files are open at once.  Change the FILES='
  1684                              <1> stsol_19a_stop  equ   $
  1685                              <1> stsol_len19b        DB  stsol_19b_stop-stsol_outhand2
  1686                              <1> stsol_outhand2      DB  'statement in your CONFIG.SYS file to allow more files'
  1687                              <1> stsol_19b_stop  equ   $
  1688                              <1> stsol_len19c        DB  stsol_19c_stop-stsol_outhand3
  1689                              <1> stsol_outhand3      DB  'to be open at one time.'
  1690                              <1> stsol_19c_stop  equ   $
  1691                              <1> 
  1692                              <1> stsol_len20a        DB  3,stsol_20a_stop-stsol_accden
  1693                              <1> stsol_accden        DB  'Access to this file was denied by DOS.  Change the'
  1694                              <1> stsol_20a_stop  equ   $
  1695                              <1> stsol_len20b        DB  stsol_20b_stop-stsol_accden2
  1696                              <1> stsol_accden2       DB  'file attributes to allow ',LINKER,' to properly use'
  1697                              <1> stsol_20b_stop  equ   $
  1698                              <1> stsol_len20c        DB  stsol_20c_stop-stsol_accden3
  1699                              <1> stsol_accden3       DB  'the file.'
  1700                              <1> stsol_20c_stop  equ   $
  1701                              <1> 
  1702                              <1> stsol_len21a        DB  3,stsol_21a_stop-stsol_mem
  1703                              <1> stsol_mem           DB  'There is no more memory available for ',LINKER,' to use.'
  1704                              <1> stsol_21a_stop  equ   $
  1705                              <1> stsol_len21b        DB  stsol_21b_stop-stsol_mem2
  1706                              <1> stsol_mem2          DB  'Reduce the memory in use by removing memory resident'
  1707                              <1> stsol_21b_stop  equ   $
  1708                              <1> stsol_len21c        DB  stsol_21c_stop-stsol_mem3
  1709                              <1> stsol_mem3          DB  'programs or device drivers.'
  1710                              <1> stsol_21c_stop  equ   $
  1711                              <1> 
  1712                              <1> stsol_len22a        DB  3,stsol_22a_stop-stsol_nostack
  1713                              <1> stsol_nostack       DB  'An EXE file, unlike a COM file, must internally setup'
  1714                              <1> stsol_22a_stop  equ   $
  1715                              <1> stsol_len22b        DB  stsol_22b_stop-stsol_nostack2
  1716                              <1> stsol_nostack2      DB  'its own stack if it has no stack segment.  To create a'
  1717                              <1> stsol_22b_stop  equ   $
  1718                              <1> stsol_len22c        DB  stsol_22c_stop-stsol_nostack3
  1719                              <1> stsol_nostack3      DB  'COM file, use the /c option of ',LINKER,'.'
  1720                              <1> stsol_22c_stop  equ   $
  1721                              <1> 
  1722                              <1> stsol_len23a        DB  3,stsol_23a_stop-stsol_unres
  1723                              <1> stsol_unres         DB  'A symbol was declared as external in one or more'
  1724                              <1> stsol_23a_stop  equ   $
  1725                              <1> stsol_len23b        DB  stsol_23b_stop-stsol_unres2
  1726                              <1> stsol_unres2        DB  'modules, but not publicly defined in any other module.'
  1727                              <1> stsol_23b_stop  equ   $
  1728                              <1> stsol_len23c        DB  stsol_23c_stop-stsol_unres3
  1729                              <1> stsol_unres3        DB  'Remove or publicly define the symbol.'
  1730                              <1> stsol_23c_stop  equ   $
  1731                              <1> 
  1732                              <1> stsol_len24a        DB  2,stsol_24a_stop-stsol_multsym
  1733                              <1> stsol_multsym       DB  'A symbol should not have more than one definition.'
  1734                              <1> stsol_24a_stop  equ   $
  1735                              <1> stsol_len24b        DB  stsol_24b_stop-stsol_multsym2
  1736                              <1> stsol_multsym2      DB  'Remove the extra definition from your program.'
  1737                              <1> stsol_24b_stop  equ   $
  1738                              <1> 
  1739                              <1> stsol_len25a        DB  5,stsol_25a_stop-stsol_fixup
  1740                              <1> stsol_fixup         DB  'A group was larger than 64 KiB or the program contains a'
  1741                              <1> stsol_25a_stop  equ   $
  1742                              <1> stsol_len25b        DB  stsol_25b_stop-stsol_fixup2
  1743                              <1> stsol_fixup2        DB  'near or short jump or call between different segments'
  1744                              <1> stsol_25b_stop  equ   $
  1745                              <1> stsol_len25c        DB  stsol_25c_stop-stsol_fixup3
  1746                              <1> stsol_fixup3        DB  'or the name of a routine and a data item are the same.'
  1747                              <1> stsol_25c_stop  equ   $
  1748                              <1> stsol_len25d        DB  stsol_25d_stop-stsol_fixup4
  1749                              <1> stsol_fixup4        DB  'Adjust the group size, or remove the intersegment near'
  1750                              <1> stsol_25d_stop  equ   $
  1751                              <1> stsol_len25e        DB  stsol_25e_stop-stsol_fixup5
  1752                              <1> stsol_fixup5        DB  'jump or call, or change the data item.'
  1753                              <1> stsol_25e_stop  equ   $
  1754                              <1> 
  1755                              <1> stsol_len26a        DB  2,stsol_26a_stop-stsol_segdecl
  1756                              <1> stsol_segdecl       DB  'A segment can only be a member of one group.  Remove its'
  1757                              <1> stsol_26a_stop  equ   $
  1758                              <1> stsol_len26b        DB  stsol_26b_stop-stsol_segdecl2
  1759                              <1> stsol_segdecl2      DB  'declaration(s) in the other group(s).'
  1760                              <1> stsol_26b_stop  equ   $
  1761                              <1> 
  1762                              <1> stsol_len27a        DB  3,stsol_27a_stop-stsol_com_entry
  1763                              <1> stsol_com_entry     DB  'COM files must have a starting address of 100h.'
  1764                              <1> stsol_27a_stop  equ   $
  1765                              <1> stsol_len27b        DB  stsol_27b_stop-stsol_com_entry2
  1766                              <1> stsol_com_entry2    DB  'Change the starting address to 100h or use the'
  1767                              <1> stsol_27b_stop  equ   $
  1768                              <1> stsol_len27c        DB  stsol_27c_stop-stsol_com_entry3
  1769                              <1> stsol_com_entry3    DB  'EXE file format for your program.'
  1770                              <1> stsol_27c_stop  equ   $
  1771                              <1> 
  1772                              <1> stsol_len28a        DB  1,stsol_28a_stop-stsol_libform
  1773                              <1> stsol_libform       DB  'Use only standard Microsoft-compatible libraries.'
  1774                              <1> stsol_28a_stop  equ   $
  1775                              <1> 
  1776                              <1> stsol_len29a        DB  3,stsol_29a_stop-stsol_comm_ovr
  1777                              <1> stsol_comm_ovr      DB  'A communal variable was too large.  Either reduce the'
  1778                              <1> stsol_29a_stop  equ   $
  1779                              <1> stsol_len29b        DB  stsol_29b_stop-stsol_comm_ovr2
  1780                              <1> stsol_comm_ovr2     DB  'size of the variable, or if a near communal variable,'
  1781                              <1> stsol_29b_stop  equ   $
  1782                              <1> stsol_len29c        DB  stsol_29c_stop-stsol_comm_ovr3
  1783                              <1> stsol_comm_ovr3     DB  'change it to a far communal variable.'
  1784                              <1> stsol_29c_stop  equ   $
  1785                              <1> 
  1786                              <1> stsol_len30a        DB  3,stsol_30a_stop-stsol_defseg_ovr
  1787                              <1> stsol_defseg_ovr    DB  'The total size of near communal variables caused the'
  1788                              <1> stsol_30a_stop  equ   $
  1789                              <1> stsol_len30b        DB  stsol_30b_stop-stsol_defseg_ovr2
  1790                              <1> stsol_defseg_ovr2   DB  'default data segment to exceed 64 KiB.  Remove or change'
  1791                              <1> stsol_30b_stop  equ   $
  1792                              <1> stsol_len30c        DB  stsol_30c_stop-stsol_defseg_ovr3
  1793                              <1> stsol_defseg_ovr3   DB  'some of the near communal variables to far variables.'
  1794                              <1> stsol_30c_stop  equ   $
  1795                              <1> 
  1796                              <1> stsol_len31a        DB  3,stsol_31a_stop-stsol_diskfull
  1797                              <1> stsol_diskfull      DB  'There is not enough room on the disk to write the'
  1798                              <1> stsol_31a_stop  equ   $
  1799                              <1> stsol_len31b        DB  stsol_31b_stop-stsol_diskfull2
  1800                              <1> stsol_diskfull2     DB  'executable file.  Either free up disk space by deleting'
  1801                              <1> stsol_31b_stop  equ   $
  1802                              <1> stsol_len31c        DB  stsol_31c_stop-stsol_diskfull3
  1803                              <1> stsol_diskfull3     DB  'unnecessary files or use a different disk.'
  1804                              <1> stsol_31c_stop  equ   $
  1805                              <1> 
  1806                              <1> stsol_len32a        DB  3,stsol_32a_stop-stsol_tmpfull
  1807                              <1> stsol_tmpfull       DB  'There is not enough room for the temporary file on the'
  1808                              <1> stsol_32a_stop  equ   $
  1809                              <1> stsol_len32b        DB  stsol_32b_stop-stsol_tmpfull2
  1810                              <1> stsol_tmpfull2      DB  'disk specified by the TMP environment variable.  Free'
  1811                              <1> stsol_32b_stop  equ   $
  1812                              <1> stsol_len32c        DB  stsol_32c_stop-stsol_tmpfull3
  1813                              <1> stsol_tmpfull3      DB  'up space on the disk or specify a different disk.'
  1814                              <1> stsol_32c_stop  equ   $
  1815                              <1> 
  1816                              <1> %IFNDEF JUNIOR
  1817                              <1> 
  1818                              <1> stsol_len33a        DB  4,stsol_33a_stop-stsol_ovlseglen
  1819                              <1> stsol_ovlseglen     DB  'An overlaid segment has increased in size beyond 64 KiB'
  1820                              <1> stsol_33a_stop  equ   $
  1821                              <1> stsol_len33b        DB  stsol_33b_stop-stsol_ovlseglen2
  1822                              <1> stsol_ovlseglen2    DB  'due to overlay manager allocations.  Break the overlaid'
  1823                              <1> stsol_33b_stop  equ   $
  1824                              <1> stsol_len33c        DB  stsol_33c_stop-stsol_ovlseglen3
  1825                              <1> stsol_ovlseglen3    DB  'module into smaller modules or move some code into'
  1826                              <1> stsol_33c_stop  equ   $
  1827                              <1> stsol_len33d        DB  stsol_33d_stop-stsol_ovlseglen4
  1828                              <1> stsol_ovlseglen4    DB  'another segment.'
  1829                              <1> stsol_33d_stop  equ   $
  1830                              <1> 
  1831                              <1> stsol_len34a        DB  3,stsol_34a_stop-stsol_rootseglen
  1832                              <1> stsol_rootseglen    DB  'A root segment of overlay class has increased in size'
  1833                              <1> stsol_34a_stop  equ   $
  1834                              <1> stsol_len34b        DB  stsol_34b_stop-stsol_rootseglen2
  1835                              <1> stsol_rootseglen2   DB  'beyond 64 KiB due to overlay manager allocations.  Reduce'
  1836                              <1> stsol_34b_stop  equ   $
  1837                              <1> stsol_len34c        DB  stsol_34c_stop-stsol_rootseglen3
  1838                              <1> stsol_rootseglen3   DB  'the segment size by placing some code in another segment.'
  1839                              <1> stsol_34c_stop  equ   $
  1840                              <1> 
  1841                              <1> stsol_len35a        DB  3,stsol_35a_stop-stsol_ovlmax
  1842                              <1> stsol_ovlmax        DB  'There are too many overlaid segments in the program.'
  1843                              <1> stsol_35a_stop  equ   $
  1844                              <1> stsol_len35b        DB  stsol_35b_stop-stsol_ovlmax2
  1845                              <1> stsol_ovlmax2       DB  'Combine some segments or remove one or more libraries'
  1846                              <1> stsol_35b_stop  equ   $
  1847                              <1> stsol_len35c        DB  stsol_35c_stop-stsol_ovlmax3
  1848                              <1> stsol_ovlmax3       DB  'or object modules from overlays.'
  1849                              <1> stsol_35c_stop  equ   $
  1850                              <1> 
  1851                              <1> stsol_len36a        DB  3,stsol_36a_stop-stsol_ovlcom
  1852                              <1> stsol_ovlcom        DB  'You cannot use overlays with COM files.  Either remove'
  1853                              <1> stsol_36a_stop  equ   $
  1854                              <1> stsol_len36b        DB  stsol_36b_stop-stsol_ovlcom2
  1855                              <1> stsol_ovlcom2       DB  'the /c option and use an EXE file, or remove the'
  1856                              <1> stsol_36b_stop  equ   $
  1857                              <1> stsol_len36c        DB  stsol_36c_stop-stsol_ovlcom3
  1858                              <1> stsol_ovlcom3       DB  'parentheses that specify overlay use.'
  1859                              <1> stsol_36c_stop  equ   $
  1860                              <1> 
  1861                              <1> stsol_len37a        DB  2,stsol_37a_stop-stsol_ovlpub
  1862                              <1> stsol_ovlpub        DB  'There are too many global labels or symbols in overlays.'
  1863                              <1> stsol_37a_stop  equ   $
  1864                              <1> stsol_len37b        DB  stsol_37b_stop-stsol_ovlpub2
  1865                              <1> stsol_ovlpub2       DB  'Decrease the number of global overlaid symbols.'
  1866                              <1> stsol_37b_stop  equ   $
  1867                              <1> 
  1868                              <1> stsol_len38a        DB  3,stsol_38a_stop-stsol_missing
  1869                              <1> stsol_missing       DB  'When overlays are specified in the link syntax, the'
  1870                              <1> stsol_38a_stop  equ   $
  1871                              <1> stsol_len38b        DB  stsol_38b_stop-stsol_missing2
  1872                              <1> stsol_missing2      DB  'proper version of the overlay manager module must be'
  1873                              <1> stsol_38b_stop  equ   $
  1874                              <1> stsol_len38c        DB  stsol_38c_stop-stsol_missing3
  1875                              <1> stsol_missing3      DB  'included in the object file list.'
  1876                              <1> stsol_38c_stop  equ   $
  1877                              <1> 
  1878                              <1> stsol_len39a        DB  3,stsol_39a_stop-stsol_ovlmodpub
  1879                              <1> stsol_ovlmodpub     DB  'There are too many public symbols of overlay class'
  1880                              <1> stsol_39a_stop  equ   $
  1881                              <1> stsol_len39b        DB  stsol_39b_stop-stsol_ovlmodpub2
  1882                              <1> stsol_ovlmodpub2    DB  'used in an overlaid segment.  Decrease the count'
  1883                              <1> stsol_39b_stop  equ   $
  1884                              <1> stsol_len39c        DB  stsol_39c_stop-stsol_ovlmodpub3
  1885                              <1> stsol_ovlmodpub3    DB  'of public symbols or split up the module.'
  1886                              <1> stsol_39c_stop  equ   $
  1887                              <1> 
  1888                              <1> stsol_len40a        DB  5,stsol_40a_stop-stsol_nonovlsegsym
  1889                              <1> stsol_nonovlsegsym  DB  'A segment or symbol that was either overlaid or accessed'
  1890                              <1> stsol_40a_stop  equ   $
  1891                              <1> stsol_len40b        DB  stsol_40b_stop-stsol_nonovlsegsym2
  1892                              <1> stsol_nonovlsegsym2 DB  'from an overlay was referenced in a manner incompatible'
  1893                              <1> stsol_40b_stop  equ   $
  1894                              <1> stsol_len40c        DB  stsol_40c_stop-stsol_nonovlsegsym3
  1895                              <1> stsol_nonovlsegsym3 DB  'with the overlay manager.  To ensure proper program'
  1896                              <1> stsol_40c_stop  equ   $
  1897                              <1> stsol_len40d        DB  stsol_40d_stop-stsol_nonovlsegsym4
  1898                              <1> stsol_nonovlsegsym4 DB  'operation, remove the segment or symbol from an overlay'
  1899                              <1> stsol_40d_stop  equ   $
  1900                              <1> stsol_len40e        DB  stsol_40e_stop-stsol_nonovlsegsym5
  1901                              <1> stsol_nonovlsegsym5 DB  'or change the reference to it.'
  1902                              <1> stsol_40e_stop  equ   $
  1903                              <1> 
  1904                              <1> stsol_len41a        DB  6,stsol_41a_stop-stsol_noncont
  1905                              <1> stsol_noncont       DB  'An overlaid module alternated code in an overlay class'
  1906                              <1> stsol_41a_stop  equ   $
  1907                              <1> stsol_len41b        DB  stsol_41b_stop-stsol_noncont2
  1908                              <1> stsol_noncont2      DB  'segment with code or data from a different segment.  All'
  1909                              <1> stsol_41b_stop  equ   $
  1910                              <1> stsol_len41c        DB  stsol_41c_stop-stsol_noncont3
  1911                              <1> stsol_noncont3      DB  'overlay class segment code within a module must be'
  1912                              <1> stsol_41c_stop  equ   $
  1913                              <1> stsol_len41d        DB  stsol_41d_stop-stsol_noncont4
  1914                              <1> stsol_noncont4      DB  'declared in one place.  It cannot be split between any'
  1915                              <1> stsol_41d_stop  equ   $
  1916                              <1> stsol_len41e        DB  stsol_41e_stop-stsol_noncont5
  1917                              <1> stsol_noncont5      DB  'other segments.  Remove the module from an overlay or'
  1918                              <1> stsol_41e_stop  equ   $
  1919                              <1> stsol_len41f        DB  stsol_41f_stop-stsol_noncont6
  1920                              <1> stsol_noncont6      DB  'declare the code class segment in only one place.'
  1921                              <1> stsol_41f_stop  equ   $
  1922                              <1> 
  1923                              <1> stsol_len42a        DB  4,stsol_42a_stop-stsol_ems
  1924                              <1> stsol_ems           DB  'An error occurred when ',LINKER,' accessed expanded memory'
  1925                              <1> stsol_42a_stop  equ   $
  1926                              <1> stsol_len42b        DB  stsol_42b_stop-stsol_ems2
  1927                              <1> stsol_ems2          DB  '(EMS).  Check that your expanded memory manager supports'
  1928                              <1> stsol_42b_stop  equ   $
  1929                              <1> stsol_len42c        DB  stsol_42c_stop-stsol_ems3
  1930                              <1> stsol_ems3          DB  'EMS 3.2 or greater and is working correctly, or turn off use'
  1931                              <1> stsol_42c_stop  equ   $
  1932                              <1> stsol_len42d        DB  stsol_42d_stop-stsol_ems4
  1933                              <1> stsol_ems4          DB  'of EMS when linking by removing the /xp option.'
  1934                              <1> stsol_42d_stop  equ   $
  1935                              <1> 
  1936                              <1> stsol_len43a        DB  4,stsol_43a_stop-stsol_xms
  1937                              <1> stsol_xms           DB  'An error occurred when ',LINKER,' accessed extended memory'
  1938                              <1> stsol_43a_stop  equ   $
  1939                              <1> stsol_len43b        DB  stsol_43b_stop-stsol_xms2
  1940                              <1> stsol_xms2          DB  '(XMS).  Check that your extended memory manager is working'
  1941                              <1> stsol_43b_stop  equ   $
  1942                              <1> stsol_len43c        DB  stsol_43c_stop-stsol_xms3
  1943                              <1> stsol_xms3          DB  'correctly or turn off use of XMS when linking by removing'
  1944                              <1> stsol_43c_stop  equ   $
  1945                              <1> stsol_len43d        DB  stsol_43d_stop-stsol_xms4
  1946                              <1> stsol_xms4          DB  'the /xt option.'
  1947                              <1> stsol_43d_stop  equ   $
  1948                              <1> 
  1949                              <1> stsol_len44a        DB  3,stsol_44a_stop-stsol_comcon
  1950                              <1> stsol_comcon        DB  'You cannot specify the /c (create COM file) option when'
  1951                              <1> stsol_44a_stop  equ   $
  1952                              <1> stsol_len44b        DB  stsol_44b_stop-stsol_comcon2
  1953                              <1> stsol_comcon2       DB  'using the /ddl or /udl (dynamic library) options.  Remove'
  1954                              <1> stsol_44b_stop  equ   $
  1955                              <1> stsol_len44c        DB  stsol_44c_stop-stsol_comcon3
  1956                              <1> stsol_comcon3       DB  'the /c option or do not use dynamic libraries.'
  1957                              <1> stsol_44c_stop  equ   $
  1958                              <1> 
  1959                              <1> stsol_len45a        DB  2,stsol_45a_stop-stsol_ddlmod
  1960                              <1> stsol_ddlmod        DB  'The number of modules in the DDL file cannot exceed 1024.'
  1961                              <1> stsol_45a_stop  equ   $
  1962                              <1> stsol_len45b        DB  stsol_45b_stop-stsol_ddlmod2
  1963                              <1> stsol_ddlmod2       DB  'Remove some of the modules specified for the DDL file.'
  1964                              <1> stsol_45b_stop  equ   $
  1965                              <1> 
  1966                              <1> stsol_len46a        DB  5,stsol_46a_stop-stsol_symtok
  1967                              <1> stsol_symtok        DB  'During symbol table compression a bad symbol token was'
  1968                              <1> stsol_46a_stop  equ   $
  1969                              <1> stsol_len46b        DB  stsol_46b_stop-stsol_symtok2
  1970                              <1> stsol_symtok2       DB  'encountered.  Check that you are not mixing different'
  1971                              <1> stsol_46b_stop  equ   $
  1972                              <1> stsol_len46c        DB  stsol_46c_stop-stsol_symtok3
  1973                              <1> stsol_symtok3       DB  'versions of Clipper modules or do not have a corrupted'
  1974                              <1> stsol_46c_stop  equ   $
  1975                              <1> stsol_len46d        DB  stsol_46d_stop-stsol_symtok4
  1976                              <1> stsol_symtok4       DB  'module.  If not, and the program works without the /sp'
  1977                              <1> stsol_46d_stop  equ   $
  1978                              <1> stsol_len46e        DB  stsol_46e_stop-stsol_symtok5
  1979                              <1> stsol_symtok5       DB  'option, note the conditions and contact tech support.'
  1980                              <1> stsol_46e_stop  equ   $
  1981                              <1> 
  1982                              <1> stsol_len75a        DB  2,stsol_75a_stop-stsol_wlcalc
  1983                              <1> stsol_wlcalc        DB  'A post-link calculation attempt was detected.  However,'
  1984                              <1> stsol_75a_stop  equ   $
  1985                              <1> stsol_len75b        DB  stsol_75b_stop-stsol_wlcalc2
  1986                              <1> stsol_wlcalc2       DB  'the requested calculation was not recognised.'
  1987                              <1> stsol_75b_stop  equ   $
  1988                              <1> 
  1989                              <1> stsol_len76a        DB  2,stsol_76a_stop-stsol_wlcalc_overflow
  1990                              <1> stsol_wlcalc_overflow        DB  'A post-link calculation attempt was detected.  However,'
  1991                              <1> stsol_76a_stop  equ   $
  1992                              <1> stsol_len76b        DB  stsol_76b_stop-stsol_wlcalc_overflow2
  1993                              <1> stsol_wlcalc_overflow2       DB  'the requested calculation had an overflow.'
  1994                              <1> stsol_76b_stop  equ   $
  1995                              <1> 
  1996                              <1> stsol_len77a        DB  2,stsol_77a_stop-stsol_wllist
  1997                              <1> stsol_wllist        DB  'A linker patch list request was detected.  However,'
  1998                              <1> stsol_77a_stop  equ   $
  1999                              <1> stsol_len77b        DB  stsol_77b_stop-stsol_wllist2
  2000                              <1> stsol_wllist2       DB  'the requested list is invalid.'
  2001                              <1> stsol_77b_stop  equ   $
  2002                              <1> 
  2003                              <1> 		db 4
  2004                              <1> 		db @FF - @F
  2005                              <1> stsol_prefix:
  2006                              <1> @@:		db "A COM file was requested using the /C option without the"
  2007                              <1> @@:
  2008                              <1> 		db @FF - @F
  2009                              <1> @@:		db "/CZ option.  This means that the prefix formed by the"
  2010                              <1> @@:
  2011                              <1> 		db @FF - @F
  2012                              <1> @@:		db "first 256 bytes of the executable image should be cut."
  2013                              <1> @@:
  2014                              <1> 		db @FF - @F
  2015                              <1> @@:		db "However, this prefix is neither all-zeroes nor all NOPs."
  2016                              <1> @@:
  2017                              <1> 
  2018                              <1> 		db 2
  2019                              <1> 		db @FF - @F
  2020                              <1> stsol_shortread:
  2021                              <1> @@:		db "An expected file read failed to read enough data.  This"
  2022                              <1> @@:
  2023                              <1> 		db @FF - @F
  2024                              <1> @@:		db "is an unexpected condition, likely an internal error."
  2025                              <1> @@:
  2026                              <1> 
  2027                              <1> 		db 3
  2028                              <1> 		db @FF - @F
  2029                              <1> stsol_multi:
  2030                              <1> @@:		db "Only a single object file should define an entrypoint."
  2031                              <1> @@:
  2032                              <1> 		db @FF - @F
  2033                              <1> @@:		db "Multiple object files defining an entrypoint is likely"
  2034                              <1> @@:
  2035                              <1> 		db @FF - @F
  2036                              <1> @@:		db "in error.  The subsequent entrypoints are ignored."
  2037                              <1> @@:
  2038                              <1> 
  2039                              <1> %ENDIF
  2040                              <1> 
  2041                              <1> %ENDIF
  2042                              <1> 
  2043                              <1> %undef OR
    32                                  
    33                                  segment STACK
    34 00000000 <res 400h>              	resb 400h
    35                                  
    36                                  ;*****************************
    37                                  ;* Public declarations       *
    38                                  ;*****************************
    39                                  
    40                                  PUBLIC  exit_link
    41                                  
    42                                  ;*****************************
    43                                  ;* Data begins               *
    44                                  ;*****************************
    45                                  
    46                                  .DATA
    47                                  
    48                                  ;*****************************
    49                                  ;* External declarations     *
    50                                  ;*****************************
    51                                  
    52                                  ; variables
    53                                  EXTRN   mod_alloc_base:WORD
    54                                  EXTRN	writing_qlk_flag:BYTE
    55                                  
    56                                  ;*****************************
    57                                  ;* Constant data             *
    58                                  ;*****************************
    59                                  
    60                                  .CONST
    61                                  
    62 00000000 070707                  beep3   DB  BELL,BELL,BELL
    63                                  
    64 00000003 15                      stpass_len      DB  stpass_stop-stpass_text
    65 00000004 0D0A2A2A2A20537461-     stpass_text     DB  CR,LF,'*** Start of pass '
    65 0000000D 7274206F6620706173-
    65 00000016 7320               
    66 00000018 31                      stpass_num      DB  '1'
    67                                  stpass_stop     equ   $
    68                                  
    69 00000019 13                      endpass_len     DB  endpass_stop-endpass_text
    70 0000001A 0D0A2A2A2A20456E64-     endpass_text    DB  CR,LF,'*** End of pass '
    70 00000023 206F66207061737320 
    71 0000002C 31                      endpass_num     DB  '1'
    72                                  endpass_stop    equ   $
    73                                  
    74                                  %IFNDEF DEMO
    75 0000002D 27                      ddlpass_len     DB  ddlpass_stop-ddlpass_text
    76 0000002E 0D0A2A2A2A20537461-     ddlpass_text    DB  CR,LF,'*** Start of main DDL processing pass'
    76 00000037 7274206F66206D6169-
    76 00000040 6E2044444C2070726F-
    76 00000049 63657373696E672070-
    76 00000052 617373             
    77                                  ddlpass_stop    equ   $
    78                                  %ENDIF
    79                                  
    80 00000055 12                      obj_len         DB  obj_stop-obj_text
    81 00000056 206F6E206F626A6563-     obj_text        DB  ' on object modules'
    81 0000005F 74206D6F64756C6573 
    82                                  obj_stop        equ   $
    83                                  
    84 00000068 13                      lib_len         DB  lib_stop-lib_text
    85 00000069 206F6E206C69627261-     lib_text        DB  ' on library modules'
    85 00000072 7279206D6F64756C65-
    85 0000007B 73                 
    86                                  lib_stop        equ   $
    87                                  
    88 0000007C 1B                      stwrite_len     DB  stwrite_stop-stwrite_text
    89 0000007D 0D0A2A2A2A20426567-     stwrite_text    DB  CR,LF,'*** Begin writing file(s)'
    89 00000086 696E2077726974696E-
    89 0000008F 672066696C65287329 
    90                                  stwrite_stop    equ   $
    91                                  
    92 00000098 19                      endwrite_len    DB  endwrite_stop-endwrite_text
    93 00000099 0D0A2A2A2A20456E64-     endwrite_text   DB  CR,LF,'*** End writing file(s)'
    93 000000A2 2077726974696E6720-
    93 000000AB 66696C65287329     
    94                                  endwrite_stop   equ   $
    95                                  
    96                                  ;*****************************
    97                                  ;* Code begins               *
    98                                  ;*****************************
    99                                  
   100                                  .CODE
   101                                  
   102                                  ;*****************************
   103                                  ;* External declarations     *
   104                                  ;*****************************
   105                                  
   106                                  EXTRN   setup:NEAR,getargs:NEAR,credits:NEAR,summary:NEAR
   107                                  EXTRN   get_memory:NEAR,free_memory:NEAR,parse:NEAR
   108                                  EXTRN   pass1:NEAR,proc1_libs:NEAR
   109                                  EXTRN   init_map:NEAR,setup_exe_image:NEAR,finish_map:NEAR
   110                                  EXTRN   pass2:NEAR,proc2_libs:NEAR,write_program:NEAR,cleanup:NEAR
   111                                  EXTRN   give_warn_count:NEAR,give_load_size:NEAR
   112                                  
   113                                  EXTRN   resolve_communals:NEAR
   114                                  ;*** EXTRN   show_unreferenced:NEAR
   115                                  EXTRN   ovl_entry_point:NEAR,do_incremental:NEAR
   116                                  EXTRN   ilf_rewind:NEAR,ilf_write_eof:NEAR,check_ems:NEAR
   117                                  EXTRN   alloc_ems_trans:NEAR,check_xms:NEAR
   118                                  EXTRN	check_qlk:NEAR,write_qlk_unres:NEAR
   119                                  
   120                                  %IFNDEF DEMO
   121                                  EXTRN   reinit_variables:NEAR
   122                                  EXTRN	ddl_save_libmod_entry:NEAR,proc_ddl:NEAR,create_ddl:NEAR
   123                                  %ENDIF
   124                                  
   125                                  ;*****************************
   126                                  ;* MAIN                      *
   127                                  ;*****************************
   128                                  
   129 00000000 00<rep 10h>             	times 16 db 0
   130                                  
   131                                  main        PROC
   132                                  ..start:
   133                                  start:
   134 00000010 E8(0000)                    call    setup           ; system changes, segment register setup, etc.
   135 00000013 E8(0000)                    call    getargs         ; get command line arguments from PSP
   136 00000016 E8(0000)                    call    credits         ; display linker credit line
   137 00000019 800E[0000]00                or  byte [is_args],0           ; check for arguments to linker
   138 0000001E 7506                        jne m2                  ; at least one argument
   139 00000020 E8(0000)                    call    summary         ; display summary of linker syntax/commands
   140                                  
   141                                  to_exit_1:
   142 00000023 E99401                      jmp NEAR PTR exit_1     ;   and exit program
   143                                  m2:
   144 00000026 E8(0000)                    call    get_memory      ; allocate memory for file buffers and control blocks
   145                                  
   146 00000029 A1[3824]                    mov ax,[allocation_base]
   147 0000002C A3[0000]                    mov [mod_alloc_base],ax   ; save base of allocations prior to any allocations
   148                                  
   149 0000002F E8(0000)                    call    parse           ; parse linker command line
   150 00000032 E8(0000)                    call    free_memory     ; de-allocate memory prior to new memory allocation
   151                                  
   152 00000035 E8(0000)                    call    check_ems       ; see if useable EMS
   153 00000038 E8(0000)                    call    check_xms       ; see if useable XMS
   154 0000003B 803E[5A00]00                cmp byte [is_clpinc],0         ; see if clipper incremental link flag set
   155 00000040 741C                        je  m3                  ; no
   156 00000042 E8(0000)                    call    do_incremental  ; do incremental link or setup if no ILF flag
   157 00000045 3C4E                        cmp al,'N'              ; check if should exit link (success or can't incremental link)
   158 00000047 74DA                    	je	to_exit_1			; yes
   159                                  
   160                                  ; incremental link failed, continuing with full link
   161                                  ; reparse options in case of library module
   162 00000049 A1[0000]                	mov	ax,[mod_alloc_base]
   163 0000004C A3[3824]                	mov	[allocation_base],ax	; reset memory allocation base
   164 0000004F E8(0000)                    call    get_memory		; allocate memory for file buffers and control blocks
   165 00000052 E8(0000)                    call    parse			; parse linker command line
   166 00000055 E8(0000)                    call    free_memory		; de-allocate memory prior to new memory allocation
   167 00000058 E8(0000)                    call    check_ems       ; see if useable EMS
   168 0000005B E8(0000)                    call    check_xms       ; see if useable XMS
   169                                  
   170                                  m3:
   171 0000005E E8(0000)                    call    get_memory      ; allocate memory for file buffers and control blocks
   172                                  
   173 00000061 E8(0000)                    call    alloc_ems_trans ; allocate EMS transfer buffer if necessary
   174                                  
   175                                  %IFNDEF DEMO
   176 00000064 A0[6800]                    mov al,[is_ddl]
   177 00000067 0A06[6A00]                  or  al,[use_ddl]          ; see if creating or using DDL
   178 0000006B A2[6C00]                    mov [any_ddl],al          ; save any DDL usage flag
   179 0000006E 7408                        je  m_nocreate          ; no
   180 00000070 C606[7400]00            	mov	byte [is_sympac],0			; no symbol table compaction with DDLs
   181 00000075 E8(0000)                    call    create_ddl      ; create the DDL
   182                                  %ENDIF
   183                                  
   184                                  m_nocreate:
   185 00000078 A1[3824]                    mov ax,[allocation_base]
   186 0000007B A3[0000]                    mov [mod_alloc_base],ax   ; save base of allocations prior to any module stuff
   187                                  
   188 0000007E 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   189 00000083 740C                        je  p1ostart            ; no
   190 00000085 BB[0400]                    mov bx,OFFSET stpass_text wrt DGROUP
   191 00000088 E87101                      call    print_info
   192 0000008B BB[5600]                    mov bx,OFFSET obj_text wrt DGROUP
   193 0000008E E86B01                      call    print_info
   194                                  
   195                                  p1ostart:
   196 00000091 E8(0000)                    call    pass1           ; perform first pass of linker
   197 00000094 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   198 00000099 7418                        je  p1oend              ; no
   199 0000009B BB[1A00]                    mov bx,OFFSET endpass_text wrt DGROUP
   200 0000009E E85B01                      call    print_info
   201 000000A1 BB[5600]                    mov bx,OFFSET obj_text wrt DGROUP
   202 000000A4 E85501                      call    print_info
   203 000000A7 BB[0400]                    mov bx,OFFSET stpass_text wrt DGROUP
   204 000000AA E84F01                      call    print_info
   205 000000AD BB[6900]                    mov bx,OFFSET lib_text wrt DGROUP
   206 000000B0 E84901                      call    print_info
   207                                  
   208                                  p1oend:
   209 000000B3 803E[7200]00            	cmp	byte [is_quick],0			; see if quick linking
   210 000000B8 7403                    	je	p1_p1lib			; yes
   211 000000BA E8(0000)                	call	check_qlk		; check quick link file
   212                                  
   213                                  p1_p1lib:
   214 000000BD E8(0000)                    call    proc1_libs      ; perform first pass library processing
   215 000000C0 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   216 000000C5 740C                        je  p1lend              ; no
   217 000000C7 BB[1A00]                    mov bx,OFFSET endpass_text wrt DGROUP
   218 000000CA E82F01                      call    print_info
   219 000000CD BB[6900]                    mov bx,OFFSET lib_text wrt DGROUP
   220 000000D0 E82901                      call    print_info
   221                                  
   222                                  p1lend:
   223 000000D3 B032                        mov al,'2'
   224 000000D5 A2[1800]                    mov [stpass_num],al       ; change pass number to 2
   225 000000D8 A2[2C00]                    mov [endpass_num],al
   226                                  
   227                                  %IFNDEF DEMO
   228 000000DB 803E[6C00]00                cmp byte [any_ddl],0           ; see if creating or using DDL
   229 000000E0 743B                        je  m4                  ; no
   230                                  
   231 000000E2 803E[5901]01                cmp byte [udl_proc_pass],1     ; see if processing UDL w/libs
   232 000000E7 752C                        jne no_udl              ; no
   233                                  
   234 000000E9 E8(0000)                    call    free_memory     ; de-allocate memory prior to new memory allocation
   235 000000EC FE06[5901]                  inc byte [udl_proc_pass]       ; bump flag to indicate UDL processing done
   236 000000F0 E8(0000)                    call    reinit_variables    ; reset the variables
   237 000000F3 C706[8800]0000              mov word [module_count],0      ; reinit module count
   238 000000F9 A1[0000]                    mov ax,[mod_alloc_base]
   239 000000FC A3[3824]                    mov [allocation_base],ax  ; restore base of allocations prior to any module stuff
   240 000000FF E8(0000)                    call    ddl_save_libmod_entry   ; save the library module entries in low memory
   241 00000102 E8(0000)                    call    get_memory      ; allocate memory for file buffers and control blocks
   242                                  
   243 00000105 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   244 0000010A 7485                        je  p1ostart            ; no
   245 0000010C BB[2E00]                    mov bx,OFFSET ddlpass_text wrt DGROUP
   246 0000010F E8EA00                      call    print_info
   247 00000112 E97CFF                      jmp NEAR PTR p1ostart      ; reloop and process as UDL
   248                                  
   249                                  no_udl:
   250 00000115 E8(0000)                    call    proc_ddl        ; finish processing the DDL
   251 00000118 30C0                        xor al,al               ; init return code to zero
   252 0000011A E9C200                      jmp NEAR PTR exit_link  ; done
   253                                  %ENDIF
   254                                  
   255                                  m4:
   256 0000011D E8(0000)                    call    resolve_communals   ; resolve communal variables if any, adjust segments
   257 00000120 E8(0000)                    call    free_memory     ; de-allocate memory prior to new memory allocation
   258                                  
   259 00000123 E8(0000)                    call    ilf_rewind      ; rewind ilf file if exists
   260                                  
   261 00000126 E8(0000)                    call    init_map        ; if map file, write header info
   262 00000129 E8(0000)                    call    setup_exe_image ; compute segment frame values and allocate disk/memory for executable image
   263                                  
   264 0000012C E8(0000)                    call    ilf_write_eof   ; write eof mark to ilf file, if exists
   265                                  
   266 0000012F E8(0000)                    call    get_memory      ; allocate memory for file buffers and control blocks
   267 00000132 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   268 00000137 740C                        je  p2ostart            ; no
   269 00000139 BB[0400]                    mov bx,OFFSET stpass_text wrt DGROUP
   270 0000013C E8BD00                      call    print_info
   271 0000013F BB[5600]                    mov bx,OFFSET obj_text wrt DGROUP
   272 00000142 E8B700                      call    print_info
   273                                  
   274                                  p2ostart:
   275 00000145 E8(0000)                    call    pass2           ; perform second pass of linker
   276 00000148 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   277 0000014D 7418                        je  p2oend              ; no
   278 0000014F BB[1A00]                    mov bx,OFFSET endpass_text wrt DGROUP
   279 00000152 E8A700                      call    print_info
   280 00000155 BB[5600]                    mov bx,OFFSET obj_text wrt DGROUP
   281 00000158 E8A100                      call    print_info
   282 0000015B BB[0400]                    mov bx,OFFSET stpass_text wrt DGROUP
   283 0000015E E89B00                      call    print_info
   284 00000161 BB[6900]                    mov bx,OFFSET lib_text wrt DGROUP
   285 00000164 E89500                      call    print_info
   286                                  
   287                                  p2oend:
   288 00000167 E8(0000)                    call    proc2_libs      ; perform second pass library processing
   289 0000016A 803E[0000]00            	cmp	byte [writing_qlk_flag],0	; see if writing qlk file
   290 0000016F 7403                    	je	p2_endlib			; no
   291 00000171 E8(0000)                	call	write_qlk_unres
   292                                  
   293                                  p2_endlib:
   294 00000174 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   295 00000179 740C                        je  p2lend              ; no
   296 0000017B BB[1A00]                    mov bx,OFFSET endpass_text wrt DGROUP
   297 0000017E E87B00                      call    print_info
   298 00000181 BB[6900]                    mov bx,OFFSET lib_text wrt DGROUP
   299 00000184 E87500                      call    print_info
   300                                  
   301                                  p2lend:
   302 00000187 E8(0000)                    call    free_memory     ; de-allocate memory
   303                                  
   304 0000018A 833E[6201]00                cmp word [ovl_count],0         ; see if any overlays
   305 0000018F 7403                        je  mach_1              ; no
   306 00000191 E8(0000)                    call    ovl_entry_point ; make entry point go to overlay mananger
   307                                  
   308                                  mach_1:
   309 00000194 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   310 00000199 7406                        je  wstart              ; no
   311 0000019B BB[7D00]                    mov bx,OFFSET stwrite_text wrt DGROUP
   312 0000019E E85B00                      call    print_info
   313                                  
   314                                  wstart:
   315 000001A1 E8(0000)                    call    write_program   ; write finished .COM or .EXE program
   316 000001A4 E8(0000)                    call    finish_map      ; if map file, write remaining info
   317 000001A7 803E[4C00]00                cmp byte [is_linkinfo],0       ; see if linker information to be printed
   318 000001AC 7406                        je  wend                ; no
   319 000001AE BB[9900]                    mov bx,OFFSET endwrite_text wrt DGROUP
   320 000001B1 E84800                      call    print_info
   321                                  
   322                                  wend:
   323                                  
   324                                  ;***    call    show_unreferenced   ; show symbols not referenced
   325 000001B4 E8(0000)                    call    give_warn_count ; give count of warning messages, if any
   326 000001B7 E8(0000)                    call    give_load_size  ; give EXE load image size
   327                                  
   328                                  exit_1:
   329 000001BA 30C0                        xor al,al               ; init return code to zero
   330 000001BC 833E[8200]00                cmp word [warn_count],0        ; see if any warnings were generated
   331 000001C1 741C                        je  exit_link           ; no
   332 000001C3 803E[2800]00                cmp byte [is_exit0],0          ; see if warnings generate exit code of 0
   333 000001C8 7515                        jne exit_link           ; yes
   334 000001CA 833E[8200]01            	cmp word [warn_count], 1
   335 000001CF 770D                    	ja .error
   336 000001D1 D006[3000]              	rol byte [is_stack_warning], 1
   337 000001D5 7307                    	jnc .error
   338 000001D7 803E[3200]00            	cmp byte [is_stack_exit0], 0
   339 000001DC 7501                    	jne exit_link
   340                                  .error:
   341 000001DE 40                          inc ax                  ; return exit code of 1 for warnings
   342                                  
   343                                  exit_link:
   344 000001DF B44C                        mov ah,4ch              ; terminate
   345 000001E1 50                          push    ax              ; save terminate and return code
   346 000001E2 E8(0000)                    call    cleanup         ; clean up any interim system changes made
   347                                  
   348                                  %IFNDEF DEMO
   349 000001E5 803E[4A00]00                cmp byte [is_beep],0           ; see if should beep
   350 000001EA 740D                        je  exit_3              ; no
   351                                  
   352 000001EC BB0100                      mov bx,STDOUT
   353 000001EF BA[0000]                    mov dx,OFFSET beep3 wrt DGROUP
   354 000001F2 B90300                      mov cx,3
   355 000001F5 B440                        mov ah,40h              ; write to file or device
   356 000001F7 CD21                        int 21h                 ; beep the speaker three times
   357                                  %ENDIF
   358                                  
   359                                  exit_3:
   360 000001F9 58                          pop ax                  ; restore terminate and return code
   361 000001FA CD21                        int 21h
   362                                  main        ENDP
   363                                  
   364                                  ;*****************************
   365                                  ;* PRINT_INFO                *
   366                                  ;*****************************
   367                                  
   368                                  ; print linker pass info
   369                                  ; upon entry bx -> text to print, with length byte preceding
   370                                  ; destroys ax,bx,cx,dx
   371                                  
   372                                  print_info  PROC
   373 000001FC 8A4FFF                      mov cl,[bx-1]           ; get length of string to print
   374 000001FF 89DA                        mov dx,bx               ; ds:dx -> string
   375 00000201 30ED                        xor ch,ch               ; zap high byte of cx
   376 00000203 BB0100                      mov bx,STDOUT           ; write to standard output device
   377 00000206 B440                        mov ah,40h              ; write to device
   378 00000208 CD21                        int 21h
   379 0000020A C3                          ret
   380                                  print_info  ENDP
   381                                  
   382                                  END start
