TIP: Click on subject to list as thread! ANSI
echo: cis.os9.68000.osk
to: LARRY OLSON 72227,3467 (X)
from: Mark Griffith 76070,41
date: 1993-04-12 02:52:35
subject: #17892-#C_error_help

#: 17896 S12/OS9/68000 (OSK)
    12-Apr-93  02:52:35
Sb: #17892-#C_error_help
Fm: Mark Griffith 76070,41
To: LARRY OLSON 72227,3467 (X)

Larry,

 >  I was able to bring the following down:
 >  Init. data off:    #72474        #69992
 >  Data ref. off:     #76344        #73858
 >
 >  The program now compiles without the Value Out of Range error !!
 >  For some reason, the problem is tied into the size of the program.

Sounds like something in the linker.  Let me give you an example.  I have a
library function that issues a BREAK on the modem port.  This is the code:

 send_break()
 {
        if (_ss_sbreak(mp) < 0)

 #asm

 I$SetStt        equ             $008E                   ; 8f is get

 _ss_sbreak:
                link    a5,#0
                movem.l D1/D2/A0,-(A7)
                move.l  D1,D2
                move.w  #SS_Break,D1
                os9     I$SetStt
                bra     _sysret

 }

Notice the bra _sysret call.  Sysret is located in the sys.l library. If the
program is very large, over 32K, and the location of the break function is at
the beginning, when I link in  sys.l, I will get an error if the location of
_sysret is greater than 32K from where it was called.  I am not good enough at
OSK assembler to fix this problem. So for now, I just make sure I put the break
function at the end of the program source file, and then link sys.l first (if I
can).

I belive you might be having the same trouble.  Perhaps someone else here can
shed some more light on these problems.


                  /************* /\/\ark ************/

There are 2 Replies.

SOURCE: compuserve via textfiles.com

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.