*BSD News Article 65437


Return to BSD News archive

Path: euryale.cc.adfa.oz.au!newshost.anu.edu.au!harbinger.cc.monash.edu.au!news.rmit.EDU.AU!news.unimelb.EDU.AU!munnari.OZ.AU!news.ecn.uoknor.edu!qns3.qns.com!imci4!newsfeed.internetmci.com!in2.uu.net!nwnews.wa.com!news1.halcyon.com!coho!tzs
From: tzs@coho.halcyon.com (Tim Smith)
Newsgroups: comp.unix.bsd.freebsd.misc
Subject: Re: FreeBSD support [was Re: God Damn partition crap!]
Date: 6 Apr 1996 12:18:52 GMT
Organization: Northwest Nexus, Inc. - Professional Internet Services
Lines: 27
Message-ID: <4k5nfc$9sp@news1.halcyon.com>
References: <4hqav8$kmo@nntp.interaccess.com> <4jfhlv$kt1@park.uvsc.edu> <4jlm89$7bm@calypso.bns.com.au> <4jvaqg$mih@park.uvsc.edu>
NNTP-Posting-Host: coho.halcyon.com

Terry Lambert  <terry@lambert.org> wrote:
>chaining.  Since INT 13 chaining is established by controller
>POST routines installing controller BIOS entry points into
>the INT 13 vector, you generally have to do something like
>read the first sector of each BIOS device, calcualate an
>MD5 checksum for each one, and then do the same for each
>protected mode driver device node to establish your mapping.
>You may have to repeat this process multiple times if the
>checksums match (which they might if the drives are idenitically
>partitioned).

The following hack, which I used when in NCR's SDMS software, actually
worked:

	int identify( int target )
	{
		for ( bios_drive = 0x80; bios_drive <= x87; bios_drive++ )
		{
			issue_illegal_request_to_target_drive(target);
			read_a_sector_from_bios_drive(bios_drive);
			issue_REQUEST_SENSE_to_target_drive(target);
			if ( sense_key == WHATEVER_THE_NO_ERROR_ONE_IS )
				return bios_drive;
		}
	}

--Tim Smith