'Calculator
'By SierraKen on July 30, 2020.
'------------------------------
'This is my very first regular calculator.
'Thank you to B+ and TempodiBasic for the help and everyone for the inspiration!
'This was a 4 day project and I've wanted to make this all my life. Ever since I was real little
'playing around with my parents' calculator.
'Thank you Dav for the icon code!
'Added Clipboard by clicking the output number.
'Added Rad2Deg (and Deg2Rad), second power, Base 10 Logarithm, and Pi buttons.
'Added 1/x, x/2, exp, postive or negative.
'Added keyboard control and help page.
 
'Load the icon - call this somewhere near the top of your program
 
_TITLE "Calculator - Esc for help." begin:
num$ = ""
c = 0
a = 0: s = 0: t = 0: d = 0
'Setup calculator
LINE (50, 75)-(350, 350), _RGB32(255, 255, 255), B
 'Buttons
            c = c + 10
            LINE (buttonx 
+ bb
, buttony 
+ bb
)-(buttonx 
+ 75 - bb
, buttony 
+ 55 - bb
), _RGB32(100 + c
, 100 + c
, 100 + c
), B
         PAINT (buttonx 
+ 12, buttony 
+ 12), _RGB32(100 + c
, 100 + c
, 100 + c
)         c = 0
buttonx = 275: buttony = 20
'Green C Button
    c = c + 10
    LINE (buttonx 
+ bb
, buttony 
+ bb
)-(buttonx 
+ 75 - bb
, buttony 
+ 55 - bb
), _RGB32(50, 100 + c
, 50), B
 PAINT (buttonx 
+ 12, buttony 
+ 12), _RGB32(50, 100 + c
, 50) wer:
'Label Buttons
 
    IF a$ 
<> "" THEN mousex 
= 0: mousey 
= 0: mouseLeftButton 
= 0     IF a$ 
= CHR$(8) THEN a$ 
= "": 
GOTO delete: 
'Back Space deletes output.     IF a$ 
= "p" OR a$ 
= "P" OR a$ 
= "n" OR a$ 
= "N" THEN a$ 
= "": 
GOTO posneg: 
'Positive or Negative  
        mouseLeftButton = 0
 
        'Clipboard
            clip:
 
        'Clear
            delete:
            a = 0: s = 0: t = 0: d = 0: num$ = ""
            buttonx = 275: buttony = 20
 
        '1/x
            fraction:
            num = 1 / num
            skipthis:
            buttonx = 50: buttony = 405
 
        'x/2
            half:
            num = num / 2
            buttonx = 126: buttony = 405
 
        'EXP
            expcommand:
            buttonx = 200: buttony = 405
 
        'Postive or Negative
            posneg:
            num$ = "-" + num$
            skipplusnegative:
            buttonx = 275: buttony = 405
 
        'Radians and Degrees
            radanddeg:
            deg = deg + 1
            deg2rad:
            deg = 0
            skipdeg2rad:
            buttonx = 50: buttony = 350
 
        'Second Power
            squared:
            num = num ^ 2
            buttonx = 126: buttony = 350
 
        'logarithm
            logarithm:
            skiplog:
            buttonx = 200: buttony = 350
 
        'Pi
            pi:
            buttonx = 275: buttony = 350
 
        'Square Root
            squareroot:
            skip1:
            buttonx = 50: buttony = 75
 
        'Sine
            sine:
            buttonx = 126: buttony = 75
 
        'Cosine
            cosine:
            buttonx = 200: buttony = 75
 
        'Tangent
            tangent:
            buttonx = 275: buttony = 75
 
        'Number Buttons
            seven:
            num$ = num$ + "7"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 50: buttony = 130
            eight:
            num$ = num$ + "8"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 126: buttony = 130
            nine:
            num$ = num$ + "9"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 200: buttony = 130
            four:
            num$ = num$ + "4"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 50: buttony = 185
            five:
            num$ = num$ + "5"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 126: buttony = 185
            six:
            num$ = num$ + "6"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 200: buttony = 185
            one:
            num$ = num$ + "1"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 50: buttony = 240
            two:
            num$ = num$ + "2"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 126: buttony = 240
            three:
            num$ = num$ + "3"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 200: buttony = 240
            zero2:
            num$ = num$ + "0"
            IF n 
= 1 THEN num$ 
= "-" + num$: n 
= 0             buttonx = 50: buttony = 295
 
        'Decimal
            decimal:
            buttonx = 126: buttony = 295
            num$ = num$ + "."
            skipdec:
 
        'Equals
            equals:
            buttonx = 200: buttony = 295
 
        'Add
            add:
                d = 0: a = 1: s = 0: t = 0
                oldnum$ = num$
                num$ = ""
                num 
= VAL(oldnum$
) + VAL(num$
)                a = 0
            nex4:
            buttonx = 275: buttony = 295
 
        'Subtract
            subtract:
                d = 0: a = 0: s = 1: t = 0
                oldnum$ = num$
                num$ = ""
                num 
= VAL(oldnum$
) - VAL(num$
)                s = 0
            nex3:
            buttonx = 275: buttony = 240
 
        'Multiply
            multiply:
                d = 0: a = 0: s = 0: t = 1
                oldnum$ = num$
                num$ = ""
                num 
= VAL(oldnum$
) * VAL(num$
)                t = 0
            nex2:
            buttonx = 275: buttony = 185
 
        'Divide
            divide:
                d = 1: a = 0: s = 0: t = 0
                oldnum$ = num$
                num$ = ""
                num 
= VAL(oldnum$
) / VAL(num$
)                d = 0
            nex1:
            buttonx = 275: buttony = 130
'For Number Buttons.
number:
 
'For Math
number2:
 
 
'Pressing Each Button
press:
c = 110
    c = c - 10
    LINE (buttonx 
+ bb
, buttony 
+ bb
)-(buttonx 
+ 75 - bb
, buttony 
+ 55 - bb
), _RGB32(100 + c
, 100 + c
, 100 + c
), B
     c = c + 10
    LINE (buttonx 
+ bb
, buttony 
+ bb
)-(buttonx 
+ 75 - bb
, buttony 
+ 55 - bb
), _RGB32(100 + c
, 100 + c
, 100 + c
), B
  
'Pressing the Green C Button.
zero:
c = 110
    c = c - 10
    LINE (buttonx 
+ bb
, buttony 
+ bb
)-(buttonx 
+ 75 - bb
, buttony 
+ 55 - bb
), _RGB32(50, 100 + c
, 50), B
     c = c + 10
    LINE (buttonx 
+ bb
, buttony 
+ bb
)-(buttonx 
+ 75 - bb
, buttony 
+ 55 - bb
), _RGB32(50, 100 + c
, 50), B
  
help:
PRINT "Esc = Keyboard Help" PRINT "CTRL+C = Copies Output To Clipboard" PRINT "Left Mouse Click Output Copies To Clipboard." PRINT "Backspace = Deletes Output" PRINT "Letters can be upper or lower-case." PRINT "P or N = Positve and Negative Switch." PRINT "R or D = Radian and Degree Switch." PRINT "Below can be either Number Pad or the others." PRINT "1-9 = Number Keys" PRINT "* or X = Multiply" PRINT "Press Esc to go back to calculator." _TITLE "Calculator - Esc for help."  
 
'This Function is from Dav which makes the icon picture. It uses code at the start of this program.
FUNCTION BASIMAGE1& 
'calculatio icon data     A$ = ""
    A$ = A$ + "haIkJ^eBK\557GZJOl02m5YDX5J1A:YC0aGE##Oc?0RUD5A:HDOA=N=2N96`"
    A$ = A$ + ";87A#=X?hm4S6=N3_[XV4CRgn4]>co5=SJdI?IR9R7K2lSmNFke\bj?c<[I]"
    A$ = A$ + "3QXknHbT9:]dB;Y`kblMd7Tn#B3cF=CZmYb:[Tb<c<Y<b83Ua8c5QJnTNjY["
    A$ = A$ + "X[go?_W<f^AbX=I\7O8IGRiA[eSAbZ7[ZZ[nj[?Z`2;DgD#15lTf;ZXRXlc?"
    A$ = A$ + "okdUEiL`Q<>Ua]nAb]4c3\?_<S8[;_Z[[4mmQIWMfDNiUg3eeTb\[<1T9\n#"
    A$ = A$ + ":\4SR=obhEVAOUX[moCNM[n#j6965KQTImDj:U^BY;mZ[O4j7D>[T3Ukfin\"
    A$ = A$ + "eEomg?EB9U`DLa5[#dfRLlm]7mi0PVb:[\R;MmY>o4mUom;D>NbQnn1OoEee"
    A$ = A$ + "[kSNee7]lAjKcl=b#03T1o6NcX[Lg:Gjc3mIj[CmEbP_g>jjeLM3Ee5jg0m:"
    A$ = A$ + "4DO85DRAaV?IFkER^V#V5TaUnAbU4c3\?WaGln3OT^Jc8gk=gCOLPT=9V7]F"
    A$ = A$ + "GRkWOjYWVZYVJ8cV=cSA07;2]l1[okJn=mc6o9IbR9jG=o[4:8V>Lj#EM]jZ"
    A$ = A$ + "[B3>hPdHS=6chS?^bX84i3FKTA6Q\Je:3V7;a<F1a2ilJ[]VZj2[=jXSB;_l"
    A$ = A$ + "bdNk]7M`17#k_onlX8Dc74S=fH3Jb9WDAGH>\59n?7#<#^RLf[G_JZ[eGOM:"
    A$ = A$ + "H`PdeGO=c=gLS#DcW#Q2aJ>JM1KQ37V^mfKe5ARKTSAlA^VBGYdE:Mmg]^6H"
    A$ = A$ + "P1X012lRZ;\o\>k\CZWNjQjZ[^hl\nj[WkCIXQ6RlkgOL[[;_lBnk7onLK^i"
    A$ = A$ + "VD]eF;eJ[]B]dB;D5ED1O^9;MeNk]CmfK_T=KfX>jX3Zk^kVeDS=f8EGMeAW"
    A$ = A$ + "NjY?k[GUFJY\N#O:8VEGMeDIUE6IaRUTV^P]S>j8>o?olcY3?l#nN6TWhh[^"
    A$ = A$ + "jZW]^>iTChc3SPc>k<VkO_`o7On:IFgh]FOD_EkkMa5GTOn<JJ^iV5RFnPeA"
    A$ = A$ + "]5#\4?m2RYCW>EEG[\b:LmKD_;2AZo92]l1_GX]fJS1ce:Nj5TcNlhAhcGhn"
    A$ = A$ + "TiVK>Fo^LiBID4RlIQ5FPVHR9D^?4cQ=]RI\2bETcaBM3<jcW?jR;^P1e65Q"
    A$ = A$ + "JnPJck^k^?Z^1\Qed:^J1ba8ilOceiQ_hLR>>RnnN:k8gCTj:JBY[Dj2m5^m"
    A$ = A$ + "fKcnnFBGc>k\DiUG>_?UMfIWTR^>nhSiL1m<mBY;DSMZYVRZZZZX]fJ[4^^P"
    A$ = A$ + "?XoXIVIVGd[GH_3hMR3?l`lnCBdjJniWWO?WXW_CEgh^gMSn1`i1#>82el1e"
    A$ = A$ + "FD[O3\VFaE;#>RL=Fd5je2g3\dB;A^MkFID4Rl1m>j`Q35MQi`VFa<F1iZFm"
    A$ = A$ + "7RNRAoff]KG1lOVjn7oDXU?XWKlKS0`L]RWN1i\Xnian_JZYVDf[D4P=AXU?"
    A$ = A$ + "Hm6JX1VH9Na3A_o[o3Ph%%L2"
    btemp$ = ""
                IF F$ 
<> "%" THEN C$ 
= C$ 
+ F$
             B& 
= B& 
* 64 + ASC(MID$(B$
, t%
)) - 48            X$ 
= X$ 
+ CHR$(B& 
AND 255): B& 
= B& \ 
256