The Graphics Device Operating System (GDOS
) is a disk-based component of the operating system which allows disk-loadable device drivers and additional fonts to be accessible through standard VDI
Several versions of Atari GDOS
have been released in addition to several third-party GDOS
'clones'. All of these forms have stayed backward-compatible with GDOS
1.0, however it is recommended that programs be written to support newer GDOS
calls when it can be determined that a more recent release of GDOS
call documented in the VdiFunctionReference?
specifies if GDOS
is required, and if so, what type.
Determining the Version of GDOS Present
A non-standard VDI
call is available to check for the presence of GDOS
. The following machine-code subroutine will return a LONG
value in d0
which can be used to determine the variety of GDOS
present. Beware of older bindings which looked only for the original GDOS
and returned a 1
as a result.
value returned in d0
can be interpreted as follows:
||No GDOS is installed.
||Any other value.
||Original GDOS 1.x is installed.
||FONTGDOS? is installed.
||FSMGDOS? or SpeedoGDOS? is installed.
For information on determining the specific variety of outline GDOS
available, see the description of the FSMC_Cookie?
FSMGDOS? vs. SpeedoGDOS?
(a QMS/Imagen outline font-based GDOS
) was never officially released from Atari (though shipped in limited quantity with third-party products), some changes have been made to calls in SpeedoGDOS?
that were never exploited by developers. For that reason, these calls will only be documented in the Speedo-compatible way in the VDI
Function Reference. This does mean, however, that use of these calls will cause your application to fail under the original FSMGDOS?
The calls which were affected are v_getoutline()?
, and vqt_get_table()?
. In addition, use of the new SpeedoGDOS?
, or any of the older calls when used with the fix31?
data type will fail with the older FSMGDOS?
To determine the type of outline-font GDOS
installed, look for the FSMC_Cookie?
. The cookie value is a pointer to a LONG
value which contains the character string '_FSM'
for Imagen-based FSMGDOS?
for Speedo-based FSMGDOS?