EVERYTHING YOU EVER WANTED TO KNOW ABOUT GDOS (AND MORE) by Douglas N. Wheeler WHAT IS GDOS? GDOS is an extension to GEM which adds new capabilities to your ST. GDOS is available with many commercial Atari programs, as well as to registered Atari developers ($500 if it is to be distributed with a product, free if it is not going to be distributed). The three primary new capabilities are: 1. The ability to use multiple fonts in various point sizes on the screen, printer, and other output devices. 2. Allows the creation of metafiles, which are standardized files intended to be usable by many different applications. This allows files created in one program to be used in another. 3. Support for various output devices with resolutions up to 32,767 x 32,767 (including emulation of this resolution on the screen). This allows graphics to be printed at the highest resolution of the output device. HOW TO USE GDOS In theory, using GDOS is as simple as putting GDOS.PRG in your AUTO folder and booting the computer. In practice, though, a series of conditions must be met. The most important of these conditions is that there must be a valid ASSIGN.SYS file present in the root directory of the boot disk. The following is a typical ASSIGN.SYS file. PATH=C:\GDOS.SYS ; 01p SCREEN.SYS ; default screen ; 02p SCREEN.SYS ; low resolution ATSS10.FNT ; fonts ATSS12.FNT ATSS18.FNT ATSS24.FNT ATTP10.FNT ATTR10.FNT ATTR12.FNT ATTR18.FNT ATTR24.FNT ; 03p SCREEN.SYS ; medium resolution ATSS10CG.FNT ATSS12CG.FNT ATSS18CG.FNT ATSS24CG.FNT ATTP10CG.FNT ATTR10CG.FNT ATTR12CG.FNT ATTR18CG.FNT ATTR24CG.FNT ; 04p SCREEN.SYS ; high resolution ATSS10.FNT ATSS12.FNT ATSS18.FNT ATSS24.FNT ATTP10.FNT ATTR10.FNT ATTR12.FNT ATTR18.FNT ATTR24.FNT ; 21 FX80.SYS ; Epson 9-pin dot-matrix printer ATSS10EP.FNT ATSS12EP.FNT ATSS18EP.FNT ATSS24EP.FNT ATTP10EP.FNT ATTR10EP.FNT ATTR12EP.FNT ATTR18EP.FNT ATTR24EP.FNT ; 31r META.SYS ; metafile driver ATSS10MF.FNT ATSS12MF.FNT ATSS18MF.FNT ATSS24MF.FNT ATTP10MF.FNT ATTR10MF.FNT ATTR12MF.FNT ATTR18MF.FNT ATTR24MF.FNT As you can see, I have divided the file into distinct groups. The first line of the ASSIGN.SYS file is used to tell GDOS where the fonts and device drivers are located. This line must always start with PATH= which is followed by a pathname of up to 64 characters locating the fonts and drivers. Following the path identifying line is the list of device drivers and their associated fonts. Each group is composed of four parts. First if a number representing the type of device: 01-10 Screen drivers 11-20 Plotter drivers 21-30 Printer drivers 31-40 Metafile drivers 41-50 Camera drivers 51-60 Tablet drivers The Atari STs have four built-in device drivers, they are: 01 Default screen (used when an application doesn't care about the screen resolution) 02 Low resolution screen 03 Medium resolution screen 04 High resolution screen Immediately following the device number may be a "load flag" of either "p" or "r". A "p" indicates that the device driver is "p"ermanent and does not need to be loaded by GDOS. Because the ST has it's screen drivers built into ROM, there will be a "p" after devices 01-04. An "r" indicates that the device driver should be kept "r"esident, causing GDOS to load the device driver immediately and hold it in memory. If a load flag is not present, GDOS will only load the device driver when an application opens (accesses) that device. After the device number and load flag is the filename of the device driver as it appears in the disk directory. In the case of ROM-resident drivers, the filename is only a place-holder (but must be present). Keep in mind that the device driver must be in the folder specified in the path line. On the lines following those three items is a list of fonts associated with that device (again, these are the filenames as they appear in the indicated path of the disk). You may have noticed a few lines with semicolons (;) in them. GDOS will treat any text on a line to the right of a semicolon as a comment and will ignore it. Some ASSIGN.SYS files have a device 00 (00p SCREEN.SYS). This can help prevent incompatibilities between GDOS and some older (pre-GDOS) programs. On the other hand, including it can cause other problems. It is suggested you leave it out unless absolutely necessary. EDITING/CREATING ASSIGN.SYS Now, why would you want to change your ASSIGN.SYS file? Well, if you have just one program which uses GDOS, and you are happy with the fonts you have, then there is no reason to change it. But, now that GDOS is beginning to be used more on the ST, many of us are acquiring a collection of GDOS applications and fonts. By editing or creating a new ASSIGN.SYS, you could create a "universal" ASSIGN.SYS and font/driver folder to be used with all of these programs! Luckily, the ASSIGN.SYS file is a standard text (ASCII) file which may be edited with most text editors and word processors. The only requirement is that the file does not contain any formatting codes. This can usually be accomplished in a word processor by turning document mode off, or selecting "Save as text" (check your word processor manual for exact instructions for doing this). If you are using a text editor, such as MicroEmacs or Tempus, there shouldn't be any special saving techniques. Starting at the top, the first thing you may want to change is the PATH= line at the beginning of the ASSIGN.SYS file. By changing this line, you can put your fonts and printer drivers on another disk or hard drive partition (instead of your boot disk). If you are using floppies, keep in mind that this directory (folder) must be present when an application accesses any of the GDOS devices. Also, to speed booting, this directory should be present when GDOS is loaded. Below is a list of my recommended configurations based on what arrangement of disk drives is being used. One floppy drive: Boot disk (drive A) with: AUTO folder containing GDOS.PRG GDOS.SYS folder containing the fonts and drivers ASSIGN.SYS with PATH=A:\GDOS.SYS Any GDOS application(s) (you may wish to create separate boot disks for each GDOS application) Two floppy drives: Boot disk (drive A) with: AUTO folder containing GDOS.PRG ASSIGN.SYS with PATH=B:\GDOS.SYS Font/driver disk (drive B) with: GDOS.SYS folder containing fonts and drivers Application disk (drive A after booting GDOS) with: Any GDOS application(s) (you may wish to create separate application disks for each GDOS application) Hard drive (booting from floppy): Boot disk (drive A) with: AUTO folder containing hard drive boot program and GDOS.PRG ASSIGN.SYS with PATH=C:\GDOS.SYS Hard drive partition C with: GDOS.SYS folder containing fonts and drivers Any hard drive partition with: Any GDOS application(s) (may be on any partition) Hard drive (autobooting): Hard drive partition C with: AUTO folder containing GDOS.PRG GDOS.SYS folder containing fonts and drivers ASSIGN.SYS with PATH=C:\GDOS.SYS Any hard drive partition with: Any GDOS application(s) (may be on any partition) Of course, these are only suggestions, and other configurations may be better for different applications. Hopefully you should now be able to create other set-ups without too much difficulty. There are a few "musts" that have to be observed: 1. GDOS.PRG must be in the AUTO folder of the boot disk. 2. ASSIGN.SYS must be in the root directory of the boot disk. 3. The PATH= line in the ASSIGN.SYS file must contain the complete pathname of the folder containing the fonts and drivers (GDOS.SYS is Atari's current name for this folder--previously, Atari called it GEMSYS. You may, of course, choose any name you like). 4. The fonts and drivers must be in the right place when an application tries to open a device. Adding a new device driver or new fonts is very simple. All you have to do is put the device driver and/or fonts in the correct folder (as defined by PATH=) then add the filenames to the ASSIGN.SYS file. A BIT ABOUT FONTS One question about GDOS fonts that people ask is, "when are the fonts loaded?" Many people are under the impression that all the fonts are loaded when GDOS is initially loaded. This is not true (and cannot be done). An "r" load flag in the ASSIGN.SYS file will cause GDOS to load only the device driver, not the fonts. Fonts are loaded only after an application opens a device and asks for the fonts to be loaded. At that time, GDOS will attempt to load all the fonts for that device. If there is an error (can't find the find, not enough memory, etc.) GDOS will skip over that font and continue with the next one. When an application is through with the fonts, it can "unload" the fonts to free up that memory. Another fact that many people don't understand is that the font filename is irrelevant to GDOS. Each font has a "header" consisting of various parameters, some of these are: point size, font name, and a font ID which is used to identify fonts of the same type (i.e. all swiss fonts have the same ID). Another thing to note is that GDOS does not handle line spacing, this is handled by the application regardless of the actual size of a given font. Some programs use the point size to determine line spacing, and others use the actual height of the font (yes, the point size can be set different from the actual size). For those of you creating your own fonts (with GEMFED, FONTZ!, or any other way), you must assign a unique font ID (from 0 to 32,767) to each of your fonts, and all font of the same type (i.e. Times), but of different size, must have the same ID. You should also note that some GDOS applications can only use fonts with an ID between 0 and 255. Because of this, it is advisable to keep your font IDs in that range. Another thing you must know when creating your own fonts, is the resolution of the devices you are creating the fonts for. The following is a list of most of the currently available devices and their resolution. Low resolution screen 45 x 45 (horizontal dpi x vertical dpi) Medium resolution screen 91 x 45 High resolution screen 91 x 91 9-pin dot-matrix printer 120 x 144 24-pin printer 180 x 180 or 360 x 360 (NEC P-series only) Laser printer 150 x 150 (some) or 300 x 300 (dpi figures for the screen are approximate) As you can see, most of these devices have square (round) pixels. This allows for sideways printing using the same fonts as for vertical (normal) printing. A notable exception to this is with the 9-pin dot-matrix printers, which will distort characters when printing them sideways. Different drivers handle this differently, they either ignore the fact (and print distorted characters sideways), or they print the left and right sides of a horizontal page on two separate vertical pages, which must then be taped together. The first method is the easier (and faster) of the two, but the second method will produce correct characters, and the taping isn't too bad if you are going to photocopy the final product. It would be possible to create separate fonts for sideways printing. but so far this has not been done. Also, some Epson printers have a 144 x 144 dpi mode (double plotter mode) which could be utilized. This would not only allow non-distorted sideways printing, but offers slight higher resolution in the horizontal axis. FONT FILENAMES As I stated earlier, font filenames are not used by GDOS. To us humans, though, consistent filenames can greatly simplify things. With the official release of GDOS (late 1987), Atari adopted a standardized way of naming font files. Here I will explain Atari's idea and add a few extensions. A font filename like ATSS10EP.FNT may look meaningless to someone who doesn't know how the filename was derived, but is, in fact, very functional. The first and second characters (AT) indicates the creator/distributor of the font (in this case Atari). Atari has suggested that these characters be "AT" for all fonts used on the Atari; this seems meaningless to me, as I don't have any fonts for any other computers on my ST disks (why would I?). I feel these two characters can be put to better use to specify the creator or distributor of the font. The third and fourth characters (SS) identify the typestyle (in this case sans serif). These should be unique to a particular rendition of a typeface. The fifth and sixth characters (10) specify the point size of the font. This should be the point size as printed on the device the font was designed for, not the pixel height. Also, sizes less than 10 should have a leading zero (i.e. 06) to maintain the overall structure. The seventh and eighth characters (EP) specify the device for which the font was designed (in this case the Epson 9-pin driver). If there are no seventh and eighth characters, the font is assumed to be for the high-resolution screen. The filename extender on all fonts will be .FNT. Although not many companies/individuals have produced GDOS fonts for the ST (yet), I recommend that all font filenames follow this convention to avoid confusion. I also suggest a few standard identifiers: Creator/distributor: AT - Atari MG - Migraph* TW - Timeworks* NC - Neocept* Typestyles: SS - Sans Serif (Atari's Swiss) TR - Times Roman (Atari's Dutch) TP - Typewriter (Atari) DB - Dingbats (Timeworks' Bullets)* DL - Drury Lane (Timeworks)* MA - Madison (Timeworks)* RK - Rockface (Timeworks)* RA - Ravinia (Timeworks)* CL - Camelot (Neocept)* Device: (none) - Monochrome graphics (high/low resolution screen) CG - Color graphics (medium resolution screen) EP - Epson 9-pin dot-matrix printer (120 x 144) SP - Star NB-15 24-pin dot-matrix printer (180 x 180) LB - Atari SMM804 9-pin dot-matrix printer (120 x 144) LS - Standard laser printer (300 x 300) MF - Metafile MG - Monochrome graphics (high/low resolution)* NC - NEC P-series 24-pin dot-matrix printer (360 x 360)* LL - Low resolution laser printer (150 x 150)* LQ - Epson LQ-series 24-pin printers (180 x 180)* * indicates unofficial representations which I suggest in an effort to standardize font filenames, and to simplify the whole matter. In many cases, the creator/distributor is not important, in which case the first four characters can be used for the typestyle. You will also notice that I have listed typestyles from various companies, I have done this because I recommend that you rename all of the font you currently have to match the above conventions, this will save you a lot of confusion in the future when you may have ten times as many fonts. One thing to note if you create a master ASSIGN.SYS file, is that although the Timeworks Swiss and Dutch fonts are different from Atari's, they use the same font IDs. GDOS could get very confused if you have two fonts with the same ID and point size. My personal recommendation is to replace Timeworks' Swiss and Dutch fonts in the 10, 12, 18, and 24 point sizes with the ones from Atari, as I feel these are much more professional and true to the original Helvetica and Times Roman typefaces. Because the font filename convention has changed since GDOS was first made available, it is helpful to know the old format (which is still being used in many cases). The old font filenames were laid out as follows: cccrttpp.FNT ccc - Creator/distributor (for screen fonts, i.e. MIG = Migraph) or Device (for other fonts, i.e. EPS = Epson 9-pin printer) r - Resolution (i.e. L = low res, H=high res) tt - Typeface (i.e. SS = sans serif, as above) pp - Point size (as above) METAFILES Metafiles are theoretically ideal graphics files (keeping in mind that text is represented graphically) which can be exchanged between different GDOS applications. Metafiles are those files with a .GEM extender. Metafiles are "ideal" in the respect that they are resolution independent. They are simply instructions for the computer to recreate a page on any output device at that device's highest resolution. This is accomplished by storing commands for drawing lines, circles, rectangles, text, etc., unlike most picture files (.NEO, PI?, etc.) which store the dots making up an image. Unfortunately, the metafile standard is not being used consistently yet. This results in programs not being able to read metafiles created by another application. In most cases, the fault lies with the program trying to load the metafile, not the creator. Many different parameters may be present in the header of a metafile, but only a few of these are required. Many applications expect (and need) some of the optional parameters to be present to properly represent the image. As such, they have difficulty loading files which don't have these parameters. Currently Easy-Draw (version 2.3) is the most capable of the available GDOS applications, and can read just about any metafile. Some of the more recent GDOS applications are allowing the use of GEM image files (those ending in .IMG). These are bit-mapped images similar to those created by the various ST paint programs (but without the screen size and resolution limitations). As is the case with other paint files, these images may be jagged or blocky when printed on a high resolution device. A very important fact about images in metafiles is that the metafile does not actually contain a copy of the image. The metafile only contains the filename of the image on disk. This means that you must not remove the disk containing an image while the metafile is being printed, and every time you print that metafile, the image must be in the same disk (or you will have to change your file). If GDOS can't find the image, it will just skip over it. Be warned. For all you programmers, currently some programs (such as OUTPUT.PRG and OUTPRINT.PRG) have difficulty handling metafiles with large coordinates. Try to keep the coordinate space as small as possible while still maintaining enough for good output quality. MISCELLANEOUS COMMENTS If you are using the Timeworks Desktop Publisher ST (TDTP), you must run the FONTWID.APP program each time you modify the ASSIGN.SYS file. Another important fact is that the relative widths of the Timeworks fonts are not the same for different devices. What this means is that if you create a document with TDTP installed for use with an Epson 9-pin printer, then load the file into TDTP installed for use with a laser printer, the text will be re-flowed. This may result in different page breaks, lost text, extra white space, etc. The best solution to this problem is to create the document with a TDTP installed for the device which will create the final copy. Another idea is to use Atari's fonts (if you have them--they are not public domain), as the relative sizes between devices is very close (there still may be a few differences, but can be fixed readily). It should also be noted that Timeworks' ASSIGN.SYS files is a mess. Apparently they list all the fonts they have available for all their device drivers in one ASSIGN.SYS file. I suggest you create your own based on the information presented here. For those of you who have seen a lot of DEGAS Elite GDOS fonts floating around, don't get too excited. For those to print properly (even blocky), you must have matching printer fonts for the screen fonts. GEMFED or FONTZ! greatly simplify this process, but if you intend to create a complete set of fonts in four or five sizes, you will have a lot of work ahead of you. Anyone creating fonts for the general public (either commercial or public domain), try to remember that not everyone is using the same kind of monitor or printer you are. If at all possible, create fonts for all the devices I have listed above. For those of you creating fonts with FONTZ!, you should be aware that scaling fonts may change the aspect ratio of the characters. I'll say it again: Creating high quality fonts is a lot of work. Period. One thing I didn't mention are metafile fonts. These are not really fonts, but merely width tables designed to keep correct character spacing in a file when used with different GDOS applications. They are rarely used and, in most cases, can be eliminated without any loss of quality. Because GDOS has gone through many revisions, there is some confusion over which is the latest. When GDOS is loaded, a message is displayed on the screen saying it is installed, and the version number. The original GDOS displayed "GEMVDI Installed". After that, it switched to "GDOS Version 1.x Installed". The most common were 1.1, 1.2, 1.3, 1.5, and 1.8. The newest revisions of GDOS display "GDOS RELEASE 1.x Installed", with 1.1 being the newest (1.0 is still widely used). As you can see, it is very important to read the boot-up message when determining which revision you are using. Also, as a sidenote, if you can't get RELEASE 1.0 or 1.1, you should try to avoid Version 1.8, which had some problems. To prevent problems with some of the device drivers available, fonts should be listed in the ASSIGN.SYS file in ascending order by font ID. Some device drivers will not find fonts which are listed out of ID order. Some of the GDOS fonts available have the entire ST character set defined, including greek, hebrew, and other character (most are unused by the average person). As you might imagine, these take up space, usually, more than 50% of the font file! So, if you're running out of memory (especially with a Mega ST2 and SLM804), you can use FONTZ! to strip out the upper characters. Do this by setting the upper ASCII value to 127. Many people who have seen printouts of GDOS text have complained that the text is blocky. This blockiness is usually the result of font scaling. If a device driver does not have a font available in the requested size, it will use the next smaller size, or it may double the size of a smaller font. It it uses the next smaller size, the text will look strange, because it will have the spacing of the requested size, with the character size of the actually used size. When doubling a smaller font, blockiness will occur, and even then, the requested size may not be obtained. The best solution to this problem is to be aware of what size fonts are available, and only use those in your files. Currently there are rumors of a future version of GDOS which supports scalable outline (or vector) fonts. It's important to realize that GDOS does not create the characters. The device drivers are responsible for creating the actual characters, and could be rewritten to support outline fonts without any (or very minor) changes to GDOS. Ever since GDOS was released for the ST, people have been complaining, saying that GDOS was supposed to be included with the ST. While Atari may have planned that originally, I don't believe Atari ever stated publicly that GDOS was to be included. Keep in mind that much of the early ST documentation was based on the IBM version of GEM, and reflects DRI's handling of GDOS, not Atari's. Also, at this time, Atari has no plans to incorporate GDOS into the TOS ROMs. GLOSSARY Aspect Ratio - The relation of width to height. Maintaining a constant aspect ratio ensures the same proportions regardless of size. Device (Graphics Device) - Anything used to create some form of output, usually on a video screen or printed on paper or film. Device Driver - A computer program used to control a device as specified by a "master" application. Font - A typeface of a given style and point size. GDOS - Graphics Device Operating System; an extension to the Atari ST's operating system allowing for the use of various fonts and graphics devices. GEM - Graphics Environment Manager; the portion of the ST's operating system which is responsible for most of the visual aspects of the ST. Header - A portion of a file (usually at the beginning) containing various parameters describing the file. Line Spacing - The distance between successive line of text, usually measured in points. Parameter - A number or other symbol used to represent a given attribute (dimension, color, direction, size, mode, etc.) Pixel - Picture element; a single dot, usually one of many used to create a complete image on a video screen or printed on paper or film. Point - A typographical unit of measure; approximately 1/72". COPYRIGHTS, TRADEMARKS, ETC. This document is copyright 1988 by Douglas N. Wheeler, all rights reserved. This document may be reproduced for non-commercial use without further permission. For commercial reproduction, please contact the author. Any questions or comments about this document can be directed to: Douglas N. Wheeler PSC 3 Box 6096 Travis AFB, CA 94535 (707) 437-3786 GEnie address D.N.WHEELER. This document mentions several commercial/copyrighted products. In each case, it is to be understood that the names are trademarks of their respective companies and are used here only as references. I am in no way connected, either through employment or otherwise, to any of these companies. I cannot be held responsible for any damages resulting from the use or misuse of the information contained in this document. This document was created for the purpose of providing information, it is up to the reader to accept responsibility for the results of the use of this information. I'd like to thank Paul Mazurek, from Migraph, for his comments and suggestions for this document.