.mb3 .hm0 .fm0 .pn2 .po10 Di BASIC-]bersichten enthalte ein Kurzbeschreibun de HC-BASI des KC85/4 Si diene al Nachschlagewer i t{gliche Umgan mi de Compute un gen}ge de Fachman auc al Einstie i di Spezifi diese BASIC. Hinweis: DaBASIC-Handbuc de KC85/ gil mi de au Seit diese]bersich- tegemachte zus{tzliche Ausf}hrunge auc f} de KC85/4. Konstanten De BASIC-Interprete verarbeite Integerzahle (vorzeichenbehaftet ganz Zah len) reell Zahle (Gleitkomma- Festkommazahlen un String al Konstanten Di Konstant P is mi PI 3.1415 gespeichert. Das Ausgabeformat f}r eine Zahl ergibt sich wie folgt: 1Integerzahlezwische-99999un+99999werdeal Integerwert ausgegeben. 2Is de Betra eine Zah gr|~e ode gleic 0.0 un kleine ode gleic 999999wirdi Zah mi Festkommunohn Exponenten ausgegeben. 3F{ll ein Zah nich i di Kategori ode 2 wir si al Gleitkommazahl mit Exponent ausgegeben. De Interprete verarbeite Zahle mi eine Betra zwische 9.40396E-3 un 1.70141E+3 einschlie~lic Null String sin Zeichenkette vo alphanumerische Zeichen di 0...25 Zeiche lan sei k|nnen Stringkonstante werde i Hoch komm eingeschlossen. Variablen Variablenname m}sse imme mi eine Buchstabe beginne un k|nne beliebi lan sein E werde abe imme nu di beide erste Zeiche de Namen verar beitet De Variablennam dar kei reservierte Wor enthalten Da sin all BASIC-Anweisungen Ei $-Zeiche a End de Variablennamen weis si al Stringvariabl aus Di Feldvariable k|nne s viel Indize haben wi i ein Eingabezeil passen Operatoren De BASIC-Interprete de KC85/ verf}g }be all }bliche mathematischen und logischen Operatoren. Di Reihenfolg de Abarbeitun is wi folg hierarchisc geordnet: 1. Klammern 2. Exponenten ^ 3. Negative Vorzeichen 4. Multiplikation, Division: *, / 5. Addition, Subtraktion: +, - 6. Vergleichsoperatoren: =, <, >, <=, >=, <> 7. NOT 8. AND 9. OR Di logische Operatore wirke bitweis au 16-Bit-Integerzahle i Bereic vo -3276 bi +32767. Tabelle mit Wahrheitswerten der logischen Operatoren: A B NOT A A OR B A AND B ----------------------------------------------------------------- 0 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 1 1 Di Vergleichsoperatore un di Additio al Verkn}pfun sin auc au String anwendbar. .pa Anweisungen HC-BASIC Bemerkung Syntax ================================================================================ AUTϠ Selbst{ndig Zeilennumerierun AUT[Zeilennummer[,Schrittweite]] BEEP Erzeugung eines Signaltones BEEP[Anzahl] BLOAD Maschinenprogramm einlesen BLOAD BYE R}ckkehr zum Betriebssystem BYE CALL Aufru eineMaschinenprogramm CALL*Startadresse (hex.) CALL Aufruf eines Maschinenprogramms CALL Startadresse (dez.) CIRCLE Zeichnen eines Kreises CIRCLExm,ym,r[,g] COLOR Einstellen der Vorder- und COLORv,h Hintergrundfarbe CLEAR L|schen des Variablenspeichers; CLEAR[Ausdruck[,Ausdruck]] Begrenzung des String- und BASIC-Speichers CLOAD Einlesen eines BASIC-Programms CLOAD"name" CLOAD* Einlesen eines Variablenfeldes CLOAD*"name";feldname CLOSE Schlie~en einer Kanaloperation CLOSEr#n r=I, O CLS Bildschirm l|schen CLS CONT Fortsetzen eines mit BRK unter- CONT brochenen Programms CSAVE BASIC-Programm abspeichern CSAVE"name" CSAVE* Variablenfeld abspeichern CSAVE*"name";feldname DATA Datenliste; mit READ zu lesen DATA Konstante[,Konstante,...] DEEK Lesen der Adressen i und i+1 I=DEEK(i) -32768 <= I <= 32767 DEF FN Definition einer Funktion DEF FNname(Parameter)=Ausdruck DELETE Programmzeilen a bis e l|schen DELETE a,e DIM Variablenfeld dimensionieren DIM feldname(Index[,Index...]) DOKE Schreibt Wert j auf DOKEi,j -32768 <= j <= 32767 Adressen i und i+1 EDIT Programmkorrektur EDIT Zeilennummer ELSE Alternative zu IF-THEN IF...THEN...:ELSE... END Programmabschlu~ END FOR TO STEP Festlegen einer Programmschleife FOR Variable = Anfangswert TO End- (Schleife geht bis NEXT) wer[STE Schrittweite] GOSUB Unterprogrammaufruf GOSUB Zeilennummer GOTO Unbedingte Sprunganweisung GOTO Zeilennummer IF Bedingte Sprunganweisung IF Ausdruck GOTO Zeilennummer IF Ausdruck THEN Zeilennummer IƠAusdrucTHE Anweisung [:Anweisung...] IF Ausdruck THEN Anweisung: ELSE Anweisung INK Einstellen der Vordergrundfarbe INK v INP Liefert das aus dem Port i INP i gelesene Byte INPUT Eingabeanforderung INPUT["Strings";] Variable INPUT# Eingabeanforderung vom w{hl- INPUT#n Variable baren Peripherieger{t JOYST Spielhebelabfrage s. Dokumentation zum Spielhebel KEY Belegen der Funktionstasten KEY Funktionstastennummer KEYLIST Auflisten der Funktionstasten- KEYLIST belegung LET Wertzuweisung LET Variable = Ausdruck LET kann entfallen. .pa HC-BASIC Bemerkung Syntax ================================================================================ LINE Zeichnen einer Linie LINE xa,ya,xe,ye[,g] LINES Festlegen der Anzahl der LINES [Anzahl] aufzulistenden Zeilen LIST Auflisten eines Programms LIST [Zeilennummer] LIST# Ausgeben eines Programms auf LIST#n "Programmname" w{hlbares Peripherieger{t LOAD# Einlesen eines mit LIST# LOAD#n "Programmname" ausgegebenen Programms LOCATE Plazieren des Cursors im LOCATE z,s aktuellen Fenster NEW L|schen des Programm- und NEW Variablenspeichers NEXT Abschlu~ einer FOR-Programm- NEXT [Variable,Variable,...] schleife NULL Legt die Anzahl der auszugeben- NULL Zahl den Dummyzeichen am Ende einer Zeile fest ON GOTO Bedingte Mehrfachverzweigung ON Ausdruck GOTO Liste von zu verschiedenen Programmteilen Zeilennummern OΠGOSU  Bedingte Mehrfachverzweigun O AusdrucGOSU Listvo zu verschiedenen Unterprogrammen Zeilennummern OPEN Er|ffnen einer Kanaloperation OPENr#n r = I, O OUT Gibt Byte j aus Port i aus OUT i,j 0 <= I <= 255 PAPER Einstellen der Hintergrundfarbe PAPER h PAUSE Pause in der Programmabarbeitung PAUSE[t] Zeitfaktor = t * 0,1 s PEEK Lesen der Adresse i I=PEEK(i) 0 <= I <= 255 POKE Schreibt Byte j auf Adresse i POKE i,j 0 <= j <= 255 PRESET L|schen eines Bildpunktes PRESET x,y PRINT Ausgabe auf Bildschirm PRINT [Print-Liste] Idise Anweisunk|nneCOLOR,PRIN Farbanweisung;Print-Liste INK, PAPER, AT, SPC oder TAB PRINT Formatierungsfunktion; eingebunden werden. Print-Liste PRINT kann durch ? ersetzt PRINT AT (z,s);Farbanweisung; werden. Print-Liste PRINT# Ausgabe auf w{hlbares PRINT#n [Print-Liste] Peripherieger{t (siehe PRINT) PSET Setzen eines Bildpunktes PSET x,y[,g] RANDOMIZE Zufallsgenerator starten RANDOMIZE READ Zuordnung der in der DATA- READ Variable[,Variable,...] Anweisung stehenden Werte zu den angegebenen Variablen REM Kommentarkennzeichnung REM Kommentar REM kann durch ! ersetzt werden. RENUMBEҠ Neunumerierun de Programm- RENUMBE[Ab-alte-Zn,Bis-alte-Zn zeilen [,Ab-neue-Zn[,Schrittgr|~e]] RESTORE DATA-Zeiger wird auf die ange- RESTORE [Zeilennummer] gebene oder die erste DATA- Zeile gesetzt RETURN Ende eines Unterprogramms RETURN RUN Programmstart RUN [Zeilennummer] SOUND Tonausgabe SOUND z1,v1,z2,v2[,Is][,td] STOP Unterbrechen eines Programms STOP wirkt wie Taste SWITCH Modul- und Speicherverwaltung; SWITCH m,k Schreibschutz setzen und l|schen .pa HC-BASIC Bemerkung Syntax ================================================================================ TROFF Ausschalten des Kontroll-Modus TROFF TRON Einschalten des Kontroll-Modus TRON VPEEK Lesen der IRM-Adresse i+32768 I=VPEEK(i) 0 <= I <= 255 VPOKE Schreibt Byte j auf IRM-Adresse VPOKE i,j 0 <= j <= 255 i+32768 WAIT Programm h{lt an, wenn an Port i WAIT i,j[,k] anliegendes Bitmuster exklusiv- oder-verkn}pft mit k und und- verkn}pft mit j gleich Null ist. WIDTH Festlegen der L{nge einer WIDTH [Zeichenzahl] Ausgabezeile WINDOW Festlegen eines Fensters WINDOW [za,ze,sa,se] Funktionen HC-BASIC Bemerkung ================================================================================ ------------------> MATHEMATISCHE FUNKTIONEN <---------------------------------- ABS(X) absoluter Betrag von X; ATN(X) Arcustangens, Resultat im Bogenma~; COS(X) Cosinus (X im Bogenma~); EXP(X) Exponentialfunktion: ex,X<=87.3365; INT(X) Ganzer Teil von X; LN(X) Nat}rlicher Logarithmus von X; SGN(X) Signumfunktion; SIN(X) Sinus (X im Bogenma~); SQR(X) Quadratwurzel ( X ); TAN(X) Tangens (X im Bogenma~); ------------------> STRING-FUNKTIONEN <----------------------------------------- INSTR (A$,B$) Ermittelt die Position, ab welcher A$ in B$ enthalten ist; LEFT$(A$,X) Liefert die ersten X Zeichen von A$; LEN(X$) Zeichenl{nge des X$; MIXD$(A$, X, Y) Y Zeichen von A$, beginnend mit dem X-ten; RIGHT$(A$, X) Liefert die letzten X-Zeichen von A$; STRING$(N, A$) Vervielfacht Zeichenkettenausdr}cke; STR$(X) Formt den Wert X in einen String um; VAL(A$) Numerischer Wert von A$; VGET$ Liefert den Inhalt der Cursorposition; ------------------> SONSTIGE FUNKTIONEN <--------------------------------------- ASC(X$) Liefert den ASCII-Code des ersten Zeichens von X$; AT Schreibt Printanweisung an bestimmte Stelle des Bildschirms; CHR$(X) Liefert das Zeichen des ASCII-Codes X; CSRLIN(N) Liefert die Nummer der Zeile, in welcher der Cursor steht; FRE(Variable) Gibt die Gr|~e des noch freien RAM-Speicherplatzes an; INKEY$ Tastaturabfrage, Format: Stringvariable = INKEY$; POS(I) Liefert die aktuelle Schreibposition in der Zeile; RND(X) Erzeugt Zufallszahlen zwischen 0 und 1; SPC(I) Formatierungsfunktion; TAB(I) Formatierungsfunktion; USR(X) Aufruf einer Funktion, die als Maschinenprogramm geschrieben ist, mit Parameter}bergabe. .pa Weitere mathematische Funktionen Funktionen }be di da HC-BASI nich direk verf}gt k|nne mi Hilf de Standardfunktione berechne werden Ein klein Auswah vo Beispiele gib daz folgend ]bersicht: Funktion Berechnung ================================================================================ SEKANS SEC(X) = 1/COS(X) COSEKANS CSC(X) = 1/SIN(X) COTANGENS COT(X) = 1/TAN(X) ARCUSSINUS ARSIN(X) = ATN(X/SQR(1-X*X)) ARCUSCOSINUS ARCOS(X) = -ATN(X/SQR(1-X*X))+PI/2 ARCUSCOTANGENS ARCOT(X) = ATN(X)+PI/2 ARCUSSEKANS ARSEC(X) = ATN(X/SQR(X*X-1)) ARKUSCOSECANS ARCSC(X) = ATN(X/SQR(X*X-1))+(SGN(X)-1)*PI/2 SINUS HYPERBOLICUS SINH(X) = (EXP(X)-EXP(-X))/2 COSINUS HYPERBOLICUS COSH(X) = (EXP(X)+EXP(-X))/2 TANGENS HYPERBOLICUS TANH(X) = 1-EXP(-X)/(EXP(X)+EXP(-X))*2 COTANGENS HYPERBOLICUS COTH(X) = EXP(-X)/(EXP(X)-EXP(-X))*2+1 SEKANS HYPERBOLICUS SECH(X) = 2/(EXP(X)+EXP(-X)) COSEKANS HYPERBOLICUS CSCH(X) = 2/(EXP(X)-EXP(-X)) ARCUSSINUS HYPERBOLICUS ARSINH(X) = LN(X+SQR(X*X+1)) ARCUSCOSINUS HYPERBOLICUS ARCOSH(X) = LN(X+SQR(X*X-1)) ARCUSTANGENS HYPERBOLICUS ARTANH(X) = LN((1+X)/(1-X))/2 ARCUSCOTANGENS HYPERBOLICUS ARCOTH(X) = LN((X+1)/(X-1))/2 ARCUSSEKANS HYPERBOLICUS ARSECH(X) = LN((SQR(1-X*X)+1)/X) ARCUSCOSEKANS HYPERBOLICUS ARCSCH(X) = LN((SQR(1+X*X)+1)/X)*SGN(X) Farbwerte Di Farbfestlegun erfolg durc di Anweisungen COLOR v, h INK v PAPER h Der Farbcode f}r Vordergrund errechnet sich wie folgt: Farbcode v = 16 * b + f f - Code der Vordergrundfarbe h - Code der Hintergrundfarbe b - Code zum Blinken der Vordergrundfarbe ( f} Blinken f} Nicht-Blinken) Vordergrundfarbe f Nummer Hintergrundfarbe h ----------------------------------------------------------------- Schwarz 0 Schwarz Blau 1 Blau Rot 2 Rot Purpur 3 Purpur Gr}n 4 Gr}n T}rkis 5 T}rkis Gelb 6 Gelb Wei~ 7 Grau Schwarz 8 Violett 9 Orange 10 Purpurrot 11 Gr}nblau 12 Blaugr}n 13 Gelbgr}n 14 Wei~ 15 .pa Die Grafikbefehle PSETx,y,g CIRCLExm,ym,r,g LINExa,ya,xe,ye,g k|nne mi verschiedene Farbaufl|sunge verwende werden F} di einfach Farbaufl|sung d.h Farbbyt f} 1x Punkte ergib sic folgend Berechnungs vorschrif f} di Vordergrundfarbe 1 c c = 0 Normalfall c = 64 ]berlagerungsfunktion (s. Systemhandbuch) c =128 L|schfunktion (s. Systemhandbuch) Wird mit der hochaufl|senden Grafik (pixelweise) gearbeitet, sind nur 4 Farben m|glich: 0 schwarz 1 rot 2 t}rkis 3 wei~ Blinken, ]berlagerungs- und L|schfunktion sind nicht m|glich. ESCape-Steuercodes Die Steuerfunktionen der 3. Tastaturebene werden durch aufgerufen. s Funktion ------------------------------------------------- 0 Tabulator (Schrittweite 8) 1 Anzeigen und Beschreiben Bild 0 2 Anzeigen und Beschreiben Bild 1 3 Anzeigen Bild 0 und Beschreiben Bild 1 4 Anzeigen Bild 1 und Beschreiben Bild 0 5 Systemfunktion "MODUL" 6 Systemfunktion "SYSTEM" 7 Invers Schreiben 8 Vertauschen von Vorder- und Hintergrundfarbe 9 Zu-/Wegschalten Farbebene A Zu-/Abschalten der hohen Farbaufl|sung .pa Fehlermeldungen Nachde ei Fehle aufgetrete ist kehr de BASIC-Interprete au di Komman doeben zur}ck. Da Program kan nich mi eine CONT-Befeh fortgesetz werden De Zusammen han alle GOSUB- un FOR-Anweisunge wir ers be eine erneute Programmstar wiede hergestellt. Die Fehlermeldung hat folgendes Format: Direkte Betriebsart: ?XX ERROR Indirekte Betriebsart; ?XX ERROR IN n (XX - Fehlercode; n - Zeilennummer) Liste der Fehlermeldungen BAD Falsche Verwendung der Elemente des Variablenfeldes BAD IN Fehler beim Laden bzw. Retten eines Variablenfeldes BӠ Subscripouorang (Feldelemen au~erhalde dimensionierten Be- reiches aufgerufen) C Can' continue Program kan nich mi CONԠfortgesetz werden.) DD Doubly defined array (Feld mehrfach dimensioniert) FC Illegal function call (unzul{ssiger Funktionsaufruf) ID Illegal direct (fehlerhafte Eingabe im Direktbetrieb) IϠ Inpu - Outpu - ERRO (falsche Nam bei Programmladen) LS String too long (String l{nger als 255 Zeichen) MO Missing operand (Anweisung unvollst{ndig, Operand fehlt) N Nex withou fo (Variable vo NEX un FO passe nich zusammen) O Ou o Dat (E wurde durc di Data-Anweisunge zuweni Daten f}r eine READ-Anweisung spezifiziert.) O͠ Ouo memor (vorhandene Speicherplat i RA͠reich f} di Ablag bzw Abarbeitun eine Programm nich aus) OӠ OuoStrin spac(vereinbarte Speicherplatf} String reicht nicht aus) O֠ Numeri overflo (Ergebni eine Beechnun isgr|~e als 1.70141E38) RG Return without GOSUB (RETURN trat vor GOSUB auf) SN Syntax ERROR (syntaktischer Fehler) SԠ Litera strin poo tabl ful (Strin z lanodez komplex) T͠ Typmismatc(VariableeineGleichunindiziere verschieden Typen z.BZah un String,odeeine Funktio wurd anstat eine Zah ei Strin}bergebe ode umgekehrt.) UF Undefined user function (Funktion noch nicht definiert) U̠ Undefinelin (Ewurdeinnichexistent Zeilennummer angegeben.) /0 Division by zero (Division durch Null) .pa