www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1996/06/05/23:03:04

Xref: news2.mv.net comp.os.msdos.djgpp:4638
From: jpdelprat AT teaser DOT fr (Jean-Pierre)
Newsgroups: comp.os.msdos.djgpp
Subject: Help about Critical Error Irq Handler
Date: Wed, 05 Jun 1996 18:20:34 GMT
Organization: Guest of France-Teaser
Lines: 67
Message-ID: <4p4q52$ic4@teaser.fr>
NNTP-Posting-Host: clt-e26233c2.teaser.fr
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp

Mayday !!

Could anyone tell me what this piece of code doesn't work ?

#include <stdlib.h>
#include <unistd.h>

#pragma pack(1)
#include <dir.h>
#pragma pack()

#include <go32.h>
#include <dpmi.h>


void Int24Handler() {};  
// Should set al register  to 0 but 
// I don't know how to 


void main()
{
  char buffer[260];

  _go32_dpmi_seginfo old_int24_handler;
  _go32_dpmi_seginfo addr;

  // Install Critical Error handler

  addr.pm_offset=(int)(Int24Handler);
  addr.pm_selector=_go32_my_cs();

_go32_dpmi_get_protected_mode_interrupt_vector(0x24,&old_int24_handler);
  _go32_dpmi_set_protected_mode_interrupt_vector(0x24,&addr);

  // Read disk a: (no disk in drive)

  setdisk(0);            // A:
  getcwd(buffer,260);
  setdisk(2);            // C:

  // Remove Critical Error handler


_go32_dpmi_set_protected_mode_interrupt_vector(0x24,&old_int24_handler);
}

What i get is  :

Exiting due to signal SIGSEGV
General Protection Fault at eip=00001001
eax=00001800 ebx=c0ee0320 ecx=00000071 edx=0000000f esi=000001d6
edi=00040002
ebp=000000d7 esp=00000fdf cs=00a7 ds=00af es=00b7 fs=0087 gs=00bf
ss=017b
Call frame traceback EIPs:
  0x00001001

Drive not ready--close door
R(etry), I(gnore), F(ail), or A(bort)?



Thank you very much,

  Jeepy

- Raw text -


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