ftp.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1992/02/03/19:16:06

Date: Mon, 3 Feb 92 18:13:30 EST
From: DJ Delorie <dj AT ctron DOT com>
To: dvldbg AT cs DOT umu DOT se
Cc: djgpp AT sun DOT soe DOT clarkson DOT edu, dvldbg AT cs DOT umu DOT se
Subject: Absolute read
Status: O

>I looked at the sources for the function library, trying to
>figure out how to do an absolute disk read, but just got
>confused. In the source for 'read', EBX, ECX and EDX are set
>to the arguments, and then an 'int 21h' is done, with ah=3fh.
>But... In the description of that function, CX should be
>the number of bytes, and DS:DX the adress to read to. How does
>the bios know that is should use EDX instead of just DX?
>And what happens if you try to read more than 65535 bytes?

int21 function 3f is a DOS read, not a BIOS read.  Go32's sole purpose
in life is to translate 32-bit requests to 16-bit requests, including
breaking up transfers into manageable portions.

The rules for conversions are as follows:

* values in 16-bit registers now occupy 32-bit registers

* segment:offset pointers are now linear pointers in the 32-bit register.

>And, what I really want to know, how do I read a specific
>sector?

If you want to use int 13h functions, you'll have to add them to go32
(exphdlr.c), since it currently does not allow you to do that.

DJ
dj AT ctron DOT com
Life is a banana.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019