Rocksolid Light

Welcome to RetroBBS

mail  files  register  newsreader  groups  login

Message-ID:  

"World domination. Fast" (By Linus Torvalds)


devel / comp.os.msdos.programmer / Re: PSP

SubjectAuthor
* Re: PSPMarc 'BlackJack' Rintsch
`* Re: PSPmuta...@gmail.com
 `- Re: PSPmuta...@gmail.com

1
Re: PSP

<s6onrc$1a5p$1@gioia.aioe.org>

  copy mid

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

  copy link   Newsgroups: comp.os.msdos.programmer
Path: i2pn2.org!i2pn.org!aioe.org!hBn1UzxMYb3WbdAUWEjDLA.user.gioia.aioe.org.POSTED!not-for-mail
From: marc@rintsch.de (Marc 'BlackJack' Rintsch)
Newsgroups: comp.os.msdos.programmer
Subject: Re: PSP
Date: Mon, 3 May 2021 11:46:52 +0000 (UTC)
Organization: Aioe.org NNTP Server
Lines: 59
Message-ID: <s6onrc$1a5p$1@gioia.aioe.org>
References: <3ca8b96a-7739-4cf1-940e-68f6d9acee07n@googlegroups.com>
<1nn0p0wcisd86.iccv1rpzltm7.dlg@40tude.net>
<aca67831-44fe-4271-876b-cbd5e23b3705n@googlegroups.com>
<1amil4yros312.48wfgyi4tdux.dlg@40tude.net>
<66abb53c-1309-46fe-9739-59078ced6277n@googlegroups.com>
<a7fce4b2-9897-4a0a-a96a-b3d4d49d0215n@googlegroups.com>
<e2b5a625-204c-446a-a501-16d5c1481a6dn@googlegroups.com>
NNTP-Posting-Host: hBn1UzxMYb3WbdAUWEjDLA.user.gioia.aioe.org
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
X-Complaints-To: abuse@aioe.org
User-Agent: Pan/0.144 (Time is the enemy; 28ab3ba git.gnome.org/pan2)
X-Notice: Filtered by postfilter v. 0.9.2
 by: Marc 'BlackJack - Mon, 3 May 2021 11:46 UTC

On Tue, 30 Mar 2021 12:57:40 -0700, muta...@gmail.com wrote:

> On Wednesday, March 31, 2021 at 6:47:54 AM UTC+11, muta...@gmail.com wrote:
>
>> > What I want to know is how MSDOS managed to
>> > make @05, @08 and @09 a far call to 00C0. If
>> > we can see a PSP from MSDOS for a .com file
>> > it should have the answer. If we can disassemble
>> > that, anyway.
>
>> 05h BYTE CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
>> 06h WORD CP/M compatibility--size of first segment for .COM files
>> 08h 2 BYTEs remainder of FAR JMP at 05h
>
>> 000000 CD20C09F 009AF0FE 1DF0DC01 F70E4B01 . ............K.
>
> So:
>
> 05h = 9A
> 06/07 = FEF0
> 08h = 1D
> 09h = F0
>
> So the 06/07 "segment size" of nearly 64k is basically
> just maxing out the memory available to the .com
> program.
>
> But how does 9A + 1D + F0 translate into a call to 00C0?

Let's fire up debug.exe and see what those bytes look like disassembled:

```
C:\>debug
-e 1000 9a f0 fe 1d f0
-u 1000 1004
07D7:1000 9AF0FE1DF0 CALL F01D:FEF0
```

So it is not a distributed instruction but all bytes together are the (far)
CALL. Does it lead to address 000c0h? Yes it does:

```
>>> hex((0xf01d << 4) + 0xfef0)
'0x1000c0'

>>> hex((0xf01d << 4) + 0xfef0 & 0xfffff)
'0xc0'
```

Apparently DOS puts the size at 06h/07h and calculates a segment for 08h/09h
that gives an effective address of 000c0h, taking into account that the number
”wraps” at 20 bits back to zero.

Ciao,
Marc 'BlackJack' Rintsch
--
“It is well known that a vital ingredient of success is
not knowing that what you're attempting can't be done.”
-- Terry Pratchett, Equal Rites

Re: PSP

<846a127a-7ae1-4dbb-946b-d553e1592d5an@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:ac8:108b:: with SMTP id a11mr16791706qtj.16.1620045525206;
Mon, 03 May 2021 05:38:45 -0700 (PDT)
X-Received: by 2002:a0c:d786:: with SMTP id z6mr18975233qvi.18.1620045524751;
Mon, 03 May 2021 05:38:44 -0700 (PDT)
Path: i2pn2.org!i2pn.org!news.uzoreto.com!2.eu.feeder.erje.net!feeder.erje.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Mon, 3 May 2021 05:38:44 -0700 (PDT)
In-Reply-To: <s6onrc$1a5p$1@gioia.aioe.org>
Injection-Info: google-groups.googlegroups.com; posting-host=202.169.113.201; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 202.169.113.201
References: <3ca8b96a-7739-4cf1-940e-68f6d9acee07n@googlegroups.com>
<1nn0p0wcisd86.iccv1rpzltm7.dlg@40tude.net> <aca67831-44fe-4271-876b-cbd5e23b3705n@googlegroups.com>
<1amil4yros312.48wfgyi4tdux.dlg@40tude.net> <66abb53c-1309-46fe-9739-59078ced6277n@googlegroups.com>
<a7fce4b2-9897-4a0a-a96a-b3d4d49d0215n@googlegroups.com> <e2b5a625-204c-446a-a501-16d5c1481a6dn@googlegroups.com>
<s6onrc$1a5p$1@gioia.aioe.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <846a127a-7ae1-4dbb-946b-d553e1592d5an@googlegroups.com>
Subject: Re: PSP
From: mutazilah@gmail.com (muta...@gmail.com)
Injection-Date: Mon, 03 May 2021 12:38:45 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: muta...@gmail.com - Mon, 3 May 2021 12:38 UTC

On Monday, May 3, 2021 at 9:46:55 PM UTC+10, Marc 'BlackJack' Rintsch wrote:

Thanks so much for resolving that mystery!

> >> 05h BYTE CP/M CALL 5 service request (FAR CALL to absolute 000C0h)
> >> 06h WORD CP/M compatibility--size of first segment for .COM files
> >> 08h 2 BYTEs remainder of FAR JMP at 05h

It's a FAR CALL, not a FAR JMP.

> > But how does 9A + 1D + F0 translate into a call to 00C0?
> Let's fire up debug.exe and see what those bytes look like disassembled:
>
> ```
> C:\>debug
> -e 1000 9a f0 fe 1d f0
> -u 1000 1004
> 07D7:1000 9AF0FE1DF0 CALL F01D:FEF0

Cool. I'd forgotten about debug, and forgotten how to use it too.

> So it is not a distributed instruction but all bytes together are the (far)
> CALL. Does it lead to address 000c0h? Yes it does:
>
> ```
> >>> hex((0xf01d << 4) + 0xfef0)
> '0x1000c0'
>
> >>> hex((0xf01d << 4) + 0xfef0 & 0xfffff)
> '0xc0'
> ```

Wonderful.

> Apparently DOS puts the size at 06h/07h and calculates a segment for 08h/09h
> that gives an effective address of 000c0h, taking into account that the number
> ”wraps” at 20 bits back to zero.

And that explains why so much care needed to be
given to disable the A20 line. I was wondering who
was coding stuff that relied on address wrap.

BFN. Paul.

Re: PSP

<e2cff80b-2c26-4a94-9913-062e18034d67n@googlegroups.com>

  copy mid

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

  copy link   Newsgroups: comp.os.msdos.programmer
X-Received: by 2002:ac8:4756:: with SMTP id k22mr12012511qtp.193.1620436299484;
Fri, 07 May 2021 18:11:39 -0700 (PDT)
X-Received: by 2002:a05:622a:3cf:: with SMTP id k15mr11551362qtx.282.1620436299247;
Fri, 07 May 2021 18:11:39 -0700 (PDT)
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!proxad.net!feeder1-2.proxad.net!209.85.160.216.MISMATCH!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.os.msdos.programmer
Date: Fri, 7 May 2021 18:11:38 -0700 (PDT)
In-Reply-To: <846a127a-7ae1-4dbb-946b-d553e1592d5an@googlegroups.com>
Injection-Info: google-groups.googlegroups.com; posting-host=202.169.113.201; posting-account=CeHKkQoAAAAowY1GfiJYG55VVc0s1zaG
NNTP-Posting-Host: 202.169.113.201
References: <3ca8b96a-7739-4cf1-940e-68f6d9acee07n@googlegroups.com>
<1nn0p0wcisd86.iccv1rpzltm7.dlg@40tude.net> <aca67831-44fe-4271-876b-cbd5e23b3705n@googlegroups.com>
<1amil4yros312.48wfgyi4tdux.dlg@40tude.net> <66abb53c-1309-46fe-9739-59078ced6277n@googlegroups.com>
<a7fce4b2-9897-4a0a-a96a-b3d4d49d0215n@googlegroups.com> <e2b5a625-204c-446a-a501-16d5c1481a6dn@googlegroups.com>
<s6onrc$1a5p$1@gioia.aioe.org> <846a127a-7ae1-4dbb-946b-d553e1592d5an@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <e2cff80b-2c26-4a94-9913-062e18034d67n@googlegroups.com>
Subject: Re: PSP
From: mutazilah@gmail.com (muta...@gmail.com)
Injection-Date: Sat, 08 May 2021 01:11:39 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
 by: muta...@gmail.com - Sat, 8 May 2021 01:11 UTC

On Monday, May 3, 2021 at 10:38:46 PM UTC+10, muta...@gmail.com wrote:
> On Monday, May 3, 2021 at 9:46:55 PM UTC+10, Marc 'BlackJack' Rintsch wrote:

> > hex((0xf01d << 4) + 0xfef0)
> > '0x1000c0'

> > Apparently DOS puts the size at 06h/07h and calculates a segment for 08h/09h
> > that gives an effective address of 000c0h, taking into account that the number
> > ”wraps” at 20 bits back to zero.

> And that explains why so much care needed to be
> given to disable the A20 line. I was wondering who
> was coding stuff that relied on address wrap.

Actually, the A20 line doesn't need to be disabled to
solve this problem. What is needed is for MSDOS to
install a JMP to 00C0 at 0x1000C0.

BFN. Paul.

1
server_pubkey.txt

rocksolid light 0.9.81
clearnet tor