Xref: utzoo alt.msdos.programmer:829 comp.sys.ibm.pc:39395 Path: utzoo!utgpu!jarvis.csri.toronto.edu!cs.utexas.edu!swrinde!zaphod.mps.ohio-state.edu!uwm.edu!srcsip!eagle!rogers From: rogers@SRC.Honeywell.COM (Brynn Rogers) Newsgroups: alt.msdos.programmer,comp.sys.ibm.pc Subject: Re: i/o routines and non-standard video modes Message-ID: <41644@srcsip.UUCP> Date: 6 Dec 89 05:35:39 GMT References: <2090@calvin.EE.CORNELL.EDU> <2980@einstein.ptolemy.arc.nasa.gov> <2092@calvin.EE.CORNELL.EDU> <2544@alva.tut.fi> <89320 <1494@cc.helsinki.fi> <89338.051609CMH117@PSUVM.BITNET> <966@maytag.waterloo.edu> Sender: news@src.honeywell.COM Reply-To: rogers@src.honeywell.com (Brynn Rogers) Organization: Honeywell Systems & Research Center Lines: 56 In article <966@maytag.waterloo.edu> dmurdoch@watstat.waterloo.edu (Duncan Murdoch) writes: >Any program that changed the screen size without updating the screen size >bytes in the BIOS data area (40:4A = number of columns, 40:4C = number >of bytes in the full screen) is buggy and should be thrown out. If DOS >can't read those values and use them, then it's buggy and should be thrown >out. (This is the recommended action for ANSI.SYS, by the way. It contains >the hard coded screen length in earlier versions of DOS. Plain DOS can >handle a 50 line screen with no trouble.) >Duncan Murdoch >P.S. If there are any errors in the information above, then please >throw it out. The Bytes relevant to changing screen sizes are: (as far as I know) 40:49 Video mode (notes below) 40:4A number of columns 40:4C first time I heard of this one. Must be a word giving number of bytes in the screen if Duncan is right. 40:84 Rows - 1 (probably a leftover EGA BIOS bug that keeps it 1 smaller) 40:85 Character Height. The number of pixels vertical in a character cell. Notes: Ansi.sys and most of the nansi,fansi,zansi,nnansi drivers expect to see a 3 in 40:49. If they don't, you get flashing underbars at the begining and end of each line. Most Video BIOSes (some anyway) put the actual video mode number in 40:49 when you change to an extended text mode (like 640x480 or 800x600). Unless you pump a '3' back into 40:49 after changing to one of these modes, the various ansi drivers will think you are in graphics mode. nnansi.sys will soon be able to handle the 40:49 byte right, if what I heard is right. (I recommend it. It is the best ansi driver I have seen) I agree that any program that doesn't read those values (especially rows and columns) or handle arbitrary ones should be thrown out. I have written a font loader that will load any font into any EGA or better video board, and it knows about the extended modes that various super VGAs offer. Right now I am using an 800x600 text mode with a 8x12 character cell. This gives me 50x100 screens. I am using a font that I adapted from Xwindows. Fortunatly Kermit, Epsilon and the more program I use (browse.com from PC magazine) all can handle any size you throw at it. (I do believe kermit may screw up with more than 60 lines of 100, though). The program is in the beta testing stage right now, and will be posted to c.b.i.p. when finished. Brynn Brynn Rogers Honeywell S&RC rogers@src.honeywell.com home 612 874-7737