Mail Archives: djgpp/2002/03/05/14:24:56
#include <sys/farptr.h>
#include <stdio.h>
#include <crt0.h>
#include <dpmi.h>
#include <go32.h>
unsigned char SChar;
int _crt0_startup_flags = _CRT0_FLAG_LOCK_MEMORY;
static __dpmi_regs callback_regs;
static _go32_dpmi_seginfo info;
void Int_2F_Handler(_go32_dpmi_registers *r);
main()
{
unsigned short Offset, Segment;
Offset = _farpeekw(_dos_ds, 0xBC);
Segment = _farpeekw(_dos_ds, 0xBD);
printf("\nOld 0DH Segment%X\nOld 0DH Offset%X\n", Segment,
Offset);
__dpmi_regs r;
info.pm_offset = (long)Int_2F_Handler;
_go32_dpmi_allocate_real_mode_callback_iret(&info,
&callback_regs);
_go32_dpmi_set_real_mode_interrupt_vector(0x2F, &info);
r.x.ax = 0x252F;
r.x.ds = info.rm_segment;
r.x.dx = info.rm_offset;
__dpmi_int(0x21, &r);
Offset = _farpeekw(_dos_ds, 0xBC);
Segment = _farpeekw(_dos_ds, 0xBD);
printf("\nNew 0DH Segment%X\nNew 0DH Offset%X\n", Segment,
Offset);
/* __djgpp_exception_toggle(); */ /* Only needed if
exceptions linked */
r.x.ax = 0x3100;
r.x.dx = 16;
__dpmi_int(0x21, &r);
}
void Int_2F_Handler(_go32_dpmi_registers *r)
{
/* Your code here */
}
--
Posted via Mailgate.ORG Server - http://www.Mailgate.ORG
- Raw text -