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 -