1. Bezug, Toolboxen, Preise und Info's zu PowerBASIC
1.1. Die aktuelle Version von PowerBASIC
1.2. Der Originalhersteller von PowerBASIC
1.3. Deutschsprachiger Raum
1.4. deutsche PowerBASIC-Preise
1.5. Dänemark, Norwegen, Schweden und Finnland
1.6. Neuigkeiten in der PowerBASIC 3.1 Version
1.7. Neuigkeiten in der PowerBASIC 3.2 Version
1.8. Neuigkeiten in der PowerBASIC 3.5 Version
1.9. PowerBASIC 4.0 - The next Generation / Wishlist
1.1. Die aktuelle Version von PowerBASIC
Die aktuelle Version von PowerBASIC in Deutschland (seit Januar 1998)
ist die Version 3.50. In den USA und in anderen Staaten ist diese
Version bereits seit Dezember 1997 verfügbar.
1.2. Der Originalhersteller von PowerBASIC
PowerBASIC wird und wurde in den USA entwickelt und es befinden sich
natürlich auch diverse Möglichkeiten mit diesen Leuten in Kontakt zu
treten. Hier die aktuell bekannten Kontaktadressen von PowerBASIC Inc.:
Addresse:
PowerBASIC, Inc.
1978 Tamiami Trail S.#200
Venice, FL 34293
Bestellung : +1 (800) 780-7707
Kundendienst : +1 (941) 408-8700
Fax : +1 (941) 408-8820
InterNet:
World Wide Web : www.powerbasic.com
Liste der InterNet Addressen : info@powerbasic.com
Bestellung : order@powerbasic.com
Verkauf und Marketing : sales@powerbasic.com
Technischer Support : support@powerbasic.com
Anregungen für zukünftige
PowerBASIC Versionen : suggest@powerbasic.com
FTP- & WWW-Sites:
Newsgroups und Konferenzen im Web:
1.3. Deutschsprachiger Raum
In Deutschland wird PowerBASIC vom deutschen Distributor: "Kirschbaum
Software GmbH" vertrieben. Die aktuelle Adresse lautet:
Kirschbaum Software GmbH
Kronau 15
83550 Emmering
Tel.: 08067/9038-0
Fax.: 08067/903898
Die derzeit aktuelle Version von PowerBASIC ist die Version 3.50. Als
aktuelle Toolboxen bietet Kirschbaum für PowerBASIC folgende Pakete an:
PB/DLL - PowerBASIC DLL-Compiler für Windows
PowerGRAPH - für grafische Menüoberflächen (PCX, Fonts, etc.)
PowerISAM - Datenbanken (ebenfalls verfügbar in Englisch bei
PowerBASIC Inc.)
PowerTOOLS - SAA-Oberfläche, Hilfesystem, nützliche Routinen
PB/xtra - Sammlung von Sharewareprogrammen und Sourcecode
Kirschbaum besitzt keine Mailbox bzw. offizielle EMailadressen! Allerdings
existieren für die Mitarbeiter bzw. für die Toolbox-Entwickler eigene
EMail-Adressen und Support-Foren bzw. nicht öffentliche Newsgroup etc.
In diesem Fall sehen Sie bitte in dem Handbuch der betreffenden Toolbox
nach.
1.4. deutsche PowerBASIC-Preise
Alle hier genannten Preise sind nicht verbindlich! Änderungen oder
Abweichungen können jederzeit auftreten! Eine aktuelle und gültige
Preisliste kann jederzeit bei Kirschbaum Software per FAX angefordert werden.
Vollversion: 199,-DM
Vollversion 3.5 für Studenten, Schüler: 150,-DM
Update von VOBIS-Basisversion 2.10f auf V3.5: 149,-DM
Update von V2.10 auf V3.5: 149,-DM
Update einer 3.x-Version auf V3.5: 36,80DM
1.5. Dänemark, Norwegen, Schweden und Finnland
In einigen europäischen Ländern (incl. Deutschland und Östereich)
wird PowerBASIC von:
Berggreen Service
Lodsgaarden A 111
DK-2791 Dragoer
DENMARK
info@berggreen.dk
http://www.berggreen.dk
vertrieben.
1.6. Neuigkeiten in der PowerBASIC 3.1 Version
- Benutzerdefinierte TYPE- und UNION-Variablen können nun direkt
verglichen werden.
- Konstanten im Binaer-, Hex- oder Oktalformat (&B, &H, &O) können
einem bestimmten Datentyp zugeordnet werden, indem man den
entsprechenden Identifier anhängt.
Beispiel:
A?? = &HFFFF?? '= 65535
B% = &HFFFF% '= -1
- Konstanten (%Test) können ab dieser PowerBASIC-Version Werte im
64-Bit-Wertebereich (vorzeichenbehaftet) annehmen.
Beispiele :
%MaxAnzahl = 500000
%Konst1 = &HFFFF '= -1 (Integer)
%Konst2 = &H0FFFF '= 65535 (Long)
Bei Angaben Binaer-, Hexadezimal oder Oktalformat kann man durch
Angeben oder Weglassen einer führenden Null festlegen, ob der
erzeugte Wert vorzeichenbehaftet ist oder nicht.
- BIN$, HEX$ und OCT$ können jetzt Werte bis zu 32bit Long-Integer
ausgeben.
- Ab PB 3.10 können Sie alternative Namen fuer SUBs oder FUNCTIONs
vergeben, unter denen Sie dann diese Unterroutinen aus OBJ-Routinen
(mit Assenbler oder C erzeugt) aufrufen können.
Beispiel:
SUB MySub ALIAS "_my_sub" (Var1%,Var2$) PUBLIC
PRINT "Hallo", Var1%, Var2$
END SUB
- Das Schlüsselwort ANY in einer Prozedurdefinition erlaubt die
Übergabe eines Parameters beliebigen Typs. Der Parameter wird
per REFERENCE als 32bit-Adresse übergeben. Damit das aufgerufene
Programm weiss um welchen Typ es sich handelt sollten Sie einen
Typecode als ersten Parameter mit übergeben. Wird die Routine
in PowerBASIC codiert so muss zur Übernahme des Parameters der
Inline-Assembler genutzt werden.
Beispiel:
i% = 11
CALL TestAny(0,i%) 'die freien Parameter müssen
'Variablen sein
s$ = "Hallo"
CALL TestAny(1,s$)
SUB TestAny(ParamType AS INTEGER, ANY)
DIM Int.Param AS INTEGER
DIM String.Param AS STRING
SELECT CASE ParamType
CASE 0 'Integer
! les bx, [bp+6] :Offset der Var. in BX laden
! mov ax, es:[bx] ;Wert der Var. in AX laden
! mov Int.Param, ax ;Variable mit AX (Wert) laden
PRINT Int.Param
CASE 1 'String
;Offset der Stringkennung
! les bx, [bp+6] ;in BX laden
! mov ax, es:[bx] ;Stringkennung in AX laden
! mov String.Param,AX
PRINT String.Param
END SELECT
END SUB
- Rückgabewerte von FUNCTIONs die mit dem Inline-Assembler geschrieben
wurden, koennen jetzt auch ohne eine Zwischenvariable mit einem Wert
belegt werden. Dazu dient das Schlüsselwort FUNCTION.
Beispiel:
PRINT AsmTest(2)
FUNCTION AsmTest(BYVAL int.param AS INTEGER) AS INTEGER
! mov ax, int.param
! inc ax
! mov FUNCTION, ax ;der Wert wird zurückgeliefert
END FUNCTION
(siehe auch Tips mit dem Inline-Assembler)
- Die Verwendung von FUNCTION anstelle des Funktions-Namens ist auch
bei BASIC-Codierten FUNCTIONs möglich.
Beispiel:
PRINT FuTest(2)
FUNCTION FuTest(BYVAL int.param AS INTEGER) AS INTEGER
FUNCTION = int.param + 1
END FUNCTION
- Die Funktion FRE() wurde erweitert :
FRE(-3) gibt den freien Speicherplatz fuer den Stack zurück
FRE(-4) gibt die maximale Länge fuer dynamische Strings zurück, die
mit $STRING gesetzt wurde
FRE(-5) gibt die Anzahl der belegten Stringsegmente zurück
FRE(-6) gibt die Anzahl der unbenutzten Blöcke im aktuellen Stringsegment zurück
FRE(-7) gibt die Größe des unbenutzten Speichers im aktuellen
Stringsegment zurück
1.7. Neuigkeiten in der PowerBASIC 3.2 Version
- Data Pointers
- Code Pointers
Es können nun folgende Sprünge direkt in Basic ausgeführt werden:
"CALL DWORD x", "GOTO DWORD x" und "GOSUB DWORD x" . "x" ist in
diesem Fall der 32bit Zeiger auf die SUB/FUNCTION oder das Label.
(Zu den neuen Pointer-Funktionen existiert ein DIR$-Demo)
- 32-Bit Umsetzung von: STRPTR32, VARPTR32 und CODEPTR32
- Zeiger/Pointer auf Strukturen können an eine SUB/FUNCTION mit dem
Schlüsselwort "BYVAL" übergeben werden.
Beispiel:
DECLARE SUB MySUB(x AS INTEGER)
DIM z AS INTEGER PTR
z = &HB8000000
CALL MySUB(BYVAL z)
- 16550 UART Unterstützung
- Die LEN() Funktion liefert nun auch die Länge von User-definierten
Strukturen zurück.
- Label und Variablen können nun zur besseren Unterscheidung auch
sogenannte Underlines '_' enthalten.
1.8. Neuigkeiten in der PowerBASIC 3.5 Version
- einige wichtige Bugfixes.
- ASCIIZ Strings: DIM xyz as ASCIIZ * 100.
- Arrays als dürfen als Benutzertyp nun 1 oder 2 statische Dimensionen
enthalten.
- & Operator wird erkannt als STRING Verbindung.
- STRING PTR ist jetzt eine legale Strutur in TYPE/UNION
- $ELSEIF metastatement.
- ASC(x$,n) Funktion und Befehl bieten eine optionale Anfangsposition.
- REDIM PRESERVE nur an den äußeren Grenzen von dynamischen und HUGE
Arrays.
- RND() ist ein zuläßiger Ersatz fuer RND.
- RND(x,y) liefert ein LONG INTEGER im Bereich x -> y zurück.
- TRIM$() ist eine Kombination aus LTRIM$() und RTRIM$().
- Indexed pointers: @xyz[2]
- DIM VIRTUAL x(1000000) reserviert Arrayspeicher im EMS, darf aber nicht
als dynamischer String oder als BYREF Parameter benutzt werden.
- HUGE und VIRTUAL Arrays dürfen LONG INTEGER Indexe verwenden. Mit
dieser Erweiterung kann man einen leichten Anstieg bei der Größe
des generierten Codes bemerken. Wenn ein Segment nun sehr nahe zum
64k Limit ist, benötigt es evtl. das $SEGMENT Metastatement um
verschoben zu werden.
- ERRCLEAR Befehl setzt das Errorflag auf Null.
- ERRCLEAR Funktion gibt ERR zurück, und setzt dann das Errorflag auf
Null.
- ERRCLEAR ist ein synonym fuer die alte Funktion ERRTEST.
- CVI(x$[,n]), CVL... bieten eine optionale Startposition innerhalb
des Strings.
- CVL(X$,3) extrahiert das dritte bis sechste Byte von x$ und
konvertiert die 4 Byte in die entsprechende LONG INTEGER
Zahl. In diesem Fall muss x$ mindestens 6 Byte lang sein.
- SIZEOF(var) Funktion gibt die physikalische Größe einer Variable
zurück,
- besonders nützlich beim Feststellen der maximalen Länge
eines fixed-length String, ASCIIZ String oder einer User
definierten TYPE Struktur
- Gibt immer 2 für einen dynamischen String zurück.
- STDIN x, y$ liest bis zu x Zeichen vom Standard Eingabegerät, (welches
umgeleitet werden kann), und weist sie der Stringvariable zu. Wenn
weniger als x Zeichen sofort bereit sind, dann wird ein String kürzer
als x Byte zurück gegeben.
- STDIN LINE, y$ liest eine Zeile Text direkt vom Standard Eingabegerät,
(welches umgeleitet werden kann) und weist sie der Stringvariable zu.
Wenn EOF erreicht wird, wird ein 1 Byte langer String mit CHR$(26)
zurück gegeben.
- STDOUT x$ [;] gibt den Stringausdruck x$ auf dem Standard Ausgabegerät
aus, (welches umgeleitet werden kann), gefolgt von einem CR/LF. Wenn
das optionale angehängte Semikolon hinzugefügt wurde, dann wird das
CR/LF unterdrückt.
- SETEOF #1 Befehl wurde hinzu gefügt, um eine offene Datei an ihrer
momentanen Position abzuschneiden.
- FRE(-11) gibt die Anzahl der nicht allokierten Bytes im EMS Speicher
zurück.
1.9. PowerBASIC 4.0 - The next Generation / Wishlist
So kurz nach einer aktuellen Release V3.5 des Compilers ist es natürlich
sehr, sehr schwer Punkte für Verbesserungen zu finden, aber es gibt sie
natürlich trotzdem.
- XMS Support für VIRTUAL Arrays
- SORT ARRAY Support für VIRTUAL Arrays
- 32bit Inline-Assembler
- Syntax Highlighting in der IDE
- eine bessere IDE