Dies ist eine alte Version des Dokuments!
HC-Basic
orignal Riesa
Auf der Kassette M0111 gab es erstmals ein großes, zum Z9001 (und KC85/3) kompatibles Basic, das HC-BASIC.
Adressbereich : 100H - 2AFFH
zusätzlich: 0B0h-0FFh
Startadresse : 300H od. @B
Restart : 302H od. @R
Für den A2-Monitor muss das BASIC angepasst werden. Details dazu siehe Bedienungsanleitung Z1013.64.
KC-BASIC+
KC-BASIC+ von V.Lühne/IG-HC TU Dresden
KC-BASIC+ ist das 10-K-BASIC, der gegenüber bedingt dem HC-BASIC von Riesa 16-K alle Direktsprünge in den MONITOR vermeidet.
KC-BASIC+m von M.Duchrow/Berlin
KC-BASIC+m1 von Dr.Trog-CC URANIA Berlin
Die letzte Version mit Bearbeitungen ist mit implementiertem 'main-tape' (m) (*Duchow/Berlin*) und verbesserter Funktion des 'LIST#', wo jetzt ein anschließendes 'verify' möglich ist (*Dr.Trog-CC URANIA Berlin*). Ergebnisse sind ein verbessertes Einladen von BASIC-Programmen im KC-Modus und bei Rundfunk-Mitschnitten.
ROM-BASIC
KC-ROM-BASIC+ von V.Lühne/IG-HC TU Dresden
Dieser 10-K-Basic kann ab C000H in einem ROM (auch RAM-lauffähig) stehen. Er ist zum KC-BASIC+ voll kompatibel. Seine Programme stehen zwar in einem anderen Speicherbereich, nutzen aber intern die gleichen Adressen. Der KC-ROM-BASIC+ rechnet sich diese dann jeweils um. Der KC-BASIC+ ab 100H lädt sich diese Programme richtig in den Speicher, umgekehrt ebenfalls.
Bedienung
Kommandos
AUTO /ZN ab/,ZN
Automatische Zeilennummerierung.Ohne Parameter 10,10 Parameter : ab Zeilennummer,Schrittweite Abbruch : BREAK
CLEAR /I,J
Loeschen aller Variablen Parameter : I Neureservierung Stringbereich J neues Speicherende
DELETE ZN/,ZN bis
Loeschen Programmzeile bzw. von,bis
LIST /ZN
Auflisten des Programmes ab niedrigster Zeilennummer bzw. ab ZN.Es werden 10 Zeilen aufgelistet.Veraenderbar durch LINES N. Fortsetzung mit ENTER.
LINES N
Neuvereinbarung N-Zeilen bei LIST. Bleibt bis auf Wiederruf erhalten.
RENUMBER /ZN ab/,ZN bis/,ZN 1/,SW
Neunummerierung des Programmes. Zeilennr. ab,Zeilennr. bis,neue niedrigste Schrw. Standard: Niedrigste,hoechste,niedrigste =10
EDIT ZN
Editieren des Programmes ab ZN.Der Kursor steht am Zeilenende und kann zur fehler- haften Stelle gefuehrt werden. Abbruch : BREAK
RUN ZN
Loeschen aller Variablen und Starten des Programmes ab niedrigster oder ab ZN. Sollen vereinbarte Variablen erhalten bleiben, dann Start mit GOTO ZN.
CSAVE„Filename“
Abspeichern des Programmes.Filename max. 8 Bytes.
CLOAD„Filename“
Laden eines Programmes.
BYE
Verlassen des Interpreters.
TRON
Trace-Modus.Bei Abarbeitung des Programmes werden die Zeilennummern mit ausgegeben.
TROFF
Ausschalten des Trace-Modus.
Jedes laufende Programm kann mit BREAK (03H) abgebr. werden. In diesem Fall erfolgt Meldung: BREAK AT Zeilennummer.
- max. Zeilenlaenge 70 Zeichen.
- Anweisungen durch Doppelpunkt getrennt.
- Zahlenbereich : Festpunktzahlen sechsstellig + Vorzeichen
Gleitpunktzahlen Mantisse wie Festpunktz.
Exponent max. +/- 38
- Variablen : Namen = 2 Stellen,erstes Zeichen ein Buchstabe
IF,OR,ON als Namen verboten.
num.Variable z.B. A1, AA …
String z.B. B$, U$ …
- Anweisungen ohne Zeilennummer werden sofort ausgefuehrt.
- Basic-Programme sind ab 2C00H abgelegt. Ende durch 00 00 00.
Anweisungen
DATA N1/,N2/,N3 …
Bereitstellen von Daten fuer die READ-Anw. Zahlenwerte oder Strings(Strings ohne "......")
READ N/,N1…
Die in DATA bereitgestellten Daten werden der Reihe nach ausgelesen und dem entsprechenden Namen zugeordnet.Es koennen nicht mehr Daten gelesen werden als bereitstehen.
RESTORE /ZN
Ruecksetzen des DATA-Zeigers auf erste DATA-Zeile bzw. Zeilennummer ZN.
DIM N(I)/,N1(I,J,…)
Dimensionieren von Indexvariablen.Menge beliebig.Auch Strings(dann Stringzeichen) Theoretisch 255 Dimensionen moeglich.
PRINT N, N$ ,„N“
Statt PRINT ist auch " ? " moeglich. Ausdruck der folgenden Werte ab letzter Cursor- position. Variablen,Strings ("...") PRINT ohne Ausdruck ergibt Leerzeile.
PRINT AT (Z,S);…
Ausdruck auf ZEILE 0-31,SPALTE 0-31. Kursor bleibt aber auf Spaltenposition wird intern weitergezaehlt.Aufzaehlungen mit Kommas trennen!
LET N=…
Wertzuweisung,kann entfallen. Additive Verknuepfung von Strings moeglich.
DEF FNA(I)=…
Definieren einer Funktion mit dem Namen A und einer Variablen I.
OUT P,I
Ausgabe eines Wertes I auf dem Port P.
A=INP(P)
Port P wird gelesen und der Variablen A zugewiesen
WAIT P,U/,X
Stop bis ein Wert vom Port P kommt.Wert wird mit U UND-verknuepft.Wenn =0 dann weiter. X=Erstverknuepfungswert XOR (normal =0)
WIDTH N
Breite einer Ausgabezeile N Zeichen.
A=POS(X)
Die aktuelle Cursorposition wird A zugewiesen.
PAUSE/N
Ohne Variable Unterbrechung bis BREAK mit Variable Unterbrechung fuer N/10 Sekunden.
GOSUB ZN
Sprung in ein Unterprogramm ab ZN. Abschluss des Unterprogramms mit RETURN
GOTO ZN
Unbedingter Sprung zu Zeile ZN.
ON A GOTO ZN1/,ZN2…
Verteilersprung.Es wird zur A-ten Zeile gesprungen.Ist A gleich oder grosser als ZN angegeben sind,so wird zur folgenden ZN gesprungen.
IF … THEN … /ELSE …
Bedingte Anweisung.Statt THEN kann auch GOTO stehen.ELSE kann entfallen.
FOR I=A TO B/STEP C
Laufanweisung.A=Anfangswert,B=Endwert C=Schrittweite.(Standard SW=1)
NEXT/I/J
Ende einer Laufanweisung.Mehrere Schleifen koennen verschachtelt sein,duerfen sich aber nicht ueberlappen.
WINDOW Z1,Z2,S1,S2
Fenster von Z1-Z2,S1-S2 WINDOW ohne Werte = volles Fenster
CALL N
Aufruf Maschinenunterprogramm (Ende C9H) Ist N groesser 32767,dann N=N-65536 Auch HEX-Werte moeglich.Bsp. CALL*37A0
POKE A,N
Auf Adresse A wird der Wert N abgelegt.
N=PEEK(A)
Der Wert von Speicherplatz A wird N.
DOKE A,N
Auf Adresse A u. A+1 wird N abgelegt.
N=DEEK(A)
Ab A werden 2 Bytes gelesen (NWT,HWT)
CLS
Bildschirm loeschen
REM
Kommentarzeile (Statt REM kann auch ! geschrieben werden)
END
Programmende.(Notwendig wenn Unterprogr.folgen)
STOP
Programmierter Abbruch (BREAK IN ZN)
CONT
Fortsetzung des Programms nach STOP.
N=FRE(A)
N erhaelt Anzahl der noch freien Speicher- plaetze. Klammerausdruck definiert Variablentyp z.B. PRINT FRE(A$) gibt Platz fuer Strings an.
SPC(N)
Nach PRINT Ausgabe von N Leerzeichen.
TAB(N)
Nach PRINT Ausgabe ab N-ter Spalte.
INPUT„Text“;N,N$,T6
Eingabe eines Wetes bzw.einer Zeichen- kette wird erwartet. (Abschluss mit ENTER) Es werden so viele Werte abgefragt, wie angegeben sind. Bei zu wenig Werten : ?? zu vielen : EXTRA IGNORED unzulaessig : REDO FROM START
N$=INKEY$
Abfrage Tastatur bis Taste gedrueckt und danach N$ zugewiesen.Programm haelt nicht an.
Stringverarbeitung
ASC (X$)
liefert ASCII-Code des 1. Zeichens in X$
CHR$ (I)
wandelt I in ASCII-Code um
LEFT$ (X$,I)
liefert I Zeichen von links aus X$
RIGHT (X$,I)
liefert I Zeichen von rechts aus X$
MID$ (X$,I)
liefert die Zeichen ab der i-ten Position ab X$
STR$ (A)
wandelt den Zahlenwert von A in ein String
VAL (X$)
wandelt X$ in eine Zahl (Umkehr von STR$ (A))
LEN (X$)
liefert die Laenge von X$
STRING$ (I,X$)
setzt I-mal X$ zu einem neuen String zusammen.
INSTR(A$,B$)
Posit. des ersten Auftretens von A$ in B$
Mathematische Funktionen
ABS (N)
Absolutbetrag von N
INT (N)
Wert vor dem Komma (Integer)
SGN (N)
Signum-Funktion (Vorzeichen)
SQR (N)
Wurzel aus N
SIN (N)
Sinus N in Bogenmaß
COS (N)
Cosinus N in Bogenmaß
TAN (N)
Tangens N in Bogenmaß
ATN (N)
Arcus-Tangens in Bogenmaß
LN (N)
Natuerlicher Logarithmus von N
EXP (N)
Exponentialfunktion N
RND (N)
Zufallszahl groesser 0 kleiner 1 N=0 dann Wert ZZ normal N>0 dann naechster Wert der ZZ-Reihe N<0 dann neue Folge von ZZ (neu initialisieren)
PI
Konstante PI=3.14159
Logische Operationen
AND
logisches UND
OR
logisches ODER
NOT
logische Negation