Tips und Tricks für Programmierer

Verwaiste vprintf()-Funktion

Jeder C-Programmierer kennt sicher die printf()-Funktion und ihre Syntax. Bereits das kleine Programm »Hello World« benutzt diese Funktion. Daß aber »vprintf()« in vielen Fällen die elegantere Lösung darstellt, ist schon weniger geläufig. In unserem Beispiel sind vier Werte auszugeben:

#include <stdio.h>
void Output (int x, int y, int w, int h)
{
	printf ("x : %d, y : %d, w : %d, h : %d?\n", x, y, w, h);
}

Durch folgendes Beispiel läßt sich nicht nur Schreibarbeit einsparen, sondern auch schnellerer Code erzeugen:

#include <stdio.h>
typedef struct
{
	int x, y, w, h;
} RECT;
void Output (RECT *r)
{
	vprintf ("x : %d, y : %d, w : %d, h : %\n", r);
}

Auch im Zusammenhang mit der variablen Parameterübergabe kann die »vprintf()«-Funktion gute Dienste leisten.
(Jürgen Lietzow/ah)

#include <stdio.h>
#define Output (x, y, w, h) _Output (0, x, y, w, h)
void _Output (int dummy, ...)
{
	va_list ptr;
	va_start (ptr, dummy);
	vprintf ("x : %d, y : %d, w : %d, h : %d\n", (void *ptr);
	va_end(ptr);
}

Bunte Font-Vielfalt

Immer mehr gewinnt das Stiefkind von Atari - GDOS (Graphic Device Operating System) - an Bedeutung. Es erlaubt unter anderem das Einbinden neuer Fonts. Der ST oder TT ist von Haus aus mit nur drei Zeichensätzen ausgerüstet. Der 16x8 und 8x8 Zeichensatz für normale Text-Darstellung und der 6x6 Zeichensatz, den Sie etwa unter und in Icons finden. Doch wenn schon die Möglichkeit gegeben ist, warum nicht auch mehr Fonts ins Spiel bringen? Eine genaue Beschreibung zu GDOS und dessen Installation ist in der Ausgabe 10/91 nachzulesen.

Das untere Listing zeigt, wie Sie in GFA-BASIC die verschiedenen System-Fonts ausnutzen. Zunächst ist zu prüfen, ob GDOS überhaupt im System installiert ist, um dann alle in der »ASSIGN.SYS« angegebenen Zeichensätze nachzuladen Lind auszugeben.
(Sandro Lucifora/ah)

IF GDOS?	! prüfen ob GDOS geladen
	RESERVE 25600
	anz_f% = VST_LOAD_FONTS (0)	! zeichensätze laden
	FOR i% = 1 TO anz_-f%
		index% = VQT_NAME (i%, fname$)
		DEFTEXT ,,,, index%
		TEXT 80, 80, "Dies ist der " + fname$ + " Font."
		~INP (2)
		CLS
	NEXT i%
	~VST_UNLOAD_FONTS (0)	! zeichensätze löschen
	RESERVE	! speicherplatz freigeben
ENDIF

Alles mal ganz anders

Oft sind die Systemeinstellungen (etwa die parallele und serielle Schnittstelle), wie sie nach dem Einschalten des Computers vorliegen, für den Anwender nicht zu gebrauchen. Hier ein paar Betriebssystemfunktionen, mit denen Sie alle nötigen Parameter individuell konfigurieren. Um die RS232-Schnittstelle an jeden Geschmack anzupassen, bietet sich im XBIOS die Funktion 15 an. Ihr Aufruf erfolgt mit

~XBIOS (15, b%, h%, -1, -1, -1, -1)

Hinter »b%« verbirgt sich die Baudrate, sprich die Sendegeschwindigkeit. Tabelle 1 (Seite 102) zeigt die entsprechenden Werte. »h%« gibt den Handshake-Modus an: 0 ohne, 1 = XON/XOFF, 2 = RTS/CTS, 3 = beides.

Auch der Drucker soll oft anders, als er zunächst darf. Um hier eine Modifikation zu erreichen, bitten wir wieder das XBIOS um Unterstützung:

Rück% = XBIOS (33, wie%)

In »rück%« erhalten wir die aktuelle Druckerkonfiguration zurück, falls »wie%« den Wert -1 enthält. Um die Druckerkonfiguration zu ändern, muß in »wie%« ein sechs Bit langer Wert stehen. Eine Aufschlüsselung finden Sie in Tabelle 2.

Wie Sie vielleicht bemerkt haben, entsprechen diese Einstellungen exakt denen des Kontrollfeldes. Der Drucker, dem Sie in erster Linie zugedacht waren - ein Matrix-Drucker von Atari - gelangte aber auf dem deutschen Markt zu wenig Ruhm.
(Sandro Lucifora/ah)

b% Baudrate b% Baudrate
0 19200 8 600
1 9600 9 300
2 4800 10 200
3 3600 11 150
4 2400 12 134
5 2000 13 110
6 1800 14 75
7 1200 15 20

Tabelle 1. Mit »b%« bestimmen Sie über »Rsconf« (XBIOS 15) die Baudrate der seriellen Schnittstelle [links]. Für die Konfiguration der Druckerschnittstelle ist die XBIOS-Funktion 33 (»Kbrate«) zuständig.

Bitnummer Bedeutung
0 Matrixdrucker/Typenraddrucker
1 Monochrom/Farbe
2 1280/960 Punkte
3 Draft/NLQ(nur bei 1280 Punkten)
4 Centronics/RS232
5 Endlospapier/Einzelblatt

Verzögert

Die Ansprechzeit und die Wiederholrate der Tastatur bestimmen wir mit der XBIOS-Funktion 35 (»Kbrate«):

rück% = XBIOS (35, verz%, rep%)

Übergeben Sie für »verz%« oder »rep%« -1, erhalten Sie den derzeit eingestellten Wert zurück. Die Bit 0-7 in »rück%« geben Auskunft über die Wiederholrate (x/50Hz), die oberen acht Bit über die Ansprechzeit (x/50Hz).
(Sandro Lucifora/ah)



Aus: TOS 12 / 1991, Seite 100

Links

Copyright-Bestimmungen: siehe Über diese Seite