----------------------------------------------------------------------------------
@MSGID:
<480c4fd8-0b7a-458a-80b8-4b5096ca53b3n@googlegroups.com> 619938a9
@REPLY:
<ea5efeed-362c-4b95-964e-e7494f82ecf6n@googlegroups.com> 76c79cd2
@REPLYADDR muta...@gmail.com
<mutazilah@gmail.com>
@REPLYTO 2:5075/128 muta...@gmail.com
@CHRS: CP866 2
@RFC: 1 0
@RFC-References:
<ea5efeed-362c-4b95-964e-e7494f82ecf6n@googlegroups.com>
@RFC-Message-ID:
<480c4fd8-0b7a-458a-80b8-4b5096ca53b3n@googlegroups.com>
@TZUTC: -0700
@PID: G2/1.0
@TID: FIDOGATE-5.12-ge4e8b94
On Tuesday, June 6, 2023 at 5:47:34 PM UTC+8,
muta...@gmail.com wrote:
> We have previously discussed laying out the PM16
> selectors. And I remember we agreed that the code
> selectors and data selectors needed to be
> intermingled to provide a somewhat flat (ie not
> really flat, more consecutive) address space.
Here is one of the discussions:
https://groups.google.com/g/alt.os.development/c/0f3Ns-Q R4M/m/J 1X9yflAAAJ
where I said that I needed two values - a divide value
(of the amount being added) and a multiply (of how
to manipulate the segment), but that both of these
could potentially be shifts instead.
Plus I found this, not sure if it is related:
http://www.delphigroups.info/2/ae/107069.html
{ AHincr is 8 in Standard and Enhanced mode, $1000 in real mode.
AHshift is 3 in Standard and Enhanced mode, 12 in real mode (2^AHshift=AHincr) }
Regardless, it sounds to me like Microsoft found another
way to skin the cat, presumably superior to my design, and
that`s what their compiler is generating (as opposed to
Watcom`s flexible design where I could have implemented
my own manipulation), so there`s no particular reason why
I wouldn`t just copy Microsoft on this.
And since this code works on PM16 apparently, it may mean
there is an existing call (Windows 3.1 or OS/2 1.0?) to get
the AHINCR and AHSHIFT values.
And it looks to me like that AHSHIFT of 3 was designed to
manipulate selectors that contain consecutive data. I believe
we previously said that my design required intermingled
cs + ds, so the data selectors will be 0x10 apart, presumably
meaning AHSHIFT of 4 instead of 3.
Any idea if there are MSDOS or Windows or OS/2 calls to
retrieve these 2 values?
Thanks. Paul.
--- G2/1.0
* Origin: usenet.network (2:5075/128)
SEEN-BY: 5005/49 5015/255 5019/40 5020/715 848 1042
4441 12000 5030/49 1081
SEEN-BY: 5058/104 5075/128
@PATH: 5075/128 5020/1042 4441