HP3000-L Archives

July 2001, Week 2

HP3000-L@RAVEN.UTC.EDU

Options: Use Monospaced Font
Show Text Part by Default
Show All Mail Headers

Message: [<< First] [< Prev] [Next >] [Last >>]
Topic: [<< First] [< Prev] [Next >] [Last >>]
Author: [<< First] [< Prev] [Next >] [Last >>]

Print Reply
Subject:
From:
Stan Sieler <[log in to unmask]>
Reply To:
Stan Sieler <[log in to unmask]>
Date:
Tue, 10 Jul 2001 11:41:06 -0700
Content-Type:
text/plain
Parts/Attachments:
text/plain (29 lines)
Re:
> As I said, the BASIC code calls a CM stub in SL.PUB.SYS which in turn calls a NM routine in an XL which then calls an intrinsic.  The CM stub must, of course, pass the addresses of the various parameters to the NM routine.  Therein lay the bug.  The three addresses were put into an array of
things called Int.  Int was defined as an integer subrange:
>
>   Int = -32768..32676;
>
> In the 12 years that this stub has been in place, it has never been called with string parameter whose baddress fell in the 32677..32767 range.

I'm a little puzzled...if we're talking CM half-word addresses (not byte
addresses), then you probably will never see a half-word address larger than
32676 ... that would be too close to the max user Z value.

If we're talking about CM byte addresses, then the proper range for safe
CM Pascal usage would be -32768..65535 (assuming, of course, that you could
get that close to the max Z).  Why such a range?  Because you can't tell if a
value like $a000 is byte -24576 or byte +40960 ... until you also look at the
value of S.

If "Int" is in NM code, then it's bad because you won't be getting addresses
in that range ... virtual addresses are likely to be at least $40000000.

Stan

Stan Sieler                                           [log in to unmask]
www.allegro.com/sieler/wanted/index.html          www.allegro.com/sieler

* To join/leave the list, search archives, change list settings, *
* etc., please visit http://raven.utc.edu/archives/hp3000-l.html *

ATOM RSS1 RSS2