Path: utzoo!utgpu!water!watmath!clyde!rutgers!rochester!cornell!batcomputer!sun!naughton From: naughton@sun.soe.clarkson.edu (Patrick Naughton) Newsgroups: comp.sys.ibm.pc Subject: Re: Direct Graphics with the EGA Message-ID: <439@sun.soe.clarkson.edu> Date: 19 Feb 88 07:50:28 GMT References: <702@uthub.toronto.edu> Organization: Clarkson University, Potsdam, NY Lines: 74 From article <702@uthub.toronto.edu>, by kevin@uthub.toronto.edu (Kevin A. Stoodley): > > I'm looking for information on how the Tatung Supreme EGA's 350 by 640 16 > colour graphics mode can be used directly from an assembly language program > without using BIOS calls on an AT. Specifically, I'd like to know how the EGA > stores the colours of each pixel. All I can find out from my card's > documentation is that the mode is 16 and that the screen memory starts at > a000:0h. I would really appreciate some information, if anyone knows this kind > of stuff. Failing that, or if it's too involved to conveniently explain in a > reasonably short note, I would like a good reference to the material. > Thanks in advance. > -- > > Kevin A. Stoodley University of Toronto, Dept. EE > {linus,ihnp4,uw-beaver,floyd,utzoo}!utcsri!uthub!kevin For one thing it is generally referred to as 640x350 (x then y). That understood, let's try to exaplain how to use it a little. Basically the EGA does 16 colors by using 4 video planes mapped to the same address space. This is why the RAM onboard is 256Kx4 as opposed to normal memory being 256Kx1... ----------------------- A000:0000---->|00000001 RED | ---------------------- | |00000001 GREEN | | --------------------- | | |00000001 BLUE | | | -------------------- | | | |00000001 INTENSITY | | | | | | | | | | | | | | To plot a point in a color c at the coords x,y on the EGA do this. the byte of memory you need to modify is at this location A000:((y * 80) + (x div 8)) You must first read from this location, ignore what you read. set the mask register to 100000000b (80h) shifted right (x mod 8) set write mode 2 write the color (0..15) you want to the memory location above. The three mysteries for you are: How to set the mask register... It is register 8 of the graphics controller whose address aludes me. How to set write mode 2. Again... register 5 of the graphics controller (see above) I'll check my references and post a code fragment later... I'm on my sun 3 not near my AT with all of the EGA code and docs.... till then... -Patrick ___________________________________________ | | | Internet: naughton@sun.soe.clarkson.edu | | BITNET: naughton@CLUTX.BITNET | | uucp: {rpics, gould}!clutx!naughton | |___________________________________________|