diff --git a/.abCalcNDA.c.swp b/.abCalcNDA.c.swp new file mode 100644 index 0000000..89477b2 Binary files /dev/null and b/.abCalcNDA.c.swp differ diff --git a/ops/.abCOp.c.swp b/.abCalcNDA.defs.swp similarity index 79% rename from ops/.abCOp.c.swp rename to .abCalcNDA.defs.swp index 9dc7471..4ba1b75 100644 Binary files a/ops/.abCOp.c.swp and b/.abCalcNDA.defs.swp differ diff --git a/.abCalcNDA.rez.swp b/.abCalcNDA.rez.swp new file mode 100644 index 0000000..1f9dece Binary files /dev/null and b/.abCalcNDA.rez.swp differ diff --git a/Make.engine b/Make.engine index 93eea13..e35e4c2 100644 --- a/Make.engine +++ b/Make.engine @@ -1,3 +1,9 @@ +# +# Make.engine +# By: Jeremy Rand +# + + CALC_OBJS=abCalc.o abCStack.o abCMode.o abCError.o EXPR_OBJS=expr/abCExpr.o expr/abCExpReal.o expr/abCExprInt.o @@ -8,7 +14,9 @@ OPS_OBJS=ops/abCOp.o ops/abCOpAdd.o ops/abCOpSubtr.o ops/abCOpMult.o \ ops/abCOpStws.o ops/abCOpRcws.o ops/abCOpSl.o ops/abCOpRl.o ops/abCOpSr.o \ ops/abCOpRr.o ops/abCOpAsr.o -OBJS=abCMain.o $(CALC_OBJS) $(EXPR_OBJS) $(OPS_OBJS) +SHELL_OBJS=abCMain.o $(CALC_OBJS) $(EXPR_OBJS) $(OPS_OBJS) + +NDA_OBJS=abCNDA.o $(CALC_OBJS) $(EXPR_OBJS) $(OPS_OBJS) abCMain.o: abCalc.h abCStack.h expr/abCExpr.h ops/abCOp.h abCError.h diff --git a/Make.mac b/Make.mac index 343a9d0..26bdea8 100644 --- a/Make.mac +++ b/Make.mac @@ -1,3 +1,8 @@ +# +# Make.mac +# By: Jeremy Rand +# + NAME=abCalc CFLAGS=-I. @@ -6,8 +11,8 @@ all: $(NAME) include Make.engine -$(NAME): $(OBJS) - cc -o $(NAME) $(OBJS) +$(NAME): $(SHELL_OBJS) + cc -o $(NAME) $(SHELL_OBJS) clean: - rm -f $(NAME) $(OBJS) + rm -f $(NAME) $(SHELL_OBJS) diff --git a/Makefile b/Makefile index 27d4ad0..4382e0c 100644 --- a/Makefile +++ b/Makefile @@ -1,16 +1,26 @@ -NAME=abCalc +# +# Makefile +# By: Jeremy Rand +# -all: $(NAME) +SHELL_NAME=abCalc +NDA_NAME=abCalcNDA + +all: $(SHELL_NAME) $(NDA_NAME) .INCLUDE: "Make.engine" CFLAGS=-D ABCALC_GSOS -$(NAME): fixtype $(OBJS) - occ -o $(NAME) $(OBJS) +$(SHELL_NAME): fixtype $(SHELL_OBJS) + occ -o $(SHELL_NAME) $(SHELL_OBJS) + +$(NDA_NAME): fixtype $(NDA_OBJS) + clean: - cp -p rm -f $(NAME) $(OBJS) $(NAME).r $(NAME).root + cp -p rm -f $(SHELL_NAME) $(SHELL_OBJS) $(SHELL_NAME).root + cp -p rm -f $(NDA_NAME) $(NDA_OBJS) $(NDA_NAME).r $(NDA_NAME).root cp -p rm -f *.root cp -p rm -f expr/*.root cp -p rm -f ops/*.root diff --git a/abCalcNDA.c b/abCalcNDA.c new file mode 100644 index 0000000..9940b6f --- /dev/null +++ b/abCalcNDA.c @@ -0,0 +1,73 @@ +/* + abCalcNDA.c + By: Jeremy Rand + */ + + +#pragma nda NDAOpen NDAClose NDAAction NDAInit 60 0x03FF " abCalc\\H**" + + +#include + + +static BOOLEAN gCalcActive; +static GrafPortPtr gCalcWinPtr; + + +void NDAClose(void) +{ + if (gCalcActive) { + CloseWindow(gCalcWinPtr); + gCalcActive = FALSE; + } +} + + +void NDAInit(int code) +{ + if (code == 1) + gCalcActive = FALSE; + else if (gCalcActive) + NDAClose(); +} + + +GrafPortPtr NDAOpen(void) +{ + GrafPortPtr wPtr; + + wPtr = NULL; + if (!clockActive) { + if (OpenResourceFork()) { + gCalcWinPtr = NewWindow2("\p abCalc ", 0, NULL, NULL, 0x02, wrNum, rWindParam1); + if (toolerror() == 0) { + SetSysWindow(gCalcWinPtr); + clockActive = TRUE; + wPtr = clockWinPtr; + } + CloseResourceFork(); + } + } + return wPtr; +} + + +BOOLEAN NDAAction(int code, EventRecord *sysEvent) +{ + int event; + static EventRecord localEvent; + + switch (code) { + case eventAction: + localEvent.what = sysEvent->what; + localEvent.message = sysEvent->message; + localEvent.when = sysEvent->when; + localEvent.where = sysEvent->where; + localEvent.modifiers = sysEvent->modifiers; + event = TaskMasterDA(0, &localEvent); + break; + case runAction: + break; + } + return FALSE; +} diff --git a/abCalcNDA.defs b/abCalcNDA.defs new file mode 100644 index 0000000..b60700d --- /dev/null +++ b/abCalcNDA.defs @@ -0,0 +1,7 @@ +/* + abCalcNDA.defs + By: Jeremy Rand + */ + +#define ABCALC_WINDOW_NUM 1001 +#define ABCALC_LINED_COLORS 1002 diff --git a/abCalcNDA.rez b/abCalcNDA.rez new file mode 100644 index 0000000..8492e0f --- /dev/null +++ b/abCalcNDA.rez @@ -0,0 +1,37 @@ +/* + abCalcNDA.h + By: Jeremy Rand + */ + + +#include "types.rez" +#include "abCalcNda.defs" + + +resource rWindParam1 (ABCALC_WINDOW_NUM) { + $C0A5, /* wFrameBits */ + nil, /* wTitle */ + 0, /* wRefCon */ + {0,0,0,0}, /* ZoomRect */ + ABCALC_LINED_COLORS, /* wColor ID */ + {0,0}, /* Origin */ + {0,0}, /* data size */ + {0,0}, /* max height-width */ + {0,0}, /* scroll ver hors */ + {0,0}, /* page ver horiz */ + 0, /* winfoRefcon */ + 0, /* wInfoHeight */ + {50,50,62,200}, /* wposition */ + infront, /* wPlane */ + nil, /* wStorage */ + $0800 /* wInVerb */ + }; + + +resource rWindColor (ABCALC_LINED_COLORS) { + 0x0000, /* frameColor */ + 0x0F00, /* titleColor */ + 0x020F, /* tbarColor */ + 0xF0F0, /* growColor */ + 0x00F0, /* infoColor */ + };