[GEM Development] FreeGEM drivers updated

John Elliott jce at seasip.demon.co.uk
Mon Mar 11 17:22:43 PDT 2013


  A little while agao, I wrote: 
 
> And thirdly, I wrote the driver to
> present the 256-colour linear framebuffer as eight mono planes, and the 
> transformation to and fro slows things down.

  I've now worked out a way round that, and updated the driver packs at 
<http://www.seasip.info/Gem/drivers3.html> and
<http://www.seasip.info/Gem/drivers4.html> with the result. It's been 
done as a new variant of the 1024x768x256 driver called SDVX89.VGA 
(or SDVX810.VGA in the GEM/4 version). I've only tested it unscientifically
on DOSBox, but it feels a lot faster.

  The way it works is that the screen is still presented as eight planes 
(GEM insists on there being planes) but instead of a 'plane' being defined 
as a specific bit from every byte, it's defined as a specific byte from 
every group of eight bytes. That cuts out an awful lot of logic operations.

  As an example: At A000:0003 and A000:A004 are two bytes, abcdefgh and 
ijklmnop. In the old and new mappings, these are stored as:

           old           new

plane 0  ---ai---    --------
plane 1  ---bj---    --------
plane 2  ---ck---    --------
plane 3  ---dl---    abcdefgh
plane 4  ---em---    ijklmnop
plane 5  ---fn---    --------
plane 6  ---go---    --------
plane 7  ---hp---    --------


  Unless I hear bad reports of the new blitting engine / data format, at 
some point I'll migrate all the other 256-colour drivers to use it.

  (Also: A bug has been fixed that could cause the 256-colour drivers to 
crash when outputting text).

-- 
John Elliott


More information about the gem-dev mailing list