www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/03/23/09:41:55

Message-ID: <D1FB30BBA491D1118E6D006097BCAE391A0A9D@Probe-nt-2a.Probe.co.uk>
From: Shawn Hargreaves <ShawnH AT Probe DOT co DOT uk>
To: djgpp AT delorie DOT com
Subject: Re: Resolve a bet : Simple hello world sample at 640x480?
Date: Mon, 23 Mar 1998 10:34:33 -0000
MIME-Version: 1.0

Nate Eldredge:
> There's nothing magic about Allegro.

No, of course not :-) But in this case you have slightly 
oversimplified your code, to the point that it will only
work correctly on some machines!

> void put_char(int ch, int color)
> {
>   __dpmi_regs r;
>   r.h.ah = 0x0e;
>   r.h.al = ch;
>   r.h.bh = 0;
>   r.h.bl = color;
>   __dpmi_int(0x10, &r);
> }

VESA doesn't require the BIOS character output functions to be 
supported in SVGA modes, and this call will fail on a significant
number of machines. This can be determined by checking bit 2 of
the ModeAttributes flag, but that means you have to examine the
mode information structure (using a conventional memory buffer),
and then have some alternative method for drawing the message
(which means providing a font of your own, or routines to get
a copy of the BIOS one).

Of course this is all perfectly doable, but it requires quite
a bit of code to make it work correctly. My understanding from 
the original post was that the bet is whether this can be done
just a screen or so of code, and for that I think the answer
must be no...

	Shawn Hargreaves.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019