CBASIC
CBASIC ist eine Compiler-Version der Programmiersprache BASIC. Sie wurde von Gordon Eubanks in den Jahren 1976 und 1977 für das Betriebssystem CP/M geschrieben. Es war eine Verbesserung von BASIC-E, das er als Master-Arbeit entwickelt hatte.
Geschichte
Eubanks entwickelte BASIC-E in der Programmiersprache PL/M an der staatlichen Naval Postgraduate School in Monterey, Kalifornien. Da es somit auf öffentliche Kosten entstanden war, galt es nach amerikanischem Recht als „public domain“ und konnte nicht kommerziell vertrieben werden. Daher programmierte Eubanks in seiner Freizeit, während er noch Marine-Offizier war, das verbesserte CBASIC als kommerzielles Produkt seiner Firma Compiler Systems, zunächst zur Verwendung auf dem IMSAI 8080 Computer. Es war aber auch auf anderen CP/M-Systemen lauffähig. Außer der Version für CP/M-80, CBASIC/80, entstand 1981 auch eine Version für CP/M-86, CBASIC/86. 1981 wurde Compiler Systems einschließlich CBASIC von Digital Research übernommen. Der kommerzielle Erfolg von CBASIC versiegte relativ schnell, da sich andere Entwicklungswerkzeuge am Markt etablierten.
Eigenschaften
CBASIC erforderte außer für numerische Sprungmarken keine Zeilennummern und erlaubte nicht nur die Nutzung von Subroutinen mit dem Basic-Befehl GOSUB, sondern auch die Verwendung von selbst definierten Funktionen. Ein weiterer Vorteil war die Verwendung von 14-stelligen reellen Zahlen.
Anfänglich wurde CBASIC – wie BASIC-E – in einen Zwischencode (p-Code) kompiliert, der dann von einem Laufzeitprogramm ausgeführt wurde. Später erzeugte der Compiler im ersten Schritt einen Zwischencode (REL-Objektcode), aus dem in einem weiteren Schritt mit dem Linker das ausführbare Programm erstellt wurde. Auf diese Weise war es möglich, Programmteile in einer anderen Programmiersprache, beispielsweise maschinennahe Befehle in Assembler, zu schreiben und im Link-Vorgang in das lauffähige Programm einzubinden.
Beispiel-Programm
Das Sieb des Eratosthenes beispielsweise sieht als CBASIC-Programm etwa so aus:
integer limit, count, prime, i, k
limit = 1000
dim flag%(limit)
print "*** ERATO in CBASIC / CB80 ***"
print " --- Start ---"
count = 0
for i = 0 to limit :flag%(i) = 1 :next
for i = 0 to limit
if flag%(i) = 1 then \
prime = i + i + 3 :\
count = count + 1 :\
k = i + prime :\
while k <= limit :\
flag%(k)=0 :\
k = k + prime :\
wend
next
print count;"PRIMZAHLEN errechnet"
Quellen/Weblinks
- http://www.cwhonors.org/archives/histories/Eubanks.pdf Gordon Eubanks oral history, Transcript eines Video-Interviews von Computer World, November 2000
- http://www.cpm.z80.de/manuals/cbasic-m.pdf CBASIC 2 Reference Manual, November 1981
- http://www.vannattabros.com/history3.html Historic Computer Languages, CBASIC
- http://www.dvorak.org/blog/whatever-happened-to-cbasic/ Whatever Happened to CBASIC?