Weltsprache für den Spectrum

Basic und Assembler sind die meistverwendeten Sprachen beim Spectrum. Aber für C spricht unter anderem die leichte Übertragbarkeit auf andere Computer.

C gilt als Weltsprache für Computer. Basic, Assembler, Pascal, Forth, Prolog unterscheiden sich von den Versionen für »größere« Computer manchmal durch Kleinigkeiten, oft aber auch ganz erheblich. Wer sich mit Mühe in eine dieser Sprachen eingearbeitet hat, erlebt beim Umstieg auf einen anderen Computer leicht eine schlimme Überraschung: Manchmal gleicht sich nur der Name.

Anders bei C. An die Vorgaben der beiden Väter von C, Kernighan und Ritchie, halten sich nahezu alle Programmierer, auch die Entwickler von HiSoft-C.

Im Lieferumfang sind ein Handbuch, leider in Englisch, und eine Kassette enthalten. Die Kassette enthält den Compiler, und die Bibliotheken STDIO.H und STDIO.LIB. In solchen Bibliotheken liegen die computerspezifischen Programmteile eines C-Compilers.

Nach dem Laden von der Kassette läßt sich eine Kopie auf ein Microdrive-Cartridge ablegen. Das langwierige Laden von der Kassette erspart man sich dann für die Zukunft.

Die Syntax ist bis auf zwei zusätzliche Befehle voll kompatibel. Unterschiede zu C-Compilern auf größeren Computern sind fast ausschließlich durch die Speicherkapazität des Spectrum bedingt.

Das zeigt sich bei der Rechengenauigkeit. In HiSoft-C gibt es zum Beispiel keine Fließkomma-Zahlen. Weitere, nicht so gravierende Beschränkungen, sind: Integer-Definitionen INT, LONG und SHORT ergeben keine unterschiedliche Genauigkeiten, sondern arbeiten alle mit zwei Byte. Sie sind also syntaktisch im Sprachumfang enthalten, stellen aber nicht deren Zahlenbereich zur Verfügung. Darüber hinaus wurde für die TYPE-Umwandlung, der neue Operator CASI implementiert. Eine Erweiterung, die viele Spectrum-Benutzer hoch schätzen werden, ist der Befehl INLINE. Damit läßt sich problemlos Maschinencode einfügen.. Aber das sind keine wirklichen Einschränkungen für den Einstieg in die C-Sprache. Sie behindert auch nicht das Hauptmerkmal von C, die Portabilität der Programme auf andere Computer.

Wie auch bei Versionen auf anderen Computern, fehlt nicht der Bildschirmorientierte Editor. Er krankt leider an ein paar kleinen Fehlern: Das Kommando »P(ut)«, zum Sichern des Quellcodes, ignoriert die angegebenen Grenzwerte, mit dem man einen Teil des Source-Listings auswählt, und speichert immer den kompletten Code.
Durch einen Druck auf Taste B sollte man in den Basic-Interpreter zurückkehren. Man springt aber lediglich in den Direktmodus des Compilers. Dafür gibt es aber auch das Kommando C. Trotz dieser kleinen Macken kommt man mit dem Editor gut zurecht.

Eine außergewöhnliche Fähigkeit des Spectrum-C ist das Compilieren von Quelldateien vom Kassettenrecorder. Den Quelltext sichert man vorher mit einer speziellen Speicherfunktion in Blöcken auf das Band. Eine kurze Pause zwischen den Blöcken genügt, um den Text zu compilieren.

Die gute Anpassung an den Spectrum spielt der Compiler in Zusammenarbeit mit den Microdrives und ROM-Routinen aus. Die Funktion FOPEN öffnet jede - insgesamt vier - Micrödrive-Datei, um deren Daten zu lesen. In anderen Programmiersprachen ist das unmöglich oder mit viel Aufwand verbunden.

Eine Besonderheit der C-Sprache, die auch Assembler-Fans für C einnimmt, ist das Definieren von Static Variablen. Durch eine solche Definition legt man die Adresse der Variable im Speicher fest. Dadurch hat man sehr einfach Zugriff auf die Systemvariablen und kann somit Systemfunktionen leicht beeinflussen. In anderen Sprachen wählt der Compiler selbst aus, wo die Variable abgelegt wird.

Unser kleines Programm demonstriert einige beeindruckende Vor-teile gegenüber anderen Hochsprachen. Es definiert das Kommando CAT in C. Die Routine Shadow ruft eine Unterroutine im ROM des Interface 1 auf. Die Adresse 0xlc58 gilt nur für Interfaces der Version 1. Für Version 2 verwenden Sie bitte 0x1c52, und 0xlc54 für Version 3. Für die Systemvariablen wurden die gleichen Namen wie im Handbuch gewählt.

Für knappe 100 DM bekommt man eine schnelle und empfehlenswerte Programmiersprache für den Spectrum, die Leistungsvergleiche mit wesentlich teureren Versionen auf leistungsstärkeren Computern nicht zu scheuen braucht.

Rainer W. Gerling/hb

# define void int

extern char *channel(),*keyw(); 
main()
{
	cat(1,2)
}

void cat(drive,stream)
	int drive,stream;
{
	static int *d_strl = 23766; 
	static int *s_strl = 23768;
	
	if (strms(stream)==0)
		printf("STREAM %d NOT OPEN", stream); 
	else 
	{ 
		*d_str1=drive; 
		*s_str1=stream; 
		shadow(Oxic58);
	}
}

void shadow(adress)
	int address;
{
	static int *hd_11 = 23789;
	*hd_ll = address;
	inline(Oxdd,OxeS,Oxcf,Ox32,Oxdd,Oxel);
}

int strms(fp)
	int fp;
{
typedef int *intp;
return *cast(intp)(23568 + 6 + 2 * fp); 

C-Listing zum Anzeigen des Inhaltsverzeichnisses
1994 1995 1996 
1987  1988  1989 
1985 1986 1987
1984 1985 1986
1987 1988 1989
1986  1987  1988  
1989  1990  1991  
1992  1993  1994  
1995  1996  1997  
1998  1999  2000  
2001  2002  2003  
2004  
19881989 1990
199119921993
Hitdisk
ACE Inside Info
Atari Phile
Atari Times
STraight Up
1990 1992 1993
Links
Galerie
Dokumente
Listings
Personalisieren
Zurück
Historisches
Über diese Site
FAQ
Jaapan.de
STC 1/2002
komplett archiviert!
STC 3/2003
komplett archiviert!
STC 12/2002
komplett archiviert!
STC 11/2002
komplett archiviert!
STC 5/2003
komplett archiviert!

Kontakt Artikel-Archiv

(C) des Originalartikels: WEKA Medien Verlagsgesellschaft.
Copyright-Bestimmungen: siehe "Über diese Seite".
Classic Computer Magazines
[ Join Now | Ring Hub | Random | << Prev | Next >> ]