Topic : TOS - das Betriebssystem
Author :
Version : tos.hyp (5. März 2013)
Subject : Programmieren/Atari
Nodes : 3001
Index Size : 93602
HCP-Version : 5
Compiled on : Atari
@charset : atarist
@lang :
@default : Titel
@help :
@options : +g -i -s +x +zz -t4
@width : 70
View Ref-File7.6.42 Bindings für vqt_ext_nameTOS C: int16_t vqt_ext_name ( int16_t handle, int16_t index,
int8_t *name, uint16_t *font_format, uint16_t *flags );
Umsetzung:
int16_t vqt_ext_name (int16_t handle, int16_t index,
int8_t *name, uint16_t *font_format,
uint16_t *flags)
{
intin[0] = index;
intin[1] = 0; /* reserviert */
contrl[0] = 130;
contrl[1] = 0;
contrl[3] = 2;
contrl[5] = 1;
contrl[6] = handle;
vdi ();
name[0..31] = intout[1..32];
name[32] = intout[33];
*flags = (intout[34] >> 8) & 0xff;
*font_format = intout[34] & 0xff;
return ( intout[0] );
}
GEM-Arrays:
Adresse Feldelement Belegung
contrl contrl[0] 130 # Opcode der Funktion
contrl+2 contrl[1] 0 # Einträge in ptsincontrl+4 contrl[2] 0 # Einträge in ptsoutcontrl+6 contrl[3] 2 # Einträge in intincontrl+8 contrl[4] 35 # Einträge in intoutcontrl+10 contrl[5] 1 # Sub-Opcode
contrl+12 contrl[6] handle
intin intin[0] index
intin+2 intin[1] 0
intout intout[0] Return-Wert
intout+2 intout[1..16] name[0..31]
intout+64 intout[33] name[32]
intout+66 intout[34] flags/font_format
Hinweis: Im High-Byte von intout[34] wird flags zurückgeliefert; im Low-Byte von intout[34] font_format.
Um festzustellen, was für einen Font man vor sich hat, muß
man die Anzahl der Einträge in intout (contrl[4])
beachten. Ist contrl[4] 33, so sind keine zusätzlichen
Informationen vorhanden und demzufolge muß es sich um
einen Bitmapfont handeln. Ist contrl[4] == 34, wird nur
zusätzlich in intout[33] (name[32]) mitgeteilt, ob es sich
um einen Vektorfont handelt. Nur wenn contrl[4] == 35 ist,
kann man mit intout[34] (flags) den Fonttyp genauer
feststellen und sofort erkennen, ob der Font äquidistant
(monospaced) ist.
intout[34] wird nur zurückgeliefert, wenn contrl[3] > 1
und contrl[5] = 1!