(
Graphics
Device
Operating
System)
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 calls.
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 is present.
Each
VDI 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 or
0 as a result.
.text
_vq_gdos:
move.l #-2,d0
trap #2
rts
.end
The
LONG value returned in
d0 can be interpreted as follows:
Name |
Value |
Meaning |
GDOS_NONE |
-2 |
No GDOS is installed. |
- |
Any other value. |
Original GDOS 1.x is installed. |
GDOS_FNT |
0x5F464E54 ('_FNT') |
FONTGDOS? is installed. |
GDOS_FSM |
0x5F46534D ('_FSM') |
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?
Since
FSMGDOS? (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()?,
v_getbitmap_info()?,
v_killoutline()?, and
vqt_get_table()?. In addition, use of the new
SpeedoGDOS? calls
vst_charmap()?,
vqt_trackkern()?,
vqt_pairkern()?,
vqt_fontheader()?,
vst_kern()?, 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? or
'_SPD' for Speedo-based
FSMGDOS?.