/* E Source generated by SRCGEN v0.1 */ OPT OSVERSION=37 MODULE 'gadtools','libraries/gadtools','intuition/intuition', 'intuition/screens', 'intuition/gadgetclass', 'graphics/text', 'highprecision' ENUM NONE,NOCONTEXT,NOGADGET,NOWB,NOVISUAL,OPENGT,NOWINDOW,NOMENUS DEF big_calcwnd:PTR TO window, big_calcmenus, big_calcglist, infos:PTR TO gadget, scr:PTR TO screen, visual=NIL, offx,offy,tattr,hps DEF q,r:PTR TO gadget,p1,hpx,hpy,hpm,x,y,op,power,p,pp,abt,l2,ef PROC setupscreen() IF (gadtoolsbase:=OpenLibrary('gadtools.library',37))=NIL THEN RETURN OPENGT IF (scr:=LockPubScreen('Workbench'))=NIL THEN RETURN NOWB IF (visual:=GetVisualInfoA(scr,NIL))=NIL THEN RETURN NOVISUAL offy:=scr.wbortop+Int(scr.rastport+58)-10 tattr:=['topaz.font',8,0,0]:textattr ENDPROC PROC closedownscreen() IF visual THEN FreeVisualInfo(visual) IF scr THEN UnlockPubScreen(NIL,scr) IF gadtoolsbase THEN CloseLibrary(gadtoolsbase) ENDPROC PROC openbig_calcwindow() DEF g:PTR TO gadget IF (g:=CreateContext({big_calcglist}))=NIL THEN RETURN NOCONTEXT IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+31,offy+55,31,16,'CA',tattr,0,16,visual,1]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+62,offy+55,31,16,'CE',tattr,1,16,visual,2]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+93,offy+55,31,16,'e',tattr,2,16,visual,3]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+31,offy+119,62,16,'0',tattr,3,16,visual,4]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+31,offy+103,31,16,'1',tattr,4,16,visual,5]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+62,offy+103,31,16,'2',tattr,5,16,visual,6]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+93,offy+103,31,16,'3',tattr,6,16,visual,7]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+31,offy+87,31,16,'4',tattr,7,16,visual,8]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+62,offy+87,31,16,'5',tattr,8,16,visual,9]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+93,offy+87,31,16,'6',tattr,9,16,visual,10]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+31,offy+71,31,16,'7',tattr,10,16,visual,11]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+62,offy+71,31,16,'8',tattr,11,16,visual,12]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+93,offy+71,31,16,'9',tattr,12,16,visual,13]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+93,offy+119,31,16,'.',tattr,13,16,visual,14]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+124,offy+55,31,16,'/',tattr,14,16,visual,15]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+124,offy+71,31,16,'*',tattr,15,16,visual,16]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+124,offy+87,31,16,'-',tattr,16,16,visual,17]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+124,offy+103,31,16,'+',tattr,17,16,visual,18]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+124,offy+119,31,16,'=',tattr,18,16,visual,19]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+155,offy+55,31,16,'/2',tattr,19,16,visual,20]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+155,offy+71,31,16,'*2',tattr,20,16,visual,21]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+0,offy+55,31,16,'PWR',tattr,21,16,visual,22]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+0,offy+71,31,16,'SQR',tattr,22,16,visual,23]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+0,offy+87,31,16,'INT',tattr,23,16,visual,24]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+0,offy+103,31,16,'FRC',tattr,24,16,visual,25]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+0,offy+119,31,16,'ABS',tattr,25,16,visual,26]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+155,offy+87,31,16,'MS',tattr,26,16,visual,27]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+155,offy+103,31,16,'MR',tattr,27,16,visual,28]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (g:=CreateGadgetA(BUTTON_KIND,g, [offx+155,offy+119,31,16,'1/X',tattr,28,16,visual,29]:newgadget, [NIL]))=NIL THEN RETURN NOGADGET IF (big_calcmenus:=CreateMenusA([1,0,'Project',0,$0,0,0, 2,0,'Save','S',$0,0,30, 2,0,'About','A',$0,0,31, 2,0,'Format',0,$0,0,32, 3,0,'Zeros','Z',$9,0,33, 3,0,'Exponent','E',$9,0,34, 3,0,'sCi','C',$9,0,35, 2,0,'Quit','Q',$0,0,36, 0,0,0,0,0,0,0]:newmenu,NIL))=NIL THEN RETURN NOMENUS IF LayoutMenusA(big_calcmenus,visual,NIL)=FALSE THEN RETURN NOMENUS IF (big_calcwnd:=OpenWindowTagList(NIL, [WA_LEFT,218, WA_TOP,24, WA_WIDTH,offx+194, WA_HEIGHT,offy+148, WA_IDCMP,$26C077E,->vanillakey $200000 WA_FLAGS,$142E, WA_TITLE,'Century Calc', WA_CUSTOMSCREEN,scr, WA_MINWIDTH,67, WA_MINHEIGHT,21, WA_MAXWIDTH,$280, WA_MAXHEIGHT,200, WA_AUTOADJUST,1, WA_AUTOADJUST,1, WA_GADGETS,big_calcglist, NIL]))=NIL THEN RETURN NOWINDOW stdrast:=big_calcwnd.rport PrintIText(big_calcwnd.rport, [1,0,0,9,4,tattr,'-1.234567890123456789',NIL]:intuitext,offx,offy) PrintIText(big_calcwnd.rport, [1,0,0,9,12,tattr,'012345678901234567890',NIL]:intuitext,offx,offy) PrintIText(big_calcwnd.rport, [1,0,0,9,20,tattr,'123456789012345678901',NIL]:intuitext,offx,offy) PrintIText(big_calcwnd.rport, [1,0,0,9,28,tattr,'234567890123456789012',NIL]:intuitext,offx,offy) PrintIText(big_calcwnd.rport, [1,0,0,9,36,tattr,'345678901234567890',NIL]:intuitext,offx,offy) PrintIText(big_calcwnd.rport, [1,0,0,9,44,tattr,'e-123456789',NIL]:intuitext,offx,offy) DrawBevelBoxA(big_calcwnd.rport,0+offx,0+offy,186,55, [GT_VISUALINFO,visual,NIL]) IF SetMenuStrip(big_calcwnd,big_calcmenus)=FALSE THEN RETURN NOMENUS Gt_RefreshWindow(big_calcwnd,NIL) ENDPROC PROC closebig_calcwindow() IF big_calcwnd THEN ClearMenuStrip(big_calcwnd) IF big_calcmenus THEN FreeMenus(big_calcmenus) IF big_calcwnd THEN CloseWindow(big_calcwnd) IF big_calcglist THEN FreeGadgets(big_calcglist) ENDPROC PROC wait4message(win:PTR TO window) DEF mes:PTR TO intuimessage,type,item REPEAT type:=0 IF mes:=Gt_GetIMsg(win.userport) type:=mes.class IF type=IDCMP_MENUPICK infos:=mes.code ELSEIF (type=IDCMP_GADGETDOWN) OR (type=IDCMP_GADGETUP) infos:=mes.iaddress ELSEIF type=IDCMP_REFRESHWINDOW Gt_BeginRefresh(win) Gt_EndRefresh(win,TRUE) type:=0 ELSEIF type=IDCMP_VANILLAKEY infos:=mes.code ELSEIF type<>IDCMP_CLOSEWINDOW /* remove these if you like */ type:=0 ENDIF Gt_ReplyIMsg(mes) ELSE WaitPort(win.userport) ENDIF UNTIL type ENDPROC type PROC reporterr(er) DEF erlist:PTR TO LONG IF er erlist:=['get context','create gadget','lock wb','get visual infos', 'open "gadtools.library" v37+','open window','create menus'] EasyRequestArgs(0,[20,0,0,'Could not \s!','ok'],0,[erlist[er-1]]) ENDIF ENDPROC er PROC main() IF (highprecisionbase:=OpenLibrary('highprecision.library',1))<>0 IF HpSetup(100)<>0 hpx:=HpMakeVar() hpy:=HpMakeVar() hpm:=HpMakeVar() hps:=HpMakeStr() pp:=0 p:=0 ef:=1 IF reporterr(setupscreen())=0 reporterr(openbig_calcwindow()) WHILE (q:= wait4message(big_calcwnd))<>$200 IF q=$40 r:=infos p1:=r.userdata ELSEIF q=$100 p1:=Long(ItemAddress(big_calcmenus,infos AND $FFFF)+34) ELSEIF q=IDCMP_VANILLAKEY IF infos=$65 p1:=3 ELSEIF infos=$2e p1:=14 ELSEIF infos=$2f p1:=15 ELSEIF infos=$2a p1:=16 ELSEIF infos=$2d p1:=17 ELSEIF infos=$2b p1:=18 ELSEIF (infos=$3d) OR (infos=$d) p1:=19 ELSEIF (infos>="0") AND (infos<="9") p1:=infos-$2c ENDIF ENDIF IF p1=36 THEN BRA yy SELECT p1 CASE 1 Box(2,1,182,53,0) HpClear(hpx) HpClear(hpy) HpClear(hpm) pp:=0 hps[pp]:=0 ef:=1 CASE 2 IF pp=0 HpClear(y) Box(2,1,182,53,0) ELSE pp:=pp-1 TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c'," ") hps[pp]:=0 ENDIF CASE 15 cases(15) CASE 16 cases(16) CASE 17 IF ((pp=0) AND (ef=0)) OR (hps[pp-1]="e") IF pp=0 THEN Box(2,1,182,53,0) Colour(1,0) TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c',"-") hps[pp++]:="-" ELSE cases(17) ENDIF CASE 18 cases(18) CASE 19 ef:=1 doit() CASE 20 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpHalf(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 21 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpDouble(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 22 cases(22) CASE 23 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpSqrt(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 24 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpInt(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 25 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpFrc(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 26 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpAbs(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 27 IF pp<>0 hps[pp]:=0 Str2hp(hps,hpm) ELSE HpCopy(hpy,hpm) ENDIF CASE 28 pp:=0 HpCopy(hpm,hpy) Hp2str(hpy,hps,p) ->WriteF('recalled \s\n',hps) showstring() CASE 29 IF pp<>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF HpRec(hpy,hpy) Hp2str(hpy,hps,p) showstring() CASE 30 abt:=Open('T:Number',NEWFILE) l2:=0 WHILE hps[l2]<>0 DO l2++ Write(abt,hps,l2) Close(abt) CASE 31 abt:='Written using the\nHighPrecision Library\nCreated by\nRalf P. Quimby' EasyRequestArgs(big_calcwnd,[20,0,0,abt,'Okay'],0,NIL) CASE 32 NOP CASE 33 p:=Eor(p,4) CASE 34 p:=Eor(p,2) CASE 35 p:=Eor(p,1) DEFAULT IF (p1>2) AND (p1<15) IF pp=0 ->HpClear(hpy) Box(2,1,182,53,0) ENDIF Colour(1,0) IF p1=3 TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c',"e") hps[pp]:="e" ELSEIF p1=14 TextF(Mod(pp,21)*8+9,pp/21*8+10,'\c',".") hps[pp]:="." ELSE TextF(Mod(pp,21)*8+9,pp/21*8+10,'\d',p1-4) hps[pp]:=p1-4+"0" ENDIF IF pp<115 THEN pp:=pp+1 ENDIF ENDSELECT ENDWHILE yy: closebig_calcwindow() IF CtrlC() THEN BRA xx ENDIF xx: closedownscreen() CloseLibrary(highprecisionbase) ELSE EasyRequestArgs(big_calcwnd,[20,0,0,'No\nRoom','Okay'],0,NIL) ENDIF ELSE EasyRequestArgs(big_calcwnd,[20,0,0,'No\nLib','Okay'],0,NIL) ENDIF ENDPROC PROC showstring() DEF l,l2,s[22]:ARRAY OF CHAR,y ->WriteF('showing \s\n',hps) y:=0 l:=0 l2:=0 Box(2,1,182,53,0) Colour(1,0) WHILE hps[l]<>0 s[l2]:=hps[l] l++ l2++ IF (l2=21) OR (hps[l]="e") OR (hps[l]=0) s[l2]:=0 TextF(9,y*8+10,'\s',s) l2:=0 y++ ENDIF ENDWHILE ENDPROC PROC cases(q) IF ef=0 THEN doit() op:=q IF pp>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpx) ELSE HpCopy(hpy,hpx) ENDIF ef:=0 ->WriteF('x= \s\n',hps) ENDPROC PROC doit() IF pp>0 hps[pp]:=0 pp:=0 Str2hp(hps,hpy) ENDIF IF op=15 HpDiv(hpx,hpy,hpy) ELSEIF op=16 HpMul(hpx,hpy,hpy) ELSEIF op=17 HpSub(hpx,hpy,hpy) ELSEIF op=18 HpAdd(hpx,hpy,hpy) ELSEIF op=22 power:=Hp2int(hpy) HpPower(hpx,power,hpy) ENDIF Hp2str(hpy,hps,p) showstring() ENDPROC /*EE folds -1 20 5 23 3 26 133 29 4 32 23 35 6 242 18 245 13 248 19 EE folds*/