delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1994/07/25/13:35:52

Date: Mon, 25 Jul 94 09:25:28 -0500
From: drizzt AT cs DOT wisc DOT edu (Craig Peeper)
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Subject: Real Mode Interrupts

  I seem to be having problems with real mode interrupts in the 
sound blaster code by David Baggett.  If I install just the
protected mode interrupts, the music will play until an interrupt
is lost when the system is in real mode (i.e. when the pause
key is pressed).  If I use the following code to install a 
real mode interrupt handler (actually a hook to a protected
mode handler), my program will crash with an EIP stack of 0x0000001
(and with maint 5 it now gives "Unsupported interrupt: 0x0d" messages too).
Anyone see what I am doing wrong???

void install_rm_interrupt()
{
        copy_of_ds = _go32_my_ds();

        rm_si.pm_offset = (int) sb_intr;
        rm_si.pm_selector = _go32_my_cs();
        ret = _go32_dpmi_allocate_real_mode_callback_iret(&rm_si, &rm_regs);
        if (ret != 0) {
                printf("cannot allocate real mode callback, error=%04x\n",ret);
                exit(1);
        }

        disable();
        _go32_dpmi_get_real_mode_interrupt_vector(8 + sb_irq, &oldirq_rm);
        _go32_dpmi_set_real_mode_interrupt_vector(8 + sb_irq, &rm_si);
        enable();
}



Thanks,
Craig Peeper
peeper AT cs DOT wisc DOT edu

- Raw text -


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