Skip to main content
© Knighthawks

EVERYTHING YOU EVER WANTED TO KNOW ABOUT GDOS
by Douglas N. Wheeler

Reprinted from "ST Report" Volume 2 Issue 38.

                          What is GDOS?

 GDOS is an extension to GEM which adds new capabilities to  your 
ST.  Originally, GDOS was intended to be an integral part of GEM, 
but  due to time restraints,  had to be left out.  Atari  is  now 
offering  GDOS  to registered developers at a cost  of  $500  per 
application using GDOS (it doesn't cost anything to look,  except 
for the cost of becoming a developer).

                Three Primary Advantages of GDOS

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 file to be usable 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 use 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 is a number representing the type of device:

01-10  Screen drivers
11-20  Plotter drivers
21-30  Printer drivers
31-40  Metafile drivers

           The Atari has four built-in Device Drivers

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 its 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.  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.

                   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 accepted 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 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, all you have to do is save the file.

 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.

            Recommended Configurations of Disk Drives

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:

      GDOS.PRG must be in the AUTO folder of the boot disk.

      ASSIGN.SYS must be in the root directory of the boot disk.

      The  PATH = line  in the ASSIGN.SYS file must  contain  the 
      complete  pathname of the folder containing the  fonts  and 
      drivers.  The fonts and drivers must be in the right  place 
      when and application or tries to open a device.

                        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 file,  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  or 
FONTZ!),  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.  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 90 x 45
 High resolution screen   90 x 90
 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

  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 (from  different 
companies)  handle this problem 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, Epson printers 
(and 100% compatibles) have a 144 x 144 dpi (double plotter) mode 
which could be utilized.  This would not only allow non-distorted 
sideways printing,  but offers slightly higher resolution in  the 
horizontal axis.

                         Font filenames

 As I stated earlier, font filenames are not used by GDOS, but to 
us humans, consistent filenames can greatly simplify things. With 
the  official release of GDOS (late last year),  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/distributor.

 The third and fourth characters (SS) identify the type style (in 
this  case Sans Serif).  These should be unique to  a  particular 
rendition of a specific 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 fonts  for 
the ST (yet),  I would like to recommend that all font  filenames 
follow the following format to avoid confusion.

              A Suggestion for 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          CL - Camelot (Neocept    
 DL - Drury Lane (Timeworks)     MA - Madison (Timeworks)
 RK - Rockface (Timeworks        RA - Ravinia (Timeworks)
              DB - Dingbats (Timeworks' Bullets)

Device:

 MG (or none) - Monochrome graphics (high/low resolution screen)
 CG - Color graphics (medium resolution screen)
 EP - Epson 9-pin dot-matrix printer (120 x 144)
 NB - Star NB-24 24-pin dot-matrix printer (180 x 180)
 NC - NEC C-series 24-pin dot-matrix printer (360 x 360)
 LQ - Epson 24 pin dot-matrix printer (all)
 LL - low resolution laser printer (150 x 150)
 LS - standard laser printer (300 x 300)

  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, I 
feel  these are much more professional and true to  the  original 
Helvetica and Times Roman typefaces.

                            Metafiles

  Metafiles  are (in theory) ideal files 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, metafiles are not 100% standard yet. This results 
in  programs not being able to read metafiles created by  another 
application.  Technically, 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.  Unfortunately, many applications expect some 
of  the optional parameters to be there and can't load  the  file 
correctly if they don't exist.  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 everytime  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.

                     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 column  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).

  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 PD),  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.

 Another 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.  In  most cases,  you can eliminate metafile  fonts 
without any loss of quality.

                            Glossary

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.

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.
Any questions or comments about this document can be directed  to 
me:

                      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.

Disclaimer
The text of the articles is identical to the originals like they appeared in old ST NEWS issues. Please take into consideration that the author(s) was (were) a lot younger and less responsible back then. So bad jokes, bad English, youthful arrogance, insults, bravura, over-crediting and tastelessness should be taken with at least a grain of salt. Any contact and/or payment information, as well as deadlines/release dates of any kind should be regarded as outdated. Due to the fact that these pages are not actually contained in an Atari executable here, references to scroll texts, featured demo screens and hidden articles may also be irrelevant.