X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f From: "Rod Pemberton" Newsgroups: comp.os.msdos.djgpp Subject: Re: csdpmi7 not working on virtualbox, how use dosmemget with seg ofs from int21h? Date: Thu, 3 Mar 2011 04:31:05 -0500 Organization: Aioe.org NNTP Server Lines: 38 Message-ID: References: <39cdc18e-eccb-4213-b896-db3be020702e AT w9g2000prg DOT googlegroups DOT com> NNTP-Posting-Host: sg0uvLzlDfZOqmCSVnJXCA.user.speranza.aioe.org X-Complaints-To: abuse AT aioe DOT org X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.2001 X-Notice: Filtered by postfilter v. 0.8.2 X-Newsreader: Microsoft Outlook Express 6.00.2800.2001 X-Priority: 3 X-MSMail-Priority: Normal Bytes: 2467 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com "Jim Michaels" wrote in message news:39cdc18e-eccb-4213-b896-db3be020702e AT w9g2000prg DOT googlegroups DOT com... >. > I am doing an int 21h function 7303h disk free space call, and I need > to pass a structure to this function and when the function finishes, > it returns a similar structure back, but with different data filled > in. > [...] > > the addresses of the structures in real mode memory in question are in > segment offset format coming from and going into int21h function 7303h > (a DOS FAT32 function) at es:di and I need a C string at ds:dx, and I > need to get at whatever is coming back from es:di. > > any detailed clues/code as to how I should deal with that? > Yes, look at the DJGPP portion of my lfn_71A0() routine here: http://groups.google.com/group/openwatcom.users.c_cpp/msg/a021f62b0571635e I'd think your routine would be very similar - basically identical - for 7303h instead of 7160h. E.g., change ax = 7303h from 7160h, and set r.x.cx = 44 (2Ch). The routine uses a DJGPP area called the "transfer buffer" in low memory. It's addressed as selector:offset as _dos_ds:__tb in protected mode, but you usually just need the offset for PM functions. It's addressed as segment:offset as __tb_segment:__tb_offset in real mode or for real-mode functions. ds:dx uses the first part of the tb as a path and a later portion, starting at OFFS, for the buffer at es:di. You'll need to check RBIL to see if the flags and return related lines are correct. post 2 of 3. Rod Pemberton