Contributor: ANDREW KEY               

> I have always addressed $B800 as the screen segment for direct video
> writes in text.... Err, umm, does anyone have the code to detect whether
> it is $B000 or $B800 (for Herc.'s and the like)...

Function ColorAdaptor: Boolean; Assembler; {returns TRUE for color monitor}
  int 11                   {BIOS call - get equipment list}
  and ax, $0030            {mask off all but bits 4 & 5}
  xor ax, $0030            {flip bits 4 & 5 - return val is in ax}

This function uses a BIOS interrupt to get the equipment list(at $0000:$0410)
as determined at time of power-up.  The only problem I can see here is that
a TRUE(non-zero value in al) will also be returned if no video card was
detected at power-up.