version 5.80 0 MainForm 1 59 0 0 0 14 1 0 8 0 0 1 0 1 0 0 0 1 0 1 238 268 D:\Basic4\RPNCalc\RPNCalc.ico 0 0 0 Sub designer addform(MainForm,"RPN Calculator","",220,220,220)@ addlabel(mainform,lblMemory,4,2,233,125,"",255,255,255,0,0,0,True,False,9)@ addlabel(mainform,lblRegY,6,52,135,20,"",255,255,255,0,0,0,True,True,9)@ addbutton(mainform,cmdDummy,97,239,47,23,"",212,208,200,0,0,0,False,True,9)@ addlabel(mainform,lblDEG,98,196,45,21,"DEG",255,255,255,0,0,0,True,True,9)@ addlabel(mainform,lblRegT,6,8,135,21,"",255,255,255,0,0,0,True,True,9)@ addlabel(mainform,lblRegZ,6,30,135,20,"",255,255,255,0,0,0,True,True,9)@ addlabel(mainform,lblRegX,6,74,135,20,"",255,255,255,0,0,0,True,True,9)@ addbutton(mainform,cmdMemory,189,239,47,23,"DispM",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdPourcent,143,239,47,23,"%",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdSCI,189,217,47,23,"Sci",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdInv,143,217,47,23,"1/x",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdPI,97,217,47,23,"PI",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdBackSpace,130,100,24,25,"<",212,208,200,0,0,0,True,True,8)@ addbutton(mainform,cmdRound,189,195,47,23,"Rnd",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdDR,51,239,47,23,"D>R",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdRD,5,239,47,23,"R>D",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdYX,143,195,47,23,"y^x",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdPolRec,51,217,47,23,"P>R",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdRAD,51,195,47,23,"RAD",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdRecPol,5,217,47,23,"R>P",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdDEG,5,195,47,23,"DEG",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdClM,189,173,47,23,"CLM",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdRCL,189,151,47,23,"RCL",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdX2,143,173,47,23,"x^2",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdExp,143,151,47,23,"e^x",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdSQR,97,173,47,23,"sqrt",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdLn,97,151,47,23,"ln",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdSTO,189,129,47,23,"STO",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdExp10,143,129,47,23,"10^x",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdLog,97,129,47,23,"log",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdArcTan,51,173,47,23,"tan-1",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdTan,5,173,47,23,"tan",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdArcCos,51,151,47,23,"cos-1",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdCos,5,151,47,23,"cos",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdArcSin,51,129,47,23,"sin-1",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdSin,5,129,47,23,"sin",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdXY,71,100,37,25,"x<>y",212,208,200,0,0,0,True,True,8)@ addbutton(mainform,cmdScroll,107,100,24,25,"R",212,208,200,0,0,0,True,True,8)@ addbutton(mainform,cmdClAll,35,100,37,25,"Cl all",212,208,200,0,0,0,True,True,8)@ addbutton(mainform,cmdClX,5,100,31,25,"Cl x",212,208,200,0,0,0,True,True,8)@ addbutton(mainform,cmdEnter,190,100,46,25,"Enter",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdChSign,153,100,37,25,"CHS",212,208,200,0,0,0,True,True,9)@ addbutton(mainform,cmdPlus,213,73,23,23,"+",212,208,200,0,0,0,True,True,12)@ addbutton(mainform,cmdMin,213,51,23,23,"-",212,208,200,0,0,0,True,True,12)@ addbutton(mainform,cmdMul,213,29,23,23,"*",212,208,200,0,0,0,True,True,12)@ addbutton(mainform,cmdDiv,213,7,23,23,"/",212,208,200,0,0,0,True,True,12)@ addbutton(mainform,cmdE,190,73,23,23,"E",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmdDot,168,73,23,23,".",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd0,146,73,23,23,"0",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd9,190,7,23,23,"9",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd8,168,7,23,23,"8",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd7,146,7,23,23,"7",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd6,190,29,23,23,"6",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd5,168,29,23,23,"5",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd4,146,29,23,23,"4",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd3,190,51,23,23,"3",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd2,168,51,23,23,"2",212,208,200,0,0,0,True,True,10)@ addbutton(mainform,cmd1,146,51,23,23,"1",212,208,200,0,0,0,True,True,10)@ End Sub @EndOfDesignText@Sub Globals 'Declare the global variables here. RegX=0 RegY=0 RegZ=0 RegT=0 Reg=0 sRegX="1.25" sReg="0" NRound=3 FlagEnter=0 FlagDot=0 FlagE=0 FlagDeg=1 FlagSTO=0 FlagRCL=0 FlagRound=0 FlagSCI=0 Im=1 Dim Mem(10) As double sVal="0" Val=0 ValM=0 ValL=0 End Sub Sub App_Start RegX=0 RegY=0 RegZ=0 RegT=0 Mem(0)=RegX sRegX="0.0" MainForm.Show MainForm.Text="RPN Calc V1.0" SRound MainForm.Line(5,7,141,32,CBlack,B) MainForm.Line(5,29,141,51,CBlack,B) MainForm.Line(5,51,141,73,CBlack,B) MainForm.Line(5,73,141,95,CBlack,B) MainForm.Line(4,6,142,96,CBlack,B) MainForm.Line(145,6,236,96,CBlack,B) MainForm.Line(4,99,236,125,CBlack,B) MainForm.Line(4,128,236,262,CBlack,B) cmdDEG_Click End Sub Sub Display(IR ,Val0) If NRound=0 AND FlagSCI=1 Then lblRegX.FontSize=8 lblRegY.FontSize=8 lblRegZ.FontSize=8 lblRegT.FontSize=8 Else If NRound=0 Then lblRegX.FontSize=10 lblRegY.FontSize=10 lblRegZ.FontSize=10 lblRegT.FontSize=10 Else If NRound>7 AND FlagSCI=1 Then lblRegX.FontSize=11 lblRegY.FontSize=11 lblRegZ.FontSize=11 lblRegT.FontSize=11 Else lblRegX.FontSize=12 lblRegY.FontSize=12 lblRegZ.FontSize=12 lblRegT.FontSize=12 End If If FlagSCI=1 Then If Val0<>0 AND Val0<>"0.0" Then Val=Log(Abs(Val0)) ValM=Int(Val) ValL=Val-ValM Val=10^ValL Else Val=0 ValM=0 End If If NRound>0 Then Val=Abs(Round(Val,NRound)) sVal=Val AddZeros Else sVal=Abs(Val) End If sVal=StrInsert(sVal,StrLength(sVal),"E") If ValM<0 Then sVal=StrInsert(sVal,StrLength(sVal),"-") Else sVal=StrInsert(sVal,StrLength(sVal),"+") End If If Val0<0 Then sVal=StrInsert(sVal,0,"-") Else If FlagEnter=0 Then sVal=StrInsert(sVal,0," ") End If If Abs(ValM)<100 Then sVal=StrInsert(sVal,StrLength(sVal),"0") End If If Abs(ValM)<10 Then sVal=StrInsert(sVal,StrLength(sVal),"0") End If sVal=StrInsert(sVal,StrLength(sVal),Abs(ValM)) Else If NRound>0 Then Val=Abs(Round(Val0,NRound)) sVal=Val AddZeros Else Val=Abs(Val0) sVal=Val End If If Val0<0 Then sVal=StrInsert(sVal,0,"-") Else sVal=StrInsert(sVal,0," ") End If End If If IR=1 Then lblRegX.Text=sVal Else If IR=2 Then lblRegY.Text=sVal Else If IR=3 Then lblRegZ.Text=sVal Else lblRegT.Text=sVal End If End Sub Sub AddZeros I=StrLength(sVal)-1 Do If SubString(sVal,I,1)="." Then Exit I=I-1 Loop Until I=-1 If I=-1 Then I=NRound sVal=StrInsert(sVal,StrLength(sVal),".") Else I=NRound-StrLength(sVal)+I+1 End If If I>0 Then For J=1 To I sVal=StrInsert(sVal,StrLength(sVal),"0") Next J End If End Sub Sub ScrollDown sRegX=RegX Display(1,RegX) RegY=RegZ RegZ=RegT Display(3,RegZ) Display(2,RegY) FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub ScrollUp RegT=RegZ RegZ=RegY RegY=RegX Display(4,RegT) Display(3,RegZ) Display(2,RegY) End Sub Sub EndFunction Display(1,RegX) sRegX=RegX FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub GetRegX If SubString(sRegX,StrLength(sRegX)-1,1)="E" OR sRegX="" OR sRegX=" " OR sRegX="-" Then SRegX=StrInsert(sRegX,StrLength(sRegX),"0") End If RegX=sRegX Mem(0)=RegX End Sub Sub Number If FlagSTO=1 Then If Reg>=1 Then Im=Reg Memory End If Else If FlagRCL=1 Then Im=Reg Memory Else If FlagRound=1 NRound=Reg SRound FlagEnter=0 FlagDot=0 FlagRound=0 FlagE=0 cmdRound.Color=212,208,200 Else If FlagEnter=0 Then ScrollUp sRegX=sReg FlagEnter=1 Else If FlagEnter=2 Then sRegX=sReg FlagEnter=1 Else sRegX=StrInsert(sRegX,StrLength(sRegX),sReg) End If If SubString(sRegX,0,1) <>"-" AND SubString(sRegX,0,1) <>" " Then sRegX=StrInsert(sRegX,0," ") End If lblRegX.Text=sRegX End If End Sub Sub Memory If FlagSTO=1 Then GetRegX EndFunction Mem(Im)=RegX cmdSTO.Color=212,208,200 Else If FlagEnter=0 Then ScrollUp End If RegX=Mem(Im) sRegX=RegX Display(1,RegX) cmdRCL.Color=212,208,200 End If FlagSTO=0 FlagRCL=0 FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub SRound Display(1,RegX) Display(2,RegY) Display(3,RegZ) Display(4,RegT) End Sub Sub cmdClX_Click If SubString(lblRegX.Text,0,5)<>"Error" Then sRegX="0" RegX=0 FlagEnter=0 FlagDot=0 FlagE=0 End If Display(1,RegX) End Sub Sub cmdClAll_Click sRegX="0" RegX=0 RegY=0 RegZ=0 RegT=0 Display(1,RegX) Display(2,RegY) Display(3,RegZ) Display(4,RegT) FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub cmdEnter_Click GetRegX RegT=RegZ RegZ=RegY RegY=RegX Display(1,RegX) Display(2,RegY) Display(3,RegZ) Display(4,RegT) FlagEnter=2 FlagDot=0 FlagE=0 End Sub Sub cmdDiv_Click GetRegX If RegX=0 Then lblRegX.Text="Error Div 0" Else RegX=RegY/RegX ScrollDown End If End Sub Sub cmdMul_Click GetRegX RegX=RegX*RegY ScrollDown End Sub Sub cmdMin_Click GetRegX RegX=RegY-RegX ScrollDown End Sub Sub cmdPlus_Click GetRegX RegX=RegX+RegY ScrollDown End Sub Sub cmd0_Click Reg=0 sReg="0" Number End Sub Sub cmd1_Click Reg=1 sReg="1" Number End Sub Sub cmd2_Click Reg=2 sReg="2" Number End Sub Sub cmd3_Click Reg=3 sReg="3" Number End Sub Sub cmd4_Click Reg=4 sReg="4" Number End Sub Sub cmd5_Click Reg=5 sReg="5" Number End Sub Sub cmd6_Click Reg=6 sReg="6" Number End Sub Sub cmd7_Click Reg=7 sReg="7" Number End Sub Sub cmd8_Click Reg=8 sReg="8" Number End Sub Sub cmd9_Click Reg=9 sReg="9" Number End Sub Sub cmdE_Click If FlagEnter=0 OR FlagEnter=2 Then ScrollUp sRegX="1E" FlagEnter=1 Else sRegX=StrInsert(sRegX,StrLength(sRegX),"E") End If lblRegX.Text=sRegX FlagE=1 FlagDot=1 End Sub Sub cmdDot_Click If FlagDot=0 Then If FlagEnter=0 OR FlagEnter=2 Then ScrollUp sRegX="0." FlagEnter=1 Else sRegX=StrInsert(sRegX,StrLength(sRegX),".") End If lblRegX.Text=sRegX FlagDot=1 End If End Sub Sub cmdScroll_Click RegX=RegY sRegX=RegX RegY=RegZ RegZ=RegT Display(1,RegX) Display(2,RegY) Display(3,RegZ) FlagDot=0 FlagEnter=0 FlagE=0 End Sub Sub cmdXY_Click GetRegX Reg=RegY RegY=RegX RegX=Reg EndFunction Display(2,RegY) End Sub Sub cmdChSign_Click If FlagE=0 Then RegX=-RegX If FlagEnter=1 Then If SubString(sRegX,0,1)="-" Then sRegX=StrRemove(sRegX,0,1) sRegX=StrInsert(sRegX,0," ") Else sRegX=StrRemove(sRegX,0,1) sRegX=StrInsert(sRegX,0,"-") End If lblRegX.Text=sRegX Else sRegX=RegX Display(1,RegX) End If Else I=StrLength(SRegX)-1 Do If SubString(sRegX,I,1)="E" Then Exit I=I-1 Loop Until I=0 If SubString(sRegX,I+1,1)="-" Then sRegX=StrRemove(sRegX,I+1,1) Else sRegX=StrInsert(sRegX,I+1,"-") End If lblRegX.Text=sRegX End If End Sub Sub cmdSin_Click GetRegX If FlagDeg=1 Then RegX=RegX*cPI/180 End If RegX=Sin(RegX) EndFunction End Sub Sub cmdArcSin_Click GetRegX If RegX<=1 Then RegX=ASin(RegX) If FlagDeg=1 Then RegX=RegX*180/cPI End If EndFunction Else lblRegX.Text="Error X>1" End If End Sub Sub cmdCos_Click GetRegX If FlagDeg=1 Then RegX=RegX*cPI/180 End If RegX=Cos(RegX) EndFunction End Sub Sub cmdArcCos_Click GetRegX If RegX<=1 Then RegX=ACos(RegX) If FlagDeg=1 Then RegX=RegX*180/cPI End If EndFunction Else lblRegX.Text="Error X>1" End If End Sub Sub cmdTan_Click GetRegX If FlagDeg=1 Then RegX=RegX*cPI/180 End If RegX=Tan(RegX) EndFunction End Sub Sub cmdArcTan_Click GetRegX If RegX<=1 Then RegX=ATan(RegX) If FlagDeg=1 Then RegX=RegX*180/cPI End If EndFunction End If End Sub Sub cmdPI_Click GetRegX ScrollUp RegX=cPI EndFunction End Sub Sub cmdLog_Click GetRegX RegX=Log(RegX) EndFunction End Sub Sub cmdLn_Click GetRegX RegX=Ln(RegX) EndFunction End Sub Sub cmdExp10_Click GetRegX RegX=10^RegX EndFunction End Sub Sub cmdExp_Click GetRegX RegX=cE^RegX EndFunction End Sub Sub cmdSQR_Click GetRegX RegX=Sqrt(RegX) EndFunction End Sub Sub cmdX2_Click GetRegX RegX=RegX*RegX EndFunction End Sub Sub cmdYX_Click GetRegX RegX=RegY^RegX ScrollDown End Sub Sub cmdInv_Click GetRegX If RegX<>0 Then RegX=1/RegX EndFunction Else lblRegX.Text="Error Div 0" End If End Sub Sub cmdDEG_Click FlagDeg=1 lblDEG.Text=" DEG" End Sub Sub cmdRAD_Click FlagDeg=0 lblDEG.Text=" RAD" End Sub Sub cmdRecPol_Click Reg=sRegX RegX=Sqrt(Reg*Reg+RegY*RegY) RegY=ATan(RegY/Reg) If FlagDeg=1 Then RegY=RegY*180/cPI End If sRegX=RegX Display(1,RegX) Display(2,RegY) FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub cmdPolRec_Click Reg=sRegX If FlagDeg=1 Then RegY=RegY*cPI/180 End If RegX=Reg*Cos(RegY) RegY=Reg*Sin(RegY) sRegX=RegX Display(1,RegX) Display(2,RegY) FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub cmdPourcent_Click GetRegX RegX=RegY/100*RegX ScrollDown End Sub Sub cmdSTO_Click GetRegX If FlagSTO=0 Then FlagSTO=1 cmdSTO.Color=cRed Else FlagSTO=0 cmdSTO.Color=212,208,200 End If End Sub Sub cmdRCL_Click If FlagRCL=0 Then FlagRCL=1 cmdRCL.Color=cRed Else FlagRCL=0 cmdRCL.Color=212,208,200 End If End Sub Sub cmdClM_Click For I=1 To 9 Mem(I)=0 Next I End Sub Sub cmdRD_Click GetRegX RegX=RegX*180/cPI EndFunction End Sub Sub cmdDR_Click GetRegX RegX=RegX*cPI/180 EndFunction End Sub Sub cmdRound_Click GetRegX FlagRound=1 cmdRound.Color=cRed End Sub Sub cmdSCI_Click GetRegX If FlagSCI=0 Then FlagSCI=1 Else FlagSCI=0 End If SRound FlagEnter=0 FlagDot=0 FlagE=0 End Sub Sub cmdBackSpace_Click If FlagEnter=1 AND StrLength(sRegX)>1 Then sRegX=SubString(sRegX,0,StrLength(sRegX)-1) lblRegX.Text=sRegX End If End Sub Sub cmdMemory_Click If lblMemory.Visible=false Then sReg="M1 = " sReg=StrInsert(sReg,StrLength(sReg),Mem(1)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M2 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(2)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M3 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(3)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M4 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(4)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M5 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(5)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M6 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(6)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M7 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(7)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M8 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(8)) sReg=StrInsert(sReg,StrLength(sReg),crlf) sReg=StrInsert(sReg,StrLength(sReg),"M9 = ") sReg=StrInsert(sReg,StrLength(sReg),Mem(9)) sReg=StrInsert(sReg,StrLength(sReg),crlf) lblMemory.Text=sReg lblMemory.Visible=true cmdMemory.Color=cRed Else lblMemory.Visible=false cmdMemory.Color=212,208,200 End If End Sub