`8IBM  Bp Hy NMHz<<b Hz`&O`?< NA.KNu (Ver. 18.4.91) p Hello !! I am your personal boot sector GUARDIAN As long as I display this message YOUR BOOT SECTOR IS NOT INFECTED BY ANY VIRUS --------------------------------------- This guardian was placed on your diskette by FASTCOPY PRO (c) 1991 ICP Verlag, Martin Backschat q I  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ OU`WY[]_ac@egis@wy{}/ O ` @ ` @ @ ` ǀ  ٠ /@`!a   !Aa  @`! #@%`')+-/1 3@5`79;=?A C@E`GIKMOQ OU`WY[]_ac@egis@wy{}/ O ` @ ` @ @ ` ǀ  ٠ /@`!a   !AaDEMO [README [. [.. [ATARI_TT [GEM_DEMO [UTILITY "[3D BAS X`3D PRG Xb CASE_1 BAS oCASE_2 BAS dpCASE_3 BAS X}qCONST BAS `r EINKLAPPBAS `ERATOS BAS uFELDER BAS tw*FILES BAS vFUNKTIONBAS |GEMDOS BAS |I_USING BAS |OPEN BAS |XOPERATORBAS RBO_ERROR1BAS |O_ERROR2BAS |O_HELP BAS |O_KEY BAS |HPROZEDURBAS }PTR_1 BAS r||PTR_2 BAS W~PTR_3 BAS BPTR_4 BAS C}`P_USING BAS N}`SCREEN BAS vxSORT BAS }TUNE BAS ~4VOLUME BAS ~WHILE BAS -~. [.. [FPU_DEMO [COOKIE BAS a/u>FLAGS BAS wX< MXALLOC BAS R[/LNEW_AES BAS `/NEW_BCONBAS q|4SINUS BAS >SINUS PRG 5r. [.. [APFEL BAS XhtAPFEL PRG XkAPF_FPU PRG krmTMATRIX BAS ;XRMATRIX DAT UVMATRIX PRG rMATRIX TXT tXMAT_CPU PRG X& MAT_FPU PRG rSINUS BAS ÀXHSINUS PRG XSPEED BAS bSPEED PRG rJ%SPEED_V TXT b"SP_CPU PRG X'SP_FPU PRG rJ%ST_COMP TXT SX"ST_INT TXT ;XST_IOFPUTXT X$TT_CPU TXT &X$TT_FPU TXT X*. [.. [ACC BAS ]f<DIALOG BAS uvDIALOG I {~DIALOG RSC {DIALOG RSD {GDOS BAS ritGEMFRAMEBAS $j1GEM_DEFSBAS ]/(MENU BAS u#MENU I oMENU RSC n MENU RSD nP. [.. [KEYBUF BAS ɉ PLOT BAS *k SHBASMEMBAS XSHOW BAS pSHOWPIC BAS R. [.. [LIESMICH 5 LIESMICHDOKBKC BLIESMICHI !qKMAKEHELPPRGte.MAKEHELPTXTxdSmZ_FORMATDOCb{uZLIESMICH zum OMIKRON. TT-Paket 4.06 Stand: 21.01.92 Betreff: CUTLIB Leider ist die speziell fr die FPU des ATARI-TT geschriebene Version der BASLIB (mit Namen "BASLIB_4") immer noch nicht in einer "link"baren Form verfgbar. Wenn Sie also unbedingt eine BASLIB linken mssen, um z.B. ein Accessory zu erzeugen oder weil aus anderen Grnden nur eine Programm-Datei entstehen soll, dann knnen Sie die in diesem Ordner befindliche BASLIB35 bzw. FPULIB35 linken. Es ist dann allerdings nicht mglich die FPU-Option fr Coprozessor-FPU zu benutzen. Die FPU fr ATARI ST, die als Ein/Ausgabegert angesprochen wird, kann verwendet werden. Benutzen Sie dann die Steuerworte "LIB35" und "FPU" (siehe auch Beispielprogramm). Verwenden Sie das neue Steuerwort "LIB35", damit die Compilate auch die richtige Bibliothek nachladen. Sobald die neue Version der BASLIB_4 in linkbarer Form vorliegt, werden Sie informiert. ; } else { return( (double) sqrt( var() ) ); } } doLIESMICH zum Compiler Version 3.57 Stand: 03.02.92 Neue Features (ab Version 3.57): - ein neues Steuerwort zum direkten Setzen der Headerflags in Programmdateien: "FLAGS XXXX". "XXXX" steht fr die hexadezimale Schreib-weise des reservierten Langworts, welches so in den Programmheader einge-tragen wird. Sie knnen somit alle Einstellungen, wie FASTLOAD, TT-RAM benutzen oder TPA-Gre bereits im Quelltext einstellen. Die genaue Aufschlsselung des Langworts entnehmen Sie bitte dem Beispiel-programm Flags im Ordner "DEMO\ATARI_TT\" LIESMICH zum Compiler Version 3.56 Stand: 21.01.92 Beseitigte Fehler: - ein Programm, welches Leerzeilen am Anfang enthielt, fhrte den Compiler in eine Endlosschleife. - Programme mit der Funktion FRAC in einfacher Genauigkeit fhrten bei Verwendung der IO-FPU zum Absturz, wenn das Programm ge'cutlib't wurde. - das Auftreten des Zeichens eins (CHR$(1)) schaltete auf ASCII-Ausgabe um, auch wenn es innerhalb einer ESC-Sequenz auftrat. LIESMICH zum Compiler Version 3.55 Stand: 03.12.91 Beseitigte Fehler: - Die VDI-Handler fr V_Opnvwk und V_Opnwk waren fehlerhaft, so da ein gleichzeitiges ffnen mehrerer Workstations (insbesondere auch einer Druckerworkstation) nicht funktionierte. Zustzliche Features: - Der Compiler ab Version 3.55 Realease 031291 untersttzt ebenso wie der Interpreter die neue kompatible Form des SCREEN-Befehls (nheres hierzu in der LIESMICH Datei des Interpreters) LIESMICH zum Compiler Version 3.55 Stand: 21.11.91 Beseitigte Fehler: - Die Auswertung eines String-Ausdrucks bei SELECT fhrte nicht zum selben Ergebnis wie im Interpreter (fr Strings mit Lnge grer eins). - Die Behandlung der Verzeichnisse durch den Compiler war nicht korrekt. Wenn CUTLIB auf dem Compiler-Pfad (einstellbar im Interpreter) nachgestartet werden sollte, wurde die BAS/FPULIB nicht immer gefunden. Stattdessen wurde die BAS/FPULIB immer noch von "C:\" geladen. Dies ist jetzt nicht mehr erforderlich. - Wenn zwischen Compilaten mit CHAIN hin- und hergewechselt wurde, trat ein seltsamer Fehler auf: Das VDI erzeugte seltsame Rckgabewerte bzw. strzte gleich ganz ab. Dieses Verhalten kann vermieden werden, wenn beim Wechsel mit CHAIN die virtuelle Workstation nicht geschlossen und wieder geffnet wird. Diese an sich vllig korrekten Aufrufe, die zum Freirumen des Speichers dienen, waren der Auslser der Abstrze - eine weitere Erklrung konnte leider nicht gefunden werden. Wenn nun ohne Schlieen der WK gewechselt wird kann es sein, da das nachgeladene Programm, wenn es grer als das ursprngliche ist, eine Lcke im Speicher hinterlt. Dieser Nachteil ist leider nicht zu vermeiden, da das ffnen der WK eben einen kleinen Datenbereich anlegt, der das Basic-Programm vom restlichen Speicher trennt. - Die Zuweisungs-Operatoren *= und /= haben, wenn rechts ein FLOAT und links ein INT stand, flschlicher Weise den FLOAT-Wert gleich auf INT gerundet, anstatt erst zu multiplizieren und dann zu runden. - Die Zuweisungs-Operatoren *= und /= (bei Zweier-Potenz-Faktoren) und auch die Postfix-Operatoren *2 und /2 lieferten bei der Multiplikation bzw. Division mit 0 einen berlauf, wenn zu oft multipliziert/div. wurde. Der Spezialfall "mal Null" war versehentlich nicht bercksichtigt worden. - nur FPU: Die Zeit-Parameter bei WAIT und bei ON TIMER wurden falsch berechnet, was zu unendlichen Wartezeiten fhren konnte. - nur FPU: Die INT(LF) Routine war fr negative Zahlen fehlerhaft. Hier war leider ein uralter unentdeckter Bug versteckt, der selbst im alten FPU-Compiler enthalten war. INT( -1.69# ) lieferte beispielsweise -4. Hier wurde an einer Stelle versehentlich mit dem falschen Zahlenformat gerechnet. - nur FPU: SORT sortierte FLOAT-Felder falsch. Die Vergleichsfunktionen, die SORT verwendete, arbeiteten nicht richtig mit einfachen- und doppeltgenauen Werten - nur FPU: MAT INV hatte beim Normalisieren am Ende des Gauss- Algorithmus eine falsche Konstante. Die Inverse wurde deshalb fast immer als Null-Matrix berechnet. - Ein fataler Fehler steckte noch im der Potenzfunktion ("^") fr doppeltgenaue Zahlen und in der Vergleichsfunktion fr einfachgenaue Zahlen. Abhngig vom Wert waren hier falsche Ergebnisse mglich. Zwar auch nur ein Tipfehler in den Bibliotheken, aber leider mit fatalen Folgen. - Zur bersetzungszeit berechnete Konstanten wie 1/0 beendeten den Compilerlauf mit "? Division by zero". Stattdessen wird nun eine "Warning" ausgegeben. - Der Critical-Error-Handler, der, falls die Maus nicht sichtbar ist, den Mauszeiger einschaltet, war leider noch fehlerhaft. Dies konnte zu Abstrzen fhren, wenn z.B. bei nur einem Laufwerk zum Diskettenwechsel aufgefordert wurde. - Neues Steuerwort "NO_CRITIC" verhindert die Installation eines eigenen Critical-Error-Handlers ganz. Da die Verwendung des eigenen Handlers nicht unbedingt erforderlich ist - man kann die Fehlerbox ja auch "blind" oder mit der Tastatur bedienen - kann der eigene Critical- Handler nunmehr ganz abgeschaltet werden. Hinweis fr FPU-Benutzer: Wenn Sie mit Hilfe der Funktionen MKS$ und MKD$ Binr-Dateien erzeugen, sind die Dateien auf jeden Fall kompatibel zu Dateien, die nicht von FPU-Compilaten erzeugt wurden. Zwar verwenden die FPU-Compilate intern ein anderes Zahlenformat (siehe ZFORMAT.DOC auf dieser Diskette) wie die CPU-Compilate, dieses wird jedoch von MKS$ und MKD$ automatisch umgerechnet. Dasselbe gilt auch fr die Wandlung zurck mit CVD bzw. CVS, wenn die Datei wieder eingelesen wird. *********************************************************************** * An dieser Stelle nocheinmal vielen Dank an unsere Kunden, * * die mit Ihren umfangreichen Tests viel bei der Beseitigung * * der Fehler mitgeholfen haben. Vielen Dank auch fr Ihre * * Geduld bis zum Eintreffen der nchsten Version, die - wie * * immer - natrlich nicht schnell genug fertig sein kann. * *********************************************************************** LIESMICH zum Compiler Version 3.54 Stand: 16.10.91 Beseitigte Fehler: - Das Ermitteln von Funktions-Zeigern funktionierte in groen Programmen nicht ordnungsgem. Dieser Fehler war leider in kleineren Testprogrammen nicht auszumachen, wir danken daher unseren Kunden fr ihre Mitarbeit. - Das Multitasking mit "ON MOUSEBUT" war im ge'cutlib'ten Zustand immer noch nicht funktionsfhig. - Einzeilige Funktionsdefinitionen, welche keine Parameter besaen, erzeugten ab und an eine Endlosschleife beim bersetzen. - SWAP mit Zeiger-Referenzen fhrte zu "SWAP type mismatch" - Zeiger-Referenzen als Prozedure-Parameter konnten nicht als Rckgabe-Variable verwendet werden. Es wurde zwar ein Wert an die Prozedure transferiert, aber keiner zurckgegeben. - Die Ausgabe von Steuerzeichen mittels CHR$(1) funktionierte nicht. LIESMICH zum Compiler Version 3.53 Stand: 24.09.91 Beseitigte Fehler: - Durch ein Versehen waren alle Konstanten im Coprozessor- Compilaten falsch. Es wurde nicht das IEEE- sondern das OMIKRON- Format erzeugt, mit dem die FPU leider nicht umgehen kann. Dadurch wurden so ziemlich alle Ergebnisse falsch. Da sich dieser Fehler erst in der Endphase der Entwicklung eingeschlichen hatte, ist er leider nicht rechtzeitig aufgefallen. Wir bitten um Entschuldigung. - Indirekte Funktionsaufrufe an Funktionen, die Wort-Parameter haben (z. B. FN Test( Wert% ) ) , wurden falsch bersetzt. Statt eines WORDs wurde immer ein LONG auf dem Stapel bergeben, so da kein vernpftiger Wert bei der Funktion ankam. Dieser Fehler rhrt von einem generellen Problem bei der Typen- berprfung/Konvertierung bei indirekten Aufrufen her. Es ist nmlich nicht mglich, die Parametertypen der Funktion festzustellen. ES GILT DESHALB AB V 3.53 FOLGENDE REGEL: Bei indirekten Aufrufen werden als WORD bergeben: 1. Eine WORD Variable ( Beispiel: Wert% ) 2. Ein WORD-Feld-Element ( Beispiel: Feld%(Index) ) 3. Ein Ausdruck der mit CINT konvertiert wird. ( Beispiel: CINT( Feld!(Index) ) Alles andere insbesondere auch Konstanten werden immer als LONG bergeben. Man sollte also nach Mglichkeit ganz auf WORD- bergabe verzichten und die Funktion umdefinieren. - Matrix Operationen beanspruchen zwischenzeitlich Speicher aus dem String-Garbage. Dieser Speicher wurde versehentlich nicht gleich wieder freigegeben, sondern erst bei der nchsten String- Operation. Wenn nun lange keine String-Operation gemacht wurde, konnte dieser Fehler zu einem "OUT OF MEMORY" fhren. - Wenn eine Funktionstaste mit dem Befehl "KEY" mit einem Ersatztext belegt war, erschien die Taste zustzlich auch ohne ASCII-Byte im Tastaturbuffer. KEY 1="A" und Druck auf F1 erzeugte einmal die F-Taste ohne ASCII-Code und einmal mit ASCII-Code fr "A". Ab V 3.53 werden alle F-Tasten, die nicht mit KEY definiert sind ganz normal ohne ASCII-Code gemeldet. Definierte F-Tasten erscheinen genau sooft, wie es die Lnge des Ersatztextes vorgibt. - Whrend INPUT USING und INPUT ist jetzt - wie auch im Handbuch angegeben - Multitasking mit "ON TIMER ..." mglich, auch wenn der Modus "Multitasking Between Statements" eingeschaltet ist. - Durch ein Versehen ist eine nderung der Library-Funktion zum Invertieren einer Matrix missglckt. Die Funktion arbeitet nun wieder wie man es erwartet. - Wenn man die neuen Befehle SELECT CASE ... verwendet, so konnten sich auf Grund interner Ungereimtheiten schlimmer Abstrze ergeben. Diese Probleme sind nun behoben - SELECT CASE kann uneingeschrnkt verwendet werden. Zustzliche Features: - Auf vielfachen Wunsch wurde das Cursor-Flimmern, das die BIOS Ausgabe whrend INPUT USING erzeugt, umgangen. Der Cursor wird jetzt zeitweilig ausgeschaltet. - Die Bewertung von konstanten Ausdrcken wurde um zwei Oepratoren erweitert: < und > Hier noch einmal die gesamte Liste: * / + - SHL SHR +1 -1 *2 /2 () VZ = AND OR PI < > Durch die Fehler-Korrektur betroffene Dateien: FPULIB35, BASLIB35 und COMPILER.PRG LIESMICH zum Compiler Version 3.52 Stand: 02.09.91 Beseitigte Fehler: - Die Systemvariablen W_CHAR und H_CHAR waren in COMPILATEN gegenber dem interpretierten Programm gerade vertauscht. - durch einen Felder bei der Garbage Collection (String Speicher aufrumen) wurden alle vereinbarten FIELD Buffer gelscht. Wenn man z.B. zwei Random-Access-Dateien offen hatte, so konnte immer nur mit der zuletzt geffneten gearbeitet werden. - die Ausgabe Tabulierung mit TAB() rckte immer ein Zeichen zu wenig vor - LOCATE war im Interpreter und im Compilat nicht ganz kompatibel zur Vorgngerversion. In X Richtung wurde der Cursor ein Zeichen zu weit links positioniert. - Konstante Ausdrcke wie "1+1" oder "1=2" werden seit der Version 3.51 bereits whrend der bersetzung bewertet (siehe unten). Leider hatte sich hier noch ein Fehler eingeschlichen, der immer dann zum Tragen kam, wenn solche konst. Ausdrcke in Vergleichen oder als Abbruchbedingungen fr Schleifen verwendet wurden. - wenn die erste Zeile eines Basic-Programms leer war, blieb der Compiler in einer Endlosschleife stecken. - die Berwertung der neuen Systemvariablen W_PIXEL, H_PIXEL, W_CHAR und H_CHAR zerstrten einen internen Merker fr das Stacklevel. Fhrt zu Abstrzen, wenn die genannten SysVars in komplizierten Ausdrcken oder z.B. als Argument fr DIM verwendet werden. - der indirekte Funktionsaufruf funktionierte nicht fr Integer Word Funktionen (Postfix %). Durch die Fehler-Korrektur betroffene Dateien: FPULIB35, BASLIB35 und COMPILER.PRG Wir hoffen, da durch diese erste grere Revision die meisten Fehler beseitigt wurden und danken hiermit all jenen unseren Kunden, die mitgeholfen haben, die Fehler ausfindig zu machen. VIELEN DANK IHR OMIKRON. TEAM 02.09.91 LIESMICH zum Compiler Version 3.51 Stand: 07.08.91 - Beseitigte Fehler: Leider war im Multitasking-Teil noch ein Fehler versteckt. Alle Multitasking-Befehle wie ON MOUSEBUT ... usw. funktionierten nur, wenn TRACE eingeschaltet war. Dadurch genderte Dateien: 'FPULIB35' und 'BASLIB35'. Ab Version 3.51 einige zustzliche Fhigkeiten: 1. Die neue Version untersttzt alle Neuerungen des Interpreter 3.5 und arbeitet daher uneingeschrnkt mit diesem zusammen. In der Version 3.5 die seit Anfang Juni ausgeliefert wurde, fehlten noch einige Dinge, da auch im Interpreter noch nicht alles endgltig war. 2. Der Compiler kennt Konstanten und konstante Ausdrcke: Mit dem Compiler-Steuerwort "DEF_CONST" wird ein Konstanten Vereinbarungsteil eingeleitet. Dann folgen beliebig viele Zuweisungen an Einzel-Variablen (keine Felder). Danach folgt das Steuerwort "END_CONST". Die Konstantenvereinbarung mu immer am Anfang des Programms stehen. Der Compiler betrachtet nun alle im Vereinbarungsteil zugewiesenen Variablen als konstant und bewertet sie bereits whrend der bersetzung. Solche Konstanten drfen natrlich nur einmal zugewiesen werden. Beispiel: siehe unten 3. Der Compiler kann berflssige THEN- oder ELSE-Zweige ganz aus dem Programm herausfallen lassen. berflssig ist was wegen einer konstant falschen Bedingung niemals ausgefhrt werden wrde. Durch diese Art der Bedingten Compilierung lassen sich im Zusammenarbeit mit oben genannten Konstanten z.B. Schalter einrichten, die verschiedene Programm Versionen erzeugen. Das automatische Auslassen mu mit COMPILER "CONST_IF_EXCLUDE" oder COMPILER "CIE" aktiviert werden. Es kann mit "CONST_IF_INCLUDE" oder "CII" wieder deaktiviert werden. WICHTIG: Wenn Sie in ihrem Programm bestimmte Teile mittels "IF 0 THEN" bersprungen haben, sich aber innerhalb des THEN-Zweigs noch verwendbarer Code befindetet (z.B. eine PROCEDURE oder ein Label, welches angesprungen wird), so erzeugt das Auslassen natrlich einen Fehler. Verwenden Sie daher zu solchen Zwecken besser "GOTO" anstelle von "IF 0 THEN ...". Beispiel: zu Punkt 2 und 3 0 ' Der COMPILER erkennt ab sofort konstante Ausdrcke und fat diese 1 ' bereits whrend der bersetzung zusammen. 2 ' Weiterhin ist es mglich dem Compiler SYMBOLISCHE KONSTANTEN bekannt 3 ' zu machen, die ebenfalls schon zum bersetzungszeitpunkt bewertet werden. 4 ' 5 COMPILER "DEF_CONST" 6 Pi_Halbe#= PI /2# 7 Zwei_Pi#=2#* PI 8 Wm_Redraw=20' Gem Konstanten fr Window-Handling 9 Wm_Topped=21 10 COMPILER "END_CONST" 11 ' 12 DEF FN Grad_To_Rad#(Grad#)=Grad#/360#*Zwei_Pi# 13 ' \-----------/ 14 ' wird sofort zusammengefat. 15 PRINT "Winkelumrechnung: 45 Grad sind "; 16 PRINT FN Grad_To_Rad#(45#);" im Bogenma." 17 ' 18 ' Desweiteren ist bedingte Compilierung mglich. Das bedeutet, da ganze 19 ' Programmteile, die auf Grund einer konstant NICHT ERFLLTEN Bedingung 20 ' niemals aufgefhrt werden, bereits beim bersetzen rausfallen. 21 ' Beispiel: Verschiedene Programmversionen (lnderspezifisch oder Demovers.) 22 ' 23 COMPILER "DEF_CONST" 24 Demo=0 25 Englisch=1 26 Deutsch=2 27 Franz=3 28 Sprache=Deutsch 29 COMPILER "END_CONST" 30 ' 31 COMPILER "CIE"' IF's werden gekrzt 32 IF Demo THEN 33 MOUSEON 34 FORM_ALERT (1,"[1][Abspeichern ist in der|Demoversion leider nicht|vorgesehen!][Abbruch]") 35 MOUSEOFF 36 ELSE 37 MOUSEON 38 FORM_ALERT (1,"[2][Wollen Sie wirklich|sichern ?][Sichern|Abbruch]") 39 MOUSEOFF 40 ENDIF 41 ' 42 ' Je nach dem Wert der Konstanten 'Demo' wird hier entweder nur der THEN- oder 43 ' nur der ELSE-Teil bersetzt. Die andere Hlfte (und der Vergleich selbst) 44 ' fllt ganz raus. 45 ' 46 IF Sprache=Deutsch THEN PRINT "Hallo !! Dies ist Demoprogramm" 47 IF Sprache=Englisch THEN PRINT "Hello !! This is a demo-program" 48 IF Sprache=Franz THEN PRINT "Salut !! C'est un logiciel de dmonstration" 49 ' 50 ' Der Compiler bersetzt immer nur eine der drei Alternativen. 51 ' 52 A$= INPUT$(1) 53 LIESMICH zum OMIKRON.Compiler Version 3.5 Stand: 21.06.91 Hinweise zum Compiler 3.5 (im Handbuch nicht ausdrcklich erwhnt): - beim Programmstart ist der Cursor bei einem '.PRG'-Programm (und solche erzeugt der Compiler normalerweise) immer ausgeschaltet. Wer also den Cursor sehen mchte sollte ihn immer explizit einschalten: ' PRINT CHR$(27);"e"; '. - Wer Funktionstasten mit 'INKEY$' oder 'INPUT USING' abfragen mchte, braucht diese im Compilat nicht mehr mit 'KEY = ...' vorzubelegen. Der Scancode der Taste wird in jedem Fall geliefert. - Beseitigte Fehler: - Fehler bei 'CHAIN' 19.06.91 - Fehler bei 'RUN "TEST.PRG ' 19.06.91 Dadurch genderte Dateien: 'FPULIB35' und 'BASLIB35'. ile named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ #include #include #include #include "libconfig.h" ostream::ostream() {} ostream::ostream(const char* filename, io_LIESMICH zum Interpreter Version 3.58 Stand: 22.04.92 WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG Wenn Programme, die alle neuen Fhigkeiten des Interpreters nutzen, kompiliert werden sollen, so ist ein COMPILER VERSION 3.51 (oder hher) erforderlich!!!!! Der Editor arbeitet normalerweise im langsamen, kompatiblen VDI-Modus. Um eine schnellere Ausgabe zu erhalten, probieren Sie auf jeden Fall die schnelleren Treiber, die direkt auf den Speicher zugreifen aus. Whlen Sie hierzu im MODE-Men unter PREFERENCES beim Schalter "Screen Output" den Modus "Direct". Sollte anschlieend nichts lesbares mehr am Bildschirm erscheinen, so verwenden Sie eine Konfiguration, die nur mit VDI-Untersttzung arbeitet. Anderfalls knnen Sie die schnellen Treiber verwenden und diese Einstellung mit "SAVE SETTINGS" auch abspeichern. WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG WICHTIG Beseitigte Fehler: - die Matrizendivision lschte der Fliekomma-Felder (meist bei doppelt- genauen Berechnungen). LIESMICH zum Interpreter Version 3.57 Stand: 03.02.92 Beseitigte Fehler: - die Matrizeninversion lschte Teile des Garbage-Speichers. Dadurch wurden merkwrdige Folgefehler verursacht. LIESMICH zum Interpreter Version 3.56 Stand: 15.01.92 Beseitigte Fehler: - der BITBLK-Befehl war noch in SW-Auflsungen voll funktionsfhig. Bei Farbauflsungen gab es Schwierigkeiten, beim Transfer vom Speicher in den Bildschirm - Die Cursor-Schrittweite bei Farbauflsungen mit mehr als 4 Farbebenen (z.B. TT-Mittel) war falsch (nur bei eigenen Bildschirmtreibern). - eigene Fehlerbehandlungen mit "ON ERROR" funktionierten nicht mehr richtig, wenn unmittelbar zuvor mit "SELECT-CASE" gearbeitet wurde. - die Maus ist nun zu Beginn des Programms immer sichtbar (keine Dateiauswahlbox ohne Maus) - der Tokenizer akzeptiert alle Funktionen mit einem Parameter auch ohne Klammer. Wenn solche Funktionen selbst in geklammerten Ausdrcken auftauchten, konnte es zu Problemen kommen. (z.B. Adress-bergabe an Funktion. "PRINT FN Test(&Var)") Als Regel gilt: Wenn der Parameter ohne Klammer auf direkt auf die Funktion folgt, so wird auch keine Klammer zu erwartet. LIESMICH zum Interpreter Version 3.55 Stand: 03.12.91 Beseitigte Fehler: - das Ausklapp-Kommando (Ctrl-D) in einer Leerzeile fhrte zu Absturz, wenn auf die Leerzeile wirklich eine eingeklappte Zeile folgte. - Select-Case mit Strings, die lnger als vier Zeichen sind, fhrte zu mehr oder weniger zuflligen Ergebnissen. Jetzt sind generell die ersten vier Zeichen relevant, der Rest spielt keine Rolle. - Die Alternate-Tasten Bedienung der Suchen-Ersetzen-Box funktioniert nun. - Die Suchen-Ersetzen-Box sitzt jetzt nicht mehr zentriert sondern am unteren Rand des Bildschirms. Dadurch ist es unmglich, da der Ersetz- Begriff verdeckt bleibt (auch bei kleiner Schrift). - ERROR 72 (Case-Structure) hat jetzt die richtige Lnge (das letzte "e" ist dabei). ERROR 73 ist wieder ganz korrekt "unprintable". - Die POINT-Funktion, die den Farbwert eines Pixels ermittelt, enthielt leider noch imkompatiblen Code und fhrte deshalb auf Graphikkarten zu Problemen - CASE funktioniert jetzt auch mit Bereichen (z.B. -3 TO 3) als Argument ohne Probleme. - "Save & Run" (Control-W) fragt beim Abspeichern nach einem Dateinamen, wenn dieser bis dahin nur "NONAME.BAS" lautete. - Der Men-Punkt "Compile" hat einen Tasten-Shortcut erhalten: ALT-C - SORT sortiert beim Aufruf ohne Index Felder immer ganz. (Also genau wie SORT ..(0)) -> siehe auch Beispiel "FELDER.BAS" - Das Einklappen mit Ctrl-D klappt nun auch ber bereits eingeklappte Teile hinweg alles richtig ein. - Die Ausgabe der Hilfe-Dialogbox wurde einer ersten berarbeitung unterzogen (es wird wohl noch eine folgen). Der Umbruch wurde verbessert. Man kann nicht mehr aus dem Text "hinausscrollen" (bei kurzen Texten). WICHTIG: Previous merkt sich die Textstelle des zuvor angezeigten Hilfstextes, so da man nicht wieder von oben nach unten durchblttern mu. - Der Befehl BSAVE ohne Parameter speichert wieder ganze Bildschirme (nicht konstant 32000 Bytes) - Die VDI-Handler fr V_Opnvwk und V_Opnwk waren fehlerhaft, so da ein gleichzeitiges ffnen mehrerer Workstations (insbesondere auch einer Druckerworkstation) nicht funktionierte. Zustzliche Features: - Auf vielfachen Wunsch ist der SCREEN-Befehl ist wieder zum Leben erweckt worden: SCREEN 0 reserviert Speicher fr einen Graphischen Schirm 0, d.h. der Direkt-Modus wird graphisch neu aufgebaut SCREEN 1 reserviert Speicher fr einen zweiten Schirm, den z.B. nur das Programm benutzt. SCREEN 2 dto. Weitere Parameter als dieser eine sind beim Screenbefehl nicht zugelassen. Speicher fr die zustzlichen Bilschirme wird selbststndig alloziert. (Speicherverbrauch: 32000 Bytes bei ST-Auflsungen, 153600 Bytes bei TT-Auflsungen) Bei Graphikkarten und Grobildschirmen erechnet sich der Speicherverbrauch entsprechend aus Breite*Hhe*Anzahl Farbebenen. Der Speicher wird vom GEMDOS-Speicher entnommen (es mu also mit CLEAR fr gesorgt werden, da ausreichend Speicher frei ist, sonst wird mit "OUT OF MEMORY" abgebrochen) Beim nchsten CLEAR wird der Speicher automatisch wieder freigegeben. Es sind maximal drei Bildschirmspeicher mglich (0 - 2). Der SCREEN-Befehl schaltet nicht die logische oder gar physikalische Bildschirmadresse um, sondern kopiert per BITBLT hin- und her. Auf diese Weise ist die volle Kompatibilitt gewhrleistet. Siehe Beispiel "SCREEN.BAS" - Wenn im Direkt-Modus beide Shift-Tasten gleichzeitig gedrckt werden, wird vorbergehend der letzte aktive SCREEN eingeblendet. Es ist auf diese Weise mglich den Bildaufbau eines unterbrochenen Programms zu erhalten und trotzdem im Direktmodus zu arbeiten (z.B. zum Debuggen). - Der Full-Screen-Editor zeigt den letzten aktiven SCREEN mit der Tastenkombunation ALT-A an. Solange die Alternate-Taste festgehalten wird kann das Bild angeschaut werden. - HELP zeigt, wenn kein verwertbares Zeichen unter dem Cursor ist, gleich die bersichtsbox der Hilfe an (wie der entsprechende Meneintrag). - Die HELP-Dialogbox merkt sich immer die letzte Textstelle, so da man sich beim Zurckkehren mit "Previous" immer an der alten Position wieder findet. - VIELE, VIELE, VIELE, neue Demoprogramme, die hoffentlich aufschlureich ber die Programmierung unter OMIKRON.Basic Auskunft geben: - viele Demos zu einzelnen Befehlen (wie in der Hilfe) - Demos zur GEM-Programmierung - Dialogboxen - Resource-Dateien - GDOS-Programmierung - GDOS-Schriften - GEM-Konstanten - Men-Programmierung unter GEM - Mens automatisch ber Tasten bedienen - Fehlermeldungen unter GEM in Alertboxen (in "O_ERROR2.BAS") - Demos zum Thema: Programmier-Utilities - Anzeigen von Speicherverbrauch - Anzeigen interner Strukturen - Anzeigen von Speicherinhalt - Anzeigen von Bildern (nur PIC-Format) - Automatisches Einspielen von Tasten in den Tastenbuffer - Rundungsfunktion (in "P_USING") - ausfhrliche Beispiele zu: "PRINT USING" und "INPUT USING" - Maximum Funktion fr mehr als zwei Werte (in "PTR_4.BAS") - Beispiel zur Verwendung von SCREEN - Beispiele zu den Multitasking Befehlen "ON .." - Beispiel zur Benutzung von Dateityp "F" fr Inhaltsverzeichnisse und vieles andere mehr ... Nach dem Motto "Probieren geht ber Studieren" sollen auch in Zukunft noch Beispiel-Programme hinzukommen. Oft ist mit einem kurzen Beispiel- programm mehr erklrt als mit vielen Worten im Handbuch. LIESMICH zum Interpreter Version 3.54 Stand: 05.11.91 Seit 05.11.91 liegt nun eine berarbeitete Version der HILFE-DATEI vor. Sie enthlt einiges an Neuem z.B. Fehlermeldungen, Befehlsgruppen- bersicht und etwas ber Operatoren. Neu ist auch das Zusatzprogramm ***************** * MAKEHELP.PRG * ***************** Mit MAKEHELP knnen Sie die Hilfe-Datei selbststndig bearbeiten und nach Ihren Wnschen verndern. Wie das alles geht finden Sie in der Datei "MAKEHELP.TXT". Beseitigte Fehler: - Die Token-Suche oder auch "Find Definition" konnten bei bestimmten Basic-Programmen daneben gehen. Ein Bus-Fehler war dann die Folge, was allerdings nicht zum Absturz fhrte. - Wenn eine Marke gesetzt wurde, dann wurde eine bereits genderte Zeile nicht in ihrer neuen Form bernommen, sondern der alte Stand blieb gltig. - Ein Schreibfehler hatte LOAD & MERGE von ASCII-Dateien vorbergehend auer Funktion gesetzt. - Das Einklappen einer einzeiligen Prozedur fhrte zum Absturz. - SELECT quittierte einen Leerstring mit "Illegal function call". Ab 3.54 wird eine Null erzeugt. (d.h. "" = CHR$(0) = 0 ...) - Bei der BIT-Befehl-Variante, die einzelne Bits in Variablen setzt, wurde ein indirekter Zugriff ber Zeiger nicht als Variable sondern als Addresse aufgefat. Dadurch fhrte das Setzen eines Bits in uninitialisierten Variablen zum Bus Error. - Zeiger-Variablen wurden als Rckgabe-Parameter in Prozeduren nicht akzeptiert. Dies ist fortan mglich: Beispiel "DEF PROC Test(R *Ptr)" Zustzliche Features: - Mit "Save Settings" wird jetzt auch der aktuelle Blockpfad gesichert. Dadurch lt sich fr Blcke generell eine andere Datei- Endung einstellen. Durch die Fehler-Korrektur betroffene Dateien: OM-BASIC.PRG LIESMICH zum Interpreter Version 3.53 Stand: 28.09.91 Beseitigte Fehler: - Das Abspeichern eines Programms, welches noch offene Strukturen enthielt, wurde irtmlicher Weise nur als ASCII-Sichern ausgefhrt. Dadurch waren eingeklappte Programmteile verloren. - Das Underscore-Zeichen ist nun nicht mehr als erstes Zeichen eines Namens zulssig. Dieses funktionierte zwar im Interpreter manchmal, fhrte jedoch mit dem Compiler zu Problemen. - Eingeklappte Zeilen konnten ... durch versehentliches Drcken der Taste UNDO das Einfgen eines Spaltenblockes ASCII Suchen&Ersetzen Backspace am Anfang der folgenden Zeile zerstrt werden. Der ganze eingeklappte Block war dann verloren. - Wenn eine Funktionstaste mit dem Befehl "KEY" mit einem Ersatztext belegt war, erschien die Taste zustzlich auch ohne ASCII-Byte im Tastaturbuffer. KEY 1="A" und Druck auf F1 erzeugte einmal die F-Taste ohne ASCII-Code und einmal mit ASCII-Code fr "A". Ab V 3.53 werden alle F-Tasten, die nicht mit KEY definiert sind ganz normal ohne ASCII-Code gemeldet. Definierte F-Tasten erscheinen genau sooft, wie es die Lnge des Ersatztextes vorgibt. - Der Tokenizer akzeptiert nun auch String-Ausdrck als Parameter bei indirekt aufgerufenen Funktionen. - Wenn nach bestimmten Funktionen (z.B. "RUN") sofort versucht wurde einen Block auszuklappen konnte dies zu einem Absturz fhren. - Langes Drcken der RETURN-Taste bei der Besttigungsbox der "Suche-Ersetze"-Funktion konnte ebenfalls zu einem Absturz fhren. Zustzliche Features: - Control-Y lscht - auf vielfachen Wunsch - die aktuelle Zeile. - Das Cursor-Flimmern, das die BIOS Ausgabe whrend INPUT USING erzeugt, wird neuerdings umgangen. Der Cursor wird jetzt zeitweilig ausgeschaltet. Durch die Fehler-Korrektur betroffene Dateien: OM-BASIC.PRG LIESMICH zum Interpreter Version 3.52 Stand: 02.09.91 Beseitigte Fehler: - LOCATE war im Interpreter und im Compilat nicht ganz kompatibel zur Vorgngerversion. In X Richtung wurde der Cursor ein Zeichen zu weit links positioniert. - Wenn Sie mit Alternate-Y ein Programm sichern und gleich kompilieren wollen und das Programm noch "NONAME.BAS" heit, wird nun zuerst ein Namen erfragt. Der Compiler findet dann in jedem Fall das Programm unter seinem Pfad. - Durch nicht ganz nachvollziehbare Umstnde war es mglich ein Programm unabsichtlich nur als ASCII abzuspeichern (bei Ctrl-S im Editor). Dadurch sind natrlich alle eingeklappten Programmteile verloren. Dies wird nun sicher vermieden: CTRL-S speichert IMMER im Tokenformat ab. - Ein Fehler bei CLEAR hatte zur Folge, da alle DOUBLE-FLOAT- Variablen nicht gelscht wurden. Dies hat bei Programmen, die sich auf die Null-Initialisierung verlassen fatale Folgen. Desweiteren wurde hierdurch eine Fehlermeldung "Duplicate Definition" verursacht, wenn DOUBLE-FLOAT-Funktionen vereinbart wurden. Auch in Zusammenhang mit der Dimensionierung von DF- Feldern kam es zu Schwierigkeiten. - Wurde beim Start des Compilers ber das Men des Editors (COMPILE o..) dieser nicht gefunden oder konnte nicht geladen werden, so erfolgte neuerdings eine Fehlermeldung ("File Execution Error"). Allerdings war diese Alert-Box manchmal nur unvollstndig aufgebaut oder zog Abstrze nach sich. - Wenn die HELP Taste vor einer 1 Zeichen langen Variablen gedrckt wurde, kam die Fehlermeldung "TOS Error 64" - Das Einklappen mit Ctrl-D funktionierte nicht, wenn geschweifte Klammern und END_PROC gemischt auftraten. Hier noch einmal die neue Funktionsweise: Steht der Cursor in einer Zeile, die mit "DEF" beginnt, so wird bis zum nchsten "END_PROC" oder "END_FN" eingeklappt. Steht eine geffnete geschweifte Klammer "{" als erstes in der Zeile, so wird bis zur korrospondierenden geschlossenen Klammer eingeklappt. ZUSTZLICHE FUNKTION: Shift-Control-D klappt alle Einklappungen aus. Achtung: dieses Ausklappen ist bei greren, verschachtelt eingeklappten Programmen nicht so einfach wieder rckgngig zu machen. Durch die Fehler-Korrektur betroffene Dateien: OM-BASIC.PRG Wir hoffen, da durch diese erste grere Revision die meisten Fehler beseitigt wurden und danken hiermit all jenen unseren Kunden, die mitgeholfen haben, die Fehler ausfindig zu machen. VIELEN DANK IHR OMIKRON. TEAM 02.09.91 LIESMICH zum Interpreter Version 3.5 Stand: 07.08.91 KURZBERSICHT ber alle Neuerungen des INTERPRETERS 3.5 07.08.91 - Offensichtlichste Neuerung: Die Mens wurden berarbeitet und neu strukturiert. Wir haben uns Mhe gegeben uns an die Standards zu halten bei gleichzeitiger Beibehaltung der alten Belegung. - Fast alle Menpunkte sind ber Tastatur erreichbar. Auch hier wurde versucht mglichst standardisierte Belegungen zu whlen. - Es ist brigens immer noch keine GEM-Einbindung des Full- Screen-Editors (FSE) vorgesehen, weil dadurch die Entwicklung eigener GEM-Programme stark behindert werden wrde. (Jeder der mit OMIKRON.Basic schon einmal ein GEM-Progamm debuggt hat, wei die ernormen Vorteile zu schtzen.) - Neue Men-Eintrge (die wichtigsten): Block verschieben (Ctrl-V) Preferenzen Save (Ctrl-S) / Save as ... (Ctrl-M) Quit (Ctrl-Q) - QUIT / Ctrl-Q (neuer Men-Eintrag): endlich kann der Interpreter direkt und schnell verlassen werden. (siehe nderungs-Merker) - SAVE / Ctrl-S (neuer Men-Eintrag): Abspeichern ohne Fileselectorbox unter dem aktuellen Namen. (siehe nderungs- Merker) - vier Marken knnen im Programmtext gesetzt und wieder angesprungen werden (Crtl-1..4 bzw. Alt-1..4) Dies war frher auch schon mglich aber leider nur ber Mens anwhlbar und deshalb kaum zu gebrauchen. - die Marken im Programm werden mit dem Programm abgespeichert und sind nach dem Laden sofort wieder verfgbar (fr die Verwendbarkeit von Marken ebenfalls unverzichtbar). Des weiteren werden mit dem Programm abgespeichert: Die Cursorposition, die Blockmarken und die Bildschirmeinstellungen (Font/Grsse ...). All dieses ist nach dem Laden genau wieder so wie beim Abspeichern des Programms (erheblich komfortabler als bisher). - HELP-Funktion: Hilfe zu allen Basic-Befehlen und -Funktionen, ebenso zu allen Mens des Editors. Bitte versuchen Sie HELP im RUN-Men !!!! - SCHNELLE DOPPELKLICK-SUCHE: wenn man auf einen beliebigen Begriff einen Doppelklick ausfhrt, so wird ein LIST TOKEN Kommando ausgefhrt. Dadurch lt sich sehr schnell die Verwendung bestimmter Prozeduren, Funktionen oder Variablen in einem Programm berschauen. Wurde durch Anklicken einer der aufgelisteten Zeilen an eine andere Stelle des Programms verzweigt, so kann man mit Ctrl-Z wieder zurck. Dies ist bis zu achtmal schachtelbar, soda man mit DOPPELKLICK und Verzweigung und wieder Doppelklick mehrere Programmebenen hinutersteigen kann und mit Ctrl-Z wieder hinauf. Auf diese Weise findet man sehr schnell die gesuchte Stelle im Programm und verliert nicht den berblick. - nderungs-Merker: Immer wenn Sie irgendetwas an Ihrem Basicprogramm gendert haben, wird dies in der Statuszeile angezeigt (ein Sternchen erscheint vor dem Dateinamen). Dieser Merker wird auch bei QUIT (Ctrl-Q) und NEW (Ctrl-N) bercksichtigt: ist Ihr Programm noch nicht gesichert, erscheint zunchst eine Alertbox. Nur wenn alles abgespeichert wurde, wird der Interpreter direkt verlassen bzw. das Programm gelscht. - auf Wunsch wird bei jedem Abspeichern ein BACKUP erzeugt einstellbar in der Preferenzbox. - Dialogboxen: smtliche Eingaben und Einstellungen, die dafr geeignet sind, sind auf Dialogboxen umgestellt worden. - der Suchpfad fr zustzliche Programme wie COMPILER ist einstellbar. - Prozeduren und Funktionen sind EINKLAPPBAR. Eingeklappt wird bis ... ... Ende der Prozedur oder Funktion, das durch 'END_PROC' bzw. 'END_FN' gekennzeichnet ist. Eingeklappt wird indem man in der Kopfzeile (DEF PROC ...) die Taste Ctrl-D drckt. Zum Ausklappen einfach erneut Ctrl-D drcken. Der EINGEKLAPPTE Programmteil erscheint nur noch als eine Zeile. Einklappen beliebiger Programmteile (durch Start- und Endemarken '{' und '}' ). Schachtelbare EINKLAPPUNGEN: mehrere eingeklappte Prozeduren knnen zu einer Library zusammengeklappt werden. - Eingeklappte Programmteile knnen gegen AUFLISTEN GESCHTZT werden. Mit 'LOCK "CODEXX"' wird ein - unbedingt sechsstelliges - Codewort eingestellt, welches beim Einklappen die Programmteile abschliet. Wird der Interpreter neu gestartet oder mit 'LOCK OFF' das Codewort deaktiviert, so sind alle verschlossenen Programmteile nicht mehr einsehbar. Sie knnen erst wieder ausgeklappt werden, wenn zuvor mit 'LOCK "......"' das richtige Codewort eingestellt wurde. - vier neue Systemvariabeln: W_PIXEL, H_PIXEL, W_CHAR und H_CHAR welche die Abmessungen des Bildschirms im Pixeln bzw. in Zeichen (BIOS Textbildschirm) angeben. Im Zuge der weiten Verbreitung von Grobildschirmen und Graphikkarten eine einfache Mglichkeit mit verschiedenen Auflsungen zurecht zu kommen. - heit beim Abspeichern das Programm 'NONAME.BAS', so wird immer eine Fileselectorbox angezeigt. - Pointer auf Variablen und Funktionen !!! sind mglich (siehe Beispiel-Programme) - SELECT CASE ist als neues Strukturwort hinzu gekommen ! Auerdem wurden noch diverse kleinere Fehler beseitigt und hoffentlich keine neuen eingebaut. ; return`4\  MA'"< .ӮӮӮ "Hd d3 d# d `# # # # Q"<p#Q`` +L Pg Vg Cg Mg `"bp`p`p/TWaXNu&J QNuK#Ni+I+_+nA+H8C,A#A#\#A##r&m +$gA0('Ava .Ю///<JNAPaA A!Av8gP/<NNXP+@?<"NNT @C" C!I +HrE+J+N+xNBxAC"Lp "QA! Ap"Q-vfAE!p aA!p!&m+|+|F#p+@Bp a;mp+@BpMa|;m.;mpA000BXBmpNaXPAa<aRm" -vf: mJ(,k0BgHzr?<=aPk<HmHx??<?aSWaO A A!a mQaN0XBRAOMBAK!"mX0g&/2 //K!aX A!T"m3_Nu"zN(_&mC0( `f2 )R@X* Jg+@+I&I`" -R@+@&@/?<HNAJol+@"D `f )JgR@+@+I`B\Q P@ m"HE0+JD+J@+JH$mLX+JP$m+J+JX+J+J`U+Jp+Jh+Jl$mG+Kt+J|Y+Jx,mL&N&<r  `6&&Q `6&Q d6d`&&Q `&6Q d6d`&&QQa _.m|N`XNq/Ak8e| Ag8e6rсk.,NuA gd"DA|цD,Nu f ,NupL@Nu`r@Jg"jRADi dA H@SAЀ[SANu2<Nu/-ha0+_h`?2*@e.$RJ*k p"2Nu2/EA$jp"2Nup2NuH :(Cia"BKdKd `Q"DMdMd `QL0Nu/ @a _NuaQNu`8a/p a.p a( Nu/ or fR/H _NuH N.SG*EfzEC R,`TRQ&HCHC܃Q>HFHFBF܇P^܆vx&mX(KJg&P(K"K(Ę&.ޅ/(/H L` "NّбXfL٭Xa(CvّQ(&ۛ&HB BgHBX66C SAf&`T6Q Ĝo8p2<v HBSg0e8kBd6d&e` HF&&&&QHFQLNu6&]n`6&&n`&6]n`Ha4*LNuH>| $r a"z JjDz-r6BBHB(8HB4HD0 :e^DRAJf L|NuHa3LLNuJ[jDJjFWD d?B@H@HA2HA02 JgDNuH8tvx`ҁRCdSCj LJgDNue萁`J[jDJjFWD d?B@H@0B@H@JgDNuH8tv`ҁRCdSCj LJgDNueꐁ`H:( da`"D6KdKd `QQL8NuJAf$4NuH "mh_ m`da m`e(4RBB0"HXB+H`"$4L$@gIdId `Q` RAId2Id"Id `""""Q"_Nuff&CgNur@BNugAgNur@BNupNupNuCa0 AOg& AAg AKg APg AVg ACg AMfd2NuA2jrVNuSAkA2gBNuH@a AIg AVg ACg AMf$;@LNu5!9A"9A.9<19<9<9<9<9<9D 9E 9F 9D9K~S-At 2XWf0Q<;@r2@ @9A5fI 00AHAABAQB@SAo+H;A -dg+m+@+@a;P+mlhBmBm>-g ??<>NAXJ>f -\g @R-aN.m|AZ ra -2-aJmfAH r#a`A6 rap0-aF# m1Par` l? in USE "TRACE_ON" TO GET ERRORLINE m@T"m"iȐDnp" ҈$AIdWo J\`"J]dQNu// 2)a$YJ*j$/ 0@G$R&_ `Q$_ _2NuRAId0Id Id ` Q$_ _2Nu^%0x;@HItBCBD:<BFa LNuQ0BmBmNuP0BmNu&m`(K(-haTd gD`a:$m`* f H`4Q&m`IXdj ga`B" ff$gRBR&DSAJ`7$Q+Kh+K/ ?0-S@k@G +Ifa fa8&_Nu 2NuJmf +mlha,J-0f&m`F 2ANuJmfJ-0fJmf Jmfp?aa2PaajB3@J-0fGv6-(Kr"g&Sr,gfS 2 KARC;CJfBmNugfS R2 @t,gfS4 KB`S-ax@R-aFf:tgAnBXp`.?Gp~a0?BCa6>`pCa1ZQCf Jjp`a-1fQ2`VQ1C1 g(C1 `gC1 ^gC1 g C1 ~f fp`2>Wf) ga fa(` e8 g0@Cg^ Lr4`SBkTRSBk  g ^f dr` g +gl -gV g aeG Xg Sg Mg CfUBkf` e 0eJ :ez Ae> [e ae0 {eCВ g` gZJj?)LfH g& `g g ~gf mf ^fJk*@1`$ 0` %fPr` Uf Lf) %` Uf Lf Ag g gJmg Ag %gH 0gB Ag< g6 g0 Lg* Ug$ Mg`SBkfr` SBkfr`VJAgJ-2f.J-pg.Cg*?>Cp H@E0DgRDH@Qa 0m120a.J-1gpDa.P2`FRCCd>RD`0H@ f,JCg$Cg4J-pf.SCpDa.pp a.rpDa.d 0` Sf*JCgJ-pfSCpDa.B>CgSDE0Qav` Rf2 gF-p`¸Cg>Cp H@E0DgRDH@Qa>` MfCgRCpCa-` KfJCf gvp`vSCpDa-`f`b m0(?fpfa-E0>C` pa-a-Qf p a->CpDa-vQ0fpea-hNu>D`a-dQ>C`pTJg| /a Nu L4/` SBRSBkRSBjNu  g ^g ae Cg +g -g >f Bak |XBx8+ RDDf&_Nu(kCpdQDa | mp"-``0&j"CfPf"BQe`a(a(H @"B8Ad8D` VfCLNudxLNuxLNu+H\NuH @B@`k ae {d  `;QLNuAEEEIIIOOUUYAIOUAOH@"@a ,`QLNu -2-NuHJk4a`r$Rd0d d `HB QHBQLNu?<Ha\LNuHpAa"_"`QBLNuZ@/?<Ha\ @Jo  P+HPX Nu``)z`FH`S@@@G Se g +Rg +Ogav WHHLNuJkV`HpS@@@G Sk g +Fg +Og?<?B?<Bak&PBW?/?<?B?<Ba&k P>Bak 0O  +RfJk g"BAHA 02H@ 0LNuUAe6k8/ @ : _f&@@?Hm?<6adP0-Nuaz -h`NuS-@R-kaVF/ra. _NuH??4a`Q24 _NuH:SDԄAe@DekO&_Nuaa7A6r'A'| aL&_NuxrRa\?</ ?<=aPjt߰f`Bg/ ?<aXBmNuava;@//??<@alkNO `r`Vr`P/Ax _Nu$p"-gbQ>.mBJk BNRBg AN a h"mN0`r ;ABm;|;@`!LC$v" "" v0""@"PHBHCHDHE4H@4444Jmg~?HE/6PL?`$LfFA@AH@HA eDE00Qa@4 _6L`,LfDEH@HAB@BA≀Ƃ eFA00QNups`CE v" """ "@"0"PHBHCHDHE444441m0<`"@ Z0J(j8DE X@SBBe¶@d0@d0`QNuH<+| Bm;|`p@;@H<+|;|J- gpaL<H<`r`Zrk+@DjN+| Bm`\rj`8r`2+|;|;A/az r`YAP`g A"f`"A /?<Iaj\Nu/ ;B+@&@BpA000BXp4atp0-&_Nu r$_ _Nu// "ZJ)j/ ?6CG"Q06&_J@gS@RdD@Ad2a?`Q2"_ _Nur `^;@+|Bm`hS@@@A??g>/ PRf8?<Bak O NuS@@@A//?g PRf?<?ajkXffXNuS@@@A//?g PRf?<@a2kXfXNu;@+|h;|`Q Nu mh` mhgS`d a`eh+Hh NuH&< m"Hp"-``<0$ă$Bf.2$("$Hd2Hd"He`""""Qe`e+I`LNu+_ankܰf/-NuNsJfNuH mhı`d aj`e m"Hp"-``0&$Cfْde٨e٭`٭Jk6 A"A d3 d# e` H@# # # # QH@QLNu L"L d2d"e` H@""""QH@QLNuD@<9`2p`.p`*p,`&.m|p`p8`p6`p=`p`p ` p`p7`p`pL`pM`pN`pO`pP`pQ`pR`p"`p#`p$`XBRAOMBAp%`p&`p'`p)`/:Nu/:NupH`pI`pJ`pK`H瀁@/ o pP @@gp(`/zv FLNu\^`bdfh`.`"`.`6````^`Τ`Π````ξ````````````(`8`8`H`b`Т`О`К`Ж`В`Ў`Њ`І`Ђ`Ќ`Ј`Є````````(`$` `x`Ѵ`@`v`r````Ԕ``````````````۠`ۜ`|`܀`|`x`t`p`ܢ`ܞ`ܚ`ܜ`ܘ`ܔ`@`ݼ``````ݾ`ݺ```J`F`B`J`F`B`ވ``````R`N`J`F`T```\`v````߼`߸`ߴ`߰`߬`ߨ`ߤ`ߠ`ߜ`ߘ`ߔ`ߐ`ߌ`߈`߄`߀`|`x`t`t`p`l`x`t`߀`ߌ`߈`߄`߀`|`x`t`p`l`h`d```\`X`T`P`L`H`D`@`<`8`4`0`,`(`$` ````` `````````````````"`>`^`j`f``````` ``:`6`2`.`*`&`"````````` ```````````*`&`:`6`2``(`$` `T`P`L`H```\`X`````~`z`v`r`n`p`````````````````````````````````.`b```````p2<NuJAkx`~gCCi(*H@<HBԆH@GBDHDԄGH@:BBHBЂk EрgUAiEчeNuTAiNup2<NuJgJAk`:Jg <TAiNug CAi2J@gBCevgH@h(:HEBE|<xTHBJBgH@:BB`8BBH@:dSDԀdHDH@h:HEBE|<8NuJ- g0-aEA"C C E C0 ps`Rpx2<Nu+ Pg Vg Cg Mg r`r`r`r@?/`2-kSAAtv d tv gtv g t fJVAG Skgx +Of(kr2+RAk f/ /??<@a BA7ALNuSPd8BP`4PPP`,@A gRP d4SP g g fBP?BVWS-NMR-faF\LNuJmgGFr-WfS-pa&pRa"+-va;0R-`#$@[\]^`{|}~?BVWNM\Nu#$@[\]^`{|}~ *(Jk#ERHC)ig$%0+ytusDI"/p a Nu/pa Jmg?-;ma;_NuHJmf8J-BgQ<`J-$g?S-aJR-ka80J- 8w pcv w>?|/EFPP $ +P3 H _ t   2 <@J@ X0G "jn' '!! !tT,A0Np NH6$p NHNENP+mlhp-@ p/0/.N*.HLP/?N*.TXT/?NbO -_JgNNN`X .fR>/.N*.TXT/?N*.HLP/?NbO -_JgNN~N`* .f$>/</-n`T&_Nu/././././<N=O/././././<N=O?<N@TNu?<N@T". .J[jDJjFWDdA4H@H@B@ЁJjDЮ(Ю @p0". .J[jDJjFWDdA4H@H@B@ЁJjDЮ(Ю @0H-@( .? .? .? .?/.(N?X0H-@0H-@0H-@0H-@/././././<N=O/././././<N=O/.( .? .? .? .??<?<NN$[1][Nicht genug Speicher !][Abbruch]tNpNNu` .pN-@$.".ppNpN . @ -@ .P-@ . Ю-@ .oj . @prMfT .R @prEf@ .T @prNf, .V @prUf .X @pr gp-@Pp / &@ .P`(".PҮ Art .`Ё-@` .PR-@Po&_ . ЮЮ`-@ .S @ .  . @/NM @pJAg _ .R @/NE @pJAg _ .T @/NN @pJAg _ .V @/NU @pJAg _ .X @ .X"@p .Z @ .Z"@pR ."<NHJf .N6$ .pNN=A-@6.$.2. .NTlCA2"". .J[jDJjFWDdA4H@H@B@ЁJjDЮ(Ю @6.$. <rHNTLl6$ .(NN,N0/.( .? .h? .? .??< .?N . @pJf* .R @pJf . @p  .R @p R ."<NHJf .N6$ .pNN=A-@6.$.2. .NTlCA2"". .J[jDJjFWDdA4H@H@B@ЁJjDЮ(Ю @6.$. <rHNTLl6$ .(NN,N0/.( .? .h? .? .??< .?NfONu _1 _1 _1 _1 _1 _1 _1 _1-_NuCA/! nT?/1 nX?/1 n\?/1 nP?/1 nA ?/1 nA ?/1 nA?/1 nA?/1Hzd . n0Jf@p/p/NHP+mlhJgNu`t/p /NZX$$@+mlhpf@p/p/NHP+mlhJg"t/p /NZX$$@+mlh`Nu"<$< &<(<*< p3Np/NTXJf n1| Nu+mlh"< $< &<(<-*< <?dN8p/NTX/NZX @"n0) H0+mlhNu n0( H"JW/ n0( H/NTX"JWAHH+mlhJgNu n0( H/NTX/NZX @p0+mlh"< $<&<(<*<peN8Nu _1NuC n?/1Hz"< $<&<(<*<phN8NuCP _31 _31 _31 _31 _31 _31 _31 _31A1$_! %NuCE Z/!?]2 NP/ $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ / $n"Jp/pПЀ"_?5/ Hz+mlh`-_PNu/.PHzp-@Pp0./ &@ .P`.E .PN$n".PSҁ4+mlh .PR-@Po&_"< $.PSHB4<&<(<*< <tN8Nu n0"< $<&<(<*<pTN8Nup@Ѝ @  @p0Nu-_-_-_`-_NuCA/!A`/!A/!A/!Hz`-_Nu/.Hzp@Ѝм @ JfNup@Ѝ$ @ -@ .ЀЮ @0HЮЮ`-@ . @0Hf . @ .0Nu`.-_NuCA/!Hzp@Ѝ @ \ЮNuNpNh$GEM_ERRO0TRY_AGAI GEM_ERRO1v( Ja  0 ,  T=% :'ϰ| l^PbPAVLNode* l = r->lt; set_lthread(r, rthread(l)); if (rthread(l)) r->lt = l; else r->lt = l->rt; l->rt = r; set_rthread(l, 0); set_rthread(t, lthread(l)); if (lthread(l)) t->rt = l; else t->rt = l->lt; l->lt = t; set_lthread(l, 0); if (bf(l) == AVLRIGHTHEAVY) set_bf(t, AVLLEFTHEAVY); else set_bf(t, AVLBALANCED); if (bf(l) == AVLLEFTHEAVY) set_bf(r, AVLRIGHTHEAVY); else set_bf(r, AVLBALANCED); set_bf(l, AVLBALANCED); t = l; _need_rebalancing = 0; return; } } } } Hilfe-Compiler fr das Hilfe-System des OMIKRON.Basic Interpreters ================================================================== Das vorliegende Programm "MAKEHELP.PRG" kann eine Hilfe-Datei, wie sie mit dem OMIKRON.Basic Interpreter ab Version 3.5 mitgeliefert wird, in eine normale Text-Datei umwandeln. Auch der umgekehrte Weg ist mglich: Eine Text-Datei eines bestimmten Formats (siehe unten) wird in eine Hilfe-Datei verwandelt. Fr beide Funktionen existiert jeweils ein Men-Eintrag, der Sie zur Eingabe eines Quell- und Ziel-Dateinamens auffordert. Fr die Text-Datei wird die Namenserweiterung "TXT" angenommen, die Hilfe-Datei hat die Erweiterung "HLP". WICHTIG: Wenn Sie als Ziel-Datei den Namen "OM-BASIC.HLP" angeben berschreiben Sie die originale Hilfe-Datei des Interpreters. Stellen Sie zuvor immer sicher, da Sie noch eine Sicherheitskopie der ursprnglichen Datei haben. Nachdem Sie mit dem Menpunkt "Help to Text" die Hilfe-Datei in eine Textdatei umgewandelt haben, knnen Sie diese Datei mit einem Text- Editor laden und verndern. Dadurch haben Sie die Mglichkeit das Hilfe- System des OMIKRON.Basic Editors NACH BELIEBEN zu erweitern. Sie knnen z.B. besonders hufig benutzte Library-Kommandos (etwa aus der EasyGem-Library) ins Hilfe-System intergrieren oder einfach besonders hufig nachzuschlagende Informationen z.B. zum GEM oder dem Betriebssystem mit in das Hilfe-System aufzunehmen. Das Hilfe-System lt sich mit diesem Programm ganz nach ihren Wnschen zusammenstellen. Wenn Sie Ihr Hilfe-System um Funktionen erweitert haben, von denen Sie glauben, da sie von allgemeinem Interesse sind, schicken Sie uns doch bitte Ihre erweiterte Hilfe-Datei zu. Auf diese Weise knnen wir auch anderen zustzliche Untersttzung zukommen lassen und den Komfort der Basic Entwicklungsumgebung weiter erhhen. Fr Ihre Bemhungen schon an dieser Stelle vielen Dank. BEARBEITEN DER TEXT-DATEI: Zum bearbeiten der Text-Datei bentigen Sie einen beliebigen Text- Editor, der allerdings in der Lage sein mu auch ASCII Zeichen kleiner 32 darzustellen. Ebenso sollte die Mglichkeit bestehen Zeichen kleiner 32 einzutippen. Ein Editor, der solche Voraussetzungen ideal erfllt ist der Editor des Multi-Utilities "MORTIMER", welches ebenfalls bei OMIKRON.Soft & Hardware erhltlich ist. Es gibt jedoch auch andere Editoren, die Sie verwenden knnen. Der weit verbreitete "Tempus" der Firma CCD eignet sich genauso gut. Die Textverarbeitung "1st Word+" ist dagegen ungeeignet, da Zeichen kleiner 32 grundstzlich nicht akzeptiert werden. Um die Text-Datei zu bearbeiten fhren Sie folgende Schritte aus: 1. Starten Sie MAKEHELP 2. Whlen Sie "Help to Text" im Datei-Men 3. Whlen Sie als Quell-Datei "OM-BASIC.HLP" 4. Whlen Sie als Ziel-Datei einen neuen Namen z.B. "HILFE.TXT" Jetzt wird die Datei konvertiert und unter "HILFE.TXT" abgespeichert. 5. Verlassen Sie MAKEHELP 6. Starten Sie Ihren Text-Editor und laden Sie "HILFE.TXT" FORMAT DER TEXT-DATEI: Um die Hilfe Datei erfolgreich zu verndern ist es wichtig, da die zu Grunde liegende Text-Datei das richtige Format besitzt. Wenn Sie oben aufgefhrte Schritte durchgefhrt haben und also die Text- Datei bereits vor sich sehen, sind einige Formatkennzeichen auf den ersten Blick erkennbar: Die Datei ist wie ein Karteikasten aufgebaut, der viele Karteikarten enthlt. Jede Karte trgt eine oder mehrere berschriften, die als Suchbegriffe dienen. Auf der Karte findet man die Erluterungen zum betreffenden Begriff(e). Diese Erluterungen knnen selbst wieder andere Suchbegriffe enthalten zu denen verzweigt werden kann. Beispiel: WIDTH LINE WIDTH Typ: Befehl Syntax: LINE WIDTH =  LINE WIDTH = Erklrung: Stellt die Linienstrke in Pixeln ein fr alle DRAW-Befehle und fr alle umrahmten gefllten Flchen ein (siehe PBOX, BOX usw.). Die aktuelle VDI-Version untersttzt nur ungerade Linienstrken. Diese Karteikarte trgt zwei berschriften nmlich "WIDTH" und "LINE WIDTH". Eine berschrift ist also durch ein Zeichen "" (ASCII 1) am Beginn der Zeile gekennzeichnet. Die berschrift geht immer bis zum Ende der Zeile. Wenn mehrere berschriften fr eine Karteikarte gelten sollen, so befinden sich diese unmittelbar in den darauffolgenden Zeilen. Ein Suchbegriff, zu dem verzweigt werden kann, ist von zwei Zeichen "" (ASCII 2) eingerahmt. Suchbegriffe aus dem oberen Beispiel wren also "", "PBOX" und "BOX". WICHTIG: Ein Suchbegriff darf niemals ber das Zeilenende umgebrochen werden. Es ist also nicht zulssig, da der Suchbegriff in einer Zeile startet und erst in der nchsten beendet wird. Wenn Sie ein Wort als Suchbegriff markieren, sollte dieser Suchbegriff auch in der Text-Datei vorhanden sein. Ein Anklicken wird sonst mit der Fehlermeldung "Help-Keyword not found" quittiert. Die nchste Karteikarte beginnt an der Stelle, an der die nchste berschrift steht. Die Karteikarten sind also einfach aneinander gereiht. Nach der letzen Karteikarte sind als Ende-Markierung zwei Zeichen "" (ASCII 1) und das "End of File"-Zeichen (ASCII 26) vorgesehen (Letzteres darf jedoch auch fehlen). ERZEUGEN DER NEUEN HILFE-DATEI: Fhren Sie folgende Schritte aus: 1. Speichern Sie die genderte Text-Datei ab. 2. Verlassen Sie den Text-Editor 3. Starten Sie MAKEHELP 4. Whlen Sie "Text to Help" im Datei-Men 5. Whlen Sie als Quell-Datei Ihre bearbeitete Text-Datei 6. Whlen Sie als Ziel-Datei "OM-BASIC.HLP" Vorsicht: Sie berschreiben die alte Hilfe-Datei. Erstellen Sie also zuvor eine Sicherheitskopie. Nocheinmal sei darauf hingewiesen, da wir uns freuen wrden von Ihnen erweiterte Hilfe-Systeme zu erhalten, damit wir sie auch anderen Kunden zugnglich machen knnen. Wenn Sie also glauben etwas allgemein ntzliches ins Hilfe-System intergriert zu haben, senden Sie die so erweiterte Hilfe-Datei an: OMIKRON. Soft & Hardware GmbH Sponheimstrae 12 W-7530 Pforzheim Vielen Dank Ihr OMIKRON. Team Pforzheim, den 04.11.91 r whether it serves any particular purpose or works at all, unless he says so in writing. Refer to the GNU CC General Public License for full details. Everyone is granted permission to copy, modify and redistribute GNU CC, but only under the conditions described in the GNU CC General Public License. A copy of this license is supposed to have been given to you along with GNU CC so you can know your rights and responsibilities. It should be in a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ #ifndef _AVLMap_h #pragma once #define _AVLMap_h 1 #include "..Map.h" DOKUMENTATION DER ZAHLENFORMATE IN OMIKRON.BASIC ================================================ Diese Dokumentation richtet sich an technisch interessierte Kunden, die mehr ber die Internas des OMIKRON.Basic wissen wollen. Sie ist zum Arbeiten mit dem Compiler NICHT NOTWENDIG. =============== Auerdem ist folgender Hinweis fr Besitzer einer FPU interessant: Wenn Sie mit Hilfe der Funktionen MKS$ und MKD$ Binr-Dateien erzeugen, sind die Dateien auf jeden Fall kompatibel zu Dateien, die nicht von FPU-Compilaten erzeugt wurden. Zwar verwenden die FPU-Compilate intern ein anderes Zahlenformat (wird unten beschrieben) wie die CPU-Compilate, dieses wird jedoch von MKS$ und MKD$ automatisch umgerechnet. Dasselbe gilt auch fr die Wandlung zurck mit CVD bzw. CVS, wenn die Datei wieder eingelesen wird. Float-Zahlenformate im OMKIRON.Basic (fr CPU-Compilate): Double: 80 Bit MSB LSB +------------------------------------------------------------------------+ | 15 Bit Exp |VZ Man| 64 Bit Mantisse | +------------------------------------------------------------------------+ | 1. Word | 2. Word | 3. Word | 4. Word | 5. Word | Der Exponent enthlt keinen Offset und ist direkt in 2er Komplementdarstellung gegeben. Das niederwertigste Bit des ersten Wortes ist das Vorzeichen der Mantisse. (0 = '+', 1 = '-') Die Mantisse liegt immer in normalisierter Form vor (sie beginnt mit einer Eins). Diese Eins wird immer auch mit abgespeichert. D.h. das MSB des 2. Wortes ist immer eins. Darstellung der Null: Mantisse = 0, Exponent = $8000 (kleinstmglich) Single: 48 Bit MSB LSB +---------------------------------------------+ | 15 Bit Exp |VZ Man| 32 Bit Mantisse | +---------------------------------------------+ | 1. Word | 2. Word | 3. Word | Das Single Format entspricht exakt dem Double-Format, nur die Stellen- zahl der Mantisse umfat nur 32 Bit. Wandlungsfunktion: (normalerweise nicht notwendig wg. CVS und CVD siehe oben) DEF FN To_Iec$(A#) LOCAL A$,Exponent%L IF A#=0# THEN A$= STRING$(12,0) ELSE Exponent%L= CVI( MKD$(A#)) Exponent%L= LOW( LOW(Exponent%L SHR 1)+$3FFE+(Exponent%L AND 1) SHL 15) A$= MKI$(Exponent%L) A$=A$+ CHR$(0) + CHR$(0) + MID$( MKD$(A#),3)' die Mantisse bleibt ENDIF RETURN A$ Oder in Maschinensprache (A0 zeigt auf DF Zahl): move.w (A0),D0 add.w #$7FFC,D0 ror.w #1,D0 move.w D0,(A0) Eine Abfrage, welches Format intern aktuell verwendet wird ist eigentlich nicht ntig, da die 'MKD$'- und die 'MKS$'-Funktionen immer OMIKRON.Basic Formate liefern (unabhngig vom internen Format). Gleichwohl lt sich das interne Format durch einen direkten Speicher- zugriff z.B. an der Darstellung der Null erkennen: DEF FN Is_Iec LOCAL Dummy#=0#,I%L IF PEEK( VARPTR( Dummy# ) ) = $80 THEN I%L=0 ELSE I%L=-1 RETURN I%L Allerdings wird dann immer noch das 2. Wort des IEC Formats (welches nicht benutzt wird) ausgespart. Es werden also immer noch nur 10 Byte abgespeichert. ----------------------------------------------------------------------------- Float-Zahlenformate im OMKIRON.Basic (fr FPU-Compilate): Double: 80 Bit (extended Precision) MSB LSB +------------------------------------------------------------------------+ |VZ Man| 15 Bit Exp | 64 Bit Mantisse | +------------------------------------------------------------------------+ | 1. Word | 2. Word | 3. Word | 4. Word | 5. Word | Der Exponent enthlt einen Offset von $3FFF, d.h. der Exponent von 2 hoch 0 ist $3FFF. Das hchstwertigste Bit des ersten Wortes ist das Vorzeichen der Mantisse. (0 = '+', 1 = '-') Im brigen gelten alle Aussagen ber Zahlenformate nach IEEE (siehe Motorola Handbuch zum 68881/2). Darstellung der Null: Mantisse = 0, Exponent = $0000 Single: 48 Bit MSB LSB +---------------------------------------------+ |VZ Man| 15 Bit Exp | 32 Bit Mantisse | +---------------------------------------------+ | 1. Word | 2. Word | 3. Word | Der Exponent enthlt einen Offset von $3FFF, d.h. der Exponent von 2 hoch 0 ist $3FFF. Das hchstwertigste Bit des ersten Wortes ist das Vorzeichen der Mantisse. (0 = '+', 1 = '-') Auch dieses Format entspricht exakt dem doppelt genauen Format mit Ausnahme der nur 32 Bit breiten Mantisse. Da dieses Format nicht nach IEEE genormt ist und auch nicht vom Coprozessor direkt untersttzt wird, werden zum Rechnen mit dem Coprozessor immer doppelt genaue Funktionen bentzt (Das nieder- wertige LONG der Mantisse ist dann einfach Null). Dies bedeutet jedoch keinen Nachteil, da der Coprozessor intern IMMER mit doppelter Genauigkeit rechnet. Beim Abspeichern, bzw. bei Funktionen, die mit der CPU aufgefhrt werden, wird dann auf 32 Bit Mantisse gerundet. static int _max_hold_index; // # elements-1 in _hold_nodes void AVLSet:: _add(AVLNode*& t) { int cmp = CMP(*_target_item, t->item); if (cmp == 0) { _found_node = t; return; } else if (cmp < 0) { if (lthread(t)) { ++count; _found_node = new AVLNode(*_target_item); set_lthread(_found_node, 1); set_rthread(_found_node, 1); _found_node->lt = t->lt; _found_node->rt = t; t->lt = _found_node; set_lthread(t, 0); _need_rebalancing = 1; } else _add(t->lt); if (_need_rebalancing) { switch(bf(t)) { case AVLRIGHTHEAVY: set_bf(t, AVLBALANCED); _need_rebalancing = 0; return; case AVLBALANCED: set_bf(t, AVLLEFTHEAVY); return; case AVLLEFTHEAVY: <&6| 0L`*6<Xbf !"#4$\%^&d'l()*/ FPU2; FLAGS 7A-Z%0f"V"W" """""P "a$" (","$0"(4" 8" <"2@"D" b 0L"@P"DT"L$<X"P\"L`"P(<d"Th"`l"LPpt"TXpx"\`p|"dhpL>P>l?T>X>t?\>`>x?d>h>|?LPTXdh\`LPD"D(<D@"@$<D"@ U op@D"@D@"@Ő@Ő65@5D"@,"D0"@"4D"^846CX"3"`PhXʍLPTX 3"`PhXʍ\`dh CX"4oP",6@JVbnx(0:DP^jr|WHXAXEYAYEZ0ZFPHIDX1DY1DXDYCOSPHISINPHIANZLINXYX1Y1X2Y2X3Y3X4Y4Z1FNFUNZ2Z3Z4CALCLOESCHENFNFUN2ZSXSYSZIxtern String _nilString; inline String` *oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4 , vI`OMIKRON.CompilerpNNNfNp0-@.hp0-@.h |^x| <!"Z#$%&'() j* p rT###@ p->s, rep->len, &(y.S->rep->s[y.pos]),y.len); return *this; } inline StrTmp StrTmp::operator + (const char* y) { rep = Scat(rep, rep->s, rep->len, y, -1); return *this; } inline StrTmp StrTmp::operator + (char y) { rep = Scat(rep, rep->s, rep->len, &y, 1); return *this; } inline StrTmp String::operator + (StrTmp& y) { y.rep = Sprepend(y.rep, rep->s, rep->len); return y; } inline StrTmp SubString::operator + (StrTmp& y) { y.rep = Sprepend(y.rep, &(S->rep->s[pos]), len); return y; } inline StrTmp operator + (const char* x, StrTmp& y) { y.rep = Sprepend(y.rep, x, -1); return y; } inline StrTmp operator + (char x, StrTmp& y) { y.rep = Sprepend(y.rep, &x, 1); return y; } inline void String::prepend(String& y) { rep = Sprepend(rep, y.rep->s, y.rep->len); } inline void String::prepend(const char* y) { rep = Sprepend(rep, y, -1); } inline void String::prepend(char y) { rep = Sprepend(rep, &y, 1); } inline void String::prepend(SubString& y) { rep = Sprepend(rep, &(y.S-0,08Z^ 26:F^d 06:@@D\GEM.LIB GEM-Library nachladen/o Im Interpreter nicht lauffhig/2STACK 4096; BAS_MEM 4096; TROFF; NOEX; MBS; CUTLIB&" G GEM AES anmelden. Die Status-Variable 'Accessory' wird vorher gesetzt. OMIKRON.BASIC-ACCI ACCESSORY anmelden ? Auf Meldung warten" " "  $" Meldung zerpflcken $(n Sind wir gemeint?)'[1][ACCESSORY|in OMIKRON.BASIC][ Ok ] Traraaa...,oP  0<PXjr|GEMMSGACCESSORYAPPL_INITACC_IDMENU_REGISTERXEVNT_MESAGIMSGAC_OPENSTROMAUSFALLlen) >= 0; } inline int String::contains(char c, int p) { return match(p, rep->len, 0, &c, 1); } inline int String::matches(char c, int p = 0) { return match(p, rep->len, 1, &c, 1); } inline int String::contains(const char* t, int p) { return match(p, rep->len, 0, t); } inline int String::matches(const char* t, int p = 0) { return match(p, rep->len, 1, t); } inline int String::contains(String& y, int p) { return match(p, rep->len, 0, y.rep->s, y.rep->len); } inline int String::matches(String& y, int p = 0) { return match(p, rep->len, 1, y.rep->s, y.rep->len); } inline int String::contains(SubString& y, int p) { return match(p, rep->len, 0, &(y.S->rep->s[y.pos]), y.len); } inline int String::matches(SubString& y, int p = 0) { return match(p, rep->len, 1, &(y.S->rep->s[y.pos]), y.len); } inline int String::contains(Regex& r) { int unused; return r.search(rep->s, rep->len, unused, 0) >= 0; } inline int SubString::contains(Re*fj $6HLdnvz !""2#B$%&'()*+,-./0 1:2N3f4z56789:;<=>?@A B0C22/ FPU2; FLAGS 7A-Z Programm 2.19 BASIC-Programm zur Berechnung von Apfelmnnchen-Grafiken UntersuchungsbereichfCX"0g:2Nur in der hohen ST-Auflsung (640x400) lauffhig..g "P"("0"<" Auflsung des BildesX"@T" Rechentiefe\"`"(Xd"<0T@ Schleife fr Imaginranteil (und zugleich fr die Y-Koordinate)h"0d"hP"Th"hd< Schleife fr Realanteil (und zugleich fr die X-Koordinate)l"`8L"Xl"l`p"lt"hH"\ innere Schleife x"pp|"tt Abfrage, ob Betrag>2x|ɸFt"ptthp"x|lH"HH H' L>PI L>TP L Ph o6  "4oP+,***@@xx (N`lvH~\p ".:,@ZAEHLERXKOORYKOORYRESOXRESOREALMINREALMAXIMAGMINIMAGMAXMAXZAHLREALDELTAIMAGDELTAIMAGCONSTREALCONSTREALZAHLIMAGZAHLREALQUADIMAGQUADTIV_RESV_ADRBPSXYDRAW_en by Dirk Grunwald (grunwald@cs.uiuc.edu) This file is part of GNU CC. GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. No author or distributor accepts responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all, unless he says so in writing. Refer to the GNU CC General Public License for full details. Everyone is granted permission to copy, modify and redistribute GNU CC, but only under the conditions described in the GNU CC General Public License. A copy of this license is supposed to have been given to you along with GNU CC so you can know your rights and responsibilities. It should be in a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ #ifndef _Uniform_h #pragma once #define _Uniform_h 1 #include // // The`*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4(,I`OMIKRON.CompilerpNHNNfN+mlhpNNp?NT-@pgDN2Nur in der hohen ST-Auflsung (640x400) lauffhig.Np!Nhp?NT-@pP-@=| -| -|=|-|-|=|-| -|$=|(-|*-|.-|@-|Ȁ=|2-|4-|8A6$*A 2 (N*6$ .NxNE<4$$A(6$*A2 (N*6$ .NxNEF4$$A6$*AF2 (NEP4$$ 9NxE4$$p-@ .NJg UAh2<pN/ &@ .`AP6$*AF2 (NEP4$$A 6$*A<2 (NEZ4$$p-@ ./ &@ .`AZ6$*A<2 (NEZ4$$CdAZ2""CnAP2""A22 (N-@Ad6$*Ad2 (N0Ex4$$An6$*An2 (N0E4$$Ax6$*A2 (NN8NYm`Ad6$*H4An6$*An2 (NL,N0*6$AP2 (NEn4$$Ax6$*A2 (N*6$AZ2 (NEd4$$SJf".pJf(/./.NZP .//.NZP .R-@or&_ .R-@o&_ 9Nx*6$A2 (N*6$ <rxNN+mlhND0HJg+mlhN-_-_NuCA/!A/!Hzp$.FĀp".&. .J[jDJjFWDdC8H@H@B@ЃJjDЮЁ$@NuNpNh6< @ @ N ,b !"#$%@&V'x(x)*+,-./0123`456789:;<=>L?P@PArBC \P#PLEN - 1) - 1 + `4*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_44,*I`OMIKRON.CompilerN O'.HppNHNNfN+mlhpNNp?NT-@pgDN2Nur in der hohen ST-Auflsung (640x400) lauffhig.Np!Nhp?NT-@pP-@?@AB$C&&* @#naTss4"ʣ!^JɅO7]Rs~$8%E%0U{.Fu4n\Т r,L EnorH=Fv4^W0дkH Q VeR+3%!PX@Dx|  >LX`z@ Die neue SELECT CASE Struktur bietet die einfachste Mglichkeit1 zwischen mehreren Alternativen zu unterscheiden."" "zeSgP1H Hilfstext:+ Dieses Programm zeigt die Verwendung ...g82O#Auswahl verschiedener Optionen ....g3E "i"Ungltiges Kommandof o60 Whlen Sie: 1. pHqilfstext 2. pOqptionen 3. pEqnde4oP &0<SHOW_MENUEINGABEENDETRUEFALSEh> #include ".Vec.h" // error handling void default_Vec_error_h@`b ,0:l *2>DJVZt"LIESMICH8F"p Y,Dieses Programm bentigt die DATEI: LIESMICHim aktuellen Verzeichniso8I Beispiel Daten zum Testen p"{ejg&AZ  " g&az "i "f" Auswertung:###.# d % Grobuchstabend % Kleinbuchstabend % Sonderzeichen"zoP/0 FP $0>^ZEICHENGROSSKLEINSONDERZEICHENAFEXIST i < len; ++i) if (targ == s[i]) return i; return N &>H`j  Wert 1-3 : eg"Der Wert war einsg"Der Wert war zweig"Der Wert war dreii:-Es sind nur Werte zwischen 1 und 3 zugelassenfooP  99999WERTse if ((*f)(*as, *bs) <= 0) *p++ = *as++; else *p++ = *bs++; } return Vec(newl, news); } int gsort(*, int, Comparator); void Vec::sort (Comparator compar) { gsort(s, len, compar); } // An adaptation og Schmidt's new quicksort static inline void SWAP(* A, * B) { tmp = *A; *A = *B; *B = tmp; } /* This should be replaced by a standard ANSI macro. */ #define BYTES_PER_WORD 8 /* The next 4 #defines implement a very fast in-line stack abstraction. */ #define STACK_SIZE (BYTES_PER_WORD * sizeof (long)) #define PUSH(LOW,HIGH) do {top->lo = LOW;top++->hi = HIGH;} while (0) #defiJxFt 2H     6:^bpz !"#8$>%B&H'()*+,2-F.J/x0123$4(522B Der COMPILER erkennt ab sofort konstante Ausdrcke und fat diese* bereits whrend der bersetzung zusammen.E Weiterhin ist es mglich dem Compiler SYMBOLISCHE KONSTANTEN bekanntJ zu machen, die ebenfalls schon zum bersetzungszeitpunkt bewertet werden./ DEF_CONST "a "a", Gem Konstanten fr Window-Handling"/ END_CONST"  \-----------/ wird sofort zusammengefat.Winkelumrechnung: 45 Grad sind   im Bogenma.G Desweiteren ist bedingte Compilierung mglich. Das bedeutet, da ganzeF Programmteile, die auf Grund einer konstant NICHT ERFLLTEN Bedingung? niemals aufgefhrt werden, bereits beim bersetzen rausfallen.K Beispiel: Verschiedene Programmversionen (lnderspezifisch oder Demovers.)/ DEF_CONST$"(","0"4",/ END_CONST/CIE IF's werden gekrzt $h,)I[1][Abspeichern ist in der|Demoversion leider nicht|vorgesehen!][Abbruch]-P,)3[2][Wollen Sie wirklich|sichern ?][Sichern|Abbruch]-M Je nach dem Wert der Konstanten 'Demo' wird hier entweder nur der THEN- oderJ nur der ELSE-Teil bersetzt. Die andere Hlfte (und der Vergleich selbst) fllt ganz raus.4,%Hallo !! Dies ist Demoprogramm4(%Hello !! This is a demo-program401+Salut !! C'est un logiciel de dmonstration= Der Compiler bersetzt immer nur eine der drei Alternativen."zoP!#88888  0:TbrPI_HALBEWM_REDRAWWM_TOPPEDGRADFNGRAD_TO_RADZWEI_PIDEMOENGLISCHDEUTSCHFRANZSPRACHEAtr) { SWAP (left_ptr, right_ptr); left_ptr += 1; right_ptr -= 1; } else if (left_ptr == right_ptr) { left_ptr += 1; right_ptr -= 1; break; } } while (left_ptr <= right_ptr); } /* Set up pointers for next iteration. First determine whether left and right partitions are below the threshold size. If so, ignore one or both. Otherwise, push the larger partition's bounds on the stack and continue sorting the smaller one. */ if ((right_ptr - lNH.x   *,* Dieses Programm zeigt alle Cookie-Jars anF Direkt vom Betriebsystem werden Cookie-Jars erst seit der Version 2.0 (ab STE) untersttzt.E Das BIOS trgt dann Informationen ber die Hardwareeigenschaften des Rechners ein.""~ &~~~s`oP  COOKIEPTR tmp_ptr = run_ptr; if (tmp_ptr != base_ptr) SWAP (tmp_ptr, base_ptr); /* Insertion sort, running from left-hand-side up to `right-hand-side.' Pretty much straight out of the original GNU qsort routine. */ for (run_ptr = base_ptr + 1; (tmp_ptr = run_ptr += 1) <= end_ptr; ) { while ((*cmp) (*run_ptr, *(tmp_ptr -= 1)) < 0) ; if ((tmp_ptr += 1) != run_ptr) { r.2X\ J   $ 6TXnZ V Z!"#$%&'() 6* 8+ <, L- P. / 0 1 2 3 4 5 6 47 88 <9 @: ; <2=6>TXvD\GEM.LIB das Programm beim AES anmelden* und eine virtuelle Workstation aufmachen F X \ Ffv@R !"#'()R@ GEM - Konstanten (nur eine Auswahl). Vollstndig in GEMDEFS.BAS ""! Rechteck-Konstanten fr Wind_GetL" Konstanten fr Wind_Updateh"l"p"t" Objekt Konstantenx" Offsets in der Objekt Struktur|"""""" " """" Object Types"""""""""""""  Object Flags""""""" "@"" Object States"" """""  Form_Dial Konstanten""""# Resource Data Types fr Rrsc_Gaddr"S;4,5N6v789: ;N<vR&(* resource set indicies for DIALOG *)l" (* form/dialog *)p" (* FTEXT in tree DIALOG *)t" (* FTEXT in tree DIALOG *)x" (* FTEXT in tree DIALOG *)|"" (* BUTTON in tree DIALOG *)" " (* BUTTON in tree DIALOG *)" # (* BUTTON in tree DIALOG *)"  (* BUTTON in tree DIALOG *)SL>p>t>x>|Iptx|Hp>t>pxt| DIALOG.RSC?*A:\DEMO\GEM_DEMO\DIALOG.RSC? 9)U[2][Resource-Datei nicht|gefunden !|Bitte stellen Sie den|aktuelle Pfad um!][Abbruch]B wenn das Programm hier abbricht, dann sollten Sie mit "CHDIR" denG aktuellen Pfad auf das Verzeichnis umstellen, von dem Sie das Programm/ geladen haben (z.B. CHDIR "A:\DEMO\GEM_DEMO" )>l>I>p>I B)/[1][Der Dialog wurde mit| OK beendet !][Weiter]D)4[1][Der Dialog wurde mit| Abbruch beendet !][Weiter]"| |>)+[1][Das Geschlecht ist| mnnlich !][Weiter]<)+[1][Das Geschlecht ist| weiblich !][Weiter]"p)[1][Die Eingabe lautete:| ][Weiter]o#, 6DoPAWX(YDZ`[|\]^`657>>>>?>>>>?>>>>?>>>>?>>?>>>>?>>>>?x"PMlNmhnopqrst6uTvrwRI Object - Element Funktionen (greifen auf Elemente der Objekt-Stuktur zu)"x"x"x"x"x"x "x"x"x"x"x "xS5z{,|:}J~Vbfn$(,70"$4",$  60(4|F4`x0`40QY 2Xjv078"0}7<4@" 8888<<"0~4"<~4|@ 044"0~ 4|@"@4|4`4@QA&Tx <> 0, falls GDOS resident ist7"$7200303CFFFE4E42B07CFFFE56C120014E757"T""]:T"-0$TɆ` T*v4~QoP00A''$.:JZjz$0@N^jx .<HVdr$2BR`p $4DR^n~"0:DNX` jx$4BRbnGEMAPPL_INITV_OPNVWKTRUEFALSEBEG_UPDATEEND_UPDATEBEG_MCTRLEND_MCTRLSIZE_OF_OBJECTOB_NEXTOB_HEADOB_TAILOB_TYPEOB_FLAGSOB_STATEOB_SPECOB_XOB_YOB_WOB_HG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICONG_TITLENONESELECTABLEEDITABLERBUTTONLASTOBTOUCHEXITHIDETREEINDIRECTNORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINEDSHADOWEDDIALOGDEINGABEDDATUMDTELEFONDMANNDWEIBDOKDABBRUCHOKRSRC_LOADDUMMYPRG_EXITDIALOG_PTRRSRC_GADDREXIT_OBJDO_DIALOGGESCHLECHTFNWHICH_SELECTEDEINGABEFNGET_TEXTV_CLSVWKAPPL_EXITTREESTARTROXOYOBOHFORM_CENTERFORM_DIALOBJC_DRAWFORM_DOINDEXFNOBJC_ADRFNOB_NEXTFNOB_HEADFNOB_TAILFNOB_TYPEFNOB_FLAGSFNOB_STATEFNOB_SPECFNOB_XFNOB_YFNOB_WFNOB_HVONBISTREE_PTROBJPTRTYPTEDTIWIND_GETLDESK_XDESK_YDESK_WDESK_HFNVQ_GDOSCJAVS_CLIPRSRC_FREEWF_WORKXYWHDEFAULTBEXITBFMD_STARTFMD_GROWFMD_SHRINKFMD_FINISHR_TREE { if (status[h] == EMPTYCELL) return 0; else if (status[h] == VALIDCELL && EQ(key, tab[h])) (* resource set indicies for DIALOG *) CONST dialog = 0; (* form/dialog *) deingabe = 3; (* FTEXT in tree DIALOG *) ddatum = 4; (* FTEXT in tree DIALOG *) dtelefon = 5; (* FTEXT in tree DIALOG *) dmann = 8; (* BUTTON in tree DIALOG *) dweib = 9; (* BUTTON in tree DIALOG *) dok = 10; (* BUTTON in tree DIALOG *) dabbruch = 11; (* BUTTON in tree DIALOG *) seent = 1; else if (seent && status[h] == VALIDCELL && EQ(key, tab[h])) return Pix(&tab[h]); if (i == 0) h = (h + doublehashinc(hashval, size)) % size; else if (++h >= size) h -= size; } return 0; } } int VHBag::nof( item) { int n = 0; unsigned int hashval = HASH(item); int h = hashval % size; int firsth = -1; for (int i = 0; i <= size; ++i) { if (status[h] == EMPTYCELL) return n; else if (h != firsth && status[h] == VALIDCELL && EQ(item, tab[h])) { ++n; if (firsth == -1) firsth = h; } if (i == 0:::$:: Dieses Programm demonstiert die Verwendungeiner Resource-Datei mit OMIKRON.Basic.@---------------Eingabefeld: ________________XXXXXXXXXXXXXXXX@-----Datum: __.__.__999999@---------------Telefon: ________/________9999999999999999GeschlechtmnnlichweiblichOKAbbruchw / $*O':V r      &   / %2 e; ++i) status[i] = EMPTYCELL; count = 0; } void VHBag::resize(int newsize = 0) { if (newsize <= count) { newsize = DEFAULT_INITIAL_CAPACITY; while (newsize <= count) newsize <<= 1; } * oldtab = tab; char* oldstatus = status; int oldsize = size; tab = new [size = newsize]; status = new char[size];DIALOGDEINGABEDDATUMEDTELEFONDMANNON DWEIBON DOKBON DABBRUCHea (dl@rocky.oswego.edu) This file is part of GNU CC. GNU CC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY. No author or distributor accepts responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all, unless he says so in writing. Refer to the GNU CC General Public License for full details. Everyone is granted permission to copy, modify and redistribute GNU CC, but only under the conditions described in the GNU CC General Public License. A copy of this license is supposed to have been given to you along with GNU CC so you can know your rights and responsibilities. It should be in a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ #ifndef _VHBag_h #pragma once #define _VHBag_h 1 #include ".Bag.h" class X@Lz\ F    $*0NI Die Zeilen, mit dem  Zeichen sind eingeklappt. Sie knnen durch Drcken+ [von Control-D] wieder ausgeklappt werden.K Setzen Sie den Cursor in die entsprechende Zeile und Drcken Sie [Ctrl-D].E Dies funktioniert bei allen Zeilen, bis auf die Menu Prozedur. DieseE Prozedur wurde geschtzt. Wenn Sie diese Zeile ausklappen wollen, soJ wechseln Sie in den Direct-Modus und tippen sie 'LOCK "SCHUTZ"' [Return].K Mit [Help] zurck im Editor, knnen Sie nun alle mit "SCHUTZ" verriegeltenJ Zeilen ausklappen. Das Wort hinter LOCK mu brigens immer 6 Zeichen langF sein. 'LOCK OFF' [Return] schaltet wieder in den Normal-Modus zurck.K Die Klammern { } dienen nur als Marken, die zum Einklappen benutzt werden. DR Konstanten""S8$DR H Hauptschleife"zA,^lReSgP1H Hilfstext:+ Dieses Programm zeigt die Verwendung ...g82O#Auswahl verschiedener Optionen ....g3E "i"Ungltiges KommandofSS o5S 8<TXl60 Whlen Sie: 1. pHqilfstext 2. pOqptionen 3. pEqndePoP!   &0<SHOW_MENUEINGABEENDETRUEFALSEtatic inline doublehashinc(unsigned int h, int s) { return ((h / s) % s) >? 1; } Pix VHMap::seek( key) { unsigned int hashval = HASH(key); int h = hashval % size; for (int i = 0; i <= size; ++i) { if (status[h] == EMPTYCELL) return 0; else if (status[h] == VALIDCELLf`R &4\tv  &LNx"h"?&" N" "- " "h Sekunden"" "-"   Primzahlen in Zahlen vPrimzahlen ausdrucken (j/n) ? >l+j+nno& "-     &das "Menge=1" nimmt die Zahl 2 vorweg.oP (0<DNANZAHLFELDPRIMZAHLITMENGEJNX(h + doublehashinc(hashval, size)) % size; else if (++h >= size) h -= size; } ++count; status[bestspot] = VALIDCELL; tab[bestspot] = item; return cont[bestspot] = def; } void VHMap::del( key) { unsigned int hashval = HASH(key); <LF T Z ^  (26Z^H Bei Feldern kann generell der Index weggelassen werden. Dies wirkt dannI genauso als ob man den hchsten Index ergesetzt htte. Dies ist ntzlich? bei Aufrufen mit Feldern als Argumenten: SORT oder MAT-Befehle "& b" D nicht mehr N-1. Seit 3.55 bzw. 4.05 sortiert SORT ..() N+1 Elemente"d P]B sortiert ab 3.55 bzw. 4.05 N+1 Elemente (0-N, frher nur 0 - N-1),"   Matrixmultiplikation "&  $ ,"zK]] "]]$L]], usw ....oP  6&.ZAHLNIABCAÁÁÀĀŀŀŀŀŀŀŀŀŀŀŀŀJJJJJJƀƀƀƀƀŁƀƀƁƁƁDx4 P h n  8HX:PA eine paar Prozeduren, die den Umgang mit OPEN "F" genauer zeiger1 Es wird ein Directory eines Laufwerks angezeigt.G Besonders interessant ist die FIELD-Anweisung, die die Feld-Aufteilung des Verzeichniseintrags zeigt.a:\o6467  >46 $7("$8F(*.*? P:((pF9( $"܃ ...    ###.###.###  , 0  L4" 4 /R/OHIDSYSVOLSUBCLO4   4    \$(4,8"8 <:8?<:8<08"8<.8<.8 Ʌ<8"d8ɅoP&2>JVbnxDIRDIRPATHATTTIMDATLENNAMEDIRLEVELF_NRFNTIMFNDATIXFNXX i); & key(Pix i); & contents(Pix i); Pix seek( key); int contains( key); void clear(); void resize(int newsize = 0); int OK(); }; inline VHMap::~VHMap() { delete [size] tab; delete [size] cont; delete [size] status; } inline int VHMap::contains( key) { return seek(key) != 0; } inline & VHMap::key(Pix i) { if (i == 0) error("null Pix"); return *((*)i); } inline & VHMap::contents(Pix i) { if (i == 0) error("null Pix"); return cont[((\ 6~X  & f  <@^P(8H P!X"h#$%&'(D)*+,-\./012 ,3 04 d5 6 7 68 r v3 DEMO zur Verwendung des neuen Steuerworts "FLAGS".E Sie setzen mit diesem Steuerwort Flags im Programmkopf des erzuegtenE Kompilats. Diese Flags informieren das Betriebssystem ber bestimmteE Eigenschaften des Programms. Alle Flags werden in einem Langwort zu-G sammengefat. Dieses Langwort mu in hexadezimaler Schreibweise direktB hinter dem Steuerwort "FLAGS" angegeben werden (siehe Beispiele). Die einzelnen Bits bedeuten:L Bit 0: <>0 Fastload, nur das BSS wird gelscht (das Programm wird schneller geladen)< Bit 1: <>0 das Programm kann auch ins TT-RAM geladen werdenK Bit 2: <>0 das Programm kann bei Speicheranforderungen auch aus dem TT-RAM bedient werden.1 Bit 3 - 27: reserviert (sollten immer Null sein)7 Bit 28 - 31: Grenfeld der TPA in 128 kByte SchrittenK Damit das Betriebssystem entscheiden kann, ob ein Programm ins TT-RAM oderF ins ST-RAM geladen wird, mu man den zu erwartenden Speicherverbrauch6 angeben (TPA-Size, Gre der Transient Program Area).I Wenn nun der freie Platz im TT-RAM kleiner ausfllt als angegeben und imG ST-RAM noch gengend Platz frei ist, wird das Programm doch ins ST-RAM geladen.J Wozu das alles gut ist? Nun, besser ein Programm hat ausreichend SpeicherK und luft etwas langsamer, als es wird auf Biegen und Brechen im schnellen4 Speicher ausgefhrt, der dann schnell zu Ende geht.K Die TPA-Gre errechnet sich aus den oberen vier Bits (28 - 31) folgender-1 maen: (TPA-Gre+1) * 128 kByte . Zum Beispiel: $0 -> 128k (Minimum) $1 -> 256k $2 -> 384k . . $E -> 1920k $F -> 2048k (Maximum) Beispiele:/FLAGS 16 nur FASTLOAD (kann unbedenklich immer gesetzt werden)/FLAGS 3 FASTLOAD und LADEN ins TT-RAM/FLAGS 73 FASTLOAD, LADEN ins TT-RAM und Speicher aus TT-RAMF Bei den letzten beiden Beispielen blieb die TPA-Gre immer auf ihrerL Minimalgre von 128k, d.h. das Programm wird fast immer ins TT-RAM geladen. (auch wenn dort nur wenig Speicher frei ist)./FLAGS F00000073 FASTLOAD, LADEN ins TT-RAM und Speicher aus TT-RAM@ TPA-Gre 2 MB (d.h. LADEN ins TT-RAM nur wenn mind. 2 MB frei)/FLAGS 100000073 FASTLOAD, LADEN ins TT-RAM und Speicher aus TT-RAM TPA-Gre 512k/FLAGS 5! FASTLOAD und Speicher aus TT-RAM0 Noch ein Wort zum Speichermodell der Compilate:; Alle Einzelvariablen werden grundstzlich im BSS angelegt.F Fr Felder wird zustzlich Speicher per MALLOC angefordert. Es gengtG also die Speicheranforderungen ins TT-RAM zuzulassen, um beschleunigte9 Datenzugriffe (oder virtuellen Speicher) zu ermglichen.oP,.;;;;;= DEFAULT_INITIAL_CAPACITY) { tab = new [size = sz]; status = new char[size]; for (int i = 0; i < size; ++i) status[i] = EMPTYCELL; count = 0; } VHSet::VHSet(VHSet& a) { tab = new [size = a.size]; status = new char[size]; for (int i = 0; i < size; ++i) status[i] = EMPTYCELL; count = 0; for (Pix p = a.first(); p; a.next(p)) add(a(p)); } /* * hashing method: double hash based on high bits of hash fct, * followed by linear probe. Can't do too much better if table * sizes not constrained to be prime. */ static inline doublehashinc(unsigned int h, int s) { return ((h / s) % s) >? 1; } Pix VHSet::seek( key) { unsigned int hashval = HASH(key); int h = hashval % size; for (int i = 0; i <= size; ++i) { if (status[h] == EMPTYCELL) return 0; else if (status[h] == VALIDCELL && EQ(key, tab[h])) return Pix(&tab[h]); if (i == 0) h = (h + doublehashinc(hashval, size)) % sHT:$.DV|   o"7 "Primzahl8 " "keine Primzahl 4QoP $,4FNDOPPELTFNPRIMZAHLANP else if (status[h] == DELETEDCELL) { if (bestspot < 0) bestspot = h; } else if (EQ(tab[h],item)) return Pix(&tab[h]); if (i == 0) h = (h + doublehashinc(hashval, size)) % size; else if (++h >= size) h -= size; } tab[bestspot] = item; status[bestspot] = VALIDCELL; ++count; return Pix(&tab[bestspot]); } void VHSet::del( key) { unsigned int hashval = HASH(key); int h = hashval % size; for (int i = 0; i <= size; ++i) { if (status[h] == EMPTYCELL) return; else if (stat~.2X\ N R n  "L| "&8<FJ d!h"p#$%&'()*+>,h-./012345 6789:b;f<=><@vD\GEM.LIB das Programm beim AES anmelden* und eine virtuelle Workstation aufmachen)& F X \ (R@ GEM - Konstanten (nur eine Auswahl). Vollstndig in GEMDEFS.BAS ""! Rechteck-Konstanten fr Wind_Getl"Sl>p>t>x>|Iptx|p>t>pxt|D"_$*<LdvڔR FONTS laden DLHI&HPHXXT"H\T>TP>TXI"TXTX"TX܃ @H"&PXP"X" System FontS Hot Spot von Texten links oben`! extended Inquire (alle WK Daten)d"h# wieviele Planes hat der Bildschirm6 so ermittelt man das ohne LINE A"x"|" Koordinaten einer zentrierten Box"px"t|"d|"]""-U,T"H-TPI den Kleinsten einstellen>I Font Name: TXOMIKRON.Basic und GDOSBitte Taste drcken ...,  -U,vo#,6oP)&Nbz|pd7ltd&Planes ist nicht initialisiert.l"pt"ld 4tQA&Tx <> 0, falls GDOS resident ist7"$7200303CFFFE4E42B07CFFFE56C120014E757"T""]:T"-0$TɆ` T*v4~QoP?*A$.:zHVfnv$2@P\fnx"0FPX`hGEMAPPL_INITV_OPNVWKTRUEFALSEPRG_EXITV_CLSVWKAPPL_EXITOHIWIND_GETLDESK_XDESK_YDESK_WDESK_HFNVQ_GDOSCJAGDOSNFONTSVST_LOAD_FONTSFONTFONTVQT_NAMEVQ_EXTNDSCR_PLANESINTOUTOW8OWMEMFNMEM_SIZEBOX_WBOX_HBOX_XBOX_YSIZEBUFFERVST_FONTVST_POINTV_GTEXTVST_ALIGNMENTVQT_ATTRIBUTES VS_CLIPVST_UNLOAD_FONTSRANDCWCHPWF_WORKXYWH@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@HP4(8Xfz o Standard-Pfad ermitteln7 c Standard-Laufwerk" "~b~cG, "Aɀ:܃\4QoP &0FNGET_PATHPATHDRIVEADR to the GNU CC General Public License for full details. Everyone is granted permission to copy, modify and redistribute GNU CC, but only under the conditions described in the GNU CC General Public License. A copy of this license is supposed to have been given to you along with GNU CC so you can know your rights and responsibilities. It should be in a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ #ifndef _VOHSet_h #pragma once #define _VOHSet_@ J04 Z ^    :>ZlX\` d!f"j#$%l&p't(xF Dies ist kein vollstndiges GEM-Programm (es luft, tut aber nichts).A Es enthlt lediglich alle notwendigen Initialisierungen, die fr! ein GEM-Programm notwendig sind.D Wenn Sie zustzlich eine Resource-Datei laden mchten, kommentieren Sie die "IF 0"-Klammer aus.D\GEM.LIB das Programm beim AES anmelden* und eine virtuelle Workstation aufmachencbj(r *.>^b~.>\` &.2T(,<l0`x|8hl L l p  $ 8 b  H X \ | R GEM - KonstantenI Eine Sammlung der wichtigsten Konstanten, die bei der GEM-ProgrammierungF bentigt werden. Die Benutzung dieser Konstanten macht Ihre ProgrammeE lesbarer und leichter zu ndern. Sie sollten deshalb immer an Stelle% der "nackten" Zahlen benutzt werden.J Wenn Sie Ihr Programm mit dem OMIKRON.Compiler bersetzen wollen, sollten> Sie all diese Konstanten als Compiler-Konstanten vereinbaren.F HINWEIS: weitere Konstanten werden schon bei Appl_Init in der GEM.LIB. definiert. Es sind dies (Message-Konstanten):G Mn_Selected, Wm_Redraw, Wm_Topped, Wm_Closed, Wm_Fulled, Wm_Arrowed,> Wm_Hslid, Wm_Vslid, Wm_Sized, Wm_Moved, Wm_Newtop, Ac_Open,B Ac_Close, Mu_Keybd, Mu_Button, Mu_M1, Mu_M2, Mu_Mesag, Mu_Timer/ DEF_CONST "" allgemein Writing-Modi"""" Konstanten fr Wind_Calc""! Konstanten fr Wind_Get/Wind_Set"""L"""""" " "  " " """ "$"(" ab AES 3.0& Nachrichten-Konstanten bei Wm_Arrowed,"0"4"8"<"@"D"H" Konstanten fr Wind_Updateh"l"p"t" Objekt Konstantenx" Offsets in der Objekt Struktur|"""""" " """" Object Types"""""""""""""  Object Flags""""""" "@"" Object States"" """""  Modus fr Objc_EditL"P"T" Offsets der TED-StrukturX"\"`"d" h"l"""" Offsets der ICONBLK-Struktur"""" """""""""" "" Offsets der BITBLK-Struktur""""" "  Alignment bei TED-Objekten """ Font-Gre bei TED-Objekten"" Objekt-Farben "$"(","0"4"8"<"@"D" H" L" P" T" X"\" Form_Dial Konstanten"""" Graf_mouse konstanten`"d"h"l"p"t"x"|"""" Fenster Elemente""""""" "@"""""# Resource Data Types fr Rrsc_Gaddr"""""""""" " " " " """ Verkpfungs-Modi bei Bitblt""" """"" "$" (" ," 0" 4" 8"<"/ END_CONSTS' hier Konstanten von Resourcen einfgenL>p>t>x>|Iptx|Hp>t>pxt|"e$06HXpR FONTS laden 0,I|"&,4,8X ",< > 4> 8I@" 8@ 8" 8@܃ @,"&484"8" System FontS G<Xd6jptRP"RSC.RSCHP>D?DH..\PD?DH\PD? D)-[2][Resource-Datei nicht|gefunden !][Abbruch]LB wenn das Programm hier abbricht, dann sollten Sie mit "CHDIR" denG aktuellen Pfad auf das Verzeichnis umstellen, von dem Sie das Programm/ geladen haben (z.B. CHDIR "A:\DEMO\GEM_DEMO" )x"S2 hier steht IHR GEM-Programm (siehe GEM-Beispiele))E[1][GEM-Programm Skelett|zum Erstellen eigener|GEM-Programme][ Ende ]o/ *06pt6xD| /5,. wg. MultiTOS Desktop, sonst ist keine Maus daoPAWX(YDZ`[|\]^`657>>>>?>>>>?>>>>?>>>>?>>?>>>>?>>>>?x"PMlNmhnopqrst6uTvrwRI Object - Element Funktionen (greifen auf Elemente der Objekt-Stuktur zu)"x"x"x"x"x"x "x"x"x"x"x "xSA&Tx <> 0, falls GDOS resident ist7"$7200303CFFFE4E42B07CFFFE56C120014E757" $"("$]: "$-0($ Ɇ` *(v(4~QoP A4((((2$.: , 4 > F N V b v      JZjz$0@N^jx .<HVdr   (8HVbrn^  $6FTbp~"2BR`p"2BP^l,8DP~*8FTbp~    & 0 : F T ` l v            " 4 B N X d p ~            . > L Z l z           $ 4 @ P \ j v        GEMAPPL_INITV_OPNVWKTRUEFALSEBEG_UPDATEEND_UPDATEBEG_MCTRLEND_MCTRLSIZE_OF_OBJECTOB_NEXTOB_HEADOB_TAILOB_TYPEOB_FLAGSOB_STATEOB_SPECOB_XOB_YOB_WOB_HG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICONG_TITLENONESELECTABLEEDITABLERBUTTONLASTOBTOUCHEXITHIDETREEINDIRECTNORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINEDSHADOWEDPRG_EXITDO_DIALOGV_CLSVWKAPPL_EXITTREESTARTROXOYOBOHFORM_CENTERFORM_DIALOBJC_DRAWFORM_DOINDEXFNOBJC_ADRFNOB_NEXTFNOB_HEADFNOB_TAILFNOB_TYPEFNOB_FLAGSFNOB_STATEFNOB_SPECFNOB_XFNOB_YFNOB_WFNOB_HWIND_GETDESK_XDESK_YDESK_WDESK_HVS_CLIPRSRC_FREEWF_WORKXYWHDEFAULTBEXITBFMD_STARTFMD_GROWFMD_SHRINKFMD_FINISHR_TREEVST_UNLOAD_FONTSMD_REPLACEMD_TRANSMD_XORMD_REVTRANSWC_BORDERWC_WORKWF_KINDWF_NAMEWF_INFOWF_CURRXYWHWF_PREVXYWHWF_FULLXYWHWF_HSLIDEWF_VSLIDEWF_TOPWF_FIRSTXYWHWF_NEXTXYWHWF_RESVDWF_NEWDESKWF_HSLSIZEWF_VSLSIZEWF_SCREENWF_COLORWF_DCOLORWA_UPPAGEWA_DNPAGEWA_UPLINEWA_DNLINEWA_LFPAGEWA_RTPAGEWA_LFLINEWA_RTLINEEDINITEDCHAREDENDTE_PTEXTTE_PTMPLTTE_PVALIDTE_FONTTE_JUSTTE_COLORTE_THICKNESSTE_TXTLENTE_TMPLENIB_PMASKIB_PDATAIB_PTEXTIB_CHARIB_XCHARIB_YCHARIB_XICONIB_YICONIB_WICONIB_HICONIB_XTEXTIB_YTEXTIB_WTEXTIB_HTEXTIB_RESVDBI_PDATABI_WBBI_HLBI_XBI_YBI_COLORTE_LEFTTE_RIGHTTE_CNTRIBMSMALLWHITEBLACKREDGREENBLUECYANYELLOWMAGENTALWHITELBLACKLREDLGREENLBLUELCYANLYELLOWLMAGENTAARROWTEXT_CRSRBUSY_BEEPOINT_HANDFLAT_HANDTHIN_CROSSTHICK_CROSSOUTLN_CROSSUSER_DEFM_OFFM_ONW_ALLW_NAMEW_CLOSERW_FULLERW_MOVERW_INFOW_SIZERW_UPARROWW_DNARROWW_VSLIDEW_LFARROWW_RTARROWW_HSLIDER_OBJECTR_TEDINFOR_ICONBLKR_BITBLKR_STRINGR_IMAGEDATAR_OBSPECR_TEPTEXTR_TEPTMPLTR_TEPVALIDR_IBPMASKR_IBPDATAR_IBPTEXTR_BIPDATAR_FRSTRR_FRIMGALL_WHITES_AND_DS_AND_NOTDS_ONLYNOTS_AND_DD_ONLYS_XOR_DS_OR_DNOT_SORDNOT_SXORDD_INVERTNOT_DS_OR_NOTDNOTS_OR_DNOT_SANDDALL_BLACKRESOURCE_LOADFONT_LOADGDOSFNVQ_GDOSCJILANFONTSVST_LOAD_FONTSFONTFONTVQT_NAMEPOKRSRC_LOADDUMMYRSC_NAME (empty()) error("del_top from empty stack."); --ptr; } inline & VStack::top() { if (empty()) error("top from empty stack."); return s[ptr-1]; } #endif ,(46$8e<$8,(467#"- "} #"- "} " ? N""-  "<"}<"} 46-b~HHeE465e<$8,(",46$$$55555e<$8,(",",",",",46$$$$$5T zzcbj ( r    *.>^b~.>\` ! "#&$.%2&T'()*+,-(.,/<0l123456789:0;`<x=|>?@ABC8DhElFGHIJKLM LN lO pP Q R S T U V $W 8X bY Z [ \ ] ^ H_ X` \a |b c d e R GEM - KonstantenI Eine Sammlung der wichtigsten Konstanten, die bei der GEM-ProgrammierungF bentigt werden. Die Benutzung dieser Konstanten macht Ihre ProgrammeE lesbarer und leichter zu ndern. Sie sollten deshalb immer an Stelle% der "nackten" Zahlen benutzt werden.J Wenn Sie Ihr Programm mit dem OMIKRON.Compiler bersetzen wollen, sollten> Sie all diese Konstanten als Compiler-Konstanten vereinbaren.F HINWEIS: weitere Konstanten werden schon bei Appl_Init in der GEM.LIB. definiert. Es sind dies (Message-Konstanten):G Mn_Selected, Wm_Redraw, Wm_Topped, Wm_Closed, Wm_Fulled, Wm_Arrowed,> Wm_Hslid, Wm_Vslid, Wm_Sized, Wm_Moved, Wm_Newtop, Ac_Open,B Ac_Close, Mu_Keybd, Mu_Button, Mu_M1, Mu_M2, Mu_Mesag, Mu_Timer/ DEF_CONST"" allgemein Writing-Modi" """ Konstanten fr Wind_Calc""! Konstanten fr Wind_Get/Wind_Set "$"(","0"4"8"<"@" D" H" L" P" T"X"\"`" "" ab AES 3.0& Nachrichten-Konstanten bei Wm_Arrowedd"h"l"p"t"x"|"" Konstanten fr Wind_Update"""" Objekt Konstanten" Offsets in der Objekt Struktur"""""" " """" Object Types"""""""""""""  Object Flags""""" "" "@"" Object States "$"(","0"4"8"  Modus fr Objc_Edit<"@"D" Offsets der TED-StrukturH"L"P"" """"" Offsets der ICONBLK-Struktur"""" """""""""" "" Offsets der BITBLK-Struktur""""" "  Alignment bei TED-ObjektenT"X"\" Font-Gre bei TED-Objekten`"d" Objekt-Farbenh"l"p"t"x"|""""" " " " " "" Form_Dial Konstanten"""" Graf_mouse konstanten""""""""""" Fenster Elemente""""""" "@"" """# Resource Data Types fr Rrsc_Gaddr"" "$"(","0"4"8"<" @" D" H" L" P"T"X" Verkpfungs-Modi bei Bitblt\"`"d"h"l"p"t"x"|"" " " " " ""/ END_CONSTSoPggggg"0<N^lz .<L\l| ,<P^lz ,:JXfv $2@N\jx ",8BLXfr~"0@P`r$2BR`lz&6FTbr   * : J X f t            $ 2 @ N \ j x        TRUEFALSEMD_REPLACEMD_TRANSMD_XORMD_REVTRANSWC_BORDERWC_WORKWF_KINDWF_NAMEWF_INFOWF_WORKXYWHWF_CURRXYWHWF_PREVXYWHWF_FULLXYWHWF_HSLIDEWF_VSLIDEWF_TOPWF_FIRSTXYWHWF_NEXTXYWHWF_RESVDWF_NEWDESKWF_HSLSIZEWF_VSLSIZEWF_SCREENWA_UPPAGEWA_DNPAGEWA_UPLINEWA_DNLINEWA_LFPAGEWA_RTPAGEWA_LFLINEWA_RTLINEBEG_UPDATEEND_UPDATEBEG_MCTRLEND_MCTRLSIZE_OF_OBJECTOB_NEXTOB_HEADOB_TAILOB_TYPEOB_FLAGSOB_STATEOB_SPECOB_XOB_YOB_WOB_HG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICONG_TITLENONESELECTABLEDEFAULTBEXITBEDITABLERBUTTONLASTOBTOUCHEXITHIDETREEINDIRECTNORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINEDSHADOWEDEDINITEDCHAREDENDTE_PTEXTTE_PTMPLTTE_PVALIDTE_LEFTTE_RIGHTTE_CNTRIBMSMALLWHITEBLACKREDGREENBLUECYANYELLOWMAGENTALWHITELBLACKLREDLGREENLBLUELCYANLYELLOWLMAGENTAFMD_STARTFMD_GROWFMD_SHRINKFMD_FINISHARROWTEXT_CRSRBUSY_BEEPOINT_HANDFLAT_HANDTHIN_CROSSTHICK_CROSSOUTLN_CROSSUSER_DEFM_OFFM_ONW_ALLW_NAMEW_CLOSERW_FULLERW_MOVERW_INFOW_SIZERW_UPARROWW_DNARROWW_VSLIDEW_LFARROWW_RTARROWW_HSLIDER_TREER_OBJECTR_TEDINFOR_ICONBLKR_BITBLKR_STRINGR_IMAGEDATAR_OBSPECR_TEPTEXTR_TEPTMPLTR_TEPVALIDR_IBPMASKR_IBPDATAR_IBPTEXTR_BIPDATAR_FRSTRR_FRIMGALL_WHITES_AND_DS_AND_NOTDS_ONLYNOTS_AND_DD_ONLYS_XOR_DS_OR_DNOT_SORDNOT_SXORDD_INVERTNOT_DS_OR_NOTDNOTS_OR_DNOT_SANDDALL_BLACKTE_FONTTE_JUSTTE_COLORTE_THICKNESSTE_TXTLENTE_TMPLENIB_PMASKIB_PDATAIB_PTEXTIB_CHARIB_XCHARIB_YCHARIB_XICONIB_YICONIB_WICONIB_HICONIB_XTEXTIB_YTEXTIB_WTEXTIB_HTEXTIB_RESVDBI_PDATABI_WBBI_HLBI_XBI_YBI_COLORWF_COLORWF_DCOLOR]ey<$8,(v8v846T5$"8"~b~ez<$8,("܃46X$"8"~b~e{<$8,(46\55"8"~b~e|<$8,(",46`57"]  ~}b~  "@  ""b ~,~ |" " 2" ||" " |=||="F |""vl "]8"8" e}<$8,(v" ~v "" p " (>Tj $BLpz@LNo60 Name : Strae : PLZ/Ort :  Telefon : Angaben in Ordnung (J/N) ?"sHsP" eg* a+-+ $2g,(a0+ +-$g(,0x $g.0a0+ +-+/$2g. 40c-/+/+ $g48" 8u+J+N$f<"$^XPDeque(int chunksize = DEFAULT_INITIAL_CAPACITY); XPDeque(const XPDeque& d); ~XPDeque(); void operator = (const XPDeque&); void push( item); // insert at front void enq( item); // insert at rear & front(); & rear(); deq(); void del_front(); void del_rear(); void clear(); int empty(); int full(); int length(); int OK(); }; inline XPDeque::XPDeque(int chunksize = DEFAULT_INITIAL_CAPACITY) : p(chunksize) {} inline XPDeque::XPDeque(const XPDeque& d) : p(d.p) {} inline XPDeque::~XPDeque() {} inline void XPDeque::push(item) { p.add_low(item); } inline void XPDeque::enq(itemnphBv  " @ p  &2Df; Diese Prozedur fgt Zeichen in den Tastatur-Buffer ein, so1 als ob sie der Benutzer selbst eingetippt htte.K Die Zeichen erscheinen dann als eingetippte Tastendrcke, sobald irgendein/ Programm auf Eingaben von der Tastatur wartet.Das ist ein Testo67  $f! Tastatur-Prozessor ruhig stellen "h h ` Interrupts sperreng' alle Informationen ber den IO-Record"~ der Tastatur ermitteln"} "" "}" "    " }F berlauf2 ! keinen Scancode0  nur ASCII-Code eintragen 1 `f4oPd(0BJRZTBUFSIZEHEADPTAILPKKEY_STRINGITT2IBUFtion"); mods = 0; lo = fnc = 0; if (chunksize > 0) { csize = chunksize; * data = new [csize]; hd = ch = new IChunk(data, lo, lo, fnc, csize); } else { csize = -chunksize; * data = new [csize]; hd = ch = new IChunk(data, chunksize, lo, fnc, fnc); } } XPlex:: XPlex(int l, int chunksize) { if (chunksize == 0) error("invalid constructor specification"); mods = 0; lo = fnc = l; if (chunksize > 0) { csize = chunksize; * data = new [csize]; hd = ch = new IChunk(data, lo, lo, fnc, csize+lo); } else { csize = -chunksize; * data = new [csize]; hd = ch = new IChunk(data, chunksize+lo, lo, fnc, fnc); } } void XPlex::make_initialb0<BF\`| 0PT^ !"#&$.%2&:'>(P)T*X+l,-./012345.667>8D9HL/ FPU2; FLAGS 7 Ordnung: "2o&$Einlesen der Matrix ...@]][> MATRIX.DAT8]][>Start der Berechnung ...0"h,"]]NDeterminante: , in h0 sec0"hK]]$"M]] Inverse in h0 sec4"z4p!8]][> MATRIX.DAT68(7 (48O(QJ"."\  < QP6@(74H8I("C44  H" H"d""4H\"H"H4 4H  H`  PoP   $h,4FT\zAIJARRAY_PTRNBDETERMINANTETAWERTPRINT_ARRAYODATREAD_ARRAYP} void XPlex::cache(int idx) { IChunk* tail = tl(); while (idx >= ch->fence_index()) { if (ch == tail) index_error(); ch = ch->next(); } while (idx < ch->low_index()) { if (ch == hd) index_error(); ch = ch->prev(); } } void XPlex::cache(const * p) { IChunk* old = ch; while (!ch->actual_pointer(p)) { ch = ch->next(); if (ch == old) index_error(); } } int XPlex 4 1 3 2 4 -3 -1 -1 -1 -2 -3 5 0 0 0 -3 -2 1 -3 -3 0 2 -2 4 0 -2 5 -3 4 0 4 4 -1 2 -3 0 2 5 3 4 1 -2 -1 4 0 0 0 5 4 4 2 3 -2 2 1 -2 -1 0 2 4 -3 0 1 0 2 -2 0 4 -2 -2 -2 0 -3 1 4 -2 2 1 5 0 0 2 0 3 0 -2 -2 5 1 4 0 4 0 5 1 -1 0 -1 -1 -1 0 -1 -3 0 1 5 2 0 1 5 -2 2 3 4 3 -3 5 4 3 0 3 -1 4 -2 0 0 0 1 2 2 0 -1 5 0 0 -1 -2 0 -3 -1 -1 -3 4 3 4 -3 0 4 0 0 5 0 -3 0 -2 3 5 0 3 4 4 2 4 2 0 1 -1 5 1 -3 -3 5 3 1 0 -1 -2 3 4 4 -3 5 0 4 2 0 0 -1 3 4 3 -3 0 0 -2 4 0 -1 -1 3 -3 0 2 3 1 -2 5 5 0 3 2 0 5 5 4 -3 -1 0 -1 -2 -1 -3 1 0 0 1 1 -1 -3 0 5 4 3 3 1 4 5 -1 -1 4 5 -2 1 4 5 4 -1 -2 0 -2 0 1 4 0 2 -2 4 -3 4 -2 -3 4 -1 1 5 0 5 0 -2 -3 -3 -2 -1 2 2 -3 1 2 -1 -2 -1 0 5 -2 1 4 2 -2 1 4 4 -1 -3 1 -1 0 2 2 -3 2 -2 0 2 1 4 0 0 5 5 -3 1 4 -3 -3 5 -3 5 -2 0 5 3 -3 5 -2 -1 0 2 -3 4 0 5 0 0 4 -3 0 4 1 -3 3 1 4 1 1 1 0 -2 0 2 5 0 0 3 3 0 0 3 3 3 -3 -1 5 5 -1 0 5 0 -2 0 -3 5 4 3 -1 3 0 -3 1 -1 0 4 1 -2 1 2 1 -3 3 5 4 0 0 -1 2 3 0 0 0 5 0 1 1 3 -1 0 1 0 1 5 0 -1 5 2 2 2 -1 -3 5 3 -2 2 2 2 0 -3 -2 -1 -1 1 0 -1 0 2 -2 5 2 3 -1 0 1 0 0 -1 2 2 0 2 4 0 -2 4 1 2 3 5 -1 0 2 2 3 -1 -2 1 0 0 -1 5 -1 4 -2 -2 4 -2 1 -2 -3 0 -3 -2 3 -3 0 2 0 -2 4 -1 -3 -3 0 -2 4 3 2 0 5 -3 3 0 3 0 2 4 2 2 0 0 -1 -1 -3 5 5 0 -2 5 -1 3 4 0 5 0 2 1 4 5 0 1 -3 -1 -3 2 4 0 2 0 5 -3 -2 -3 -2 -3 0 1 1 1 0 2 4 5 0 -2 2 2 -1 2 0 4 5 -1 -1 1 2 1 -2 -1 -3 0 0 3 5 0 0 3 4 -2 5 1 0 5 5 0 0 -1 2 1 -2 1 -3 -3 0 4 0 5 2 -2 0 4 1 3 0 0 4 -3 2 2 4 0 0 -2 -3 -1 -2 0 5 2 0 4 0 4 -2 5 2 0 4 0 4 0 4 4 0 1 -1 -3 2 2 3 -3 3 5 5 0 3 0 0 -1 0 -2 -3 -3 3 5 2 2 3 1 0 3 0 -1 -2 0 0 4 0 1 5 -1 2 5 0 0 0 4 5 -1 1 -3 -1 -3 -1 -2 1 5 0 -3 2 2 3 1 -2 -2 -1 0 0 1 4 0 5 -2 -3 -2 -3 0 4 5 -3 -2 -1 3 -2 3 0 -2 2 0 5 3 -3 0 -2 0 4 1 2 3 -2 -3 3 1 4 0 1 -2 3 2 2 -2 5 -1 4 0 2 3 2 3 5 -2 1 0 -1 2 -3 1 2 0 1 5 2 0 2 -1 0 -3 -3 -2 4 -3 4 -2 0 2 0 1 4 -2 -3 -1 -1 -1 -2 -2 2 -2 -1 3 -1 1 3 3 -1 3 2 -1 -2 5 2 0 1 -2 0 4 0 4 4 4 0 -3 5 0 5 0 4 -3 3 -2 3 1 -2 2 0 1 0 3 0 2 0 1 4 5 0 0 5 0 3 0 3 -1 -2 5 3 0 -1 -1 4 -2 1 3 5 0 0 -3 -1 -2 2 -1 -3 -3 -2 1 -2 0 -3 5 4 0 0 1 -1 0 0 0 4 2 5 4 1 5 -2 5 -3 -1 3 3 -1 3 -2 2 -1 -2 0 2 3 2 4 -1 -2 -1 4 -2 4 0 0 1 0 5 4 -2 5 1 -3 -2 -2 -2 4 1 -3 1 3 4 3 -2 -1 4 1 2 3 3 4 3 0 -3 -3 -2 -3 -2 5 0 0 2 5 3 0 4 5 1 -2 -3 0 -3 -1 4 -2 -2 1 0 -3 5 0 1 2 2 2 0 3 0 -2 -3 0 -3 0 5 5 -1 -1 -3 5 4 3 0 4 -1 0 -3 -3 0 -3 0 5 -3 1 1 3 -2 3 5 0 0 1 2 4 1 2 0 0 1 4 4 0 5 0 -1 1 -3 -1 4 2 4 2 -3 -2 -2 -2 0 -1 1 0 -2 -3 0 -1 -3 0 -3 5 3 -1 1 1 1 0 -3 5 5 1 5 -2 -2 3 -1 4 0 4 -1 2 -3 -1 -2 3 5 4 -2 1 -1 5 5 0 3 0 -2 0 0 0 0 1 -2 0 -2 3 5 -3 0 5 0 0 -2 0 -1 -1 2 1 3 3 -2 3 5 5 -3 -2 3 -3 -3 0 -1 1 2 -1 -1 3 4 3 2 -2 0 -3 -3 0 -1 -2 -1 3 -2 0 2 0 4 1 1 4 -2 -2 -1 4 3 0 -1 1 1 -1 -1 4 5 1 1 -3 -3 4 1 5 5 -1 2 3 4 -2 2 2 4 -3 5 2 1 4 5 2 -3 0 -2 0 -2 5 0 1 3 5 2 0 1 -3 0 5 0 2 -3 -2 0 1 1 0 2 0 1 -2 -1 0 3 0 -2 0 0 -2 -2 2 -3 1 3 -3 4 -1 -2 5 1 -3 0 5 0 2 3 1 2 -1 -1 -2 2 5 0 -1 1 0 1 1 -2 -2 3 2 4 0 5 -1 0 2 3 1 4 4 2 4 -2 0 3 -3 -1 3 5 4 3 0 2 -2 5 -3 1 2 -1 3 5 2 0 0 -2 -2 0 -3 4 1 4 0 3 1 3 4 -2 -2 0 4 -2 2 -3 1 -2 5 1 0 -1 -2 0 3 0 -1 0 1 -3 2 -2 3 3 2 4 0 4 -3 2 3 3 -3 0 -1 1 0 1 -3 0 0 0 -1 3 5 -1 -2 2 -3 2 0 3 1 0 -2 0 0 3 3 0 -1 0 3 4 -2 0 0 5 -3 4 3 -3 0 -1 -1 1 3 0 -1 -3 5 -1 -1 1 0 -1 5 3 5 -1 4 5 3 -2 -2 4 0 5 3 1 4 0 4 4 -2 4 1 4 3 2 1 -3 5 2 4 5 3 2 0 -3 5 -3 3 1 0 1 -2 0 1 -1 -3 5 -2 -1 0 -2 5 2 -2 5 -1 -1 4 0 1 -2 4 3 1 2 3 5 4 0 1 3 0 3 3 3 5 -2 4 3 4 1 -2 -2 -2 2 0 4 -2 -3 5 4 -2 4 -3 -2 2 -3 0 -2 3 -3 3 -3 -3 5 -1 5 -3 4 2 0 3 3 4 0 5 4 0 4 5 -2 -1 2 5 2 4 0 1 0 2 2 3 -2 3 -2 -1 -2 0 0 3 2 2 0 -3 -1 2 3 0 4 4 2 -1 1 0 3 2 5 2 5 0 -3 2 4 3 0 4 -1 0 -2 -3 4 3 1 -3 -3 -1 1 3 -1 -3 -3 -1 0 -3 1 5 -1 -3 -1 -2 3 -2 -3 -2 -3 -2 4 4 0 2 0 -1 -2 0 0 0 -1 -1 -2 4 3 -1 2 1 -1 0 3 5 2 0 1 -1 0 3 -3 0 -1 0 3 0 -1 2 -3 2 4 0 5 0 -2 2 -3 2 4 1 0 -3 3 3 -3 3 -1 4 3 1 0 -3 4 -3 0 0 1 -3 0 5 -2 1 -2 0 -2 5 0 5 1 -1 -1 0 5 -1 0 2 2 3 -2 -1 -2 -3 -1 0 2 5 4 -3 0 4 5 5 0 5 5 -2 4 5 1 0 3 -3 0 3 4 -3 2 -2 0 3 -1 -2 2 4 5 0 0 3 5 5 0 3 -3 1 0 0 5 0 1 -3 -3 5 3 2 3 5 -3 0 -2 -2 -3 0 -3 -2 3 1 3 0 0 0 3 0 1 -1 0 0 0 -2 2 3 2 -3 2 -1 5 1 4 -1 2 3 0 0 1 5 5 -2 2 3 3 0 3 3 5 -1 0 -3 0 -1 0 5 -1 5 2 -3 -3 0 5 -1 0 2 -3 -1 -1 -1 0 5 -3 -3 1 2 3 0 -2 1 -2 2 4 -1 1 0 0 0 4 -1 -2 -1 -3 5 5 3 4 1 0 -2 1 4 -2 1 0 1 -2 -2 0 -1 0 0 2 4 1 2 1 2 4 -1 5 0 -3 1 -3 0 4 4 -1 2 -3 -2 -1 5 -1 1 5 5 -1 -3 4 -3 -3 2 1 -1 0 0 -1 5 2 1 -2 0 5 1 -2 -3 -2 -3 4 4 2 4 0 0 0 0 3 0 -3 4 -1 -2 0 0 -1 5 -1 0 -1 0 3 -2 3 3 0 1 1 -1 2 4 0 0 -2 0 -3 2 2 1 1 0 2 3 0 0 4 5 3 3 2 1 3 -2 4 2 1 2 1 0 3 -1 -3 -2 0 4 -3 5 2 1 0 3 -2 1 4 3 5 0 -2 0 -3 -3 2 5 3 1 0 2 -1 3 5 1 -3 -3 2 5 0 1 0 -2 3 -2 -3 0 0 -2 -2 0 -3 -3 4 -3 0 0 0 1 4 1 5 4 0 -1 2 -3 5 0 4 2 3 0 -1 4 -3 0 3 1 0 4 -2 0 4 2 -3 -1 -1 3 2 1 3 0 0 3 -1 -1 2 2 -2 2 -2 2 0 -1 -3 5 -3 -3 0 4 0 0 2 0 -2 4 0 1 1 3 5 -3 2 4 0 -1 4 1 4 0 1 5 5 5 0 5 0 3 4 3 1 4 -3 0 1 4 1 2 3 0 -2 -2 1 -1 1 0 1 0 2 0 -3 0 0 0 4 0 4 -2 -2 5 -1 -1 0 -1 -2 -1 1 -3 -1 5 5 4 0 -1 -1 2 -2 2 -1 0 -1 -1 3 -2 0 3 3 2 2 -3 1 -3 5 0 0 0 5 -3 3 0 0 -1 1 -2 5 -3 -2 2 5 -2 0 4 -3 5 -3 4 4 -1 5 4 -1 2 4 0 -2 -3 -2 0 2 3 0 1 0 -3 4 3 0 0 2 0 -1 3 -1 2 3 0 5 0 -1 -1 2 -1 0 1 3 -2 0 5 0 -1 4 4 -1 -3 -2 0 4 -2 4 2 5 0 -3 -1 2 -3 -2 5 -1 2 0 4 2 0 2 -2 -2 4 5 2 0 -2 -1 2 5 0 1 0 0 1 2 -1 -2 3 0 2 2 3 3 0 -2 -1 1 1 4 1 -1 2 -2 -2 4 5 -1 1 0 1 3 1 -3 2 -3 0 -2 0 5 0 3 -1 -2 -3 4 -1 -2 3 1 3 1 -2 5 5 0 0 0 -2 5 2 -3 -3 4 -3 2 0 -3 5 -1 2 4 4 0 0 -3 -2 0 4 5 4 5 4 5 4 -3 4 -3 1 3 0 -3 1 -1 -3 4 4 3 1 1 -2 -3 0 -3 0 -3 -3 4 -3 3 5 1 3 1 3 4 -2 2 3 1 -1 3 4 0 5 3 4 2 2 2 4 -2 1 3 4 4 -2 1 -2 2 0 3 4 5 4 -2 -2 -3 3 3 0 1 0 4 3 0 -1 0 1 -2 5 1 5 2 -1 5 -2 3 -3 -3 -3 1 4 0 3 0 2 5 0 -3 0 4 3 2 -3 3 3 0 5 4 0 4 0 0 -3 -3 3 -2 0 -1 5 -3 -2 -2 1 -2 -3 3 -3 2 5 4 4 1 1 0 -1 0 4 0 5 1 2 0 1 -2 0 3 3 0 -3 3 4 0 0 -2 3 0 2 2 -3 0 2 0 -1 4 0 5 4 0 -3 2 5 -1 -2 0 1 0 4 -2 -2 4 0 -1 1 0 1 1 0 0 0 5 -2 3 0 1 3 4 3 -3 -1 4 -3 3 1 -1 1 5 1 5 3 -2 0 -3 4 1 -2 4 -3 1 2 -1 1 4 5 -1 4 0 2 5 -1 1 5 4 -3 0 4 3 2 1 1 2 2 4 0 5 3 5 -3 -1 0 2 4 1 3 -2 -1 0 -2 0 5 3 3 2 4 2 1 0 -3 0 -3 3 1 0 1 -1 0 4 5 5 -2 2 1 0 2 2 0 4 -3 -2 5 -1 1 -1 ::low() { return lo; } inline int XPlex::high() { return fnc - 1; } inline & XPlex:: operator [] (int idx) { if (!ch->actual_index(idx)) cache(idx); return *(ch->pointer_to(idx)); } inline & XPlex::low_element () { if (empty()) index_error(); return *(h`p*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4b, ,I`OMIKRON.CompilerN O'.HpN Ordnung: NpN-@Nr2 .o -@JfN .N ./ ./0<8r$<`NP ./ ./0<\FFZ**TZ Z!v"#$%&'() * +T,-./0142T3~456789  @OZA@H@will be useful, but WITHOUT ANY WARRANTY. No author or distributor accepts responsibility to anyone for the consequences of using it or for whether it serves any particular purpose or works at all, unless he says so in writing. Refer to the GNU CC General Public License for full details. Everyone is granted permission to copy, modify and redistribute GNU CC, but only under the conditions described in the GNU CC General Public License. A copy of this license is supposed to have been given to you along with GNU CC so you can know your rights and responsibilities. It should be in a file named COPYING. Among other things, the copyright notice and this notice must be preserved on all copies. */ #include ".XPPQ.h" int XPPQ::OK() { int v = p.OK(); v &= p.low() == 1; v &= Zeiten zur Geschwindigkeit der FPU-Demoprogramme (MATRIX): Matrix-Det. (50) Inverse (50) ATARI ST Interpreter: 54 sec 103 sec ATARI ST Compiler: 54 sec 103 sec ATARI ST IO-FPU: 33 sec 66 sec ATARI TT Interpreter: 16 sec 31.5 sec ATARI TT Compilat: 16 sec 31.5 sec ATARI TT FPU-Compilat: 0.82 sec 3.2 sec pchild = prchild; ++child; } } if (!(LE(*ph, *pchild))) { *pk = *pchild; pk = pchild; child <<= 1; } else break; } int par = child >> 2; while (par != 0) { * ppar = &(p[par]); if (!(LE(*ppar, *ph))) { *pk = *ppar; pk = ppar; par >>= 1; } else break; } *pk = *ph; p.del_high(); } Diskettenbefehle RStrukturbefehle S[6Variablentypen, Variablenverwaltung TString` v*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_44n ( ,*I`OMIKRON.CompilerN Ordnung: NpN-@Nr2 .o -@JfN .N ./ ./0<>rtPNP ./ ./0 /NROr/?/.A> /NONStart der Berechnung ...N 9-@& n>0(S@H2(SAHxNE4$$NDeterminante: NA2 (NN in N 9&N6$ <rNNN secN 9-@& nB0(S@H2(SAHx"n>4)SBH6)SCHN +mlhN Inverse in N 9&N6$ <rNNN secNpN@E8NP+mlhC8Nl6$NpNf,N MATRIX.DAT/?/.A> /NO+mlhNN-_-_-_NuCA/!A/!A/!Hz`-_-_"-_-_ Nu/. /. .rH4H´f iHP`LN1"_! #-_-_ Nu/. /.A8$X/ %?B`! /..Hz+mlhrIpHC2Nl6$LxRN+mlhp-@ ./ &@ . `NpN`pNE8NPN+mlhE8pNr f p-@.`p-@.+mlhp-@ ./ &@ .` ..rE8NNLN-@+mlh .Nx$n$R"J$. /$.ԟԂԂԂ4$$(..RC8Nl6$N NT-@.+mlhE8 ..Nr fR.+mlh .R-@o^&_ . R-@ o&_pNNuNpNhLX``  &J00D$>JVV !"#$%&' ()$*:+<,<-./01(2J3f45678 9:$;&& ^ @O ZA@J@@WV_Bit_Image LVs_Palette lVqp_Films Vqp_State wVsp_Style -Vsp_Save IVsp_Message  @Vqp_Error LV_Meta_Extents V_Write_Meta Vm_Filename Operatoren Mathematische Operatoren Vergleichsoperatoren Pointer/Adressoperatoren Prioritt der OperatorenMathematische OperatorenZeichen: Bedeutung: + Addition - Subtraktion * `p*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4b, ,I`OMIKRON.CompilerN O'.HpN Ordnung: NpN-@Nr2 .o -@JfN .N ./ ./0<8r$<`NP ./ ./0<\FFZ**TZ Z!v"#$%&'() * +T,-./0142T3~456789  @OZA@H@ inline int XPQueue::length() { return p.length(); } inline int XPQueue::OK() { return p.OK(); } inline void XPQueue::clear() { p.clear(); } #endif . Abhngig von der Vergleichsfunktion wird nach ganz unterschiedlichen Kriterien sortiert (z.B. aufsteigend, absteigend oder gro=klein ...)Beispiel: (auch im DEMO-Ordner) Ptr=&FN Sin2#(X#) PRINT "Wertetabelle von Sinusquadrat:" Werte_Tab Ptr,0#,1#,.1# PRINT "Wertetabelle von Cosinusquadrat:" Werte_Tab &FN Cos2#(X#),0#,1#,.1# ' A$= INPUT$(1) END ' DEF FN Sin2#(X#)= SIN(X#)* SIN(X#) DEF FN Cos2#(X#)= COS(X#)* COS(X#) ' DEF PROC Werte_Tab(Ptr_To_Df_Fn,Von#,Bis#,Schritt#) LOCAL X#=Von# ' WHILE X#<=Bis# PRINT X#,FN *Ptr_To_Df_Fn#(X#)' Vorsicht: hier X#=X#+Schritt#' kannh&*PT      NZT !">#D$T%l&t'z()*+,- ./01234 5 6 7 8 69 <: F; J< ^= b> f? j@ lA pB C D E FbGfH IJxK|vD\GEM.LIB das Programm beim AES anmelden* und eine virtuelle Workstation aufmachen * < @ d lp*JZ$6f n(rR$ GEM - Konstanten (nur eine Auswahl) ""! Rechteck-Konstanten fr Wind_Getl" Konstanten fr Wind_Updateh"l"p"t" Objekt Konstantenx" Offsets in der Objekt Struktur|"""""" " """" Object Types"""""""""""""  Object Flags""p""""" "@"" Object States"" """"" S)&*Dh<ԔR$(* resource set indicies for MENU *)L" (* menu tree *)P" (* STRING in tree MENU *)X" (* STRING in tree MENU *)\" (* STRING in tree MENU *)`" (* STRING in tree MENU *)Sl>p>t>x>|Iptx|Hp>t>pxt|&t|MENU.RSC?(A:\DEMO\GEM_DEMO\MENU.RSC? 9)U[2][Resource-Datei nicht|gefunden !|Bitte stellen Sie den|aktuelle Pfad um!][Abbruch]B wenn das Programm hier abbricht, dann sollten Sie mit "CHDIR" denG aktuellen Pfad auf das Verzeichnis umstellen, von dem Sie das Programm/ geladen haben (z.B. CHDIR "A:\DEMO\GEM_DEMO" )L>xIxI Men anmeldenx" n Event-Schleifep|>>>>>d>h>l?(T"Tt"TɁ T | txe^t grX )[1][Der Men-Eintrag "ffnen"3|kann auch mit Control-O|ausgelst werden.][Weiter] gv\ )[1][Der Men-Eintrag " Schlieen"3|kann auch mit Control-U|ausgelst werden.][Weiter] gTP )>[1][Demo-Programm zur Men-Abfrage|mit OMIKRON.Basic.][Weiter] g` x" ft>Hx>d>hIx D Men abmeldeno#, 6toPMlNmhnopqrst6uTvrwRI Object - Element Funktionen (greifen auf Elemente der Objekt-Stuktur zu)"x"x"x"x"x"x "x"x"x"x"x "xST .4FVPn|6Hxdh= 1. wird der Menu Baum durchsucht, ob er Eintrge enthlt die: Tasten bedienbar sind (die Strings enden dann auf ^_ )70"4LP7T"X"87\"d nur die beiden Shift-Tasten7`"Tdh" PRINT HEX$(Shift); HEX$(Scan) 4"x08"4}8T|"0T`X"8 X` 8 4} nicht disabled L"4~ @L|( Ende des nullterminierten Textes suchen L`  P"L| zweitletztes Zeichen auslesen P^U fr Control "L| h@ X|>0I F  0"x00PS><@Hx0. ermittelt das nchste Objekt nach dem "depth-E first"-Prinzip (erst bis zum ersten Blatt und dann die anderen ste)74"x07"4}7"4|}7"4} " ^x}00""x}"F beim Root Objekt abbrechen4Q;2Dz&6 Nachricht an eigene App.7"8hI) nicht whrend das Men unten ist"" Nachricht zusammen stellen " ">>I und an eigene App schicken8lIP82Fv6! Men-Nachricht an die eigene App>>>>" Titel aufblinken lassenPoP A((((2$.:JZjz$0@N^jx .<HVdr"2BRbr<FR^jv "2<FRdv&..>LZhr|GEMAPPL_INITV_OPNVWKTRUEFALSEBEG_UPDATEEND_UPDATEBEG_MCTRLEND_MCTRLSIZE_OF_OBJECTOB_NEXTOB_HEADOB_TAILOB_TYPEOB_FLAGSOB_STATEOB_SPECOB_XOB_YOB_WOB_HG_BOXG_TEXTG_BOXTEXTG_IMAGEG_PROGDEFG_IBOXG_BUTTONG_BOXCHARG_STRINGG_FTEXTG_FBOXTEXTG_ICONG_TITLENONESELECTABLEEDITABLERBUTTONLASTOBTOUCHEXITHIDETREEINDIRECTNORMALSELECTEDCROSSEDCHECKEDDISABLEDOUTLINEDSHADOWEDOKRSRC_LOADDUMMYPRG_EXITRSRC_GADDRV_CLSVWKAPPL_EXITTREEINDEXFNOBJC_ADRFNOB_NEXTFNOB_HEADFNOB_TAILFNOB_TYPEFNOB_FLAGSFNOB_STATEFNOB_SPECFNOB_XFNOB_YFNOB_WFNOB_HOBJPTRTYPIWIND_GETDESK_XDESK_YDESK_WDESK_HAVS_CLIPMENUMABOUTMOPENMCLOSEMQUITRSRC_FREEMENU_PTRMENU_BARMENU_BARMU_MESAGMU_KEYBDMESWHICHMXMYBUTTONSHIFTSCANCLICKSEVNT_MULTIMESENDETITLESMN_SELECTEDMENU_TNORMALGLOBALAPPL_WRITEWIND_UPDATEKEYBOARD_ACTIONTEXT_PTRSTIBISHMESHANDLEMY_HANDLEWRITE_MESWRITE_MENUFNNEXT_OBFIRST_OBNEXT_OBLAST_OBMES0MES3MES4MES5BUFTITLEENTRYWF_WORKXYWHDEFAULTBEXITBhes RETURN, sondern auf ein RETURN (wie es in mehr- zeiligen Funktionen verwendet wird, siehe DEF FN) gestoen.15 String too longDie Lnge von Zeichenketten (Strings) ist auf 32766 Zeichen begrenzt.16 Formula too complexZu ko(* resource set indicies for MENU *) CONST menu = 0; (* menu tree *) mabout = 7; (* STRING in tree MENU *) mopen = 16; (* STRING in tree MENU *) mclose = 17; (* STRING in tree MENU *) mquit = 19; (* STRING in tree MENU *) TBITSET TTP *t)34TBITSTRICC x7~L4TCOMPLEXCC x7~P4TCURSES CC AlR4TTDEQUE CC 3S4 TEST-HELCC 1(U4 TEST BYE x7~W4TEST HEL x7~X4D TEST SHE x7~Z4TEST0 H x7~[4TFILE CC w7~\41TFIX CC R_4K TFIX TTP -a4TFIX16 CC b{4tTFIX16 TTP u)}4+~TFIX24 CC b4YTGWRAPPECC (>4(TINTEGERCC w7~4&TINTEGERTTP q)4TLIST CC M34 TLLIST CC I34TMAP CC 37TOBSTACKCC w7~76TPLEX CC >7P3&&&&&$&& Desk Datei ber Men-Demo ... ^A------------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 ffnen ^O Schlieen ^U----------------- Beenden ^Q1PP $ +P3 K e z   &gefhrt werden, obwohl keine Schleife offen und kein Unterprogramm aufgerufen ist.46 Use EXIT TO in functionsMehrzeilige Funktionen knnen nicht mit einfachem EXIT verlassen werden. Verwenden Sie stattdessen EXIT TO.47 NotMENUMABOUTMOPENMCLOSEMQUITPP "8Oe|___CTOR_LIST_____DTOR_LIST____GLOBAL_$I$stream_cc__GLOBAL_$I$builtin_cc__GLOBAL_$D$stream_cc__GLOBAL_$D$builtin_cc58 File already existsEine Datei gleichen Namens exisitiert bereits in dem angegebenen Verzeichnis. Bevor Sie eine neue Datei ffnen knnen, mu eine Datei gleichen Namens gelscht werden. Der Fehler kann auch auftreten, wenn eine Datei schreibgeschtzt ist und neu erffnet werden soll. (Zum Bsp. bei SAVE)59 File type mismatchEine Datei hatte den falschen Typ. Dieser Fehler kann auftreten, wenn Sie ein Programm mittels LOAD einladen wollen, das kein BASIC-Programm ist, bzw. ein Programm mittels EXEC starten wollen, das nicht ausfhrbar ist.60 Bad diskDie eingelegte Diskette ist defekt. Verwenden Sie eine andere.61 Disk fullAuf der Diskette oder Harddisk ist nicht mehr genT28:BFreies ST-RAM: Freies TT-RAM: o5*BZ  extended Allocate Memory Modus: 0 nur ST-RAM 1 nur TT-RAM" 2 beides, ST-RAM bevorzugt" 3 beides, TT-RAM bevorzugt7 c D,4 QoP$.AMOUNTMODUSFNMXALLOCADRl/lib/gcc-ld++\" -DCRT1X=\"/usr/local/lib/crt1+.o\" test.shell.cc -o test.shell g++ test.hello.o -o test0 g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c tFile.cc g++ tFile.o -o tFile g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c tObstack.cc g++ tObstack.o -o tObstack -lg++ -lm g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c tString.cc g++ tString.o -o tStringl$t26j, \ `   >B. Neuer AES-Aufruf zum Setzen der Fensterfarben1 zustzliche Wind_Set Konstanten (Field/Element):"% setzen der Farben bei einem Fenster" setzen der Standard-Farben "$"(","0"4"8"<"@"D" H" L" P" T" X"\"`"d"h"; Aufruf mit Wind_Set_(W_Id,W_Field,W_Element,Tcolor,Bcolor) W_Id: AES-Handle des Fensters W_Field: siehe oben W_Element: siehe obenH Tcolor/Bcolor: Farbe fr Window topped und background (-1 -> no change)2&<bf6pFeil4PoP >P\ht&4DRbp~$2WF_COLORWF_DCOLORWE_BOXWE_TITLEWE_CLOSERWE_NAMEWE_FULLERWE_INFOWE_DATAWE_WORKWE_SIZERWE_VBARWE_UPARROWWE_DNARROWWE_VSLIDEWE_VELEVWE_HBARWE_LFARROWWE_RTARROWWE_HSLIDEWE_HELEHINTINFNWIND_CHECKGLOBALADDRININTOUTADDROUTWIND_SET_nst -I../g++-include -I. -fstrength-reduce -c int.AVec.cc genclass int val Plex g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c int.Plex.cc genclass int val FPlex g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c int.FPlex.cc genclass int val XPlex g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c int.XPlex.cc genclass int val RPlex g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c int.RPlex.cc genclass int val MPlex g++ -g -O -fchar-charconst -I../g++-include -I. -fstrength-reduce -c int.MPlex.cc gencl"HJnr " H PX`d dl| !"#$%F DEMO-Programm mit Funktionen zum ansprechen der erweiterten seriellen Schnittstellen auf ATARI STE/TT Konstanten fr BIOS Aufrufe""("0"" Device Nummern der Schnittstellen8"; Standard Serielle Schnittstelle (wie auch im ST vorhanden)" heit manchmal auch MODEM1<"@"D"  6 prft, ob bereits ein Zeichen zu Einlesen bereitsteht7 f 4 Q liest ein Zeichen ein7f4Q,7 prft, ob im Moment ein Zeichen ausgegeben werden kann7 f 04 Q6$ gibt ein Zeichen ausf(PoP&%%(0<NXfxDEVSTATBCONSTATFNINCHBCONINFNIN_STATUSOUTBCONOUTFNOUT_STATUSBCOSTATMODEMMODEM2SER1SER2NT ARCSIN(1)1 DEG2 PRINT ARCSIN(.5) 1.5707963 30ARCTANTyp: FunktionSyntax:ARCTAN()Erklrung:Berechnet den arcus tangens des numerischen Ausdrucks. ARCTAN ist identisch mit ATN. Das Ergebnis ist abhngig vom eingestellten Winkelmodus (siehe DEG, RAD).Beispiel:0 PRINT ARCTAN(-1)1 DEG2 PRINT ARCTAN(1)-.78539816 45ARSINHTyp: FunktionSyntax:ARSINH()Erklrung:Berechnet den area sinus hyperbolicus des numerischen Ausdrucks.Beispiel:0 PRINT ARSINH(-1)-.88137359ARTANHTyp: FunktionSyntax:ARTANH()Erklrung:Berechnet den area tangens hyperbolicus des numerischen Ausdrucks. Der numerische Ausdruck muH $48<PZn ~ 8OTEST.DAT8ITEST.DAT .poP+++++ ABCdd(int x[], intBag& a) { for (int i = 0; i < SIZE; ++i) a.add(x[i]); } #include MLCG randgen; void permute(int x[]) { for (int i = 1; i < SIZE; ++i) { int j = randgen.asLong() % (i + 1); int tmp = x[i]; x[i] = x[j]; x[j] = tmp; } } void makenums() { for (int i = 0; i < SIZE; ++i) nums[i] = i + 1; } void makeodds() { for (int i = 0; i < SIZE; ++i) odds[i] = 2 * i + 1; permute(odds); } void makedups() { for (int i = 0; i < SIZE; i += 2) dups[i] = dups[i+1] = i/2 + 1; permute(dups); } void printBag(intBag& a) { int maxprint = 20; cout << "["; int k = 0; for (Pix i = a.first(); i != 0 && k < maxprint; a.next(i),++k) cout:@P   " 0 <HJNX\flp*04BF V!"#<<< Generell sind bei Zuweisungen vier neue Operatoren erlaubt: += -= *= /=B Es drfte nicht schwer zu erraten sein, was diese Operatoren tun.J ACHTUNG: Zur Zeit (02.07.91) sind diese Operatoren im COMPILER noch nicht implementiert. " &  "&" `b cM Diese Befehle ermglichen besonders im COMPILAT eine wesentliche Optimierung6 Auerdem ist diese Schreibweise viel bersichtlicher.," "d" P]]^" `: der komplizierte linke Ausdruck wird nur einmal ermittelt C Es ist sofort klar, da auf Feld() draufaddiert wird.J Man mu nicht erst rechte und linke Seite vergleichen.oP *6 NIFAKTORJFELDINDEX(!c.contains(a(i))); for (i = b.first(); i != 0; b.next(i)) c.del(b(i)); assert(c.empty); assert(a.OK()); assert(b.OK()); assert(c.OK()); generictest(a, b, c); } #include "int.SLBag.h" void SLtest() { intSLBag a; add(nums, a); assert(a.length() == SIZE); for (int j = 1; j <= SIZE; ++j) assert(a.contains(j)); intSLBag b; add(odds, b); assert(b.length() == SIZE); intSLBag c; add(dups, c); assert(c.length() == SIZE); intSLBag d(a); add(nums, d); assert(d.length() == SIZE*2); cout << "a: "; printBag(a); cout << "b: "; printBag(b); cout << "c: "; printBag(c); cout << "d: "; printBag(d); for (j = 1; j <= SIZE; ++j) assert(d.nof(j) == 2); d.del(1T8<>Bb J' 8ATEST.DATDies ist ein Testo Z5U falls File not found8O C:\TEST.DAT Datei neu erzeugenO&J'  andere Fehler ausgebenoP  -----FEHLER(i))); for (a.next(i); i != 0; a.next(i)) assert(c.contains(a(i))); c.add(a(a.first())); for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i))); for (k = b.first(); k != 0; b.next(k)) c.add(b(k)); for (i = b.first(); i != 0; b.next(i)) assert(c.contains(b(i))); for (i = a.first(); i != 0; a.next(i)) assert(c.contains(a(i))); for (k = a.first(); k != 0; a.next(k)) c.remove(a(k)); for (i = a.first(); i != 0; a.next(i)) assert(!c.contains(a(i))); for (i = b.first(); i != 0; b.next(i)) c.del(b(i)); assert(c.empty); assert(a.OK()); assert(b.OK()); assert(c.OK()); g`(L$ `d p ~ J' o,)[2][\ |in Zeile[][Nochmal|Weiter|Abbruch]-OOO'Fataler Fehler erzwang Programmabbruch:\ in Zeile[ooP FEHLERF_BUTFATAL.OK()); assert(b.OK()); assert(c.OK()); generictest(a, b, c); } #include "int.CHBag.h" void CHtest() { intCHBag a(SIZE); add(nums, a); assert(a.length() == SIZE); for (int j = 1; j <= SIZE; ++j) assert(a.contains(j)); intCHBag b(SIZE); add(odds, b); assert(b.length() == SIZE); intCHBag c(SIZE); add(dups, c); assert(c.length() == SIZE); intCHBag d(a); add(nums, d); assert(d.length() == SIZE*2); cout << "a: "; printBag(a); cout << "b: "; printBag(b); cout << "HL$$(LNRV^ JW3Bitte HELP-Taste drcken  hier steht ihr Hauptprogrammo"Die Hilfe Taste wurde gedrckt"4oPHILFEENDETASTE; makedups(); start_timer(); cout << "VHtest\n"; VHtest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; start_timer(); cout << "CHtest\n"; CHtest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; start_timer(); cout << "SLtest\n"; SLtest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; start_timer(); cout << "XPtest\n"; XPtest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; } Ausdrcken darf ein "L " voran gestellt werden, um den betreffenden Parameter als LONG zu bergeben. Ansonsten wird immer ein WORD bergeben.`0\L26Z\`dl x J#3%Bitte einige Tasten drcken ESC->Ende  hier steht ihr Hauptprogrammo" ""^" Shiftbits:  Scancode:ASCII: "4oP  !!!!!.<HTASTEENDETASTESHIFTBITSSCANCODEASCII]; x[j] = tmp; } } void makenums() { for (int i = 0; i < SIZE; ++i) nums[i] = i + 1; } void makeodds() { for (int i = 0; i < SIZE; ++i) odds[i] = 2 * i + 1; permute(odds); } void makedups() { for (int i = 0; i < SIZE; i += 2) dups[i] = dups[i+1] = i/2 + 1; permute(dups); } void printBag(intBag& a) { int maxprint = 20; cout << "["; int k = 0; for (Pix i = a.first(); i != 0 && k < maxprint; a.next(i),++k) coutP R8rv .>NRZ^b<@~ !"#$%f&j'()* +N,R-./01>2B3F4H56/FPU28"VX<"WY Vorsicht: Funktioniert6 nicht, wenn Textausgabe in ein Fenster umgelenkt ist.f Cursor aus@"@\@"@H@"@p@"@l@"@P@"@ `@"@ t@"@ x@"@|@"@@"@@"@L",)([2][Logarithmische|X-Achse][ LOG | LIN ],-?",SinusL>L>VLWL>[ CosinusL>L>VLWL>\[ TangensL>L>VLWL>  H[  ExponentialL>L>VLWL>333p[  LogarithmusL>L>VLWL>νտ l[ Sinus HyperbolicusL>L>VLWL>P[ Cosinus HyperbolicusL>L>VLWL>`[ Tangens HyperbolicusL>L>VLWL>t[  Arcus SinusL>L>VLWL>x[  Arcus CosinusL>L>VLWL>|[  Arcus TangensL>L>VLWL> [ Area Tangens HyperbolicusL>L>VLWL>pp[ o2 @6 7 "o ESC-TasteP~647D8d9r:;<=>?@ABC,D0EDFXG^HIJKLMNOPQ RS,TLUTVjWp6$( 04TX77@Ddh"TXʹ7"7" R00" =p 44" =p 40 " d"40ƹ ƥd"04ʹ "Th($( -U$( $( CX"$( @"0D"@\"Dhh"$$ D"@\"Dh@bd @`d $(<,PoPCCTTTTT &.6 >LZhRvf,@zXYWHPTRX1Y1LRXYOUSCXSCYFNSINUSY0TASTETCELL_WCELL_HRANDFNCOSINUSFNTANGENSFNLOGARITHMUSFNEXPONENTIALFNSINUS_HYPFNCOSINUS_HYPFNTANGENS_HYPFNARCUS_SINUSFNARCUS_COSINUSFNARCUS_TANGENSFNAREA_TANGENS_HYPPLOT LINLOGLOG_XLOG_YBUTAcout << "b: "; printBag(b); cout << "c: "; printBag(c); cout << "d: "; printBag(d); for (j = 1; j <= SIZE; ++j) assert(d.nof(j) == 2); d.del(1); assert(d.nof(1) == 1); d.del(1); assert(d.nof(1) == 0); d.remove(2); assert(!d.contains(2)); for (Pix l = c.first(); l; c.next(l)) d.remove(c(l)); assert(d.length() == SIZE); c.clear(); assert(c.empty()); for (Pix k = a.first(); k != 0; a.next(k)) c.add(a(k)); for (k = a.first(); k != 0; a.next(k)) assert(c.contains(a(k))); c.del(a(a.first())); Pix i = a.first(); assert(!c.contains(a(i))); for (a.next(i);ZXJ&@BNbfv~ Dieser Text erscheint zentriertOMIKRON.SOFTWAREo6ڐXP6 7,"  PoP 0>FZENTRIERETEXTANZAHL_LEERZEICHENGESPERRTI assert(b.OK()); assert(c.OK()); generictest(a, b, c); } double return_elapsed_time ( double ); double start_timer ( void ); main(int argv, char** argc) { if (argv > 1) { SIZE = abs(atoi(argc[1])); SIZE &= ~1; } else SIZE = 100; nums = new int[SIZE]; odds = new int[SIZE]; dups = new int[SIZE]; makenums(); makeodds(); makedups(); start_timer(); cout << "Splaytest\n"; Splaytest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"J@prN0~ < @ Z ^ |Llp !"#$%2&>'D(T)h*p+t,-./012345J Mit dem Operator '&' knnen sie - wie unter C - den Zeiger auf ein ObjektG ermitteln. Mgliche Objekte sind: Variablen, Felder und FUNKTIONEN !!!H Die Benutzung der Zeiger funktioniert mit dem Operator '*', der gefolgtH von der Zeigervariable auf ein Objekt zugreift. Welcher Typ gemeint istJ mu dann - genau wie bei einer normalen Variable - noch mit einem Postfix angegeben werden.> Allerdings werden im Interpreter nur relative Zeiger erzeugt,G der Zugriff kann also trotzdem nicht direkt erfolgen, sondern mu ber den Operator '*' laufen. Beispiel: Feldbergabe 333 G 333Q&"]][8 Zeiger auf Matrix! ermitteln, die Indices drfen fehlen5 da sowieso immer nur der Basiszeiger ermittelt wird. > Matrix einlesen># Matrix auf dem Bildschrim ausgeben"zo6  7$(:$""(" D$(\ ( $46 7$($(" (. Spalte (h$"$ . Zeile: 4("  ##.#### ^^^$(\ ( $4oP ++>>>>>l(:DLT\dMATRIXPTR_MATREAD_MATRIXPRINT_MATRIXPTRMNIJA = atoBitSet("1111000011110000111100001111000011110000"); cout << "e = " << e << "\n"; assert(e.OK()); assert(e.count() == 20)nxNN0~ < @ ^ b jv~J Mit dem Operator '&' knnen sie - wie unter C - den Zeiger auf ein ObjektG ermitteln. Mgliche Objekte sind: Variablen, Felder und FUNKTIONEN !!!H Die Benutzung der Zeiger funktioniert mit dem Operator '*', der gefolgtH von der Zeigervariable auf ein Objekt zugreift. Welcher Typ gemeint istJ mu dann - genau wie bei einer normalen Variable - noch mit einem Postfix angegeben werden.> Allerdings werden im Interpreter nur relative Zeiger erzeugt,G der Zugriff kann also trotzdem nicht direkt erfolgen, sondern mu ber den Operator '*' laufen. Beispiel: Einzelvariablen""[ " <$" \`$$ Quadratsumme ermitteln. $,"Das ist ein Beispieltext0",[0\"zooP) H& 0@NISUMMEPTR_SUMTEXTPTR_TEXTA assert(h[64] == 0); assert(h[66] == 0); h.clear(2); cout << "h.clear(2):\n" << h << "\n"; assert(h[2] == 0); assert(h[3] == 1); assert(h[11] == 1); h.invert(11,20); cout << "h.invert(11,20):\n" << h << "\n"; assert(h[11] == 0); h.set(21,30); cout << "h.set(21,30):\n" << h << "\n"; assert(h[21] == 1); h.clear(31,40); cout << "h.clear(31, 40):\n" << h << "\n"; assert(h[33] == 0); cout << "h.test(0,5) = " << h.test(0, 5) << "\n"; cout << "h.test(31,40) = " << h.test(31, 40) << "\n"; cout << "set bits in e:\n"; for (p = e.first(); p >= 0; p = e.next(p)) { assert(e[p] == 1); cout << p << " "; } cout << "\n"; cout << "clear bits in g (reverse order):\n"; for (p = g.last(0); p >= 0; p = g.previous(p, 0)) { dxN0~ < @ X \ j  6LPhtz J Mit dem Operator '&' knnen sie - wie unter C - den Zeiger auf ein ObjektG ermitteln. Mgliche Objekte sind: Variablen, Felder und FUNKTIONEN !!!H Die Benutzung der Zeiger funktioniert mit dem Operator '*', der gefolgtH von der Zeigervariable auf ein Objekt zugreift. Welcher Typ gemeint istJ mu dann - genau wie bei einer normalen Variable - noch mit einem Postfix angegeben werden.> Allerdings werden im Interpreter nur relative Zeiger erzeugt,G der Zugriff kann also trotzdem nicht direkt erfolgen, sondern mu ber den Operator '*' laufen. Beispiel: Funktionen"[Wertetabelle von Sinusquadrat:8> Wertetabelle von Cosinusquadrat:8["zo""68(4<7"( 4\) Vorsicht: hier kann compilert keine Typ-"<1 prfung mehr durchgefhrt werden4oP  ,6F\jXFNSIN2PTRFNCOS2VONBISWERTE_TABSCHRITTPTR_TO_DF_FNALesen von Binr-Dateien, welche Integer-Wort-Zahlen nicht in ihrer lesbaren ASCII-Darstellung, sondern in ihrer binr Darstellung enthalten.Beispiel:PRINT CVI("12")PRINT CVI( MKI$(12)) 12594 12CVILTyp: FunktionSyntax:CVIL()Erklrung:Die ersten 4 Zeichen des Stringausdrucks werden in eine Integer-Langwort-Zahl umgewandelt. Umkehrfunktion zu MKIL$.Die Funktion dient in erster Linie f@\N"*HV`f  grtes Element suchen "& Geben Sie sechs Zahlen ein"  ][ nur die ersten 6o 7"&" "\ 4QoP-----&.6DWERTEFNGET_MAXPOINTERNIMAXIMUM(b | a) at line %d of `%s'. Failed assertion (a & b) == (b & a) at line %d of `%s'. Failed assertion (a | (b | c)) == ((a | b) | c) at line %d of `%s'. Failed assertion (a & (b & c)) == ((a & b) & c) at line %d of `%s'. Failed assertion (a & (b | c)) == ((a & b) | (a & c)) at line %d of `%s'. Failed assertion (a | (b & c)) == ((a | b) & (a | c)) at line %d of `%s'. Failed assertion (a & (a | b)) == a at linTX\H&4Pb ####.## # # # # #"+**.########,## DM"6yQ.*0### Millionen ### Tausend und ### DM, ## PF- ##.##### ^^^^  ###### DMo 7" 4ɻQoP-----(6BBETRAGBETRFNROUNDSTELLENSCALENHXOJg / NHXOJfHzHxHz2N N}hC$IHx&B/. /.GYN$$C(IHx&//./N$(($B gHyNHXOJg / NHXOHnEC&IHx&B/./. KYN&&C(IHx&///N&((&$KB gHyNHXOJg / NHXOtԎ/NU&PO$BB g /NHXOJg / NHXOEB g /NHXOJg / NHXOJfHzHxHz N NH(48>B R ^ .v'VWSCREEN 00WVSCREEN 1D STOP ' Wenn die STOP-Anweisung drin ist sollten Sie im Direkt-Modus; einmal die beiden Shift-Tasten gleichzeitig drckenSCREEN 0SCREEN 1o6"z4oP TA/ NHXOJfHzHx!HzN N}hCp&IB/.IYPNPO&&Cl$IB/. NPO$$Ct(IHx|///NY$(($B gHyNHXOJg / NHXOEpB g /NHXOJg / NHXOEtCx&I//NYP$PO&&$B gHyNHXOJg / NHXOHnxCh$IHx&B/. /.NY$$/ NU&POB g /NHXOJg / NHXOExB g 4`dF4      Xvx|D |!"#$%&C Dieses Programm zeigt die Speicheraufteilung eines Basic-ProgrammsG an und informiert zustzlich ber alle mit MEMORY angelegten Speicher- blcke.G Diese Informationen erlauben aber nicht immer eine 100%ige AbschtzungJ des Speicherbedarfs; insbesondere Compilate knnen abweichenden Speicher-K bedarf aufweisen, da dort die internen Strukturen nicht immer gleich sind."d]"]o67 "vG: "-D b ~b ~  EH ZeilenNr. Basic-PrgVARPTRs VariabelnReservedArrays  DateibufferStrings467"3Anzeigen aller mit MEMORY angelegten Speicherblcke"]v! anlegen eines Memoryblocks damit"6 wir hier die Adresse des letzten finden l~) und nun hangeln wir uns bis zum Anfang$s :~s"~" Insgesamt  angelegte Blcke4oPP$,XB`SHOW_BASIC_MEMAOFFSETASEGMENT_NAMESSHOW_MEMIBJfHz Hx3HzN N}hE(B g /NHXOJg / NHXOEB g /NHXOJg / NHXOE B g /NHXOJg / NHXOEB g /NHXOJg/ NHL< N^NuBitSet tests: a = Failed assertion a.OK() at line %d of `%s'. b = Failed assertion b.OK() at line %d of `%s'. Failed assertion b[10] == 1 at line %d of `%s'. Failed assertion b.count() == 1 at line %d of `%s'. Failed assertion b[0] == 1 at line %d of `%s'. Failed assertion b.count() == 2 at line %d of `%s'. 10101010HD<F J NB vier Prozeduren, die einen einfachen MEMORY-Dump erzeugen knnen.B Sehr ntzlich, wenn man fter mit Strukturen arbeitet, die direkt< im Speicher reprsentiert sind und nicht als Basic-Objekte.)&BNf|: Wartet auf Taste und liefer true, wenn ESC gedrckt wurde7Taste drcken ... "" 4 4Q",08Pn~  $(4F67 $(" $" $ $ , : & " |,  D|& " |,  $"$  " |0 "("(P)&>FR`z,48. ergibt eine formatierte Hex-Zahl fester Lnge7"4s""084Q)&FX`dln0: ergibt das Zeichen selbst oder . (wenn nicht darstellbar)  4 4.QoP5===== &2<JT\dlxFNTASTEAATRUEFALSEADDRWIEVIELSHOWJITFNSHEXFNCHRHL line %d of `%s'. Failed assertion h[66] == 0 at line %d of `%s'. h.clear(2): Failed assertion h[2] == 0 at line %d of `%s'. Failed assertion h[3] == 1 at line %d of `%s'. Failed assertion h[11] == 1 at line %d of `%s'. h.invert(11,20): Failed assertion h[11] == 0 at line %d of `%s'. h.set(21,30): Failed assertion h[21] == 1 at line %d of `%s'. h.clear(31, 40): Failed assertion h[33] ==vhH:   0 Zl   7 ldt und zeigt ein Bild (Bildschirmformat "*.PIC") an.K Kompiliert wird zustzlich die Kommandozeile ausgewertet und kann SHOW_PIC, als Anwendung fr "*.PIC" Dateien anmelden. "b@~f / |,c"B$"~b~cG$^$_"Aɀ:܃\*.PIC*"\ۃPRINT Path$,A$: STOP- < oF"((" |" (| (< ooP9AAAAAD$08AOKDRIVEPATHADRICMDLNGpv (j|  $(8Z\/FPU20fg00:2Nur in der hohen ST-Auflsung (640x400) lauffhig.." ""  "$"ag"hP "-0",>$Ɛ  h1o6,((P"4oP FR*8ZfrXWHMDFTV_ADRYDRAW_V_RES$$/ HzNHyNPO/NfhPO&B g /NHXOJg / NHXO/GPN Hz/C$IHx-B/./.NY$$/ HzHyNPO/NfhPO&B g /NHXOJg / NHXO/pv$(2t "&.2Bdf/ FPU2; FLAGS 70fg00:2Nur in der hohen ST-Auflsung (640x400) lauffhig.." ""  "$"ag"hP "-0",>$Ɛ  h1o6,((P"4oP FR*8ZfrXWHMDFTV_ADRYDRAW_V_RES}hHntHnNUPOJfHzƦHxHzN N}hHnHntNUPOJfHzvHxHzN N}hHntHnNUPOJWgHz@HxHzN N}hHnHntNVPOJgHzHxHz`t*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4@,I`OMIKRON.CompilerN O'.HpNpNHNNfN+mlhp?NT-@HxHzNN N}hHnNfXOJfHzHxHzN N}hHnxNfXOJfHzHxHzܾN N}hHnNfXOJfHzHxHzvN N}hHntNfXOJfHzHxHzwN N}hHzHyNPEtBPO g /NHXOJg / NHXOExB g /NHXOJg / NHXOEB g /NHXOJg / NHXOEB g /NHXOJg / NHXOEB g /NHXOJg / NHXOEB g /NHXOJg / NHXOEB g /NHXOJg / NHXOEB g /NHXOJg / NHXOEB g /NHXOJg/ NHL<`~t*oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4@,~I`OMIKRON.CompilerNpNHNNfN+mlhp?NT-@ENDE : F` P "  oP ;;;;;TEXTENI/ BHyENBHyNBHyN$nN^NuNV/ /9BHyNL/9:HyEN/96HyN$nN^NuIllegal bit indexillegal bit indexBitSetNV/. Hz y NN^NuRequested length out of rangeNVH>0&n*. (.&.f˶g B2+nT | Іtc㊰bY cHzHzl y NPO/NG$@// N~H ]5@ `$K45nJg" \g///N~, gg/ NH L |N^NuNVH80&n&. gfV x Єtc㊰bY cHzHz y NPO/NG$@// N~H ]5@Bj" @Rdhpx  $nJ|~"&6:h !"#$%&'4(^)*+,-./01234.5T6`7d8l9z:;<=>?@A$B0C4D<EJFXGfHtIJKLMNOP QR(S6TDURVXWtXYZ[\]^_`a"b(cDdnefghijklmno p @q hr ts xt u v w x y z { | } <~ H L T b n z     * 6 B N Z ` |  " ( D l  4 J P p Bj (6Xz8DHJZr26:pp/ FPU2; FLAGS 7* Noch dazu: Modify / ASCII <-> LF Wandlung"yV<""""hr"3 Testmessung zur Anpassung der Berechungshufigkeit " " " " " hŧɸ" FDieses Programm fhrt Zeitmessungen an verschiedenen Funktionen durch.IDie Ergebnisse werden in einer Datei protokolliert und, falls eine solche?Datei schon existierte, mit den Werten dieser Datei verglichen.EMan kann das Programm so in verschiedener Umgebung (mit FPU oder CPU).rechnen lassen und die Ergebnisse vergleichen.Die Zeitschleifen werden je p-malq durchlaufen Taste ..."z@"H*.TXT`" ST_COMP.TXT0fVergleichsdatei whlen ...,+@`D-D`"@`\`" SPEED_V.TXT`8I` "%Vergleichsdatei nicht gefunden8O SPEED.TXT"hF" " " " " ("h( sec/100000 SIN-Berechnungen( sec/100000 SIN-Berechnungen 4"hF" " " " " ("h( sec/100000 COS-Berechnungen( sec/100000 COS-Berechnungen 4"hF" " " " " ("h( sec/100000 TAN-Berechnungen( sec/100000 TAN-Berechnungen 4"hF" "  "  "  " ("h( sec/100000 SINH-Berechnungen( sec/100000 SINH-Berechnungen 4"hF" "  "  "  " ("h( sec/100000 COSH-Berechnungen( sec/100000 COSH-Berechnungen 4"hF" "  "  "  " ("h( sec/100000 TANH-Berechnungen( sec/100000 TANH-Berechnungen 4"hF" "< "< "< "< ("h( sec/100000 ARCSIN-Berechnungen( sec/100000 ARCSIN-Berechnungen 4"hF" "< "< "< "< ("h( sec/100000 ARSINH-Berechnungen( sec/100000 ARSINH-Berechnungen 4"h>" "< "< "< "< ("h( sec/100000 SQR-Berechnungen( sec/100000 SQR-Berechnungen 4"h>" " " " " ("h( sec/100000 EXP-Berechnungen( sec/100000 EXP-Berechnungen 4"h>" " " " " ("h( sec/100000 LN-Berechnungen( sec/100000 LN-Berechnungen 4"h" "* der Vorteil durch FPU Register kommt hier " zum Tragen " " ("h(! sec/100000 FORMEL1-Berechnungen(! sec/100000 FORMEL1-Berechnungen 4"h" " " " " ("h(! sec/100000 FORMEL2-Berechnungen(! sec/100000 FORMEL2-Berechnungen 4"h" " T " T " T " T ("h(! sec/100000 FORMEL3-Berechnungen(! sec/100000 FORMEL3-Berechnungen 4 Test beendet $ SPEED_V.TXT# SPEED.TXT SPEED_V.TXT"zo64C,0",8"0(8!8"8" langsamer" schneller pFaktor8ɸ qP)&7 89$:0;6<>7$8F$"p4$Q5&4@NbvH liefert den Standardpfadnamen7@LPcL@"BP"@~b~cG,PL@"LAɀ:@@܃\4@Q)&6nz\@X& entfernt Jokerzeichen am Pfadende und5 hngt den Dateinamen an7"@"\ۃ"X4QoP "08BP\dnx NIABTAPFNEXISTVERGLAZEITVZ1VERGLEICHEFA1PATHOKFNGET_PATHDRIVEADRNAMEFNGET_NAMENCNuNVH $n$. Jg /*NHXOJg$/Nt @HhNG%@//NX`BLN^NuNVH $nJVft `J f B/N LN^NuNVH $nJVft `/. /./N LN^Nu error in File NVpH 0&n$KJg0/N$XOJgr `rê /NNAJk.LNN4ECAN'T LOAD BASLIB_4"x,I`OMIKRON.CompilerN O'.Hp?J@ABCDEFG H I &J 8K L M N O P Q 4R DS TT dU tV W X Y RZ b[ b\ l] ^ _ ` a b c 0d ne f g h i j k l m n "o ~p q rst u"vRwxyz{P|}~$4F(>N^n~(Xhhr6r.Nn0dtt~T z\($Bh|2>>vvR`#륥饥F`CfXD @ gg 9Nf < %@/N~`%@$XO5C Jg Hx/BHxBN.%@r`B// nNB4/ Nx L N^NuNV/Bl4 y Jg"p0io i/ PNXORm$.N^NuNV n "P N^NuNV-nHnHzHn/. N nBN^NuNV-nHnHz/./. N nBN^NuNV. /. HH/NN^NuNV/.HzHn/. NN^NuNV/.Hz/./. NN^NuNVH $n$. lp`2*g(Joc//*$NT%@$%B ` *`BLN^NuNV n(gp`BN^NuNV n(gp`BN^NuNVHn/. HypHy~/.NN^NuNVHn /.HypHy~/9BNN^NuNV/./. HypHy~/.NN^NuAttempt to make a string stream! NVHz/96NtN^ 11.3125 sec/100000 SIN-Berechnungen 11.25 sec/100000 COS-Berechnungen 11.1875 sec/100000 TAN-Berechnungen 11.875 sec/100000 SINH-Berechnungen 11.6875 sec/100000 COSH-Berechnungen 11.6875 sec/100000 TANH-Berechnungen 11.75 sec/100000 ARCSIN-Berechnungen 25.375 sec/100000 ARSINH-Berechnungen 9.875 sec/100000 SQR-Berechnungen 11.25 sec/100000 EXP-Berechnungen 11 sec/100000 LN-Berechnungen 33.25 sec/100000 FORMEL1-Berechnungen 134.5 sec/100000 FORMEL2-Berechnungen 36.25 sec/100000 FORMEL3-Berechnungen ŶnB3RKzlBBB/./.NJo/ENXO///./.N-@-A/./.N~PO$/NXO///./.N^-@-A 3 nJlB3`Jo& RRKzl\zl&Jo.˶o30RKnB LNAJk.LNN4ECAN'T LOAD BASLIB_4 "($, I`OMIKRON.Compiler=|-|Ň݀-|+k=|-|Ӏ-|"-|Ȁ: 9-@Bp-@> .:/ &@ .>`lA2 (NE 4$$A2 (NE 4$$A2 (NE 4$$A2 (NE 4$$ .>R-@>o&_$<v 9BNN6$ <rN,$<vN|6$ <rNN4N-@F .:N6$H0 <rH .FN6$LNL N,N-@:NFDieses Programm fhrt Zeitmessungen an verschiedenen Funktionen durch.NNIDie Ergebnisse werden in einer Datei protokolliert und, falls eine solcheNN?Datei schon existierte, mit den Werten dieser Datei verglichen.NNEMan kann das Programm so in verschiedener Umgebung (mit FPU oder CPU)NN.rechnen lassen und die Ergebnisse vergleichen.NrNNDie Zeitschleifen werden je pN .:NN-malq durchlaufenNN Taste ...NpN@E^NP+mlhN6$N*.TXTNEjNP+mlhN ST_COMP.TXTEvNP+mlhNprNNNfVergleichsdatei whlen ...N+mlhNAjCvN-@R+mlhNpRf6CvNl/?CjNl/?NO EvNP+mlh` N SPEED_V.TXTEvNP+mlhCvNl/?N \+mlhJg2rIpHCvNl6$LxRN+mlhp-@J`*NVergleichsdatei nicht gefundenNrOpHN SPEED.TXT6$LxRN 9-@Bp-@> .:/ &@ .>`lA2 (NE 4$$A2 (NE 4$$A2 (NE 4$$A2 (NE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NE 4$$A2 (NE 4$$A2 (NE 4$$A2 (NE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NE 4$$A2 (NE 4$$A2 (NE 4$$A2 (NE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (N E 4$$A2 (N E 4$$A2 (N E 4$$A2 (N E 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (N(E 4$$A2 (N(E 4$$A2 (N(E 4$$A2 (N(E 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (N0E 4$$A2 (N0E 4$$A2 (N0E 4$$A2 (N0E 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NE 4$$A2 (NE 4$$A2 (NE 4$$A2 (NE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NPE 4$$A2 (NPE 4$$A2 (NPE 4$$A2 (NPE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NE 4$$A2 (NE 4$$A2 (NE 4$$A2 (NE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NhE 4$$A2 (NhE 4$$A2 (NhE 4$$A2 (NhE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`lA2 (NpE 4$$A2 (NpE 4$$A2 (NpE 4$$A2 (NpE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:N6$ <rNN/ &@ .>`A2 (NNNNNE 4$$A2 (NNNNNE 4$$A2 (NNNNNE 4$$A2 (NNNNNE 4$$ .>R-@>oR&_ 9BN6$ <rN6$ .:N6$ <rNN/ &@ .>`A2 (A6$*NA6$*NA6$*NA6$*NA6$*NA6$*NA6$*NE 4$$A2 (A6$*NA6$*NA6$*NA6$*NA6$*NA6$*NA6$*NE 4$$A2 (A6$*NA6$*NA6$*NA6$*NA6$*NA6$*NA6$*NE 4$$A2 (A6$*NA6$*NA6$*NA6$*NA6$*NA6$*NA6$*NE 4$$ .>R-@>o&_ 9BN6$ <rN6$ .:/ &@ .>`A6$*H4A6$*H4A6$*H4A6$*H4A 6$*A2 (NL,NL,NL,N0L,NE 4$$A6$*H4A6$*H4A6$*H4A6$*H4A 6$*A2 (NL,NL,NL,N0L,NE 4$$A6$*H4A6$*H4A6$*H4A6$*H4A 6$*A2 (NL,NL,NL,N0L,NE 4$$A6$*H4A6$*H4A6$*H4A6$*H4A 6$*A2 (NL,NL,NL,N0L,NE 4$$ .>R-@>o &_ 9BN6$ <rN6$ $<v2.4 .6N=A4-@6N langsamerE^NP+mlh`N schnellerE^NP+mlhN pFaktorN6.4$.6 <rNN4NN NC^NlNNqN+mlhNu`V?@A B ,C ,D 6E LF dG |H I J K L TM N O P Q R S T U V *W X Y Z [ \ ] $^ <_ T` la b c d ,e `f pg ph zi j k l m noXpqrstuvw0xHy`zr{| }@~PPZp8v 8J  *@XpFx8`rP``jp*`ppz x"Xhhn    ^`#}txCnXE @ e@E@g< 7) >> 5)); x += 0; assert(x == ((((((((a & b) | c) - a) ^ b) + c) << 7) >> 5) + `$**oM(OGaDS\aNAJk.LNN4ECAN'T LOAD BASLIB_4"x,I`OMIKRON.CompilerN O'.Hp?J@ABCDEFG H I &J 8K L M N O P Q 4R DS TT dU tV W X Y RZ b[ b\ l] ^ _ ` a b c 0d ne f g h i j k l m n "o ~p q rst u"vRwxyz{P|}~$4F(>N^n~(Xhhr6r.Nn0dtt~T z\($Bh|2>>vvR`#륥饥F`CfXD @ gtest3(a, b, d); test3(e, i, b); test3(d, d, i); cout << "enter a Complex number in form (a, b) or (a) or a: "; cin >> c; cout << "number = " << c << "\n"; cout << "\nEnd of test\n"; } versen multipliziert)Bei der Matrizen-Multiplikation bzw. Division ist auf eine geeignete Wahl der Matrix-Dimensionen zu achten. Es gilt:A(P,Q)=B(P,N)*C(N,Q). Bei der Division mu zustzlich die Matrix C quadratisch sein.Beispiel:0 N=31 DIM Matrix!(N,N),Mat_A!(N,N),Mat_B!(N,N),Mat_C!(N,N)2 DIM Array(10),Feld(10)3 '4 MAT Matrix!(,)=15 MAT Mat_A!(1,1)+26 MAT Mat_C!(,)=Mat_B!(,)+Mat_A!(,)7 MAT Matrix!(1,2)=Mat_A!(1,2)8 MAT Feld(5)=Array(6)' der kleinere In 487.5 sec/100000 SIN-Berechnungen 493.75 sec/100000 COS-Berechnungen 1062.5 sec/100000 TAN-Berechnungen 743.75 sec/100000 SINH-Berechnungen 743.75 sec/100000 COSH-Berechnungen 825 sec/100000 TANH-Berechnungen 956.25 sec/100000 ARCSIN-Berechnungen 1568.75 sec/100000 ARSINH-Berechnungen 518.75 sec/100000 SQR-Berechnungen 656.25 sec/100000 EXP-Berechnungen 981.25 sec/100000 LN-Berechnungen 5250 sec/100000 FORMEL1-Berechnungen 14200 sec/100000 FORMEL2-Berechnungen 137.5 sec/100000 FORMEL3-Berechnungen ch(10-i, i, '*'); big.refresh(); big.mvprintw(0,0,"begx=%d,maxx=%d,begy=%d,maxy=%d,height=%d,width=%d", big.begx(), big.maxx(), big.begy(), big.maxy(), big.height(), big.width()); big.refresh(); sub2.box('2', '2'); subsub.box('s', 's'); big.refresh(); i=13; const char * cptr = "Cstar"; char string[100]; long l = 0xffffffff; double d= 3.1415926; float f= 10.0/d; big.mvprintw(2,2,"prin 493.75 sec/100000 SIN-Berechnungen 493.75 sec/100000 COS-Berechnungen 1012.5 sec/100000 TAN-Berechnungen 725 sec/100000 SINH-Berechnungen 725 sec/100000 COSH-Berechnungen 793.75 sec/100000 TANH-Berechnungen 918.75 sec/100000 ARCSIN-Berechnungen 1475 sec/100000 ARSINH-Berechnungen 518.75 sec/100000 SQR-Berechnungen 637.5 sec/100000 EXP-Berechnungen 937.5 sec/100000 LN-Berechnungen 4850 sec/100000 FORMEL1-Berechnungen 13200 sec/100000 FORMEL2-Berechnungen 168.75 sec/100000 FORMEL3-Berechnungen ) { intXPDeque d(SIZE); assert(d.OK()); for (int i = 0; i < SIZE; ++i) { if (i % 2 == 0) d.enq(i); else d.push(i); } assert(d.length() == SIZE); assert(d.front() == (SIZE-1)); assert(d.rear() == (SIZE-2)); assert(!d.full()); intXPDeque d1(SIZE/2); for (i = (SIZE-1); i >= 0; --i) { int x; if (i % 2 == 0) { x = d.rear(); d.del_rear(); } else { x = d.front(); d.del_front(); } d1.enq( 11.125 sec/100000 SIN-Berechnungen 11.125 sec/100000 COS-Berechnungen 11.5625 sec/100000 TAN-Berechnungen 24.625 sec/100000 SINH-Berechnungen 24.8125 sec/100000 COSH-Berechnungen 36.875 sec/100000 TANH-Berechnungen 12.125 sec/100000 ARCSIN-Berechnungen 33.8125 sec/100000 ARSINH-Berechnungen 7.5 sec/100000 SQR-Berechnungen 11.0625 sec/100000 EXP-Berechnungen 11.25 sec/100000 LN-Berechnungen 51.5 sec/100000 FORMEL1-Berechnungen 78.5 sec/100000 FORMEL2-Berechnungen 39.75 sec/100000 FORMEL3-Berechnungen er(); cout << "XP deques:\n"; XPtest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; start_timer(); cout << "DL deques:\n"; DLtest(); cout << "\ntime = " << return_elapsed_time(0.0) << "\n"; cout << "\nEnd of test\n"; } tion zu CVIL.Beispiel:PRINT MKIL$($57656C74)WeltMKS$Typ: FunktionSyntax:MKS$()Erklrung:Wandelt den numerischen Ausdruck in eine einfach-genaue-Fliekommazahl um, und diese in einen 6 Zei 117.5 sec/100000 SIN-Berechnungen 119.375 sec/100000 COS-Berechnungen 243.75 sec/100000 TAN-Berechnungen 171.25 sec/100000 SINH-Berechnungen 171.25 sec/100000 COSH-Berechnungen 179.375 sec/100000 TANH-Berechnungen 159.375 sec/100000 ARCSIN-Berechnungen 255.625 sec/100000 ARSINH-Berechnungen 65 sec/100000 SQR-Berechnungen 159.375 sec/100000 EXP-Berechnungen 178.75 sec/100000 LN-Berechnungen 1180 sec/100000 FORMEL1-Berechnungen 2430 sec/100000 FORMEL2-Berechnungen 26.25 sec/100000 FORMEL3-Berechnungen e { public: char tname[L_tmpnam]; static char *orig_name; char *this_name; exec header; tfile (char*); ~tfile (); void* load (); }; tfile::tfile (char *p) { int fd; strcpy (tname, "hack.XXXXXX"); mktemp (tname); this_name = new char[strlen (p) + 1]; strcpy (this_name, p); if ((fd = open (this_name, 2, 0)) < 0) { fprintf (stderr, "Unable to open file %s\n", p); exit (1); } if (read (fd, (void*) 1.81875 sec/100000 SIN-Berechnungen 1.81875 sec/100000 COS-Berechnungen 2.0875 sec/100000 TAN-Berechnungen 2.8375 sec/100000 SINH-Berechnungen 2.61875 sec/100000 COSH-Berechnungen 2.45625 sec/100000 TANH-Berechnungen 2.40625 sec/100000 ARCSIN-Berechnungen 3.0625 sec/100000 ARSINH-Berechnungen .85625 sec/100000 SQR-Berechnungen 2.24375 sec/100000 EXP-Berechnungen 2.35 sec/100000 LN-Berechnungen 7.7 sec/100000 FORMEL1-Berechnungen 20.85 sec/100000 FORMEL2-Berechnungen 2.09375 sec/100000 FORMEL3-Berechnungen ) (); out << "Enter another file to link: "; in >> buf; out << "Hello! linking `" << buf << "'...\n"; tfile temp2 (buf); init_fn = temp2.load (); (*init_fn)(); } 0 PRINT CHR$(27);"fTaste bricht ab ...":PRINT1 REPEAT2 PRINT CHR$(27);"A";MOUSEBUT;MOUSEX;MOUSEY;CHR$(27);"K"3 UNTIL LEN(INKEY$)NAMETyp: BefehlSyntax:NAME  AS NAME AS `DP0$.P` ` Ctrl-C verbieten""|0 Tastenklick ausschalten" "3 maximale LautstrkeTaste bricht ab .. <2`   b30`oPIIIII $,CONTERMCONTERM_RETTTDT1 sein. Je kleiner der Wert, desto hher ist das Rauschen.Um das Rauschen zu hren mu den entsprechenden Kanlen mittels VOLUME eine Lautstrke zugewiesen werden.Siehe auch TUNE.NORTyp: OperatorSyntax: NOR Erklrung:Verknpft die beiden numerischen Ausdrcke logisch nicht-oder.Beispiel:0 PRINT BIN$((%1010 NOR %1100)+%10000) 1NOTTyp: FunktionSyntax:NOT Erkf P0(2:JTjn z ` Ctrl-C verbieten""|0" "2Taste bricht ab .. F1 =3`   b30`oPYYYYY $,CONTERMCONTERM_RETTVDVstatic char *orig_name; char *this_name; exec header; tfile (char*); ~tfile (); void* load (); }; tfile::tfile (char *p) { int fd; strcpy (tname, "hack.XXXXXX"); mktemp (tname); this_name = new char[strlen (p) + 1]; strcpy (this_name, p); if ((fd = open (this_name, 2, 0)) < 0) { fprintf (stderr, "Unable to open file %s\n", p); exit (1); } if (read (fd, (void*) &header, sizeof (header)) <= 0) { fprintf (stderr, "Error in reading N*H",.2v| 8IC:\DESKTOP.INF p{@Bitte geben sie mehrere Wrter durch Leerzeichen getrennt ein: " H!Leerzeichen gefunden an Position:" oP dddddSATZPng `" << buf << "'...\n"; tfile temp2 (buf); init_fn = temp2.load (); (*init_fn)(); } UNTIL Ende' hier steht ihr Hauptprogramm4 END5 '6-Hilfe7 Taste$= INKEY$8 PRINT "Die Hilfe Taste wurde gedrckt"9 Ende=-110 RETURNON KEY GOSUBTyp: BefehlSyntax:ON KEY GOSUB Erklrung:Immer wenn eine Taste gedrckt wird, wird zu dem durch  definierten Unterprogramm verzeigt. Wichtig: das Unterprogramm mu die gedrckte Taste sofort durch Aufrufen der INKEY Funktion abholen, d