dd26+@andrew.cmu.edu (Douglas F. DeJulio) (12/11/90)
I've gotten several programs that use BGI files and can choose between different display types when they start up. They're *supposed* to auto-detect the correct display type and use it. On my machine they don't. I've got an AT&T PC6300 which should use the ATT400 BGI module. Programs that autodetect invariably choose CGA. Ugh. I own Turbo-C and I've checked the manuals, but I couldn't find a way to force a particular display type at run time. Can it be done with an environment variable or something? Any help would be appreciated. -- Doug DeJulio dd26@andrew.cmu.edu
dslg0849@uxa.cso.uiuc.edu (Daniel S. Lewart) (12/11/90)
dd26+@andrew.cmu.edu (Douglas F. DeJulio) writes: > I've gotten several programs that use BGI files and can choose between > different display types when they start up. They're *supposed* to > auto-detect the correct display type and use it. On my machine they > don't. I've got an AT&T PC6300 which should use the ATT400 BGI > module. Programs that autodetect invariably choose CGA. Ugh. I own > Turbo-C and I've checked the manuals, but I couldn't find a way to > force a particular display type at run time. Can it be done with an > environment variable or something? Any help would be appreciated. > -- > Doug DeJulio > dd26@andrew.cmu.edu The following Turbo Pascal routine works for my AT&T PC6300. It should be trivial to translate it to Turbo C. ------------------------------------------------------------------------------- Uses Graph; procedure DetectGraph(var GraphDriver,GraphMode: Integer); const ATTLogo = 'OLIVETTI'; ATTLen = Length(ATTLogo); var RomId: array[1..ATTLen] of Char absolute $FC00:$0050; begin if RomId <> ATTLogo then Graph.DetectGraph(GraphDriver,GraphMode) else begin GraphDriver := ATT400; GraphMode := ATT400Hi; end; end; ------------------------------------------------------------------------------- Daniel Lewart d-lewart@uiuc.edu
tcs@mailer.jhuapl.edu (12/11/90)
In article <cbMwB=C00VI8A0oYdi@andrew.cmu.edu>, dd26+@andrew.cmu.edu (Douglas F. DeJulio) says: > >I've gotten several programs that use BGI files and can choose between >different display types when they start up. They're *supposed* to >auto-detect the correct display type and use it. On my machine they >don't. I've got an AT&T PC6300 which should use the ATT400 BGI >module. Programs that autodetect invariably choose CGA. Ugh. I own >Turbo-C and I've checked the manuals, but I couldn't find a way to >force a particular display type at run time. Can it be done with an >environment variable or something? Any help would be appreciated. >-- >Doug DeJulio >dd26@andrew.cmu.edu If the programs are ones that you didn't write, then you probably can't fix it. The programmer probably looked over the code and decided that *he didn't want to try to implement the displaytype and if it is detected, default to CGA instead. In the programs that I write I try to default to a driver that I can write in. Of course, I always link in the drivers and don't want to have an 80k program that prints "Hello, world!" :) :) :) Carl Schelin tcs@mailer.jhuapl.edu
dd26+@andrew.cmu.edu (Douglas F. DeJulio) (12/11/90)
dslg0849@uxa.cso.uiuc.edu (Daniel S. Lewart) writes: > The following Turbo Pascal routine works for my AT&T PC6300. It should be > trivial to translate it to Turbo C. Perhaps I was not clear in my original question. My main problem is with programs for which I do not have the source code. Is there anything to be done besides going in with a debugger, or disassembling or the like? -- Doug DeJulio dd26@andrew.cmu.edu
mpledger@cti1.UUCP (Mark Pledger) (12/11/90)
A friend of mine who is a professional graphics programmer (and who owns an AT&T 6300) explained the problem to me. Apprently, AT&T does not use the standard video mode registration with BIOS properly. When someone uses the normal BIOS video calls, the AT&T returns an invalid video configuration. The only way out is to specifically check for AT&T type machines when developing graphics programs for the PC. In order to due this you will have to contact AT&T's PC technical office (or something like that) and find out the exact procedure for detecting the correct video modes when using the AT&T 6300. This is why there is an extra driver for Hecules-type video displays. The only difference is the fact that since Hercules is a "de facto" monochrome standard, and its widely supported, all graphics programs automatically either check specifically for Hercules-type displays or include a special Hercules graphics driver. -- Sincerely, Mark Pledger -------------------------------------------------------------------------- CTI | (703) 685-5434 [voice] 2121 Crystal Drive | (703) 685-7022 [fax] Suite 103 | Arlington, VA 22202 | mpledger@cti.com --------------------------------------------------------------------------
gwni@troi.cc.rochester.edu (G. Wayne Nichols) (12/12/90)
In <334@cti1.UUCP> mpledger@cti1.UUCP (Mark Pledger) writes: >A friend of mine who is a professional graphics programmer (and who owns >an AT&T 6300) explained the problem to me. Apprently, AT&T does not use >the standard video mode registration with BIOS properly. When someone >uses the normal BIOS video calls, the AT&T returns an invalid video >configuration. The only way out is to specifically check for AT&T type >machines when developing graphics programs for the PC. In order to due >this you will have to contact AT&T's PC technical office (or something like >that) and find out the exact procedure for detecting the correct video >modes when using the AT&T 6300. If this is really the problem, shouldn't it be possible to write a TSR to intercept the INT 10 BIOS calls and return the "right" data for the 6300's video configuration? Maybe someone should take a shot at this ... Perhaps even if the AT&T 6300 video controller were recognized, many programs do not include support for 640x400 graphics? If so, then you're stuck, I'm afraid. This is one advantage to using Windows ...