SMALL FONTS AND ICONS FOR OS/2 WARP SVGA DISPLAY DRIVERS -------------------------------------------------------- Version 1.3 ----------- ** Please take time to read the disclaimer located ** ** at the bottom of this file. ** Introduction ------------ The SVGA display drivers from IBM have an annoying habit of using large icons and fonts at resolutions above and including 1024x768. The program contained within this archive was written to address this problem by making alterations to the display drivers to give small fonts and icons. This latest version of smallfix should address many of the problems reported by users of more exotic display drivers. smallfix now allows users to use a simple interface to patch drivers that smallfix doesn't have in its internal database. VERY IMPORTANT: SMALLFIX WILL *NOT* ALTER THE WINDOWS(tm) OR SEAMLESS WINDOWS(tm) DRIVERS IN ANY WAY, SHAPE, OR FORM. YOU WILL CONTINUE TO HAVE LARGE FONTS AND ICONS IN WINDOWS SESSIONS AFTER RUNNING FIXDISP ON YOUR OS/2 DRIVERS. (I don't have any solution for this). Please feel free to hassle IBM about these large fonts and icons. I don't know anyone who actually prefers them. I can only assume that the IBM OS/2 programmers aren't inflicted with them, or this problem would have been resolved by now. smallfix will probably work with OS/2 2.1, OS/2 2.11, and Warp Beta drivers as well. Procedure --------- NB: If you encounter problems at any stage, skip down to the trouble shooting section below. You might also like to print out this readme before starting. You should also read this entire file first. 1. Install the high resolution drivers using Selective Install or your display card manufacturer's installation disks if you haven't already done so. 2. The first and most important thing to do is to take a backup of the display driver DLL that smallfix is going to attack. This DLL will be located in \OS2\DLL on your OS/2 boot drive. Possible names for this DLL include: IBMS332.DLL IBMDEV32.DLL ATIM32.DLL ATI6432.DLL M6432.DLL TLIW32PM.DLL CIRRUS.DLL MGA32.DLL 8514_32.DLL IBMXGA32.DLL The DLL will probably be about 350k in size. Take a backup of this DLL by copying it to a new file in the \OS2\DLL directory. I recommend that you either prefix an "old-" to the DLL name (if on HPFS) or change the .DLL suffix to .OLD. eg. [D:\OS2\DLL] copy ibms332.dll ibms332.old or [D:\OS2\DLL] copy ibms332.dll old-ibms332.dll Also sticking a copy on floppy disk won't hurt. 3. Run fixdisp.exe in an OS/2 command window. 4. When prompted, enter the path to the \OS2\DLL directory. eg. Enter path to OS/2 DLL directory (eg. C:\OS2\DLL) : D:\OS2\DLL ... using D:\OS2\DLL fixdisp will now scan the directory for DLLs that it knows about. If it finds any, it will display a list like this: This is a list of possible DLLs to patch: >> ibms332.dll << (already patched) >> old-ibms332.dll << -- 32 Bit S3 Display Drivers V2.4 -- (try this) The comment in parentheses is reasonably important. It can be one of the following: already patched - the DLL is patched already try this - the DLL is known about by fixdisp possible - fixdisp knows can't reliably patch the DLL automatically, but will help you to do it. If you do not get a list of DLLs like the one shown above, then DO NOT PANIC! Assuming that you know or can guess the DLL name yourself, then fixdisp will guide you through the patching process. 5. Enter the name of the DLL file to be patched. Use the backed up .DLL (old-.dll, or .old). eg. (Don't bother trying svga.dll here!) Enter the name (without path) of the DLL to patch : old-ibms332.dll ... using old-ibms332.dll NB: svga.dll may sound like a promising display driver name, but the chances of getting small fonts and icons as a result of patching it are about 0%. Trust me on this. :-) 6. Enter the name of the file that will contain the patched DLL. I recommend new-.dll or .new. eg. Enter the name (with path) for the patched DLL : D:\OS2\DLL\new-ibms332.dll 7. If the display driver DLL is one that is recognised by fixdisp's internal database, then you'll get a message like this: Use built-in patch information rather than the patch locator? [Y/N] : If you respond "Y" to this, then fixdisp will attempt to patch the DLL using information in its database. You should probably reply "Y" to this prompt. If the automatic patch doesn't work for some reason, or you like life on the edge, then respond with "N" and fixdisp will guide you through the manual patching process. If you don't get given this prompt, or you respond with "N", then you will be taken to the patch locator. Skip to step 9. 8. On responding "Y", the following should (hopefully) appear: ... using built-in patch information... 1024x768 font patch made... 1280x1024 font patch made... DPI patch made... 32x32 icon patch made... Saving patched DLL to D:\OS2\DLL\new-ibms332.dll... done. NB: If you want to use 1280x1024 small fonts, and the patch made message does not appear for them, then run fixdisp again, but respond "N" to the automatic patch prompt in step 7. Skip to step 10. 9. The patch locator: You may require a pen and paper here... :-) --- PATCH LOCATOR --- The patch locator enables you to manually patch the DLL. There is no 100% bulletproof method of patching every display driver, so there may be several possible choices for each type of patch. The bad news is that picking the wrong one will probably cause your machine to halt or trap when the patched display driver is loaded. More on that later though. For each of the four patches (2 fonts, dpi, and icons), you will be prompted with a list of possible patch locations. The one which fixdisp thinks is most likely to be the right one will be marked with an asterisk (this is the choice that previous versions of fixdisp would use). If there isn't an asterisk for any of the four patch types, or there aren't any choices available, then you might be using the wrong DLL! It's helpful to note down your choice on a piece of paper so that if you have to run fixdisp again you will know which choices you have tried. Enter the location number you want to try. Always try the asterisked locations first. You can omit a patch by entering 0. This would enable you to experiment with getting the icons working before you try the fonts. An example of this process: (the number of choices, and the values displayed will probably be different for you) 1024x768 font patch location: (* = most likely) * 1. 1ff0e 2. 2643a 3. 4b5f6 4. 561a3 0. Which one do you want to try? : 1 <-- input ... location 1 at offset 1ff0e will be patched. 1280x1024 font patch location: (* = most likely) * 1. 1fed6 2. 51b03 3. 55741 0. Which one do you want to try? : 1 <-- input ... location 1 at offset 1fed6 will be patched. DPI patch location: (* = most likely) 1. 325 * 2. 2dd18 3. 54390 4. 54646 5. 548f2 6. 54be4 7. 55761 8. 55ca1 0. Which one do you want to try? : 2 <-- input ... location 2 at offset 2dd18 will be patched. 32x32 icon patch location: (* = most likely) * 1. 55167 0. Which one do you want to try? : 1 <-- input ... location 1 at offset 55167 will be patched. Saving patched DLL to D:\OS2\DLL\new-ibms332.dll... done. If these values create a working DLL with small fonts and icons then the following line can be entered into the fixdisp.db file for future use (alter the .DLL name to conform to the naming conventions in fixdisp.db). A copy of this line has been appended to fixdisp.log. old-ibms332.dll,0xd86a556a,0xd06d0ca2,0x1ff0e,0x1fed6,0x2dd18,0x55167 The last thing fixdisp does is to give you a line which describes the patches it has made. Rather than mail this line to me, feel free to use it in a reply to a Usenet posting made by someone trying to get a particular driver to work. 10. If you get here, then fixdisp should have written the patched DLL to the file you specified in step 6. If it hasn't, then skip to the troubleshooting section below. The next step is to test the patched DLL. Shutdown OS/2, and reboot. During startup, a white brick and the word "OS/2" will appear briefly at the top left of the screen. Press ALT-F1 when this happens. After a couple of seconds, you will be presented with a menu. Press C to boot to a command prompt. At the command prompt, change directory to the \OS2\DLL directory on your boot drive. Copy the patched DLL file (as entered in step 6) over the top of the display driver DLL. YOU HAVE TAKEN A BACKUP HAVEN'T YOU? eg. [D:\] cd \os2\dll [D:\OS2\DLL] copy new-ibms332.dll ibms332.dll or [D:\OS2\DLL] copy ibms332.new ibms332.dll From now on, if you need to re-run fixdisp, you should use "old-.dll" or ".old" as the DLL filename to patch, *NOT* ".dll". Reboot thy computing device. eg. [D:\OS2\DLL] exit (NB: fixdisp.exe can be run from this maintenance shell if you prefer.) 11. Your machine will now reboot, and with any luck, will have small fonts and icons at 1024x768 and above. Exactly which patches take effect depends on whether you used the automatic or manual patching (and maybe omitted some patches) in step 7. This isn't an ideal world (and OS/2 is an IBM program), so your machine might hang or TRAP (most likely in SingleQ$) when it attempts to change mode. If this happens, then you need to reboot back to the command line prompt from the boot menu, and restore your original DLL. eg. [D:\OS2\DLL] copy old-ibms332.dll ibms332.dll Reboot, and skip to the trouble shooting section below. TROUBLE SHOOTING ---------------- 1. Fixdisp problems fixdisp will report any errors it encounters while attempting to patch the display driver DLLs (missing files, etc). If you come across errors/crashes in fixdisp itself, then let me know. 2. I don't know which DLL to patch! Let me know which drivers or card you have, and I'll try to help. First though, look in \OS2\DLL for a DLL with one of the names listed in procedure step 2 above, and try using that. 3. Some of my applications look strange! There are several applications which have rather disorganised displays after smallfix has been used. These include IBM's media players and the shareware Albatross CD player. Given IBM's inability to follow any of their own programming guidelines, I suspect that these problems are caused by incorrect assumptions about what size the default font is, or display size to DPI ratios. There is nothing I can do about these applications; sorry. [ The LaunchPad actually looks better after smallfix has been used ] On the other hand, if all your applications and settings notebooks look wrong, then one of the patches (probably DPI) hasn't been made properly. Proceed to number 4! 4. Display driver problems The most common problem users will encounter with fixdisp is an inability to boot their machine once they have patched the driver DLL and followed the instructions up to step 10. The most important thing to do first is to restore the machine to a bootable state. There are two ways of doing this: a) Use the OS/2 boot menu (hit ALT-F1 when the white brick appears during a reboot), go to the command line (hit C), and do the following: [D:\] cd \os2\dll [D:\OS2\DLL] copy old-ibms332.dll ibms332.dll or [D:\OS2\DLL] copy ibms332.old ibms332.dll Substitute the name of your driver DLL for the ibms332 bits above. Reboot. If OS/2 still won't start properly, then try step (b) below. b) Use the OS/2 boot menu (hit ALT-F1 when the white brick appears during a reboot), reset to VGA mode, reboot, and reinstall your drivers using selective install or your card manufacturer install program. Then, If you used the automatic patch facility in step 7, and it doesn't seem to have worked, then try making the patches using the patch locator (use old- or .old from now on when prompted for the DLL to patch). If you used the patch locator, then try using different patch options. The asterisked choices will work for the majority of drivers, but there will inevitably be some exceptions. Try getting the icons working first. Then try the fonts, then DPI. From user feedback so far, the most common cause of a crash or hang is getting the 1280x1024 font patch wrong. The others patches cause massive icons, or strange text when they go wrong. If you have absolutely no luck at all, then send me email. The chances are that someone else has had the same problems and notified me of a solution. 5. Refresh rates and resolutions Fixdisp does not even attempt to solve any problems you might have obtaining resolutions of 1024x768 and above. 6. My Windows(tm) sessions have horrible big window capion bars, fonts, and icons! Fixdisp does not patch Windows(tm) drivers. I do not know of any patch programs similar to fixdisp which will. Complain to IBM! :-) The source code --------------- The source code for fixdisp is no longer included within this archive. The latest version has some rather embarassingly horrible code in it, so it's now available on request only! :-) Distribution ------------ Feel free to distribute this archive (unmodified) far and wide. It should always be available from ftp-os2.nmsu.edu in /os2/warp/patches/smallf??.zip. Licence ------- smallfix is absolutely free. Users incur no obligation to the authors as a result of using it. Please read the disclaimer at the bottom of this file though. Acknowledgements ---------------- Daniel J Neades (djn@arac.demon.co.uk), for the information about which bits of the display drivers need twiddling. Guido Jaekel (Guido.Jaekel@Physik.Uni-Osnabrueck.DE), for various things. Thanks to *everyone* who's sent me email about previous versions of smallfix. The ever-incompetent IBM for the large fonts and icons. DISCLAIMER (very important) ---------------------------- The authors accept absolutely NO responsiblity for any adverse consequences arising from the use or misuse of this program. IBM will probably not provide any form of support for modified display drivers. Modifying display drivers is a messy business. If you are not 100% confident in your display driver twiddling abilities then DO NOT USE THIS SOFTWARE. You have been warned. This software has nothing to do with IBM. Do not contact IBM if you have problems with this software. Enjoy, Jason R. Shannon (jrs@larch.demon.co.uk) 21st February 1994