[comp.sys.zenith] Zenith DOS 3.3+ problem!

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