Date: Wed, 23 Oct 1996 21:14:36 -0300 Message-Id: <1.5.4.16.19961023191054.28c7ce1a@dmeasc.rc.ipt.br> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" To: oak9755 AT silver DOT sdsmt DOT edu (Olav Kindt), djgpp AT delorie DOT com From: Cesar Scarpini Rabak Subject: Re: VESA Programming -- oh boy. He He! PLS check your attributions! I did not made THAT commentary! At 04:37 23/10/96 GMT, Olav Kindt wrote: >Cesar Scarpini Rabak (csrabak AT dce03 DOT ipt DOT br) wrote: >: >char *OemStringPtr PACKED; > >This pointer is a pointer to memory in DOS, usually in the VGA BIOS at >c000 something. The reason the program crashes when you try to print this >is because it doesn't like you fiddling with dosmemory directly. (Without >telling it) > >I used this workaround, ( I'm sure there are better ways) > >First you calculate the linear address of the first character in the >string. Your OemSStringPtr will be 4 bytes, first two are segment , second >two are offset. Linear address = SEg * 16 + offset. > >Then use the dosmemget(linearaddres, 1, &Placetoputchar) to get the value >of the first character. Increment the linear address, and get next until >the '\0' character is read. > >Another thing is that some cards might piggyback this string, (and also >the supported mode list) into the unused area of the VESAINFO block. In >that case you have to figure out where the __tb (I'm assuming you are >using the transfer buffer for getting the VESAINFO block), and find the >values in that position. > >I have some code doing this, and I can mail it to you if you still can't >figure this thing out. > > -- Olav Kindt | email: >oak9755 AT silver DOT sdsmt DOT edu >737 E. Anamosa Street #103 | xedb_oak AT debet DOT nhh DOT no >Rapid City SD-57701 | MAIL me man....... > > ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Cesar Scarpini Rabak E-mail: csrabak AT ipt DOT br DME/ASC Phone: 55-11-268-35221Ext.350 IPT - Instituto de Pesquisas Tecnologicas Fax: 55-11-268-5996 Av. Prof. Almeida Prado, 532. Sao Paulo - SP 05508-901 BRAZIL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~