[comp.windows.ms] How do I write my own Windows graphics driver?

hartung@amos.ucsd.edu (Jeff Hartung) (06/14/90)

OK, this may be a near impossible task, but if possible, I would
like to write my own driver for MS Windows 3.0 so I can put my ATI
Graphics Solution card into its non-standard 640x200 16 color mode.
I have spoken to ATI and they said they do not have such a driver
available (though drivers for Lotus 1-2-3, and a couple of other
programs come on a disk with the card).  I have written a couple
of programs in C which properly set the mode, write a pixel of a
certain color to an x,y coordinate, read a pixel value from an x,y,
coordinate, and return to text mode.  I have a little 8086 Assembler
experience, too.

Where do I start?  I would like any pointers to the information I'll need,
exapmle code of other drivers, etc.  I'm really at a loss as to where I should
start.  I know there are other Graphics Solution cards out there, and I'll
gladly share the driver with the world when it's written

Thanks for any help in advance,

--
 --Jeff Hartung--  	
 Disclaimer: My opinions only, etc., etc., BLAH! BLAH! BLAH!...
 InterNet - hartung@amos.ucsd.edu           UUCP - ucsd!amos.ucsd.edu!hartung
 BITNET - Hartung@UMass

rogerson@PEDEV.Columbia.NCR.COM (Dale Rogerson) (06/14/90)

In article <11450@sdcc6.ucsd.edu> hartung@amos.ucsd.edu (Jeff Hartung) writes:
>OK, this may be a near impossible task, but if possible, I would
>like to write my own driver for MS Windows 3.0 so I can put my ATI
>Graphics Solution card into its non-standard 640x200 16 color mode.
	This isn't an impossible task, but you really do not want to do it.
	Video device drivers for Windows are a bear.  You also would not
	be satisfied with the results. 640x200 just isn't enough resolution
	to run a graphic environment.  I used to run Windows on an old (4MHz)
	Tandy 1000.  It had enhanced CGA (640x200x4) which was much better
	than normal monochrome CGA but it was NOT the ideal solution. Icons
	in Windows are defined on a 64x64 bitmap (at least in Windows 2.0)
	this bitmap is compressed to a 32x16 bitmap (if I remember correctly)
	when displayed on a CGA display.  The results are not very impressive.
	
	My advise is to buy a new card.  A cheap VGA card can be bought for
	less than $200.  The time and effort you put into writing the 
	driver yourself will cost you more than $200 in grief.

>Where do I start?  I would like any pointers to the information I'll need,
>exapmle code of other drivers, etc.  I'm really at a loss as to where I should
>start.  I know there are other Graphics Solution cards out there, and I'll
>gladly share the driver with the world when it's written
	In case you do not listen to the voice of reason here is some pointers
	on how to get started.

	First, you need to get the Windows Device Driver Development Kit.
	I got my free by calling up Microsoft Support Line.  If you do not
	own the SDK it may cost you money.  I own a copy of the SDK.
	
	Second, you will have to sign a non-disclosure agreement because
	Microsoft is giving you some of its source code.

	This development kit consists of a set of around ten disks and some
	documentation.  The disks include example source code for an ega
	driver and for some printer drivers.  Also included are some of the
	tools from the SDK and some of it documentation.  I believe that
	the drivers are written in a mix of C and ASM.  

	Some of these details may have changed with the release of Windows
	3.0.  I have a feeling that any change would make this process harder
	than easier.  There used to be two DDDK's: one for Windows/286, and
	one for Windows/386.  You wrote the driver for the 286 version and then
	you added a bunch more stuff for the 386 version. NO FUN.

>Thanks for any help in advance,
	Sure. No problem.

	-----Dale
		Rogerson-----

gpsteffl@sunee.waterloo.edu (Glenn Patrick Steffler) (06/15/90)

In article <11450@sdcc6.ucsd.edu> hartung@amos.ucsd.edu (Jeff Hartung) writes:
>OK, this may be a near impossible task, but if possible, I would
>like to write my own driver for MS Windows 3.0 so I can put my ATI
>Graphics Solution card into its non-standard 640x200 16 color mode.

Writing a Windows 3.0 video driver is very complicated.  First you
need the DDK (device driver kit), and then you need to know how
to write to the video adapter very quickly in the mode you selected.
The Windows drivers are written to be as fast as is possible with the
slow 20 wait state video bus configurations.  I know people who write
the drivers, and they find the task exhausting to say the least.

>I have spoken to ATI and they said they do not have such a driver
>available (though drivers for Lotus 1-2-3, and a couple of other
>programs come on a disk with the card).  I have written a couple
>of programs in C which properly set the mode, write a pixel of a
>certain color to an x,y coordinate, read a pixel value from an x,y,
>coordinate, and return to text mode.  I have a little 8086 Assembler
>experience, too.

You had better have a LOT of assembler experience, and understand the
specifics of Windows 3 and the enhanced mode peculiarities.
(like flat addresses if the card allows it...etc)

>Where do I start?  I would like any pointers to the information I'll need,
>exapmle code of other drivers, etc.  I'm really at a loss as to where I should
>start.  I know there are other Graphics Solution cards out there, and I'll
>gladly share the driver with the world when it's written
>

Start with a new video adapter.

>Thanks for any help in advance,
>
>--
> --Jeff Hartung--  	
> Disclaimer: My opinions only, etc., etc., BLAH! BLAH! BLAH!...
> InterNet - hartung@amos.ucsd.edu           UUCP - ucsd!amos.ucsd.edu!hartung
> BITNET - Hartung@UMass

Sorry to bum you out dude, but life isn't always fair.

-- 
Co-Op    _____           "Bo doesn't know software" - George Brett
Scum   _/|__Q_\___ 
U of   | ww--+----#\    "Catch the mystery catch the spit!" - Tom Saywer (Rush)
Loo'91 ~~()~~~~~()~~                                     Glenn Patrick Steffler