From: "A.Appleyard" To: DJGPP AT SUN DOT SOE DOT CLARKSON DOT EDU Date: Fri, 13 Jan 1995 11:12:17 GMT Subject: Another array-writing interrupt not catered for by G032 During my struggles with 64K-color graphics, I was referred to the info file C:\DJGPP\CONTRIB\LIBGRX\NDRIVERS\DOCS\VESA.DOC . Its section 6.3 describes an interrupt `AX=0x4f01, CX=n, int10' which writes to addresses ES:DI etseq much necessary information about the Super VGA screen mode n. But when I tried to use it, it did not write any info. In the end I found the two info items that I was wanting (window granularity and window size for my PC's screen's mode 0x64) by trial and error; but this is awkward. In my C:\DJGPP\GO32\EXPHDLR.C, the function i_10() which handles int10 interrupts, checks for ax==0x1100 and ax==0x1110 (user-define a font character), but not for any other array-using interrupt. i_10() should also cater for ax==0x4f01, int10, e.g. as follows (which may need correcting by someone more skilled in programming for G032):- tss2reg(&r); i = (word16)tss_ptr->tss_eax; if(i==0x4f01) { /* get Super VGA mode info */ v = tss_ptr->tss_edi + ARENA; CHECK_SEGFAULT(v); r.r_di = FP_OFF(transfer_buffer); r.r_es = _ES; /* this interrupt writes to 256 bytes starting at (es:di) */ intr(0x10, &r); tss_ptr->tss_eax = r.r_ax; /* 0 if OK, 1 if error */ if(!r.r_ax) memput(tss_ptr->tss_edi + ARENA, transfer_buffer, 256); reg2tss(&r); return 0; }