Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

No, that'd be silly. -- Larry Wall in <199710221710.KAA24242@wall.org>


devel / comp.os.msdos.programmer / DOS extension proposal

SubjectAuthor
* DOS extension proposalmuta...@gmail.com
+* Re: DOS extension proposalmuta...@gmail.com
|`* Re: DOS extension proposalmuta...@gmail.com
| `* Re: DOS extension proposalmuta...@gmail.com
|  `- Re: DOS extension proposalmuta...@gmail.com
`* Re: DOS extension proposalJJ
 `- Re: DOS extension proposalmuta...@gmail.com

1
DOS extension proposal

<8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=9996&group=comp.os.msdos.programmer#9996

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:a05:620a:f0f:b0:75a:1d5b:8678 with SMTP id v15-20020a05620a0f0f00b0075a1d5b8678mr1758082qkl.0.1684642027844;
Sat, 20 May 2023 21:07:07 -0700 (PDT)
X-Received: by 2002:a05:6830:1e04:b0:6a9:5060:6e13 with SMTP id
s4-20020a0568301e0400b006a950606e13mr1924825otr.3.1684642027626; Sat, 20 May
2023 21:07:07 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!usenet.blueworldhosting.com!diablo1.usenet.blueworldhosting.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Sat, 20 May 2023 21:07:07 -0700 (PDT)
Injection-Info: google-groups.googlegroups.com; posting-host=209.35.170.17; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 209.35.170.17
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>
Subject: DOS extension proposal
From: mutazi...@gmail.com (muta...@gmail.com)
Injection-Date: Sun, 21 May 2023 04:07:07 +0000
Content-Type: text/plain; charset="UTF-8"
X-Received-Bytes: 5551
 by: muta...@gmail.com - Sun, 21 May 2023 04:07 UTC

Ok, so this is initial thoughts. I don't think I've ever
actually written a TSR before, so I may have some
technically impossible suggestions.

Also note that this is an extension for RM16 and
potentially PM16 and the Turbo 186 (8-bit segment
shift instead of 4-bit). It has no relation to 32-bit.

My main interest is C programs, so I would like a
TSR for genuine MSDOS that is similar to MSVCRT.DLL.

My main interest is in huge memory model, and I intend
for PDOS/86 (built as huge memory model) to export its
own C library, so that it will be able to run PDOS-generic
8086 applications, which assume the C and Pos* library
functions are provided via a parameter on the stack.

I'm not sure how you're supposed to hook MSDOS at the
point that it executes an app. Like HX does. Perhaps the
"exec" facility is hooked and then you switch the name of
the executable to a stub and let MSDOS execute that stub
so that you regain control and can load the original program,
with the required parameter on the stack this time.

So it sounds like PDOS-generic apps (which don't execute
the INT instruction) can be run. This allows a pseudo-bios
to run under genuine MSDOS that is able to redirect a
PDOS-generic application to use an emulated disk instead
of bypassing PDOS-generic itself and going directly to
MSDOS via INT 21H.

Note that I can't (or perhaps won't) attempt to stop a "badly
behaved" executable from bypassing PDOS-generic and
going directly to MSDOS (or the BIOS).

That should cover most of what I want.

But that would still require the user to load the TSR in
advance. Otherwise the app would attempt to access
the stack and have a wild pointer.

So I need to be able to access the stack, but only if I know
it is valid.

If it is not valid, then I need to either load the TSR at this
point, or print a message (using INT 21H) to say that this
is a PDOS-generic application running under genuine MSDOS
which won't work without the TSR.

And I need to find out whether the stack is valid, without
doing an INT which will bypass the PDOS-generic
environment.

So I was thinking of using a field in the PSP.

I can see at offset 40H is some sort of version.

I was thinking that PDOS-generic for 8086 and the TSR
could populate this with a minor version number of
x'80', such that minor versions >= 128 are actually
PDOS, with the minor version having 128 subtracted.

I could use an environment variable instead, but I'm not
keen on pointers that have only a segment. I want a
proper far pointer.

This (running PDOS-generic apps) would basically bypass
some other issues I had.

One is that I want to eliminate the hardcode 4-bit shift in
my DOS startup code, designed to release memory, since
the Turbo Linker asks for maximum memory. The shift
would potentially be 8-bit on a Turbo 186, and when running
under a PM16 version of PDOS, ie PDOS/286, the segment
manipulation is more complicated. I intended to provide
huge pointer manipulation facilities in PDOS/86, and only
if they weren't present (because it was genuine MSDOS),
would I fall back to 4-bit segment shift assumptions.

Note that Watcom C (not sure about Microsoft C), generates
function calls to manipulate huge pointers (which all pointers
are in the huge memory model). Those functions can use the
PDOS/86-provided manipulation functions (if available),
otherwise use code that assumes 4-bit segment shifts.

Also note that I use a 32-bit size_t in PDPCLIB for huge
memory model, even though Watcom's library doesn't.

So I can use INT 21H extension functions to see if these
manipulation functions are available.

This would be useful if I wanted a traditional MSDOS
application that uses INT 21H to start running on an
appropriate Turbo 186/80286 using a flavor of PDOS,
to continue to work and make use of the extra memory
available.

So long as the traditional MSDOS program obeyed some
rules. Those rules are not actually traditional, but could
have been created in the 1980s. Basically you need to be
careful before you manipulate a segment register.

Normally C programs don't actually manipulate segment
registers. They are loaded with values that were set at
load time.

The PDOS-generic app would still load DGROUP into the
segment registers at startup. ie the segmentation will
necessitate some assembler, unlike the simple scheme
I have for PDOS-generic for 32-bit.

Still mulling over what that startup assembler should
ideally look like.

BFN. Paul.

Re: DOS extension proposal

<a061d35e-a42c-49bb-8575-e2f5186125bdn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=9997&group=comp.os.msdos.programmer#9997

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:a05:620a:24c3:b0:759:184a:de49 with SMTP id m3-20020a05620a24c300b00759184ade49mr1740967qkn.11.1684648019798;
Sat, 20 May 2023 22:46:59 -0700 (PDT)
X-Received: by 2002:aca:e084:0:b0:390:7b13:f6c3 with SMTP id
x126-20020acae084000000b003907b13f6c3mr1286969oig.6.1684648019571; Sat, 20
May 2023 22:46:59 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Sat, 20 May 2023 22:46:59 -0700 (PDT)
In-Reply-To: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=209.35.170.17; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 209.35.170.17
References: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <a061d35e-a42c-49bb-8575-e2f5186125bdn@googlegroups.com>
Subject: Re: DOS extension proposal
From: mutazi...@gmail.com (muta...@gmail.com)
Injection-Date: Sun, 21 May 2023 05:46:59 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 28
 by: muta...@gmail.com - Sun, 21 May 2023 05:46 UTC

Note that not directly doing an INT 21H has an analogy
on the Amiga.

On the Amiga, all system calls are vectored off a
hardcoded address 4.

Which prevents PDOS-generic or some other emulator
from redirecting the syscalls to a different system.

Unless you were to use hardware paging or whatever
to redirect address 4 somewhere else. But I don't want
to rely on such hardware existing, or able to be
implemented (with privilege).

So what I did was create a "new traditional standard"
(basically something that could/should have been done
in the 1980s) where Amiga apps first check register
d6 (there's a bit more to it than that) to see what the
base address is. If d6 is set to some value then use
that, otherwise use the normal address 4. (something
similar to that).

So that gives the ability of a software override.

So it seems I'm trying to construct the 8086 equivalent.
Plus other things all lumped in to one big barrel of
confusion.

BFN. Paul.

Re: DOS extension proposal

<19c1dfcb-51c6-4662-ad1b-8eaad660e69en@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=9998&group=comp.os.msdos.programmer#9998

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:ac8:5a49:0:b0:3d5:49eb:4d1e with SMTP id o9-20020ac85a49000000b003d549eb4d1emr2441975qta.1.1684650979185;
Sat, 20 May 2023 23:36:19 -0700 (PDT)
X-Received: by 2002:a9d:7ad2:0:b0:6a5:f7a6:2b75 with SMTP id
m18-20020a9d7ad2000000b006a5f7a62b75mr1639326otn.6.1684650979006; Sat, 20 May
2023 23:36:19 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Sat, 20 May 2023 23:36:18 -0700 (PDT)
In-Reply-To: <a061d35e-a42c-49bb-8575-e2f5186125bdn@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=209.35.170.17; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 209.35.170.17
References: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com> <a061d35e-a42c-49bb-8575-e2f5186125bdn@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <19c1dfcb-51c6-4662-ad1b-8eaad660e69en@googlegroups.com>
Subject: Re: DOS extension proposal
From: mutazi...@gmail.com (muta...@gmail.com)
Injection-Date: Sun, 21 May 2023 06:36:19 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 21
 by: muta...@gmail.com - Sun, 21 May 2023 06:36 UTC

Note that the direct equivalent of the Amiga on the 8086
would be if I checked the size at offset 0x80 in the PSP
and if the command length was greater than 0x80, which
is impossible, then it is a fake length, and it means the
caller is PDOS, and subtract x'80' from the length to get
the actual length, and now you know whether it is a
PDOS environment or not.

On the Amiga, that would allow D6-aware programs to
run on an Amigados semi-clone.

But that's still using the Amigados API, not PDOS-generic.

PDOS-generic doesn't care about D6/location 4 and the
startup code of apps just assumes it is PDOS-generic.

I guess the 8086 equivalent would be if I had an Amigados
semi-clone that had enhancements and I wished to
support both enhancement-aware apps and traditional
apps.

BFN. Paul.

Re: DOS extension proposal

<b310a70c-1a7d-4809-a641-a5a6b385e025n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=9999&group=comp.os.msdos.programmer#9999

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:a05:6214:b32:b0:625:795a:64a4 with SMTP id w18-20020a0562140b3200b00625795a64a4mr118746qvj.2.1684651524948;
Sat, 20 May 2023 23:45:24 -0700 (PDT)
X-Received: by 2002:aca:a854:0:b0:397:f64f:bc7 with SMTP id
r81-20020acaa854000000b00397f64f0bc7mr454075oie.3.1684651524698; Sat, 20 May
2023 23:45:24 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border-2.nntp.ord.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Sat, 20 May 2023 23:45:24 -0700 (PDT)
In-Reply-To: <19c1dfcb-51c6-4662-ad1b-8eaad660e69en@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=209.35.170.17; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 209.35.170.17
References: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>
<a061d35e-a42c-49bb-8575-e2f5186125bdn@googlegroups.com> <19c1dfcb-51c6-4662-ad1b-8eaad660e69en@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b310a70c-1a7d-4809-a641-a5a6b385e025n@googlegroups.com>
Subject: Re: DOS extension proposal
From: mutazi...@gmail.com (muta...@gmail.com)
Injection-Date: Sun, 21 May 2023 06:45:24 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 25
 by: muta...@gmail.com - Sun, 21 May 2023 06:45 UTC

And so the equivalent would be -

PDOS-generic programs just assume that the
required data is on the stack and carry on.

But traditional programs are free to do INT 21H.

So two different startup routines are required.

Which I already have anyway.

So PDOS-generic can be largely ignored (*).

For traditional programs, I need them to do INT 21H
calls to see if extensions are available before deciding
to hardcode a segment shift of 4 bits.

And continue to allow them to overcome the traditional
issue with linkers asking for all memory.

BFN. Paul.

(*) I could still put in some checks in the PSP so that they
could gracefully exit via INT 21H after reporting via 21H
that this requires a PDOS environment.

Re: DOS extension proposal

<d7493a02-64be-481c-bad4-057d342ac7dfn@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10000&group=comp.os.msdos.programmer#10000

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:a05:620a:1918:b0:74f:b866:a0c3 with SMTP id bj24-20020a05620a191800b0074fb866a0c3mr1840099qkb.1.1684652162334;
Sat, 20 May 2023 23:56:02 -0700 (PDT)
X-Received: by 2002:aca:3c87:0:b0:392:17e6:6a75 with SMTP id
j129-20020aca3c87000000b0039217e66a75mr1868539oia.0.1684652162123; Sat, 20
May 2023 23:56:02 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!npeer.as286.net!npeer-ng0.as286.net!peer03.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Sat, 20 May 2023 23:56:01 -0700 (PDT)
In-Reply-To: <b310a70c-1a7d-4809-a641-a5a6b385e025n@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=209.35.170.17; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 209.35.170.17
References: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>
<a061d35e-a42c-49bb-8575-e2f5186125bdn@googlegroups.com> <19c1dfcb-51c6-4662-ad1b-8eaad660e69en@googlegroups.com>
<b310a70c-1a7d-4809-a641-a5a6b385e025n@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <d7493a02-64be-481c-bad4-057d342ac7dfn@googlegroups.com>
Subject: Re: DOS extension proposal
From: mutazi...@gmail.com (muta...@gmail.com)
Injection-Date: Sun, 21 May 2023 06:56:02 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 2082
 by: muta...@gmail.com - Sun, 21 May 2023 06:56 UTC

On Sunday, May 21, 2023 at 2:45:25 PM UTC+8, muta...@gmail.com wrote:

> (*) I could still put in some checks in the PSP so that they
> could gracefully exit via INT 21H after reporting via 21H
> that this requires a PDOS environment.

Another possibility would be to do what Windows does
with PE and have a stub that terminates gracefully, and
Windows bypasses the stub.

But that requires a relatively expensive change in the tools.

Getting the startup code to inspect the PSP is cheap.

And setting a minor version number of 128+ is cheap too.

Or some other appropriate field in the PSP.

BFN. Paul.

Re: DOS extension proposal

<wys8fhb4nk62.xqeborh0o8bi.dlg@40tude.net>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10001&group=comp.os.msdos.programmer#10001

  copy link   Newsgroups: comp.os.msdos.programmer
Path: i2pn2.org!i2pn.org!eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail
From: jj4pub...@outlook.com (JJ)
Newsgroups: comp.os.msdos.programmer
Subject: Re: DOS extension proposal
Date: Sun, 21 May 2023 17:35:58 +0700
Organization: A noiseless patient Spider
Lines: 121
Message-ID: <wys8fhb4nk62.xqeborh0o8bi.dlg@40tude.net>
References: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com>
MIME-Version: 1.0
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Injection-Info: dont-email.me; posting-host="c77fcdd4518cf397685ca602c0dfd1fb";
logging-data="1636023"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX190yifON6IAg+rbyBRLuclODrWjtAm0McU="
User-Agent: 40tude_Dialog/2.0.15.84
Cancel-Lock: sha1:FosJZEF0BtP8fKuImSwCDWSHwz4=
X-Face: \*\`0(1j~VfYC>ebz[&O.]=,Nm\oRM{of,liRO#7Eqi4|!]!(Gs=Akgh{J)605>C9Air?pa d{sSZ09u+A7f<^paR"/NH_#<mE1S"hde\c6PZLUB[t/s5-+Iu5DSc?P0+4%,Hl
X-Bitcoin: 1LcqwCQBQmhcWfWsVEAeyLchkAY8ZfuMnS
 by: JJ - Sun, 21 May 2023 10:35 UTC

On Sat, 20 May 2023 21:07:07 -0700 (PDT), muta...@gmail.com wrote:
> Ok, so this is initial thoughts. I don't think I've ever
> actually written a TSR before, so I may have some
> technically impossible suggestions.
>
> Also note that this is an extension for RM16 and
> potentially PM16 and the Turbo 186 (8-bit segment
> shift instead of 4-bit). It has no relation to 32-bit.
>
> My main interest is C programs, so I would like a
> TSR for genuine MSDOS that is similar to MSVCRT.DLL.
>
> My main interest is in huge memory model, and I intend
> for PDOS/86 (built as huge memory model) to export its
> own C library, so that it will be able to run PDOS-generic
> 8086 applications, which assume the C and Pos* library
> functions are provided via a parameter on the stack.
>
> I'm not sure how you're supposed to hook MSDOS at the
> point that it executes an app. Like HX does. Perhaps the
> "exec" facility is hooked and then you switch the name of
> the executable to a stub and let MSDOS execute that stub
> so that you regain control and can load the original program,
> with the required parameter on the stack this time.
>
> So it sounds like PDOS-generic apps (which don't execute
> the INT instruction) can be run. This allows a pseudo-bios
> to run under genuine MSDOS that is able to redirect a
> PDOS-generic application to use an emulated disk instead
> of bypassing PDOS-generic itself and going directly to
> MSDOS via INT 21H.
>
> Note that I can't (or perhaps won't) attempt to stop a "badly
> behaved" executable from bypassing PDOS-generic and
> going directly to MSDOS (or the BIOS).
>
> That should cover most of what I want.
>
> But that would still require the user to load the TSR in
> advance. Otherwise the app would attempt to access
> the stack and have a wild pointer.
>
> So I need to be able to access the stack, but only if I know
> it is valid.
>
> If it is not valid, then I need to either load the TSR at this
> point, or print a message (using INT 21H) to say that this
> is a PDOS-generic application running under genuine MSDOS
> which won't work without the TSR.
>
> And I need to find out whether the stack is valid, without
> doing an INT which will bypass the PDOS-generic
> environment.
>
> So I was thinking of using a field in the PSP.
>
> I can see at offset 40H is some sort of version.
>
> I was thinking that PDOS-generic for 8086 and the TSR
> could populate this with a minor version number of
> x'80', such that minor versions >= 128 are actually
> PDOS, with the minor version having 128 subtracted.
>
> I could use an environment variable instead, but I'm not
> keen on pointers that have only a segment. I want a
> proper far pointer.
>
> This (running PDOS-generic apps) would basically bypass
> some other issues I had.
>
> One is that I want to eliminate the hardcode 4-bit shift in
> my DOS startup code, designed to release memory, since
> the Turbo Linker asks for maximum memory. The shift
> would potentially be 8-bit on a Turbo 186, and when running
> under a PM16 version of PDOS, ie PDOS/286, the segment
> manipulation is more complicated. I intended to provide
> huge pointer manipulation facilities in PDOS/86, and only
> if they weren't present (because it was genuine MSDOS),
> would I fall back to 4-bit segment shift assumptions.
>
> Note that Watcom C (not sure about Microsoft C), generates
> function calls to manipulate huge pointers (which all pointers
> are in the huge memory model). Those functions can use the
> PDOS/86-provided manipulation functions (if available),
> otherwise use code that assumes 4-bit segment shifts.
>
> Also note that I use a 32-bit size_t in PDPCLIB for huge
> memory model, even though Watcom's library doesn't.
>
> So I can use INT 21H extension functions to see if these
> manipulation functions are available.
>
> This would be useful if I wanted a traditional MSDOS
> application that uses INT 21H to start running on an
> appropriate Turbo 186/80286 using a flavor of PDOS,
> to continue to work and make use of the extra memory
> available.
>
> So long as the traditional MSDOS program obeyed some
> rules. Those rules are not actually traditional, but could
> have been created in the 1980s. Basically you need to be
> careful before you manipulate a segment register.
>
> Normally C programs don't actually manipulate segment
> registers. They are loaded with values that were set at
> load time.
>
> The PDOS-generic app would still load DGROUP into the
> segment registers at startup. ie the segmentation will
> necessitate some assembler, unlike the simple scheme
> I have for PDOS-generic for 32-bit.
>
> Still mulling over what that startup assembler should
> ideally look like.
>
> BFN. Paul.

If you're writing a system extension which are not compatible with MS-DOS,
you can't tell MS-DOS programs to obey by the extension's rules, because
most MS-DOS programs already built to obey MS-DOS rules. Otherwise none of
MS-DOS program will work with that extension.

Re: DOS extension proposal

<837e8d55-d839-4d34-83b7-c750f4063322n@googlegroups.com>

  copy mid

https://www.novabbs.com/devel/article-flat.php?id=10002&group=comp.os.msdos.programmer#10002

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:a05:620a:4010:b0:758:898b:8973 with SMTP id h16-20020a05620a401000b00758898b8973mr2344959qko.3.1684704200106;
Sun, 21 May 2023 14:23:20 -0700 (PDT)
X-Received: by 2002:a05:6820:613:b0:551:a118:3297 with SMTP id
e19-20020a056820061300b00551a1183297mr3863151oow.0.1684704199837; Sun, 21 May
2023 14:23:19 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!newsreader4.netcologne.de!news.netcologne.de!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Sun, 21 May 2023 14:23:19 -0700 (PDT)
In-Reply-To: <wys8fhb4nk62.xqeborh0o8bi.dlg@40tude.net>
Injection-Info: google-groups.googlegroups.com; posting-host=209.35.170.17; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 209.35.170.17
References: <8d9c07da-bfad-4ff2-99a4-48547987455an@googlegroups.com> <wys8fhb4nk62.xqeborh0o8bi.dlg@40tude.net>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <837e8d55-d839-4d34-83b7-c750f4063322n@googlegroups.com>
Subject: Re: DOS extension proposal
From: mutazi...@gmail.com (muta...@gmail.com)
Injection-Date: Sun, 21 May 2023 21:23:20 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
X-Received-Bytes: 2877
 by: muta...@gmail.com - Sun, 21 May 2023 21:23 UTC

On Sunday, May 21, 2023 at 6:35:59 PM UTC+8, JJ wrote:

> > Still mulling over what that startup assembler should
> > ideally look like.

> If you're writing a system extension which are not compatible with MS-DOS,
> you can't tell MS-DOS programs to obey by the extension's rules, because
> most MS-DOS programs already built to obey MS-DOS rules. Otherwise none of
> MS-DOS program will work with that extension.

Sure. And even today, in 2023, my own executables fall into
this category, as they have for about 3 decades.

My own executables have zero chance of working on a
Turbo 186 because the startup code assumes segment
shifts will be 4 bits.

Back circa 1987 I should have sat down and prepared
for the introduction of the Turbo 186 (8-bit segment shifts).

As the saying goes "better late than never".

So I'm hoping that by 2024, whenever I build an executable,
the executable is prepared for the Turbo 186. And a similar
scheme (lots of selectors lined up) for PM16.

I can't "fix" everyone else's executables, but I at least want to
fix my own.

That's my question.

How do I fix my executables? The number 4 (seen below) is out
(for starters).

BFN. Paul.

; It seems that even compact/large/huge require the same thing -
; they expect DS=SS and may use near pointers and the stack is
; in the DGROUP for this reason. I haven't actually observed
; near pointers being used though.

mov bx,ss
mov ax,ds
sub bx,ax
mov cl,4
shl bx,cl

mov bp, sp
add bp, bx
mov ss, dx
mov sp, bp


devel / comp.os.msdos.programmer / DOS extension proposal

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor