BASIC-Compiler

Zielsysteme

Der BASIC-Compiler kann Programmcode für verschiedene Systeme erzeugen. Mehrere Systeme, die miteinander verwandt sind und auf denen der gleiche Programmcode lauffähig ist, werden zu einer Gruppe zusammengefasst. Diese Gruppe bildet ein Zielsystem. Programme, die für ein bestimmtes Zielsystem compiliert werden, sind somit auf allen Computern lauffähig, die dem angegebenen Zielsystem entsprechen.

Das Zielsystem muss in den Compiler-Optionen ausgewählt bzw.angegeben werden. Damit weiß der Compiler, was für Programmcode erzeugt werden soll. Folgende Zielsysteme werden unterstützt:
Am Ende der Seite finden Sie ein tabellarische Zusammenfassung der Zielsysteme.

Nicht alle BASIC-Funktionalitäten lassen sich auf allen Zielsystemen umsetzen. Insbesondere bei den Grafik- und CURSOR-Funktionalitäten gibt es Einschränkungen. Aus diesem Grund finden Sie hier Hinweise zu den konkreten Umsetzungen und damit verbunden auch zu den gegebenen Einschränkungen.

AC1-2010, AC1-SCCH mit optionaler Farbgrafikkarte

Bei diesem Zielsystem wird Programmcode mit Farbunterstützung für einen AC1-2010 und AC1-SCCH erzeugt. Mit Farbunterstützung ist gemeint, dass bei allen Ausgaben auf dem Bildschirm neben dem Bildwiederholspeicher auch der Farbspeicher beschrieben wird. Das compilierte Programm ist aber auch auf einem AC1 ohne Farbgrafikkarte lauffähig. Einzig die POINT-Funktion zum Ermitteln der Farbe eines Pixels würde in dem Fall falsche Werte liefern.

Die AC1-Monitorprogramme unterstützen standardmäßig keine Farben. Aus diesem Grund muss das das compilierte Programm selbst tun. Dazu prüft der Compiler, ob im BASIC-Programm Anweisungen zum Setzen der Farbe vorkommen. Wenn ja, werden Textausgaben auf dem Bildschirm nicht über die entsprechende Systemfunktion getätigt, sondern über eine im compilierten Programm enthaltene eigene Bildschirmansteuerung, die dann eben auch den Farbspeicher bedient. Diese eigene Bildschirmansteuerung unterstützt nicht alle Steuercodes der Systemroutine, sondern nur die wichtigsten:

SteuercodeBedeutung
08hCursor links
09hCursor rechts
0AhCursor runter
0BhCursor hoch
0ChBildschirm löschen
0Dh Cursor an den Anfang der nächsten Zeile

Andere Steuercodes, insbesondere die von der Systemroutine her bekannten Escape-Sequenzen, werden nicht unterstützt.

Die eigene Bildschirmansteuerung benutzt zur Cursor-Positionierung die gleichen Systemzellen wie die SCCH-Monitorprogramme, nämlich 1800h/1801h für die Cursor-Adresse und 1846h für das Zeichen unter dem Cursor. Damit ist sichergestellt, dass bei Programmstart und -ende der Cursor nicht springt.

Wenn im BASIC-Programm keine Anweisungen zum Setzen der Farbe vorkommen, enthält das compilierte Programm auch keine Funktionen zum Beschreiben des Farbspeichers. In dem Fall beschreiben die Grafikfunktionen (simulierte Vollgrafik, siehe weiter unten) nur den Bildwiederholspeicher, und für Textausgaben wird die Systemfunktion des Monitorprogramms benutzt.

Im SCREEN 0 wird eine Vollgrafik mit 128x64 Pixel simuliert, die mit den Grafikfunktionen angesprochen werden kann. Voraussetzung dafür ist, dass im Zeichengenerator im Bereich 00h bis 0Fh die entsprechenden Grafikzeichen vorhanden sind. Das ist beim ACC-, SCCH- und AC1-2010-Zeichensatz der Fall.

Bei der simulierten Vollgrafik wird jede Zeichenposition auf dem Bildschirm in vier Grafikpixel aufgeteilt. Da ein Zeichen 8x6 Bildschimpixel hat, ist ein simuliertes Grafikpixel 4x3 Bildschirmpixel groß, d.h., ein Grafikpixel ist nicht quadratisch. Dadurch sehen auf dem Bildschirm gemalte Kreise wie Ellipsen und Quadrate wie Rechtecke aus.

Der erzeugte Programmcode ist auch auf einem AC1 mit Monitorprogramm 3.1 lauffähig, wenn ein 2 KByte großen Bildwiederholspeicher vorhanden ist (64x32 Zeichen) und auf Druckerausgaben sowie die JOYST-Funktion verzichtet wird.

Eigenschaften des Zielsystems im Detail:

CP/M-kompatibel


Hübler-Grafik-MC


Achtung! Für den Hübler-Grafik-MC compilierte Programme sind auch auf dem Hübler/Evert-MC lauffähig, wenn auf die Grafikfunktionalitäten und auf die INKEY$-Funktion verzichtet sowie das Programm nicht mit der Option CTRL-C bricht Programm immer ab compiliert wird.

Kramer-MC


LLC2 mit HIRES-Grafik


KC85/1, KC87, Z9001


KC85/1, KC87, Z9001 mit KRT-Grafik


KC85/2..5, HC900

Dieses Zielsystem erzeugt Programmcode, der auf allen Mühlhäuser KCs lauffähig ist, also vom HC900 bis zum KC85/5.

Eigenschaften des Zielsystems im Detail:

KC85/4..5 mit Unterstützung beider Bildspeicher

Dieses Zielsystem ist speziell auf die Hardware des KC85/4 und KC85/5 zugeschnitten und ermöglicht somit beide Bildspeicher zu nutzen. Außerdem wurden die Grafikroutinen auf die spezielle Hardware optimiert, so dass diese noch etwas schneller sind als beim weiter oben beschriebenen allgemeinen KC85/2..5-Zielsystem.

Das Zielsystem KC85/4..5 stellt die beiden SCREENs 0 und 1 bereit, die die beiden Bildspeicher (IRM-Bänke) 0 und 1 repräsentieren. Für jeden Bildspeicher, d.h. für jeden SCREEN, wird der Cursor separat verwaltet. Man kann deshalb durch Umschalten des SCREENs auf beiden Bildspeichern Text ausgeben, ohne das das eine Auswirkung auf den jeweils anderen Bildspeicher hat.

Eigenschaften des Zielsystems im Detail:

KC85/5 mit CAOS >= 4.8

Mit der Betriebssystemversion CAOS 4.8 wurden Systemfunktionen eingeführt, mit denen Anwendungsprogramme auf einen USB-Speicher zugreifen und dabei auch die Vorteile dieses Speichermediums wie z.B. Unterverzeichnisse und Byte-genaue Dateigrößen nutzen können. Des Weiteren wurde die mit CAOS 4.6 eingeführte DEVICE-Schnittstelle weiterentwickelt, so dass nun auch Anwendungsprogramme besser davon profitieren können. Zur Unterstützung dieser neuen Möglichkeiten gibt es das Zielsystem KC85/5 mit CAOS >= 4.8. Es ist abgeleitet vom Zielsystem KC85/4..5 mit Unterstützung beider Bildspeicher und hat somit die gleichen Eigenschaften wie dieses, außer folgende zwei Punkte:


Hat man bei dem Zielsystem in den Compiler-Optionen sowohl den DISK- als auch den VDIP-Treiber aktiviert und öffnet eine Datei ohne Angabe eines Laufwerkbuchstabens (im BASIC-Jargon Gerätename), wird der DISK-Treiber verwendet, d.h. die Datei auf dem aktuell eingestellten Disketten- bzw. Festplattenlaufwerk geöffnet.

Ein für dieses Zielsystem compiliertes Programm ist auch auf einem KC85/4 oder KC85/5 mit einer CAOS-Version kleiner als 4.8 lauffähig. Allerdings führt der Versuch, eine Datei zu öffnen, zu der Fehlermeldung Gerät nicht gefunden.

Die Konstante für das Zielsystem ist: TARGET_KC85_CAOS48. Die Funktion IS_TARGET liefert auch bei TARGET_KC85 und TARGET_KC85_4 TRUE, da das Zielsystem davon abgeleitet ist.

SCCH (AC1-2010, AC1-SCCH, LLC2)

Ist dieses Zielsystem ausgewählt, wird Programmcode für einen AC1 bzw. LLC2 mit einem SCCH-Monitorprogramm erzeugt. Der Programmcode ist auch auf einem AC1 mit dem Monitorprogramm 3.1 lauffähig, wenn auf Druckerausgaben, die LOCATE-Anweisung und die JOYST-Funktion verzichtet wird.

Z1013


Z1013 mit Unterstützung des 64x16-Bildschirmformats

Dieses Zielsystem ist eine Erweiterung des Zielsystems Z1013. Der einzige Unterschied besteht darin, dass es zusätzlich den SCREEN 1 gibt, in dem der 64x16-Zeichen-Modus der Peters-Platine zur Verfügung steht. Da die Z1013-Monitorprogramme dieses Bildschirmformat nicht unterstützen, erfolgt im SCREEN 1 die Bildschirmausgabe über eine eigene, im compilierten Programm enthaltene Bildschirmansteuerung. Diese unterstützt die gleichen Steuercodes und verwendet auch die gleichen Systemzellen wie die originale Routine im Monitorprogramm.

Eigenschaften des Zielsystems im Detail:

Z1013 mit KRT-Grafik

Dieses Zielsystem ist ebenfalls eine Erweiterung des Zielsystems Z1013, bei dem es zusätzlich den SCREEN 1 gibt, der die Vollgrafikerweiterung nach Kleinstrechnertips 11 und Funkamateur 7/1991 unterstützt. Dafür steht im SCREEN 0 die simulierte Vollgrafik mit 64x64 Pixel nicht zur Verfügung.

Z1013 mit ZX-Grafik

Auch dieses Zielsystem ist eine Erweiterung des Zielsystems Z1013, bei dem es zusätzlich den SCREEN 1 gibt, der die ZX-Spectrum-kompatible S/W-Vollgrafik nach practic 2/1988 unterstützt. Dafür steht im SCREEN 0 die simulierte Vollgrafik mit 64x64 Pixel nicht zur Verfügung.

Zusammenfassung

Die Tabelle zeigt anhand der zugehörigen Konstante alle Zielsysteme und fasst die wesentlichsten Eigenschaften zusammen:

Zielsystem (Konstante) Programm ist lauffähig auf Text Grafik Farbe
TARGET_AC1 AC1-2010, AC1-SCCH,
mit Einschränkungen auch AC1-ACC
SCREEN 0: 64x32 Zeichen SCREEN 0: 128x64 Pixel ja ¹)
TARGET_CPM CP/M-kompatible Systeme mit den von Robotron verwendeten Bildschirmsteuerzeichen (CP/A, CP/L, HR-DOS, HR-CP/M, MicroDOS, ML-DOS) SCREEN 0 - nein
TARGET_HUEBLER Hübler-Grafik-MC,
mit Einschränkungen auch Hübler/Evert-MC
SCREEN 0: 32x32 Zeichen SCREEN 0: 256x256 Pixel nein
TARGET_KRAMER Kramer-MC SCREEN 0: 64x16 Zeichen - nein
TARGET_LLC2 LLC2 mit HiRes-Grafik SCREEN 0: 64x32 Zeichen SCREEN 1: 512x256 Pixel nein
TARGET_KC85 KC85/2..5, HC900 SCREEN 0: 40x32 Zeichen SCREEN 0: 320x256 Pixel ja
TARGET_KC85_4 KC85/4, KC85/5 SCREEN 0: 40x32 Zeichen
SCREEN 1: 40x32 Zeichen
SCREEN 0: 320x256 Pixel
SCREEN 1: 320x256 Pixel
ja
TARGET_KC85_CAOS48 KC85/5 mit CAOS >= 4.8 SCREEN 0: 40x32 Zeichen
SCREEN 1: 40x32 Zeichen
SCREEN 0: 320x256 Pixel
SCREEN 1: 320x256 Pixel
ja
TARGET_SCCH AC1-2010, AC1-SCCH, LLC2
mit Einschränkungen auch Ur-AC1 und AC1-ACC
SCREEN 0: 64x32 Zeichen - nein
TARGET_Z1013 Z1013 SCREEN 0: 32x32 Zeichen SCREEN 0: 64x64 Pixel nein
TARGET_Z1013_64X16 Z1013 mit Peters-Platine SCREEN 0: 32x32 Zeichen
SCREEN 1: 64x16 Zeichen
SCREEN 0: 64x64 Pixel nein
TARGET_Z1013_KRT Z1013 mit KRT-Grafik SCREEN 0: 32x32 Zeichen SCREEN 1: 256x256 Pixel nein
TARGET_Z1013_ZX Z1013 mit ZX-Grafik SCREEN 0: 32x32 Zeichen SCREEN 1: 256x192 Pixel nein
TARGET_Z9001 KC85/1, KC87, Z9001 SCREEN 0: 40x24 Zeichen SCREEN 0: 80x48 Pixel ja ¹)
TARGET_Z9001_KRT KC85/1, KC87, Z9001 mit KRT-Grafik SCREEN 0: 40x24 Zeichen SCREEN 1: 320x192 Pixel ja ¹)

¹) Ein für dieses Zielsystem compiliertes Programm ist auch auf einem Rechner ohne Farbgrafikkarte lauffähig.