HC-BASIC
BASIC-Interpreter aus der DDR
From Wikipedia, the free encyclopedia
HC-BASIC (manchmal auch KC-BASIC genannt) ist ein BASIC-Interpreter aus der DDR. Er stellte in der DDR einen Quasi-Standard dar.
| HC-BASIC | |
|---|---|
| Basisdaten | |
| Erscheinungsjahr: | 1984 |
| Entwickler: | |
| Beeinflusst von: | Microsoft BASIC, Sinclair BASIC |
| Betriebssystem: | CAOS (HC 900, ff.), Z9001-OS (Z9001, ff.), „Monitorprogramm“ (Z 1013) |
| Lizenz: | Abandonware |
Geschichte & Entwicklung


HC-Basic wurde für die 1984 auf den Markt gebrachten Kleincomputer Z 9001 und HC 900 bzw. KC 85/2 entwickelt. Bei der ersten Gerätegeneration war der Interpreter nicht integriert, sondern musste von Kassette oder Modul geladen werden. Die Nachfolger (ab KC 87 und KC 85/3) hatten diesen fest eingebaut. Das Programm war 10,5 kB groß.[1]
Wenig später erschien es für den Z 1013 vom VEB Robotron-Elektronik Riesa in einer leicht angepassten Version.[2]
Beschaffung des Programmcodes
Mit Aufnahme der Entwicklungen für einen Kleincomputer bei Robotron (Z 9001) sollte ein passender BASIC-Interpreter gefunden werden. Dazu zog man zwei Entwicklungen heran:
- VEB Transformatoren- und Röntgenwerk „TuR“ Dresden; 13 KB groß, beherrschte MAT-Befehle für Matrix-Operationen sowie Subroutinen, komplette Eigenentwicklung aber orientierte sich grob an HP BASIC
- Forschungszentrum für Tierproduktion Dummerstorf-Rostock; 8 KB groß, Mischung aus Microsoft BASIC und Sinclair BASIC sowie Bestandteile von Programmcode des Tischrechners HP 9845B enthalten
Schließlich entschied man sich für letztgenannte Version, da diese weniger Speicher benötigte und auf das weltweit etablierte Microsoft BASIC setzte. Es wurden nur noch kleinere Anpassungen vorgenommen. Ende 1983 / Anfang 1984 wurde das Endprodukt dem VEB Mikroelektronik „Wilhelm Pieck“ Mühlhausen (im Kombinat Mikroelektronik Erfurt) übergeben, um eine frühzeitige Kompatibilität zu gewährleisten.[3] Die Entwicklung aus Dummerstorf stammt wiederum aus einer Zeitschrift westlicher Herkunft, dessen 6-seitiges Hexdump in zwei Tagen abgetippt, getestet, angepasst und gespeichert wurde.[4]
Start
BASIC musste immer vom Betriebssystem aus gestartet werden;
- Kaltstart: BASIC eingeben + Enter
- Warmstart: REBASIC eingeben + Enter[5]
Unterschiede zu anderen BASIC-Dialekten
Der Dialekt beherrschte über 100 Befehle und war somit umfangreich und komfortabel zu programmieren. Eine Programmzeile durfte nicht länger als 60 Zeichen sein.
Vorteile
- über 100 Befehle zur Verfügung
- direkte Grafikbefehle wie Circle, Line usw. im Vergleich zu anderen Dialekten wie Commodore Basic V2 möglich
- gute Kompatibilität der unterschiedlichen Versionen untereinander
Nachteile
- Fehlende Integerzahlen und dadurch v. a. langsamer Grafikaufbau mit PSET, VPOKE, VPEEK (nur KC85) sowie träge bei der Indizierung von Arrays sowie simplen Operationen wie A=A+1
- Lästige Integer-Beschränkung bei POKE/DOKE/PEEK/DEEK/AND/OR/NOT: Adressangabe bzw. Werte nur im Bereich −32768..32767 erlaubt
- RENUMBER gefährlich: Stürzt manchmal ab und kann nicht-monotone Nummerierungen generieren. Ein solches Programm ist nicht mehr editierbar und nur über LIST, Texteditor, LOAD rettbar.
- Lange Programme (> 16 KByte) langwierig zu editieren: Die Eingabe einer Zeile mit niedriger Zeilennummer verursacht das Verschieben des übrigen Programms im Speicher
- Fehlende „Sprungvorhersage“ und dadurch langsame GOTO und GOSUB bei langen Programmen; fehlende Tokenisierung der Sprungziele und von numerischen Konstanten
- Fehlende „double“-Gleitkommazahlen verhindern Nutzbarkeit für geodätische und astronomische Anwendung sowie numerische Simulation
Datensicherung
Das Speichern und Laden von tokenisierten Programmen ist via Kassette, Diskette und (USB-)Modul möglich, Kommando CSAVE und CLOAD. Die Formatendung lautet .sss. Dabei handelt es sich um einen Speicherabzug. Ein solches Programm ist nur mit einem Ent-Tokenisierer extern bearbeitbar.
Zudem ist das Speichern und Laden von Text möglich, mit LIST#1 und LOAD#1. Da das Einlesen langsam geht werden beim Speichern auf Kassette extra lange Vortöne (Synchronmuster) zwischen den 128-Byte-Datenblöcken generiert. Ein solcherart gespeichertes Programm kann extern bearbeitet werden.
Codebeispiel
10 COLOR0,7:CLS
20 PRINT
30 PRINT"Darstellung der Funktion Z=X*X-Y*Y"
40 W=PI/8
50 A=0:B=0:D=0
60 F1=20:F2=5:F3=8
70 V1=160:V2=100
80 CO=COS(W):SI=SIN(W)
90 SY=-.5:SX=-.03
100 FOR ZA=1 TO 2
110 FOR YR=3 TO -4 STEPSY
120 FOR XR=3 TO -3 STEPSX
130 ZR=YR*YR-XR*XR
140 X=INT(F1*(A+XR)+F3*(YR+C)*CO+V1)
150 Y=INT(F2*(B+ZR)+F3*(YR+C)*SI+V2)
160 PSET X,Y,0
170 NEXT XR,YR
180 IF ZA=1 THEN SY=-.04:SX=-.5
190 NEXT ZA
Preise
Verbreitung & Bedeutung
Die Stückzahl der verkauften BASIC-Interpreter (ROM-implementiert und separat gekauft) korreliert in etwa mit der Stückzahl der verkauften Kleincomputer aller Varianten.
Konkurrenz war eigentlich politisch sowie ideologisch nicht gewollt.[14] Andere Interpreter wie Tiny-Basic (sog. „Mini-Basic“ für Z 1013 und JU+TE-Computer)[15][16] erlangten keine größere Bedeutung, da keine Kompatibilität gewährleistet war.
„Professionelle“ BASIC-Interpreter wie für DCP spielten aufgrund der Preise (1980,00 M) und der anderen Zielgruppe für den Privatanwender keine Rolle.[1] Auch in den Schulen, in der Ausbildung / Weiterbildung usw. wurde Programmieren nahezu nur mit HC-BASIC gelehrt.[17][18]
Ein Export der Technik oder des Interpreters war von Anfang an ausgeschlossen, weder in die Staaten des RGW noch in den Raum des NSW.
Weblinks
- KC-BASIC. In: 8Bit-Homecomputer aus der DDR. homecomputer-ddr.de.vu, abgerufen am 2. Mai 2015.