Newsgroups: comp.os.minix
Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.bhp.com.au!mel.dit.csiro.au!munnari.OZ.AU!news.hawaii.edu!ames!usenet.kornet.nm.kr!usenet.hana.nm.kr!usenet.seri.re.kr!news.cais.net!primus.ac.net!news.serv.net!solaris.cc.vt.edu!news.mathworks.com!news.kei.com!nntp.coast.net!swidir.switch.ch!swsbe6.switch.ch!surfnet.nl!newshost.vu.nl!cs.vu.nl!kjb
From: kjb@cs.vu.nl (Kees J Bot)
Subject: Re: Minix won't run on SuperPC!
Nntp-Posting-Host: hornet.cs.vu.nl
References: <Pine.LNX.3.91.960203140619.282B-100000@unit.com> <Pine.ULT.3.91.960206161359.17082A-100000@henson.cc.wwu.edu> <267cc$16723.360@news.hampshire.edu>
Sender: news@cs.vu.nl
Organization: Fac. Wiskunde & Informatica, VU, Amsterdam
Date: Wed, 7 Feb 1996 16:04:40 GMT
Message-ID: <DMExzs.IEr.0.-s@cs.vu.nl>
Lines: 38

aswNS@hamp.hampshire.edu (Albert S Woodhull) writes:

>On Tue, 6 Feb 1996 16:18:08 -0800 Jesse J. Steinfort
>(n8845031@henson.cc.wwu.edu) wrote in comp.os.minix:

>: > I got the 1.7.1 distribution and have written it to floppies, but when I 
>: > insert the TINYROOT disk and try to use it to start the system, I get:
>: > 
>: > Minix boot monitor 2.1
>: > Press ESC to enter the monitor
>: > Read error 0x09 (DMA crossed 64 KB boundary) at sector 1 absolute
>: > Hit any key to reboot
>: ...

>: I have the same problem!  I have a Leading Edge 8088 (Model D) with 640K 

>This is due to a problem inherent in the PC hardware, the chip that
>controls DMA is unable to properly make a carry when the address is
>incremented past a 64K boundary. There is some code common to all the
>hard disk drivers (in init_buffer(), kernel/driver.c) that is supposed
>to work around the problem.  I just finished reviewing this code and 
>writing an explanation of it not too long ago; I though it was OK.
>Apparently it isn't.

Don't blame the kernel code.  The error message is produced by the boot
monitor, not the kernel.

Apparently the floppy bootstrap manages to read the monitor and jumps to
it.  The monitor then relocates itself to the end of "conventional"
memory and then tries to read its boot parameters from sector 1.  This
fails.

When the monitor relocates itself it computes a new address that places
the data segment so that it is completely within a 64K chunk.  I just
checked the computation again, and it should work.
--
	                        Kees J. Bot  (kjb@cs.vu.nl)
	              Systems Programmer, Vrije Universiteit Amsterdam
