Mail Archives: djgpp/2003/03/14/21:30:06
So what am I doing wrong now?
#include <dpmi.h>
void display_string (unsigned short int x, unsigned short int y, unsigned
short int bg_color, unsigned short int text_color)
{
char * disp_str = "Hello!";
unsigned short int length = 6;
// *****************************************************
unsigned short int column = (x - 1);
unsigned short int row = (y - 1);
__dpmi_regs output;
output.x.ax = output.x.cs;
output.x.ds = output.x.ax;
output.x.es = output.x.ax;
output.x.ax = 0x1301;
output.h.bh = 0x00;
output.h.bl = ((text_color << 4) + bg_color);
output.x.cx = length;
output.h.dl = column;
output.h.dh = row;
output.x.bp = ((disp_str[0]) >> 4);
output.x.ss = (((disp_str[0]) << 4) >> 4);
__dpmi_int (0x10, (& (output)));
};
int main (void)
{
display_string (10, 10, 7, 1);
return 0;
};
"Martin Stromberg" <eplmst AT lu DOT erisoft DOT se> wrote in message
news:b4s30b$n6o$1 AT antares DOT lu DOT erisoft DOT se...
> Ken Jenkins (ken DOT jen AT adelphia DOT net) wrote:
> : This program is supposed to print "Hello!" in gray letters on a blue
> : background at screen position (10, 10). However all I'm getting is the
blue
> : background with no text, 6 characters long. Can anybody tell me what
I'm
> : doing wrong?
>
> Yes. You are issuing a real mode interrupt in protected mode. You
> aren't moving the values the real mode call need into conventional
> memory. Read __dpmi_int and related FAQs.
>
>
> Right,
>
> MartinS
- Raw text -