#define MAXCHARS 500 /* Prototypes for functions defined in ram:abl.c */ char * __asm Ableiten(register __a0 char *string); VOID __asm Umklammern(register __a0 char *string); VOID Zusammensetzen(char *string,LONG Anzahl,char *ABL,struct Block *Start); LONG __asm Mit_X(register __a0 struct Block *block); VOID __asm Umklammern_2(register __a0 char *string); LONG __asm Vereinfachung(register __a0 char *, register __a1 char *); char * __asm Ableitung(register __a0 struct Block *Start); /* Prototypes for functions defined in ram:about.c */ void About(void); /* Prototypes for functions defined in ram:berechnungsroutinen.c */ void FehlerAbfrage(VOID); void DamageOn(void); void DamageOff(void); VOID __asm ZeichneFunktion(register __d0 USHORT nr, register __d1 int Ableitung); void Plotte(unsigned short nr, DOUBLE xl, DOUBLE xr, DOUBLE yl, DOUBLE yr, int st, int Ableitung); DOUBLE FunktionsWert(unsigned short nr, DOUBLE i, int Ableitung); void Verbinden(DOUBLE xr, DOUBLE yr); DOUBLE Max(DOUBLE a, DOUBLE b); DOUBLE Min(DOUBLE a, DOUBLE b); void chkabort(void); VOID MemCleanup(VOID); /* Prototypes for functions defined in ram:diskussion.c */ void discuss(char *string,DOUBLE l,DOUBLE r,int modus,unsigned short sub); DOUBLE Nullstelle(DOUBLE l,DOUBLE r); DOUBLE Nullstelle2(DOUBLE l,DOUBLE r); VOID TextAusgabe(DOUBLE x,DOUBLE y,char *string); VOID TextAusgabe2(char *string); void __asm Laenge(register __a0 char *string,register __d0 int laenge); VOID __asm Full_Discussion(register __d0 USHORT sub); /* Prototypes for functions defined in ram:drucken.c */ LONG drucken(VOID); /* Prototypes for functions defined in ram:maus.c */ void AusSchnitt(DOUBLE *x1, DOUBLE *y1, DOUBLE *x2, DOUBLE *y2); void Grenzen(char *xn, char *yn, char *xp, char *yp); void __asm Funktionseingabe(register __a0 UBYTE *string); void Genauigkeit(void); void TextFuerIntervall(void); void TextFuerKonstanten(void); /* Prototypes for functions defined in ram:plot.c */ void Pset(DOUBLE x1, DOUBLE y1); void DrawTo(DOUBLE x1, DOUBLE y1); void zeichne(void); void MenuWahl(void); void main(void); void _main(char *); int oeffne(void); void ende(void); void Line(DOUBLE x1, DOUBLE y1, DOUBLE x2, DOUBLE y2); void Skalierung(DOUBLE x, DOUBLE y, DOUBLE Wert); void UmwandlungInIntervall(void); void UmwandlungInKonstanten(void); void UpdateMenuText(void); void SetRXOffset(void); void TastaturAbfrage(void); void Loeschen(void); void testtest(void); VOID SetColor(VOID); VOID SetNewColor(VOID); VOID __asm ReMakeMenu(register __a0 struct Window *Window); VOID MakeMenu(VOID); struct IntuiText *GetNewText(char *string); #define Abstand 15 #define RUNDEN .5001 #define RUNDEN2 .5001 #define deltah .00000005 #define deltahh .0005 #define KLEIN 0 #define GROSS 1 #define MAXLONG 2147483647.0 #define MAXPIXELY 300 #define GRENZE1 0.0002 #define GRENZE2 0.0000002 #define NONULL HUGE #define WHICH_FLAG HUGE #define W_FLAG_2 1.79769e+307 #define FARBE0 0 #define FARBE1 1 #define FARBE2 2 #define FARBE3 3 #define YSCREEN 256 #define PLOT_Y 223 #define ABOUT_FREEWARE "Dies ist FreeWare" #define PLOT_CONT "Weiter" #define PLOT_QUEST "Wirklich Ende ?" #define PLOT_END "ENDE" #define DISK_NULLST "Nullstellen :" #define DISK_EXTREMST "Extremstellen :" #define DISK_WENDEST "Wendestellen :" #define DISK_FOR "Diskussion für das Intervall [" #define MAUS_ENTERFUNC "Geben Sie die Funktion ein" #define BE_ERROR "In Ihrer Formel ist ein Fehler !" #define BE_JA "Ja" #define BE_NEIN "Nein" #define BE_QUEST "Soll ich unterbrechen ?" extern APTR Konstantenstart; extern BOOL KoordinatenKreuz_gezeichnet; extern char AusgabeString[125]; extern char Formeleingabe[27]; extern char Formel[MAXCHARS]; extern char Hilfe[10],Ergebnis[MAXCHARS]; extern char SubMenuTitle[10][16]; extern char String1[4]; extern DOUBLE BestF,BestX; extern double xmn,xmp,ymn,ymp,xm,ym,x0,y0; extern int Aufrufe; extern char flagg; extern int GE; extern int Groesse; extern LONG MatheFehler; extern LONG xx,yy; extern LONG ypos_Diskussion; extern LONG xpos_Diskussion; extern SHORT Genauigkeiten[3]; extern SHORT XOffset,YOffset; extern struct BitMap bitmap; extern struct Block *StartBlock; extern struct GfxBase *GfxBase; extern struct info msgInfo; extern struct IntuitionBase *IntuitionBase; extern struct Konstanten kon; extern struct Layer *layer; extern struct LayersBase *LayersBase; extern struct Layer_Info *layerinfo; extern struct Library *MathIeeeDoubBasBase; extern struct ToolBase *ToolBase; extern struct Library *MathIeeeDoubTransBase; extern struct NewScreen Schirm; extern struct NewWindow Fenster,Fenster2,Fenster3; extern struct RastPort *RastPort2; extern struct RastPort *RastPort; extern struct Rectangle rect; extern struct Region *rgn,*OFlaeche; extern struct Screen *Screen; extern struct View *View; extern struct ViewPort *viep; extern struct Window *Window2; extern struct Window *Window; extern UBYTE MinXText[8],MaxXText[8],MinYText[8]; extern UBYTE MaxYText[8]; extern UBYTE Abgeleitet[2][MAXCHARS]; extern UBYTE Formeln[11][MAXCHARS]; extern UBYTE KonAString[20],KonBString[20]; extern UBYTE KonCString[20],KonDString[20]; extern UBYTE undo1[20],undoFormel[MAXCHARS]; extern UBYTE xmpstring[20],xmnstring[20]; extern UBYTE ympstring[20],ymnstring[20]; extern UWORD Farb1[4],Farb2[4]; extern struct Menu *Menu; extern struct MenuItem *Item[7]; /* Zum Sichern der Zeiger */ /* Veränderungen: 22.10.89 Genauigkeit : Nur noch 3 Gadgets, Berechnungsroutinen angepaßt. 04.11.89 Diskussion angefügt, gibt nur auf dem Schirm aus. 18.11.89 Diskussion findet jetzt auch Nullstellen, die nur berühren (x^2) 19.12.89 Plotter auf Benutzung der Calc-Funktionen umgestellt 19.12.89 Diskussion : Fehler, wenn Funktion immer NULL ist behoben 23.12.89 Diskussion : Fehler, wenn Polstellen sind behoben 11.02.90 Plotter.h mit Compiler autom. erstellt. 21.02.90 Set(New)Color in C geschrieben und übersetzt. Alles mit -O comp -> 25956 Bytes. Alle math. Funktionen laufen über New..... Nullstellen werden jetzt recht genau bestimmt. 25.02.90 Abl.c ZW1 eingespart. Trotzdem leicht Stack-Overflow bei tan und sqr. 27.02.90 Fehler bei oeffne, der bei Auftritt eines Fehlers zum Absturz führt, beseitigt 15.07.90 Fehler in Ableitung beseitig (vertauschte f(x) und g(x) bei x^x Ableitung mit AllocMem, SimpleMenu aus Tool.Library 03.08.90 Stringkonstanten nach Plotter.h , strcmp-Abfragen in Ableitung.c auf SHORT * umgestellt. */ #undef Add #undef Sub #undef Div #undef Mul #undef Fix #undef Flt #undef Neg #define Add(a,b) (a+b) #define Sub(a,b) (a-b) #define Mul(a,b) (a*b) #define Div(a,b) (a/b) #define Fix(a) ((LONG)a) #define Flt(a) ((DOUBLE)a) #define Neg(a) (-a)