From: Mike Gonta on
On May 6, 11:39 pm, s_dubrov...(a)yahoo.com wrote:

> however this latest version hangs before completing the diskette read,
> on the dell latitude CPi laptop, Pentium MMX. - I never make it to the
> prompt or signon.

It sounds like pdBIOS32 and friends might be stepping on the BIOS
stack.
I've put back the stack initialization in the boot sector.
Let's see where this machines stack is at.

Thank you Steve for the help.


Mike Gonta
look and see - many look but few see

http://mikegonta.com/pdBIOS32
From: Rod Pemberton on
"Mike Gonta" <mikegonta(a)gmail.com> wrote in message
news:4752e30b-acb6-4105-b18a-8465cf52f300(a)k29g2000yqh.googlegroups.com...
On May 6, 6:57 pm, "Rod Pemberton" <do_not_h...(a)havenone.cmm> wrote:
> > Pentium-MMX, 233Mhz, Award Modular BIOS v4.51 PG
> > **hangs** at end of initial Hello world app.
> >
> > It generally won't proceed to the A:\ prompt. AFAICT, it'll only enable
> > the A20 via the so called "at method" (via 8042).
>
> All of the apps run in high memory, so the problem won't be A20.
> It may have something to do with the port_60_A20 code in rm2pm.
> Delete the "start.txt" file so that the hello app won't be loaded and
> comment out
> "call change_A20" in rm2pm so that the A20 is not enabled. The START
> monitor
> runs in low memory, from the command prompt try the built in functions
> - cls, ver and exit.

When done, warning about A20, press F1, then cls, ver, and exit work in the
monitor.

If I comment out two lines in change_A20:

call port_92_A20
jne .exit
; call port_60_A20
; jne .exit
xor BYTE [cs:A20_STATE], 1

It reliably enters the monitor too. That probably eliminates port_92_A20
and wait_A20 as issues. That was against ...506 image. The port_92_A20 not
being an issue surprise me a bit...


Rod Pemberton


From: s_dubrovich on
On May 7, 7:03 pm, Mike Gonta <mikego...(a)gmail.com> wrote:
> On May 6, 11:39 pm, s_dubrov...(a)yahoo.com wrote:
>
> > however this latest version hangs before completing the diskette read,
> > on the dell latitude CPi laptop, Pentium MMX. - I never make it to the
> > prompt or signon.
>
> It sounds like pdBIOS32 and friends might be stepping on the BIOS
> stack.
> I've put back the stack initialization in the boot sector.
> Let's see where this machines stack is at.
>
> Thank you Steve for the help.
>
Sure.. from power-on cold boot & ctrl-alt-del reboot, both give:
A:\>stack
00000030:00000100

-I guess that says something :)

Please note that when I first looked at this issue, years ago now, it
is system dependent whether the SS:SP values were the same between
cold boot & ctrl-alt-del reboot. Also, FS&GS are not necessarily zero
on reboot.

-I've got a design question. The 32bit pm code is org'ed at 10`0000h,
are there any rm dependencies which would prevent basing the pm
descriptors at 10`0000h (actually, 10`FFF0h) so that pm code could be
org'ed at 0h?

FFFF:FFFFh -> 10`FFEFh + 1 -> 10`FFF0h.

-thx,

Steve


> Mike Gonta
> look and see - many look but few see
>
> http://mikegonta.com/pdBIOS32

From: James Harris on
On 8 May, 02:56, "Rod Pemberton" <do_not_h...(a)havenone.cmm> wrote:

....

> If I comment out two lines in change_A20:
>
>   call port_92_A20
>   jne .exit
> ;  call port_60_A20
> ;  jne .exit
>   xor BYTE [cs:A20_STATE], 1
>
> It reliably enters the monitor too.

IIRC port 0x92 (fast a20) is not safe to use on all machines. Does the
code carry out some sort of check before it tries the port?

>  That probably eliminates port_92_A20
> and wait_A20 as issues.  That was against ...506 image.  The port_92_A20 not
> being an issue surprise me a bit...

Port 0x60 is slower but, IIRC, it is easier to verify its existence.

James
From: Mike Gonta on
On May 7, 10:03 pm, s_dubrov...(a)yahoo.com wrote:

> Sure.. from power-on cold boot & ctrl-alt-del reboot, both give:
> A:\>stack
> 00000030:00000100
>
> -I guess that says something :)

Thanks Steve, it sure does.
I've corrected the bug in rm2pm.asm where I was using the pm
stack pointer before converting from the rm version. It was no
problem when ss was 0 because real mode 0:offset is the same
as protected mode offset.
I've removed the stack initialization in boot.asm, as I am convinced
that the BIOS stack (even when located in the lower IVT) is sufficient
for the initial setup code.
As a side note, on one PC I tested when I used 0:7C00h for
the stack pointer it froze when rm2pm returned to the boot sector.
Other values such as 0:7B00h and 0:0FFFEh were OK and this
PC showed a BIOS stack in the 0:400 region. The strange thing is
that the "start" monitor uses 7C00h and that PC worked fine as
long as I didn't use that as the initial value. Of course the latest
release tested OK with this PC.


Mike Gonta
look and see - many look but few see

http://mikegonta.com/pdBIOS32