home *** CD-ROM | disk | FTP | other *** search
/ Crawly Crypt Collection 1 / crawlyvol1.bin / program / compiler / cpxbas1b / doc / basic_js.txt next >
Encoding:
Text File  |  1993-08-26  |  11.2 KB  |  228 lines

  1. Jan Starzynski (e-mail, auch MAUS u.a.: p67@hp1.uni-rostock.de)
  2. Stand: 26.8.93
  3.  
  4. Änderungen im CPX-Basic gegenüber dem Chipmunk-Basic
  5.  
  6. * jede Menge Optimierungen
  7.   Ergebnis: mehr Funktion bei gleicher Länge
  8. * Bugfix: Es gab einen harten Fehler beim Anlegen von Feldern.
  9.   (ein double-Werte wurde mit 8 Byte angesetzt, hat in PURE-C aber 10!)
  10. * Es gibt jetzt vier verschiedene CPX
  11.     + BASIC000.CPX, die Variante, die überall laufen sollte
  12.     + BASICA00.CPX, nutzt statt eines eigenen den Systemzeichensatz,
  13.                     muβ dazu aber LINEA-INIT nutzen. Könnte bei den
  14.                     Nicht-Standard-Auflösungen (z.B. mit
  15.                     Grafikkarten) Probleme geben (probieren).
  16.     + BASIC030.CPX, läuft nur auf Systemem mit (mind.)
  17.                     68030-Prozessor und 68881-FPU.
  18.     + BASICA30.CPX, wie 030, nutzt aber auch den Systemzeichensatz
  19.                     (wie A00)
  20.     + wozu das ganze Kuddelmuddel? Nun ja. Wer einen TT oder Falcon
  21.       hat, wird sich freuen, über 10 KByte in der Länge zu sparen und
  22.       auβerdem ein schnelleres Programm zu haben. Den
  23.       Systemzeichensatz habe ich implementiert, um
  24.         a. Platz zu sparen
  25.         b. im Basic die gleichen Ausgaben zu erhalten wie in
  26.            anderen Programmen
  27. * Zeitverhalten verbessert (Umschalten von Basic zu GEM nach 50 msec statt
  28.  100 msec und 20 msec Zeit für GEM statt 50 msec)
  29.  Das macht die Ausgaben etwas flieβender und die Arbeit mit dem Hauptprogramm
  30.  auch. Wenn nötig, holt sich GEM die Zeit, die es braucht, von allein.
  31. * verschiedene Zahlenbasen erlaubt für Eingabe
  32.     + $Zahl, Hexadezimalzahl (Ziffern: 0-9,a-f,A-F)
  33.     + &Zahl, Oktalzahl       (Ziffern: 0-7)
  34.     + %Zahl, Binärzahl       (Ziffern: 0-1)
  35.     +  Zahl, Dezimalzahl     (Ziffern: 0-9)
  36. * Break durch CTRL-C
  37. * Abbruch einer Eingabe durch CTRL-C
  38. * Anhalten/Fortsetzen der Bildschirmausgabe mit CTRL-S/CTRL-Q
  39. * alle Tastenkombinationen mit CTRL werden abgefangen und teilweise als
  40.   Funktionstasten für die wichtigsten BASIC-Befehle benutzt
  41.     + B GOSUB
  42.     + C BREAK, mit SHIFT: CONTINUE
  43.     + D DATA
  44.     + E RUN, mit SHIFT: RUN FSEL$ '*.BAS'
  45.     + F FOR, mit SHIFT: FOPEN FSEL$ '*.TXT'
  46.     + G GOTO
  47.     + I IF
  48.     + L LIST
  49.     + M MERGE, mit SHIFT: MERGE FSEL$ '*.BAS'
  50.     + N NEXT
  51.     + O LOAD, mit SHIFT: LOAD FSEL$ '*.BAS'
  52.     + Q BYE
  53.     + R RETURN
  54.     + S SAVE, mit SHIFT: SAVE FSEL$ '*.BAS'
  55.     + T THEN
  56. * INPUT kann durch '#' abgekürzt werden (wie PRINT durch '?')
  57. * alle BASIC-Schlüsselwörter können durch einen '.' abgekürzt werden
  58.   z.B. 'PRINT x' durch 'pr. x'. Es wird dabei aber nicht überprüft,
  59.   ob die Abkürzung mehrere Bedeutungen hat, sondern die erste gefundene
  60.   genommen. Nach dem Punkt können noch weitere Buchstaben folgen,
  61.   z.B.: 'u.' für 'USING' und 'u.$' für 'USING$'.
  62. * Wird ein Buchstabe mir der linken Maustaste angeklickt oder ein
  63.   Bereich mit gedrückter linker Maustaste überfahren, werden die
  64.   Buchstaben in die Eingabe übernommen.
  65.   Doppelklick erzeugt zusätzlich ein Return.
  66. * Bei INPUT können die Variablen wie bei PRINT durch ',' oder ';'
  67.   oder auch nur durch Leerzeichen voneinander getrennt werden.
  68.   Außerdem können für alle Variablen einzelne Promptstrings angegeben
  69.   werden.
  70. * (kleine) Hilfe über HELP-Taste
  71. * im VT-52 Emulator fehlt nur noch das Setzen von Farben (ESC b & c)
  72. * Sichern der Quelltexte bei SAVE mit Endung '.BAS' (statt '.TEXT')
  73. * Wenn das BOOTINIT-Flag des CPX gesetzt ist, werden das beim Booten aktuelle
  74.   Laufwerk und der Pfad bei jeder Dateioperation als Standardwerte gesetzt.
  75.   Dadurch gammeln die .BAS-Dateien nicht überall auf der Platte rum.
  76.   Ist BOOTINIT nicht gesetzt, wird als Standard 'C:\' genutzt. Falls es dieses
  77.   Laufwerk nicht gibt: 'A:\'.
  78. * CHR$ 0 erzeugt eine String, der ein Null-Zeichen enthält, auβerdem
  79.   eine 4 Byte lange Kennung hierfür. (bedingt durch C, wo die Null als
  80.   Ende-Symbol einer Zeichenkette steht). Der Ausdruck LEN CHR$ 0
  81.   liefert folglich 5.
  82. * erweiterte Funktionen:
  83.     + SQU x == SQR x
  84.     + RCP x für 1/x
  85.     + alle trigonometrischen Funktionen und ihre inversen
  86.         - SIN x,COS x,TAN x
  87.         - ASIN x,ACOS x,ATAN x == ARCTAN x
  88.     + alle Hyperbelfunktionen und ihre inversen
  89.         - SINH x,COSH x,TANH x
  90.         - ASINH x,ACOSH x,ATANH x
  91.     + erweiterte logarithmische Funktionen
  92.         - LN x == LOG x für den natürlichen Logarithmus log_{e}
  93.         - LG x für log_{10}
  94.         - LD x für log_{2}
  95.     + erweiterte Exponentiationsfunktionen
  96.         - EXP x, Standard e^x
  97.         - TEN x, 10^x
  98.         - TWO x, 2^x
  99.     + Konvertierungen zwischen Zahlenbasen
  100.         - HEX$ x, Zahlausgabe als hexadizmaler String
  101.         - OCT$ x, Zahlausgabe als oktaler String
  102.         - BIN$ x, Zahlausgabe als binärer String
  103.     + FACT x, Fakultätsfunktion
  104.     + RAND, Zufallszahlen zwischen 0 und 1, werden mit Hilfe der
  105.             XBIOS-Funktion Random() erzeugt.
  106.         - RAND x, Zufallszahlen im Bereich 0 bis x-1
  107.     + Dateifunktionen
  108.         - FOPEN name$[,opt$], schließe bereits geöffnete Datei,
  109.                 Öffne neue Datei, opt$ darf folgende Optionen
  110.                 beinhalten:
  111.                 b Binärmodus, alle ausgegebenen Zeichen werden
  112.                  unverändert übernommen (z.B. keine lf->cr/lf Wandlung)
  113.                 n schaffe neue Datei: eine bereits bestehende Datei
  114.                   wird zuerst gelöscht
  115.         - FCLOSE, Datei schließen
  116.         - FINPUT "prompt";what... ,Lies aus geöffneter Datei bzw.
  117.                  wenn keine geöffnet von der Tastatur
  118.                  ( wenn aus Datei gelesen wird, wird der Prompt unterdrückt)
  119.         - FPRINT what, schreibe ans Ende der geöffneten Datei bzw.
  120.                  Bildschirm
  121.         - FSEL$ ext$, bringt eine Dateiselektbox auf den Schirm und gibt die
  122.                  eingegebene Datei als String zurück. Wenn Abbruch gedrückt
  123.                  wurde, ist das ein leerer String. ext$ wird als
  124.                  Dateimaske verwendet (z.B. *.BAS)
  125.         - ERRNO, sollte nach FPRINT oder FINPUT gelesen werden.
  126.           Enthält 0, wenn alles in Ordnung gegangen ist, sonst einen Wert<>0
  127.           Nach jedem lesen wird ERRNO wieder automatisch auf 0 gesetzt.
  128.         - Die Dateifunktionen sind nicht besonders schnell, sondern
  129.           besonders sicher gehalten. Sie sollen vor allem dem bequemen
  130.           Austausch von Daten dienen und nicht umfangreichen
  131.           Dateimanipulationen.
  132.     + Winkelsysteme, Standard ist RAD
  133.         - DEGREE, alle Winkel werden als Altgrad betrachtet
  134.                  (Vollkreis hat 360 Grad)
  135.         - GRAD,  Neugrad (Vollkreis hat 400 Grad)
  136.         - RAD,   Radiant (Vollkreis hat 2*Pi)
  137.     + Umrechnen von Dezimalgrad in Grad,Min,Sec und umgekehrt
  138.         - DMS$ x, umrechnen in einen String GG:MM:SS,rest
  139.         - DEG x$, Umrechen eines Strings der obigen Form in Dezimalgrad
  140.     + CLS, Löschen des Bildschirmes und Setzen des Cursor in die linke
  141.            obere Ecke
  142.     + CLEAR löscht alle Variablen, Schleifen und setzt die Datas zurück
  143.             (nicht in Unterprogrammen einsetzen!)
  144.     + PEEK und POKE liefern laufen im Supervisor-Modus, die Interrupts
  145.           werden ausgeschaltet
  146.         - außerdem gibt es jetzt auch PEEKW, PEEKL, POKEW, POKEL
  147.           um words (2 Byte) und longs (4 Byte) auf einmal lesen
  148.           und setzen zu können
  149.     + INKEY$, liefert einen leeren String (""), wenn keine Taste
  150.              gedrückt wurde, sonst die zuletzt gedrückte Taste
  151.              Ausserdem bewirkt ein Aufruf dieser 'Funktion' mit Zwang
  152.              ein Umschalten zu GEM, kann also genutzt werden, etwas
  153.              mehr Rechenzeit freizugeben.
  154.     + USING,USING$ präzisieren der Ausgabegenauigkeit, -breite und
  155.                    -ausrichtung
  156.         - wird eine Breite<0 angegeben, erfolgt die Ausgabe linksbündig,
  157.           sonst rechtsbündig
  158.         - USING, setzt die Zahl der ausgegebenen Nachkommastelle auf 10
  159.         - USING x, setzt die Zahl der Nachkommastellen auf x
  160.         - USING x,y, wie oben, es werden Leerzeichen ausgegeben, bis
  161.             Breite y erreicht ist.
  162.         - mit USING gesetzte Werte gelten für alle folgenden Ausgaben
  163.         - USING$ ist USING für die Ausgabe von Strings: die Nachkommastellen
  164.           sind hier die Anzahl der maximal auszugebenden Buchstaben
  165.         - Die Angabe der Präzision kann unterbleiben. Es muß dann nach USING
  166.           gleich das Komma folgen.
  167.         - WARNUNG: wird die Breite ungleich 0 oder 1 gesetzt, werden
  168.           Escape-Sequenzen oft nicht mehr gehen, da mit Leerzeichen
  169.           aufgefüllt wird.
  170.           Bsp.:
  171.                 USING$ 0,4:PRINT chr$(27),'E'
  172.           bewirkt die Ausgabe des Escape-Zeichens mit 3 Leerzeichen
  173.           dahinter. Das 'E' wird dann als normaler Buchstabe
  174.           interpretiert.
  175.           Mit
  176.                 USING$:PRINT chr$(27),'E'
  177.           funktioniert alles wie gedacht.
  178.           Aber auch
  179.                 USING$ 0,4:PRINT chr$(27)+'E'
  180.           funktioniert (+ statt , )!
  181.     + LABEL line, kann zur Zuweisung einer Zeilennummer zu einer
  182.             Variablen verwendet werden. Bei einem RENUM-Befehl wird
  183.             die Zahl hinter LABEL richtig umgerechnet. Dadurch
  184.             geht z.B.:
  185.             LIST
  186.             -->    1 h=LABEL 1:goto h
  187.             RENUM
  188.             LIST
  189.             -->    10 h=LABEL 10:goto h
  190.     + Grafikfunktionen, der Punkt (0,0) ist links unten, die
  191.       x-Koordinaten laufen von 0 bis 255 und die y-Koordinaten
  192.       von 0 bis 175
  193.         - PLOT x,y setzt einen Punkt an der Stelle (x,y)
  194.         - LINE x1,y1,x2,y2, zieht eine Linie von (x1,y1) zu (x2,y2)
  195.         - CIRCLE x1,y1,r, zieht eine Kreis um (x1,y) mit Radius r
  196.     + CONTINUE, mit STOP oder Ctrl-C abgebrochen Programme können
  197.                 mit diesem Befehl weitergeführt werden.
  198.                 Ohne STOP oder Ctrl-C bewirkt CONTINUE gar nichts,
  199.                 kann also als Dummy-Anweisung benutzt werden.
  200.     + TRON, schaltet den Trace-Modus ein: nach jeder abgearbeiteten
  201.             Zeile wird diese gelistet und auf ein Return gewartet.
  202.             Mit Ctrl-C kann unterbrochen und mit CONTINUE fortgesetzt
  203.             werden. Das gibt die Möglichkeit, Variablen zu betrachten
  204.             e.t.c.
  205.             Hier gibt es einen Fehler: die erste abgearbeitete Programm-
  206.             zeile wird zweimal angezeigt.
  207.     + TROFF, schaltet den Trace-Modus wieder aus.
  208.     + Spezielle Befehle, um auf Schnittstellen zugreifen zu können
  209.       Erlaubte Geräte sind dabei
  210.         - "PRN", Drucker
  211.         - "AUX", serielle Standard-Schnittstelle
  212.         - "CON", die Konsole
  213.         - "MIDI", Midiport
  214.         - "IKBD", Tastaturprozessor
  215.         - "RCON", Konsole ohne Emulation
  216.         - "MOD1", Modem 1
  217.         - "MOD2", Modem 2
  218.         - "SER1", Seriell 1
  219.         - "SER2", Seriell 2
  220.         - nicht alle Geräte sind für alle Rechner oder alle Zwecke
  221.           sinvoll, da liegt die Verantwortung beim Programmierer
  222.           * a=INBYTE dev$, liest ein Byte von einer Schnittstelle
  223.             Der Wertebereich der Rückgabewerte liegt zwischen 0 und 255.
  224.             Ist der Rückgabewerte <0, war kein Zeichen verfügbar
  225.           * a=OUTBYTE dev$,byte, übergibt ein Byte. Ist der Rückgabewert>=0
  226.             konnte das Zeichen ausgegeben werden.
  227.  
  228.