Den Falcon neu konfiguriert: Das nicht-flüchtige RAM des Falcon 030

Da steht er nun, der nagelneue Falcon030. Fix und fertig konfiguriert für den deutschen Markt, wie an der Sprache des Desktops und dem Tastatur-Layout unschwer zu erkennen ist. Das mitgelieferte Programm CONFIG.PRG erlaubt das Einstellen diverser Landessprachen und eine Veränderung der Tastaturbelegung, aber damit sind noch längst nicht alle Konfigurationsmöglichkeiten erschöpft.

So läßt sich prinzipiell auch der beim Booten aktive Videomodus in allen Feinheiten vorwählen. Darüber hinaus bietet der Falcon mehrere Formate für die Darstellung von Datum und Uhrzeit. Under Programm BOOT-CONF ermöglicht die Manipulation aller wichtigen Parameter.

Nicht flüchtig - das NVM

Wo aber sind diese Informationen, die ja nach dem Ausschalten des Gerätes nicht verlorengehen, gespeichert? Wie schon der TT, ist auch der Falcon mit akkugepuffertem Speicher (NVM - Non Volatile Memory) ausgestattet, der gut dafür geeignet ist, Konfigurationsdaten aufzunehmen. Die Nutzung des NVM obliegt ATARI, auf Anfrage kann man sich allerdings einen Bereich für eigene Daten zuweisen lassen. (So heißt es jedenfalls offiziell, ob sich jemals jemand dafür interessiert hat, sei dahingestellt.)

Erstmals verwendet wurde das NVM in Verbindung mit dem ATARI Unix-System V auf dem TT. Im ersten Wort des nicht flüchtigen Speichers wird eine Information darüber abgelegt, ob nach einem Reset TOS oder UNIX gebootet werden soll [ 1 ]. Über eine weitergehende Nutzung des NVM auf dem TT ist bisher nichts bekannt. Ganz anders sieht es dagegen beim Falcon aus. Hier findet sich gleich eine ganze Reihe von Konfigurationsangaben, die bisher leider nicht dokumentiert wurden. Da das Falcon-TOS und das Falcon-Desktop aber sehr wohl Gebrauch vom NVM machen, läßt sich die Bedeutung der einzelnen Flags recht leicht ermitteln. Es deutet einiges darauf hin, daß auch MultiTOS das NVM auswerten wird, so daß es durchaus Sinn macht, ein Konfigurationsprogramm für alle Rechner mit NVM zu besitzen, also auch für den TT.

Die Bildschirmmodi des Falcon030

Inzwischen dürfte allgemein bekannt sein, daß die Bildschirmauflösungen des Falcon in einem gewissen Rahmen frei programmierbar sind. Das Falcon-Desktop unterstützt daher weit mehr Auflösungen, als dies bei ST und TT der Fall ist. Es stehen Auflösungen mit 2, 4, 16, 256 und 65536 Farben zur Verfügung. Diese lassen sich mit 40 oder 80 Spalten darstellen, was natürlich direkten Einfluß auf die horizontale Bildschirmauflösung hat. Wird der Falcon an einen Fernseher angeschlossen, kann es sich hierbei um ein PAL- oder NTSC-Gerät handeln. Der Falcon ist in der Lage, Synchronsignale für beide Fernsehnormen zu erzeugen. Für die deutschen Anwender dürfte der NTSC-Modus wohl nur von theoretischem Interesse sein.

Um eine höhere vertikale Bildschirmauflösung zu erreichen, bietet der Falcon einen Halbbildmodus (Interlace-Verfahren am Farbmonitor oder Fernseher) bzw. eine Zeilenverdopplung (Line Dubbling, am VGA-Monitor) an. Besonders interessant, wenn auch nur für den Betrieb am Fernseher verfügbar, ist der Overscan-Modus, der die Auflösung in jede Richtung um den Faktor 1.2 vergrößert.

Damit eine möglichst große Kompatibilität zu den Modellen der ST-Serie erzielt werden kann, lassen sich über einen speziellen Kompatibilitätsmodus auch die drei ST-kompatiblen Bildschirmmodi realisieren. Diese bieten allerdings die geringsten Auflösungen und machen daher nur dann Sinn, wenn man gezwungen ist, mit Software zu arbeiten, die nicht auflösungsunabhängig programmiert ist.

Wahl der Bildschirmauflösung

Alle Standardauflösungen werden in der Regel unter dem Menüpunkt „Bildschirmtyp“ über das Desktop ausgewählt. Die hier vorgenommenen Einstellungen werden nach dem Verlassen des Dialogs aktiv und beim Aufrufen von „Arbeit sichern“ in der NEWDESK.INF-Datei abgelegt. Beim Initialisieren des Desktops, also nach dem Starten der Programme des AUTO-Ordners, wird die voreingestellte Bildschirmauflösung aktiviert.

Die Auflösung, in der der Falcon bootet, muß nicht mit der unter „Bildschirmtyp“ gewählten übereinstimmen. So ist bei den Falcon-Seriengeräten während des Boot-Vorgangs offenbar eine niedrige Auflösung aktiv. Diese hat den Nachteil, daß der Platz für Statusmeldungen der Programme des AUTO-Ordners recht beschränkt ist. Der Übersichtlichkeit halber empfiehlt es sich, für den Boot-Vorgang eine höhere Auflösung, am besten 640x480 Punkte, zu wählen. Um dies zu erreichen, genügt es, mit BOOTCONF den ST-Kompatibilitätsmodus und die Zeilenverdopplung bzw. den Halbbilddmodus abzuschalten sowie den 80-Spalten-Modus zu aktivieren. Für maximale Geschwindigkeit bei der Bildschirmausgabe sollte zunächst mit lediglich zwei Farben gearbeitet werden. Das Desktop schaltet je nach der Einstellung in NEWDESK.INF dann wieder auf mehr Farben um. Sie sehen, es gibt einigen Raum für eigene Experimente.

Multilinguales TOS

Ein interessantes Merkmal des TOS 4.0 ist die Tatsache, daß diese TOS-Versionen mehrsprachig ausgelegt sind. Welche Sprache nach dem Booten benutzt wird, hängt von den Daten des NVM ab. Skandinavische Sprachen scheinen bisher jedoch nicht implementiert zu sein. Unabhängig von der jeweiligen Landessprache kann das Tastatur-Layout gewählt werden. In der Regel wird man in beiden Fällen die gleiche Länderkennung wählen, aber wer es gewohnt ist, auf einer amerikanischen Tastatur zu schreiben, mag es vorziehen, mit einem deutschen Desktop und amerikanischer Tastaturbelegung zu arbeiten.

Die Entscheidung für ein multilinguales TOS dürfte ATARI nicht nur im Hinblick auf den Anwender getroffen haben. Der Umstand, daß man identische TOS-Versionen ohne Neu-Compilierung in verschiedenen Ländern einsetzen kann, bringt natürlich auch Erleichterungen bei der Produktion und Verteilung neuer Systemversionen mit sich. So unterscheiden sich die länderspezifischen Falcons lediglich durch die Tastaturbeschriftung.

Ein multilinguales Desktop und ein variables Tastatur-Layout sind jedoch nicht die einzigen Merkmale, die einen sinnvollen Einsatz desselben Betriebssystems in verschiedenen Ländern gewährleisten. So sind die Formate für die Darstellung von Datum und Uhrzeit nicht in allen Ländern identisch. Das Falcon-TOS trägt dem ebenfalls Rechnung, denn alle gebräuchlichen Formate lassen sich voreinstellen.

Das NVM und die Cookies

Nun ist es ja ganz nett, daß das Desktop bezüglich Sprache und Datumsformat auf die Wünsche des Anwenders reagieren kann, aber wie sieht es innerhalb von Anwenderprogrammen aus? Kann beispielsweise eine Textverarbeitung feststellen, welches Datumsformat eingestellt ist, um dies bei der automatischen Erstellung eines Briefkopfes in der entsprechenden Form einzufügen?

Tatsächlich wurde diese Option bei der TOS-Entwicklung berücksichtigt. Die länderspezifischen Konfigurationsvariablen des NVM sind nämlich auch über den cookie jar zugänglich. Hierzu wurden zwei neue Cookies eingerichtet, nämlich _AKP und JDT. Die Bits 0 bis 7 des _AKP-Cookies machen Aussagen über die Landessprache. Sie enthalten einen Ländercode in dem Format, wie er auch im System-Header zu finden ist [2]. Die Bits 8 bis 15 enthalten den Ländercode für das Tastatur-Layout. Die Organisation des _/DT-Cookies ist ein wenig komplizierter. In den Bits 12 bis 15 ist das Datumsformat codiert:

0 12-Stundendarstellung
1 24-Stundendarstellung

Aussagen über das Datum machen die Bits 8 bis 11:

0 MM-TT-JJ
1 TT-MM-JJ
2 JJ-MM-TT

Bleiben noch die Bits 0 bis 7. Diese enthalten den ASCII-Wert des Zeichens, das als Trenner für die Datumsangaben dienen soll. Bei einem deutschen System wird es sich um einen Punkt handeln, bei einer englischsprachigen Systemkonfiguration um einen Schrägstrich.

Alle nicht auf geführten Bits sind für zukünftige Erweiterungen reserviert. Wer länderspezifische Informationen in seinen Programmen verwerten will, sollte sich unbedingt auf die beiden Cookies stützen und nicht etwa das NVM direkt auslesen.

Das Programm

Die Bedienung von BOOTCONF bedarf eigentlich kaum einer Erklärung. Es genügt, alle Parameter den eigenen Wünschen entsprechend einzustellen. Da nicht alle europäischen Sprachen von TOS unterstützt werden, lassen sich nur diejenigen auswählen, die im Falcon-TOS mit Sicherheit integriert sind. Zu beachten ist ferner, daß sich alle Parameter bis auf die Boot-Präferenz bisher lediglich auf das Falcon-TOS auswirken. Die Boot-Präferenz dagegen hat in erster Linie für den TT eine Bedeutung und sollte nur dann auf „UNIX“ eingestellt werden, wenn man einen TT besitzt und mit dem ATARI-System V arbeitet. Alle Änderungen bei den Voreinstellungen werden naturgemäß erst nach dem Neu-Booten aktiv. Wird BOOTCONF auf einem anderen Rechner als TT oder Falcon gestartet, bricht das Programm mit einer Fehlermeldung ab.

Für Programmierer interessant sein dürfte die Verwendung von dreidimensionalen Buttons, die eine Neuerung im TOS des Falcon und auch im MultiTOS darstellen. Wie schon beim NVM und den neuen Cookies, gibt es bisher keine offizielle Dokumentation. Es läßt sich jedoch leicht feststellen, daß man solche Buttons über den Extended Object Type erreicht, der sich beim Erzeugen der Resource-Daten mit einem Resource Construction Set eingeben läßt. Der erweiterte Typ 1 repräsentiert Buttons im 3D-Look, die beim Anklicken eingedrückt, aber nicht invertiert werden. Typ 2 definiert Buttons, die eingedrückt und zusätzlich invertiert werden. Wer bisher den Extended-Object-Type für eigene Zwecke verwendet hat, sollte sich möglichst eine andere Lösung suchen, um unschöne optische Effekte zu vermeiden.

Zukunftsorientiert

Es besteht kein Zweifel, daß ATARI mit der Konfigurierbarkeit des Falcon-TOS einen Schritt in die richtige Richtung getan hat. Der Umstand, daß Ende 1992 auch die Weiterentwicklung des MultiTOS wieder spürbar an Geschwindigkeit gewonnen hat, dürfte eine Grundvoraussetzung darstellen, damit ATARI in einer schwierigen Zeit wieder Fuß fassen kann.

US

[1] „Back To The Roots - Ein etwas anderer Boot-Selektor", ST-Computer 6/92

[2] Jankowski, Rabich, Reschke, „ATARI Profibuch ST-STE-TT", Sybex-Verlag


/*************************/
/* BOOTCONF              */
/* zur Konfiguration des */
/* Non Volatile Memory   */
/* von Falcon030 und TT  */
/* (c)1993 MAXON-Coputer */
/* Autor: Uwe Seimet     */
/*************************/

#define NUM_OBS 60

#define EXTERN extern

#include "bootconf.rsh"
#include <tos.h>
#include <vdi.h>
#include <stdio.h>

#define _MCH 0x5f4d43481

/* Flags fur Falcon-Videomodi */

#define VERTFLAG 0x100 
#define STMODES  0x80 
#define OVERSCAN 0x40 
#define PAL 0x20 
#define VGA 0x10 
#define TV  0x0

#define COL80 0x08 
#define COL40 0x04

#define BPS16 4 
#define BPS8 3
#define BPS4 2 
#define BPS2 1 
#define BPS1 0

/* Landercodes */

#define USA 0 
#define FRG 1 
#define FRA 2 
#define UK 3 
#define SPA 4 
#define ITA 5 
#define SWF 7 
#define SWG 8

#define TRUE 1 
#define FALSE 0

typedef enum _bool boolean;

#define NVMaccess(op,start,count,buffer) xbios(46,op,start,count,buffer)

int contrl[11], 
    intin[80], 
    intout[45], 
    ptsin[32], 
    ptsout[32];

int work_in[12], 
    work_out[57];

int g_handle;

int gl_hchar, 
    gl_wchar;

struct { 
    int bootpref; 
    char reserved1[4]; 
    char language; 
    char keyboard; 
    char datetime; 
    char seperator; 
    char reserved2[5]; 
    char vmode;
} nvm;

/* Für Umrechnung von Ländercode in Sprache */ 

char code_to_lang[] =
    { LANG_GB, LANG_D, LANG_F,
    LANG_GB, LANG_ESP, LANG_I,
    LANG_GB, LANG_F, LANG_D,
    LANG_GB, LANG_GB, LANG_GB,
    LANG_GB, LANG_GB, LANG_GB };

char lang_to_code [] =
    { USA, FRG, FRA, SPA, ITA };

/* Für Umrechnung von Ländercode in Tastaturlayout */

char code_to_key[] =
    { KEY_GB, KEY_D, KEY_F,
    KEY_GB, KEY_ESP, KEY_I,
    KEY_GB, KEY_CHF, KEY_CHD,
    KEY_GB, KEY_GB, KEY_GB,
    KEY_GB, KEY_GB, KEY_GB };

char key_to_code[] =
    { UK, FRG, FRA, SPA, ITA, USA, SWF, SWG } ;

/* Funktions-Prototypen */

boolean open_vwork(void); 
boolean get_nvm(void); 
void set_nvm(void); 
boolean do_dialog(void); 
boolean tst_mch(void); 
void rsrc_init(void);

int main()
{
    if ((appl_init())!=-1) { 
        if (open_vwork()) { 
            if (tst_mch ()) { 
                if (get_nvm()) { 
                    rsrc_init();
                    if (do dialog()) set_nvm(); 
                    v_clsvwk(g_handle);
                }
            }
        }
    }
    appl_exit(); 
    return(0);
}

/* Workstation öffnen */

boolean open vwork()
{
    int gl_wbox,gl_hbox; 

    register int i;

    for(i=1; i<10; work_in[i++]=0); 
    work_in[10]=2;
    g_handle=graf_handle (&gl_wchar, &gl_hchar, &gl_wbox, &gl_hbox); 
    work_in[0]=g_handle;
    v_opnwk (work_in, &g_handle, work_out); 
    if (!g_handle) return(FALSE); 
    return(TRUE);
}

/* Dialog führen */

boolean do dialog()
{
    int fo_cx,fo_cy,fo_cw,fo_ch; 
    int exit;

    form_center(rs_trindex[DIALOG], &fo_cx, &fo_cy, &fo_cw, &fo_ch) ;
    form_dial (FMD_START, fo.cx, fo_cy, fo_cw, fo_ch, fo_cx, fo_cy, fo_cw, fo_ch);
    objc_draw(rs_trindex[DIALOG], 0, 2, fo_cx, fo_cy, fo_cw, fo_ch);
    graf_mouse(ARROW, NULL);
    exit=form_do(rs trindex[DIALOG], 0);
    form_dial (FMD_FINISH, fo_cx, fo_cy, fo_cw, fo_ch, fo_cx, fo_cy, fo_cw, fo_ch);
    return(exit!=ABORT);
}


/* NVM auslesen */

boolean get nvm()
{
    char *te_ptext; 
    int index;

    NVMaccess(0, 0, (int)(sizeof(nvm)), &nvm);

    /* Videomodus auswerten */

    index = (nvm.vmode & 0x07) + COLOURS; 
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    if (nvm.vmode & COL80) index = COLS80; 
    else index = COLS40;
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    if (nvm.vmode & PAL) index = PALMODE; 
    else index = NTSCMODE;
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    if (nvm.vmode & VGA) index = VGAMODE; 
    else index = TVMODE;
    rs_trindex[DIALOG][index].ob_state |= SELECTED; 

    if (nvm.vmode & VERTFLAG)
    rs_trindex[DIALOG][INTRLACE].ob_state |= SELECTED; 

    if (nvm.vmode & OVERSCAN)
    rs_trindex[DIALOG][OVRSCAN].ob_state |= SELECTED; 

    if (nvm.vmode & STMODES)
    rs_trindex[DIALOG][STMODE].ob_State |= SELECTED;

    /* Sprache auswerten */

    index = code_to_lang[nvm.language]; 
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    /* Tastatur auswerten */

    index = code_to_key[nvm.keyboard];
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    /* Uhrzeitformat auswerten */

    index = ((nvm.datetime>>4) & 0x01) + HOURS12; 
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    /* Datumsformat auswerten */

    index = (nvm.datetime & 0x03) + DATE; 
    rs_trindex[DIALOG][index].ob_state |= SELECTED;

    te_ptext = rs_trindex[DIALOG][SEPERATOR].ob_spec.tedinfo->te_ptext;
    te_ptext[0] = nvm.seperator;

    /* Bootpräferenz auswerten */

    switch(nvm.bootpref) { 
    case 0x80: index = TOS;
    break;
    case 0x40: index = UNIX;
    break;
    default: index = NOPREF;
    }
    rs_trindex[DIALOG][index].ob_state |= SELECTED; 

    return(TRUE);
}

/* NVM neu initialisieren */

void set_nvm()
{
    char *te_ptext; 
    int index;

    index = COLOURS;
    while (!(rs_trindex[DIALOG][index].ob_state & SELECTED))
    index++;
    nvm.vmode = index-COLOURS;

    if (rs_trindex[DIALOG][PALMODE].ob_state & SELECTED) 
    nvm.vmode |= PAL;

    if (rs_trindex[DIALOG][VGAMODE].ob_state & SELECTED) 
    nvm.vmode |= VGA;

    if (rs_trindex[DIALOG)[COLS80].ob_state & SELECTED) 
    nvm.vmode |= COL80;

    if (rs_trindex[DIALOG][INTRLACE].ob_state & SELECTED)
    nvm.vmode |= VERTFLAG;

    if (rs_trindex[DIALOG][OVRSCAN].ob_state & SELECTED) 
    nvm.vmode |= OVERSCAN;

    if (rs_trindex[DIALOG][STMODE].ob_state & SELECTED) 
    nvm.vmode |= STMODES;

    index = LANG_GB;
    while (!(rs _trindex[DIALOG][index].ob_state & SELECTED)) index++;
    nvm.language = lang_to_code[index-LANG_GB]; 

    index = KEY_GB;
    while (!(rs_trindex[DIALOG][index].ob_state & SELECTED)) index++;
    nvm.keyboard = key_to_code[index-KEY_GB]; 

    te_ptext = rs_trindex[DIALOG][SEPERATOR].ob_spec.tedinfo->te_ptext;
    nvm.seperator = te_ptext[0]; 

    nvm.bootpref = 0x0;
    if (rs_trindex[DIALOG][TOS].ob_state & SELECTED) 
    nvm.bootpref = 0x80;
    if (rs._trindex[DIALOG][UNIX].ob_state & SELECTED) 
    nvm.bootpref = 0x40;
    
    NVMaccess(1, 0, (int)(sizeof(nvm)), &nvm);
}

/* Rechnertyp testen */

boolean tst_mch()
{
    long oldstack; 
    long *cookiejar;

    oldstack = Super(01);
    cookiejar = *((long **)(0x5a01));
    Super((void *)(oldstack));

    if (!cookiejar) { 
        form_alert(1, "[3][BOOTCONF läuft nur|auf TT und Falcon!][Abbruch]"); 
        return(FALSE);
    }

    do
    {
        if (cookiejar[0] == _MCH)
            if (cookiejar[1] >= 0x200001) return(TRUE); 
        cookiejar = &(cookiejar[2]);
    } while (cookiejar[-2]);

    return(FALSE);
}

/* Objektkoordinaten umrechnen */

void rsrc_init()
{
    register int i;

    for(i=0; i<NUM_OBS; i++) rsrc_obfix(rs_trindex[DIALOG],i);
}

/* GEM Resource C Source */

#include <portab.h>
#include <aes.h>
#include "BOOTCONF.H"

#if (defined(WHITEBAK)
#define WHITEBAK 0x0040
#endif
#if !defined(DRAW3D)
#define DRAW3D0x0080 
#endif

#define FLAGS9  0x0200
#define FLAGS10 0x0400 
#define FLAGS11 0x0800 
#define FLAGS12 0x1000 
#define FLAGS13 0x2000 
#define FLAGS14 0x4000 
#define FLAGS15 0x8000 
#define STATE8  0x0100
#define STATE9  0x0200 
#define STATE10 0x0400 
#define STATE11 0x0800 
#define STATE12 0x1000 
#define STATE13 0x2000 
#define STATE14 0x4000 
#define STATE15 0x8000

TEDINFO rs_tedinfo[] =
    { "1992 by Uwe Seimet",
    "\0”,
    "\0",
    SMALL, 0, TE_LEFT , 0x1480, 0, -1, 19, 1,
    "Franz.",
    "\0",
    "\0",
    SMALL, 0, TE_LEFT , 0x1180, 0, -1, 7, 1,
    "Deutsch",
    "\0",
    "\0",
    SMALL, 0, TE_LEFT , 0x1180, 0, -1, 8, 1,
    "@",
    "Separator: _",
    "X",
    IBM , 0, TE_CNTR , 0x1180, 0, -1, 2, 13
};

OBJECT rs_object[] =
{
/******** Tree 0 DIALOG ****************/
    -1, 1, ABORT , G_BOX
    NONE, OUTLINED, (LONG)0x00021100L,
    0x0000, 0x0000, 0x003F, 0x0817,
    2, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Boot-Konfiguration Falcon030/TT",
    0x0010, 0x0001, 0x001F, 0x0001,
    3, -1, -1, G_TEXT
    NONE, NORMAL, (LONG)&rs_tedinfo[0],
    0x0019, 0x0002, 0x040D, 0x0001,
    4, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Farben:",
    0x0006, 0x0804, 0x0007, 0x0001,
    10, COLOURS , 9, G_BOX
    NONE, NORMAL, (LONG)0x00001101L,
    0x000E, 0x0804, 0x0027, 0x0001,
    6, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"2",
    0x0000, 0x0000, 0x0007, 0x0001,
    7, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"4",
    0x0008, 0x0000, 0x0007, 0x0001,
    8, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"16",
    0x0010, 0x0000, 0x0007, 0x0001,
    9, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"256",
    0x0018, 0x0000, 0x0007, 0x0001,
    4, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"65536",
    0x0020, 0x0000, 0x0007, 0x0001,
    11, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Videonorm:",
    0x0003, 0x0006, 0x000A, 0x0001,
    14, PALMODE , NTSCMODE, G_BOX 
    NONE, NORMAL, (LONG)0x000011O1L,
    0x000E, 0x0006, 0x000D, 0x0001,
    NTSCMODE, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"PAL",
    0x0000, 0x0000, 0x0006, 0x0001,
    11, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"NTSC",
    0x0007, 0x0000, 0x0006, 0x0001,
    17, VGAMODE , TVMODE , G_BOX ,
    NONE, NORMAL, (LONG)0x00001101L,
    0x001D, 0x0006, 0x000B, 0x0001,
    TVMODE , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"VGA",
    0x0000, 0x0000, 0x0005, 0x0001,
    14, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"TV",
    0x0006, 0x0000, 0x0005, 0x0001,
    18, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Spalten:",
    0x002B, 0x0006, 0x0008, 0x0001,
    21, COLS40 , COLS80 , G_BOX
    NONE, NORMAL, (LONG)0x00001101L,
    0x0034, 0x0006, 0x0009, 0x0001,
    COLS80 , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"40",
    0x0000, 0x0000, 0x0004, 0x0001,
    18, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"80",
    0x0005, 0x0000, 0x0004, 0x0001,
    INTRLACE, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Videomodus:",
    0x0002, 0x0807, 0x000B, 0x0001,
    OVRSCAN , -1, -1, G_BUTTON |0x0100,
    SELECTABLE, NORMAL, (LONG)"Zeilenverdopplung (VGA) / Halbbildmodus (TV)",
    0x000E, 0x0807, 0x002F, 0x0001,
    STMODE , -1, -1, G_BUTTON |0x0100,
    SELECTABLE, NORMAL, (LONG)"Overscan (nur TV)",
    0x000E, 0x0009, 0x0017, 0x0001,
    25, -1, -1, G_BUTTON |0x0100,
    SELECTABLE, NORMAL, (LONG)"Kompatibilit\204tsmodus", 
    0x0026, 0x0009, 0x0017, 0x0001,
    26, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Sprache:",
    0x0005, 0x000B, 0x0008, 0x0001,
    32, LANG_GB , LANG_I , G_BOX 
    NONE, NORMAL, (LONG)0x00001101L,
    0x000E, 0x000B, 0x001D, 0x0001,
    LANG_D , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"GB",
    0x0000, 0x0000, 0x0005, 0x0001,
    LANG_F , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"D",
    0x0006, 0x0000, 0x0005, 0x0001,
    LANG_ESP, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"F",
    0x000C, 0x0000, 0x0005, 0x0001,
    LANG_I , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"ESP",
    0x0012, 0x0000, 0x0005, 0x0001,
    26, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"I",
    0x0018, 0x0000, 0x0005, 0x0001,
    33, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Tastatur",
    0x0004, 0x000D, 0x0009, 0x0001,
    42, KEY_GB , KEY_CHD , G_BOX 
    NONE, NORMAL, (LONG)0x00001101L,
    0x000E, 0x000D, 0x002F, 0x0001,
    KEY_D , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"GB",
    0x0000, 0x0000, 0x0005, 0x0001,
    KEY_F , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"D",
    0x0006, 0x0000, 0x0005, 0x0001,
    KEY_ESP , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"F",
    0x000C, 0x0000, 0x0005, 0x0001,
    KEY_I , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"ESP",
    0x0012, 0x0000, 0x0005, 0x0001,
    KEY_USA , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"I",
    0x0018, 0x0000, 0x0005, 0x0001,
    KEY_CHF , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON , NORMAL, (LONG)"USA",
    0x001E, 0x0000, 0x0005, 0x0001,
    KEY_CHD , -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"CH",
    0x0024, 0x0000, 0x0005, 0x0001,
    33, -1, -1, G_BUTTON |0x0100,
    SELECTABLE IRBÜTTON, NORMAL, (LONG)"CH”,
    0x002A, 0x0000, 0x0005, 0x0001,
    43, -1, -1, G_TEXT
    NONE, NORMAL, (LONG)&rs_tedinfo[1],
    0x0032, 0x000E, 0x0404, 0x0001,
    44, -1, -1, G_TEXT
    NONE, NORMAL, (LONG)&rs_tedinfo[2] ,
    0x0038, 0x000E, 0x0205, 0x0001,
    45, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)“Uhrzeit:",
    0x0005, 0x000F, 0x0008, 0x0001,
    48, HOURS12 , 47, G_BOX
    NONE, NORMAL, (LONG)0x00001101L,
    0x000E, 0x000F, 0x0019, 0x0001,
    47, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"12 Stunden", 
    0x0000, 0x0000, 0x000C, 0x0001,
    45, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"24 Stunden", 
    0x000D, 0x0000, 0x000C, 0x0001,
    49, -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Datum:",
    0x0007, 0x0011, 0x0006, 0x0001,
    SEPERATOR, DATE , 52, G_BOX
    NONE, NORMAL, (LONG)0x00001101L,
    0x000E, 0x0011, 0x00IE, 0x0001,
    51, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"MM-TT-JJ", 
    0x0000, 0x0000, 0x000A, 0x0001,
    52, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"TT-MM-JJ",
    0x000B, 0x0000, 0x0009, 0x0001,
    49, -1, -1, G_BUTTON |0x0100,
    SELECTABLE|RBUTTON, NORMAL, (LONG)"JJ-MM-TT", 
    0x0015, 0x0000, 0x0009, 0x0001,
    54, -1, -1, G_FTEXT
    EDITABLE, NORMAL, (LONG)&rs_tedinfo[3],
    0x0031, 0x0011, 0x000C, 0x0001,
    NOPREF , -1, -1, G_STRING ,
    NONE, NORMAL, (LONG)"Pr\204ferenz:",
    0x0003, 0x0013, 0x000A, 0x0001,
    TOS , -1, -1, G_BUTTON |0x0100,/* Object 55 NOPREF */
    SELECTABLE|RBUTTON, NORMAL, (LONG)“keine", 
    0x000E, 0x0013, 0x0007, 0x0001,
    UNIX , -1, -1, G_BUTT0N |0x0100,/* Object 56 TOS */
    SELECTABLE|RBUTTON, NORMAL, (LONG)"TOS",
    0x0016, 0x0013, 0x0007, 0x0001,
    OK , -1, -1, G_BUTTON |0x0100,/* Object 57 UNIX */
    SELECTABLE|RBUTTON, NORMAL, (LONG)"UNIX",
    0x001E, 0x0013, 0x0007, 0x0001,
    ABORT , -1, -1, G_BUTTON |0x0200,/* Object 58 OK */
    SELECTABLE|DEFAULT|EXIT, NORMAL, (LONG)"OK" ,
    0x0016, 0x0815, 0x0009, 0x0001,
    0, -1, -1, G_BUTTON |0x0200,/* Object 59 ABORT */
    SELECTABLE|EXIT|LASTOB, NORMAL, (LONG)"Abbruch", 
    0x0021, 0x0815, 0x0009, 0x0001 
};

object *rs_trindex[] =
{ &rs_object[0]
};


Uwe Seimet
Aus: ST-Computer 02 / 1993, Seite 84

Links

Copyright-Bestimmungen: siehe Über diese Seite