delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1999/11/20/12:05:24

From: "Wynand Van Staden" <s9800973 AT student DOT rau DOT ac DOT za>
To: <djgpp AT delorie DOT com>
Date: Sat, 20 Nov 1999 16:52:44 +0000 (GMT)
Organization: RAU Student Server
X-Mailer: ObsidianSystems-OcsEmail1-0-30 brewed at www.obsidian.co.za
Message-ID: <9431167645339-2018525339s9800973@student.rau.ac.za>
Subject: real vs protected mode interrupts.
Reply-To: djgpp AT delorie DOT com

ok, well same old questions regarding the CDROM. i've seen some posts here lately, but none of them ask the questions I need answered.

I've gotten past the part of passing the segment:offset pair to __dpmi
in ES:BX, no problem. (did this with VESA 2 routines....)

now, there still remains one thing that bugs me. in the CDROM, mscdex calls
what you need to do is pass a control structure to ES:DI. Ok, easily done with __tb >> 4 thingy(you know what i mean), what now remains a problem is that in the control block you need to pass a pointer to another control block 

ie ::

struct blah
{
    short length;   //length of control block
    .
    .
    .
    unsigned long *ptr_to_control_block;
};

struct control_block_2
{
    ...
};

so somewhere you need blah.ptr_to_control_block to point to control_block_2.
and then you make the real mode call to mscdex using "blah".  

problem is control block 2 holds information that the real mode call needs.  so what i'd like to know if anybody can help me is how would you go about doing this??                                                                          
if i'm being unclear i apologise. and if this has been answered somewhere, i wasn't aware of it. 

(perhaps i should go look in ID's quake source to see how they managed it?)

thanks in advance.      

- Raw text -


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