cs106132@umbc5.umbc.edu (cs106132) (04/02/91)
Hello everyone, I encountered a strange problem when trying to read the boot sector on a 40M hard disk formatted using Zenith DOS 3.3+, the one that supports large partitions. The program I am working on needs to read the boot sector and extract some info from the BPB. I use DOS absolute read interrupt 25h to access logical sector 0. For some reason, this works fine with MS-DOS systems, but when I try using Zenith DOS 3.3+, it bombs out. If anyone out there has done some low level programming under Zenith DOS, please let me know if there is a reason for this strange error. If I use BIOS int 13h with the info I get from partition table, I can get the boot sector, but I would like to use DOS to stay compatible with the majority... Any info will be appreciated. Regards, Tarkan
jackw@nstar.rn.com (Jack Wiggins) (04/02/91)
Is it a Zenith system you're trying this on with a zenith hard drive controler? -- Jack Wiggins NSTAR conferencing site 219-289-0287 internet: jackw@nstar.rn.com 1300 newsgroups - 8 inbound lines uucp: ..!uunet!nstar.rn.com!jackw 99 file areas - 4300 megabytes --- backbone news & mail feeds available - contact larry@nstar.rn.com ---
paulb@zds-ux.UUCP (Paul E. Berg) (04/05/91)
In article <1991Apr1.212138.18402@umbc3.umbc.edu>, cs106132@umbc5.umbc.edu (cs106132) writes: > > I encountered a strange problem when trying to read the boot sector on a > 40M hard disk formatted using Zenith DOS 3.3+, the one that supports large > partitions. The program I am working on needs to read the boot sector and > extract some info from the BPB. I use DOS absolute read interrupt 25h to > access logical sector 0. For some reason, this works fine with MS-DOS > systems, but when I try using Zenith DOS 3.3+, it bombs out. Since you noted that 3.3+ has support for large partitions I assume that you are in using one here. For this case you need to use int 25 with CX=-1 and DS:BX=far pointer to a parameter packet, a la the MS-DOS 4.0 way. Normally, your application should try the int 25 as you have it now, and if you get an error (carry set and AX=0207) retry the int 25 with the CX and DS:BX changes. In case you're wondering, this approach is also compatible with generic MS-DOS 4.0 as well as the soon-to-be-available MS-DOS 5.0. In fact, this is one of the few ways of reliably determining that you have a large partition. Just in case you don't have the appropriate reference manual... the DS:BX parameter packet referred to above is: starting sector number dd ? number of sectors dw ? transfer address dd ? > Regards, > Tarkan Best of luck... --____ ___ ____ /| ) /) / ' /| ) Paul E. Berg / |-'__ // /-- / |-< _ __ _ Zenith Data Systems (_/ (_(_(_(_(/_ (___,o (_/___)_(/_/ (_(_)_ ZDS Technology Center voice (616) 982-5124 /| 150 Hilltop Road paulb@zds-ux.ZDS.COM fax (616) 982-5690 (/ St Joseph, MI 49085