| | EUROASM LIST=ON,DUMP=ON,DUMPWIDTH=22,CPU=386,NOWARN=3990
| |t3145 PROGRAM FORMAT=OMF,MODEL=SMALL,LISTMAP=OFF,LISTGLOBALS=OFF
|[CodeSeg] |[CodeSeg] SEGMENT PURPOSE=CODE,WIDTH=16 ; Program with monocode memory model (SMALL).
|0000:E8(1900) | CALLN FarLabel:
|0003:E8(1900) | CALL FarLabel: ; Intersegment distance defaults to NEAR due to monocode model.
|0006:9A[1900]{0000} | CALLF FarLabel:
|000B:E8(1900) | CALLN FarProc:
|000E:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target's DIST=FAR modifier.
|0013:9A[1900]{0000} | CALLF FarProc:
|0018:E8(0000) | CALLN ExtLabel:
|001B:E8(0000) | CALL ExtLabel: ; Intersegment distance defaults to NEAR due to monocode model.
|001E:9A[0000]{0000} | CALLF ExtLabel:
|0023:E8(2211) | CALLN 0x1122
|0026:E8(2211) | CALL 0x1122 ; Absolute offset assumes the current segment.
|0029:9A[2211]{0000} | CALLF 0x1122
|002E:9A22110000 | CALL 0:0x1122 ; Distance is FAR due to target's explicitly specified absolute segment.
|0033:9A22110000 | CALLF 0:0x1122
|[FarSeg] |[FarSeg] SEGMENT PURPOSE=CODE,WIDTH=16
|0000:E81600 | CALLN FarLabel:
|0003:E81300 | CALL FarLabel: ; Intrasegment distance defaults to NEAR.
|0006:9A[1900]{0000} | CALLF FarLabel:
|000B:E80B00 | CALLN FarProc:
|000E:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target's DIST=FAR modifier.
|0013:9A[1900]{0000} | CALLF FarProc:
|0018:C3 | RET ; Instruction RET defaults to DIST=NEAR.
|0019: |FarLabel:
|0019: |FarProc: PROC DIST=FAR ; Explicitly specified FAR property of FarProc.
|0019:CB | RET ; Instruction RET inside far procedure is implicitly DIST=FAR.
|001A: | ENDP FarProc:
| |ExtLabel: EXTERN ; External symbol in monocode models defaults to NEAR.
| |ENDPROGRAM t3145
|## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000024h is not linkable.
|## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000027h is not linkable.
|## W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Ah is not linkable.
| | ;; Now assemble the same program in large memory model
| |t3145 PROGRAM FORMAT=OMF,MODEL=LARGE,LISTMAP=OFF,LISTGLOBALS=OFF
|[CodeSeg] |[CodeSeg] SEGMENT PURPOSE=CODE,WIDTH=16 ; Program with multicode memory model (LARGE).
|0000:E8(1900) | CALLN FarLabel:
|0003:9A[1900]{0000} | CALL FarLabel: ; Intersegment distance defaults to FAR due to multicode model.
|0008:9A[1900]{0000} | CALLF FarLabel:
|000D:E8(1900) | CALLN FarProc:
|0010:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target DIST=FAR modifier.
|0015:9A[1900]{0000} | CALLF FarProc:
|001A:E8(0000) | CALLN ExtLabel:
|001D:9A[0000]{0000} | CALL ExtLabel: ; Intersegment distance defaults to FAR due to multicode model.
|0022:9A[0000]{0000} | CALLF ExtLabel:
|0027:E8(2211) | CALLN 0x1122
|002A:E8(2211) | CALL 0x1122 ; Absolute offset assumes the current segment.
|002D:9A[2211]{0000} | CALLF 0x1122
|0032:9A22110000 | CALL 0:0x1122 ; Distance is FAR due to target's explicitly specified absolute segment.
|0037:9A22110000 | CALLF 0:0x1122
|[FarSeg] |[FarSeg] SEGMENT PURPOSE=CODE,WIDTH=16
|0000:E81600 | CALLN FarLabel:
|0003:E81300 | CALL FarLabel: ; Intrasegment distance defaults to NEAR.
|0006:9A[1900]{0000} | CALLF FarLabel:
|000B:E80B00 | CALLN FarProc:
|000E:9A[1900]{0000} | CALL FarProc: ; Distance defaults to FAR due to target DIST=FAR modifier.
|0013:9A[1900]{0000} | CALLF FarProc:
|0018:C3 | RET ; Instruction RET defaults to DIST=NEAR.
|0019: |FarLabel:
|0019: |FarProc: PROC DIST=FAR ; Explicitly specified FAR property of FarProc.
|0019:CB | RET ; Instruction RET inside far procedure is implicitly FAR.
|001A: | ENDP FarProc:
| |ExtLabel: EXTERN ; External symbol in multicode models defaults to FAR.
| |ENDPROGRAM t3145
|## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000028h is not linkable.
|## W3731 Self-relative relocation to an absolute VA at [CodeSeg]:0000002Bh is not linkable.
|## W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Eh is not linkable.
Expected messages t3145.out
I0180 Assembling source file "t3145.htm".
I0270 Assembling source "t3145".
I0310 Assembling source pass 1.
I0330 Assembling source pass 2 - final.
I0470 Assembling program "t3145". "t3145.htm"{52}
I0510 Assembling program pass 1. "t3145.htm"{52}
I0510 Assembling program pass 2. "t3145.htm"{52}
I0510 Assembling program pass 3. "t3145.htm"{52}
I0530 Assembling program pass 4 - final. "t3145.htm"{52}
W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000024h is not linkable. "t3145.htm"{81}
W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000027h is not linkable. "t3145.htm"{81}
W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Ah is not linkable. "t3145.htm"{81}
I0660 16bit SMALL OMF file "t3145.obj" created, size=248. "t3145.htm"{81}
I0650 Program "t3145" assembled in 4 passes with errorlevel 3. "t3145.htm"{81}
I0470 Assembling program "t3145". "t3145.htm"{86}
I0510 Assembling program pass 1. "t3145.htm"{86}
I0510 Assembling program pass 2. "t3145.htm"{86}
I0510 Assembling program pass 3. "t3145.htm"{86}
I0530 Assembling program pass 4 - final. "t3145.htm"{86}
W3731 Self-relative relocation to an absolute VA at [CodeSeg]:00000028h is not linkable. "t3145.htm"{115}
W3731 Self-relative relocation to an absolute VA at [CodeSeg]:0000002Bh is not linkable. "t3145.htm"{115}
W3732 Far relocation to an absolute VA at [CodeSeg]:0000002Eh is not linkable. "t3145.htm"{115}
I0660 16bit LARGE OMF file "t3145.obj" created, size=252. "t3145.htm"{115}
I0650 Program "t3145" assembled in 4 passes with errorlevel 3. "t3145.htm"{115}
I0750 Source "t3145" (151 lines) assembled in 2 passes with errorlevel 3.
I0860 Listing file "t3145.htm.lst" created, size=4590.
I0990 EuroAssembler terminated with errorlevel 3.