From: terry@cs.weber.edu (A Wizard of Earth C)
Subject: Re: [386BSD] boot disk does absolutely nothing on gateway 4dx33v
Organization: Weber State University  (Ogden, UT)
Date: Thu, 21 Jan 93 22:14:51 GMT

In article <1jkdpeINNkeg@cat.cis.Brown.EDU> tim@news.Brown.EDU (Timothy Miller) writes:
>I have acquired the boot disk image for 386bsd, and no matter what I try,
>when my system starts up, it displays all the bios messages, and then hangs
>with the floppy drive light on. I have tried waiting for half an hour (just
>to be on the safe side), I've tried keeping the keyboard unplugged during
>reboot and also only unplugging it when it gets to the hang stage (because of
>reading about gateway keyboard problems), I've tried disabling in nvram/eeprom
>everything I can get my hands on, including setting IDE speed to slow,
>cpu speed to slow, internal & external caching off, bios shadowing disabled,
>ide block mode disabled, turning the ATI's memory aperture off, etc. I've
>tried booting off of fixit as well as dist, and as well as the debug versions
>of the bootables.  I know I'm installing the disk image correctly because
>doing the same thing with the linux disk images works perfectly (in fact linux
>successfully installs and runs fine, without my even needing to turn anything
>off (except gcc dies unless I turn external caching off)).
>
>I've examined the source to the boot blocks for both linux and 386bsd (and
>confirmed that they matched the binaries), and as far as I can tell both
>are doing about the same things, with the exception that the 386bsd goes
>directly to the floppy ports where linux uses the bios interrupts, and 
>linux loads itself into 0x90000 where 386bsd uses 0x98000. However, linux later
>writes directly to the floppy ports and that works fine, and linux uses the
>same port locations as 386bsd. Since I don't hear any disk access after the
>light turns on, I would guess that the hang is coming before the point where
>the boot block loads in anything else, but that's only a guess; I don't know
>if I'd necessarily hear it loading in the 15 sectors if that doesn't require
>moving the heads, for instance.

This is the "Compaq boot problem".  You can get the patch from the file
~/terry/patch.bootblock.fdboot.c on ref.tfs.com, download a Compaq
dist.fs or fixit,fs, or go to a news archive and get the article
"Message-ID: <1992Dec08.132820.29435@crash>".

The problem is insidious, and it's a wonder anyone can boot at all; from
the referenced article:

] Also, Akihiro Higashi, in article
] <1992Sep11.051554.29192@mlab.nttdocomo.co.jp>, reported that he
] had to change 3rd & 4th "NOP"s to "JMP .+2"s on his COMPAQ 486/50L.
] 'NOP' is a delay macro which alters the AL register.  The specific
] ange 3rd & 4th "NOP"s to "JMP .+2"s on his COMPAQ 486/50L.
] 'NOP' is a delay macro which alters the AL register.  The specific
] instances mentioned involve code resetting the DMA controller's first/last
] flip-flop and then programming the DMA controller's mode register.
] The initialization byte for the mode register is clobbered by a NOP
] (I am amazed that the boot works on most systems!).  This can be fixed
] by rearranging the code slightly.

And for brave, brave souls:

] Fortunately, these changes do not shift the boot code, so a binary patch
] is possible.  The changes to the first sector on the disk (fixit.fs or
] dist.fs) are given below:
] 
] Offset    Old    New
] ------    ----   ----
] 0x00e1    0x07   0xbf
] 0x00f2    0xb0   0xee
] 0x00f3    0x46   0xe4
] 0x00f4    0xee   0x84
] 0x00f5    0xe4   0x4a
] 0x00f6    0x84   0xb0
] 0x00f7    0x4a   0x46

I believe the pattern "b0 46 ee e4 84 4a" would exist even on altered boot
disks, since this portion of the boot would be unchanged, even if not at
the same offset.  Work back by -15 (decimal) to fix the e1 offset value.


Using either a binary patch or Compaq boot disks should alleviate the
need to have a working system to build a disk to have a working system...



					Terry Lambert
					terry@icarus.weber.edu
					terry_lambert@novell.com
---
Any opinions in this posting are my own and not those of my present
or previous employers.
-- 
-------------------------------------------------------------------------------
                                        "I have an 8 user poetic license" - me
 Get the 386bsd FAQ from agate.berkeley.edu:/pub/386BSD/386bsd-0.1/unofficial
-------------------------------------------------------------------------------
Newsgroups: comp.unix.bsd