Date: Mon, 18 Jan 93 19:23:43 PDT From: Peter Crowley To: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: DESQview shadow buffer >In the process of porting pdcurses 2.0 to work under go32, I found >that int 0x10, fn 0xfe (return shadow buffer address) doesn't seem >to work in the sense that the DV shadow buffer isn't returned when >run in a DV 2.42 window without either screen virtualisation or >direct writes enabled. >Is this simply 'unimplemented', or am I doing something wrong? As >I understand it, the DV shadow buffer should be in the 1st meg for >that VM, so the usual MK_FP() style macro using the correct base >address for GO32 should be able to address it, avoiding the necessity >of having to write directly to video RAM. >I guess it's not entirely necessary since virtualisation always >works in DV/386 because of the '3' in '386'. :-) But performance >is always better and output smoother in a window where screen >virtualisation is set to "N". >If it's relevent, I'm using int86x() to call int 0x10 in this case. In go32 int 0x10 is intercepted and function 0xfe is passed to a graphics_inquiry() function, which sets ebx,ecx and edx. DV never gets involved. If you have the facility to rebuild go32 you could try adding a reference to generic_handler() in the function graphics_inquiry() in the file 'graphics.c' i.e.: void graphics_inquiry(void) { #if !DEBUGGER if(!gr_driver) init_graphics_driver(); #endif generic_handler(); /* right here */ tss_ptr->tss_ebx = gr_driver->old.driver_flags; if(new_driver) { word32 base = 0xe0000000L + ((word32)gr_paging_segment << 4); tss_ptr->tss_ecx = base + gr_driver->new.text_table; tss_ptr->tss_edx = base + gr_driver->new.graphics_table; } else { tss_ptr->tss_ecx = 0L; tss_ptr->tss_edx = 0L; } } Peter Crowley Quarterdeck Offices Systems