==================================================== 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 verfgbar. 1.2. Der Originalhersteller von PowerBASIC ------------------------------------------ PowerBASIC wird und wurde in den USA entwickelt und es befinden sich natrlich auch diverse M”glichkeiten mit diesen Leuten in Kontakt zu treten. Hier die aktuell bekannte Kontaktadresse 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 fr zuknftige PowerBASIC Versionen : suggest@powerbasic.com FTP- & WWW-Sites: http://pbsound.basicguru.com http://www.gohel.de http://www.xlsior.org http://www.basicguru.com http://www.uni-jena.de/~p6sepa/rshp.html http://home/t-online.de/home/mstadler/homepage.htm http://www.leo.org/pub/comp/platforms/pc/msdos/programming/pbasic/ http://www.fys.ruu.nl/~bergmann/basic.html http://www.zephyrsoftware.com http://www.blarg.net/~future/shareware.html http://www.cdrom.com/simtel.net/msdos/basic.html http://www.cyberbox.north.de/FILES/DOS/dos106.html ftp.global2000.net/pub/pbasic Newsgroups (englisch): alt.lang.powerbasic comp.lang.powerbasic | Newsgroups (deutsch): | news.kannofant.de/de.comp.lang.powerbasic | Hinweis: Nur nach Authentifizierung mit User/Password! | (jeweils "basic") 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 fr PowerBASIC folgende Pakete an: PB/DLL - PowerBASIC DLL-Compiler fr Windows PowerGRAPH - fr grafische Menoberfl„chen (PCX, Fonts, etc.) PowerISAM - Datenbanken (ebenfalls verfgbar in Englisch bei PowerBASIC Inc.) PowerTOOLS - SAA-Oberfl„che, Hilfesystem, ntzliche Routinen PB/xtra - Sammlung von Sharewareprogrammen und Sourcecode Kirschbaum besitzt keine Mailbox bzw. offizielle EMailadressen! Allerdings existieren fr die Mitarbeiter bzw. fr 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 Ab- weichungen k”nnen jederzeit auftreten! Eine aktuelle und gltige Preis- liste kann jederzeit bei Kirschbaum Software per FAX angefordert werden. Vollversion: 199,-DM Vollversion 3.5 fr Studenten, Schler: 150,-DM Update von VOBIS-Basisversion 2.10f auf V3.2: 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 ent- sprechenden 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 fhrenden 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 fr SUBs oder FUNCTIONs vergeben, unter denen Sie dann diese Unterroutinen aus OBJ-Routinen (mit Assenbler oder C erzeugt) aufrufen koennen. Beispiel: SUB MySub ALIAS "_my_sub" (Var1%,Var2$) PUBLIC PRINT "Hallo", Var1%, Var2$ END SUB - Das Schlsselwort 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 mssen '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 - Rckgabewerte von FUNCTIONs die mit dem Inline-Assembler geschrieben wurden, k”nnen jetzt auch ohne eine Zwischenvariable mit einem Wert belegt werden. Dazu dient das Schlsselwort 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 zurckgeliefert 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 fr den Stack zurck FRE(-4) gibt die maximale L„nge fr dynamische Strings zurck, die mit $STRING gesetzt wurde FRE(-5) gibt die Anzahl der belegten Stringsegmente zurck FRE(-6) gibt die Anzahl der unbenutzten Bl”cke im aktuellen String- segment zurck FRE(-7) gibt die Gr”áe des unbenutzten Speichers im aktuellen Stringsegment zurck 1.7. Neuigkeiten in der PowerBASIC 3.2 Version ---------------------------------------------- - Data Pointers - Code Pointers Es k”nnen nun folgende Sprnge direkt in Basic ausgefhrt 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 Schlsselwort "BYVAL" bergeben werden. Beispiel: DECLARE SUB MySUB(x AS INTEGER) DIM z AS INTEGER PTR z = &HB8000000 CALL MySUB(BYVAL z) - 16550 UART Untersttzung - Die LEN() Funktion liefert nun auch die L„nge von User-definierten Strukturen zurck. - Label und Variablen k”nnen nun zur besseren Unterscheidung auch so- genannte Underlines '_' enthalten. 1.8. Neuigkeiten in der PowerBASIC 3.5 Version ---------------------------------------------- - einige wichtige Bugfixes. - ASCIIZ Strings: DIM xyz as ASCIIZ * 100. - Arrays als drfen 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 zurck. - 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 drfen 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 zurck, 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 zurck, - besonders ntzlich beim Feststellen der maximalen L„nge eines fixed-length String, ASCIIZ String oder einer User definierten TYPE Struktur - Gibt immer 2 fr einen dynamischen String zurck. - 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 krzer als x Byte zurck 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) zurck 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 hinzugefgt wurde, dann wird das CR/LF unterdrckt. - SETEOF #1 Befehl wurde hinzu gefgt, um eine offene Datei an ihrer momentanen Position abzuschneiden. - FRE(-11) gibt die Anzahl der nicht allokierten Bytes im EMS Speicher zurck. 1.9. PowerBASIC 4.0 - The next generation / wishlist ---------------------------------------------------- So kurz nach einer aktuellen Release V3.5 des Compilers ist es natrlich sehr, sehr schwer Punkte fr Verbesserungen zu finden, aber es gibt sie natrlich trotzdem. - XMS Support fr VIRTUAL Arrays - SORT ARRAY Support fr VIRTUAL Arrays - 32bit Inline-Assembler - Syntax Highlighting in der IDE - eine bessere IDE