PUBLIC JB,JB1,JB2,JB3,JBCOUNT,JBLAST,JABOTT,JABRIGHT,JBLH,JBLONG,JBL,JBFLAGER,JBROW,JBCOL,JBLROW,JBLCOL,JBOLD,JBTOP,JBOTT,JBANGLE,JBCURR,JBCURRA,JBOPER,JBMEM1,JBRESULT
STORE 0 TO JB1,JB2,JB3 && Initialize flags
STORE "DEG" TO JBANGLE
STORE "0" TO JBCURR,JBCURRA
STORE 0.0 TO JABRESULT
STORE " " TO JBOPER,JBMEM1
STORE .T. TO JBFLAGGER
IF TYPE("JABTOP") <> "N" && If the value in 'JABTOP' is not
STORE VAL(JABTOP) TO JABTOP && numeric, then find the value.
STORE 99 TO JB1 && Set JB1 flag, JB1 flags if the
ENDIF && second parameter is numeric or not.
IF TYPE("JABLEFT") <> "N"
STORE VAL(JABLEFT) TO JABLEFT && Same as above but for third
STORE 99 TO JB2 && parameter.
ENDIF
IF TYPE("JABSIZE") <> "N"
STORE VAL(JABSIZE) TO JABSIZE && Same as above but for third
STORE 99 TO JB3 && parameter.
ENDIF
DECLARE JBCALC[JABSIZE] && Declare Stack Size
CALL _SETCTYP WITH WORD(0) && Turn Cursor off.
FOR JBCNT = 1 TO JABSIZE
STORE " " TO JBCALC[JBCNT] && Initialize Stack
NEXT JBCNT
STORE "EOS" TO JBCALC[1] && Placing End of Stack Marker
STORE "╔═╗║╝═╚║" TO JBBOX && Characters for Calculator
STORE JABTOP + 18 TO JABOTT && Initialize Bottom Row of Calendar.
STORE JABLEFT + 28 TO JABRIGHT && Initialize Right Column
SET COLOR TO N/W
@ JABTOP,JABLEFT CLEAR TO JABOTT,JABRIGHT
@ JABTOP,JABLEFT SAY "╔═══════════════════════════╗"
@ JABTOP+1,JABLEFT SAY "║ DEG/Rad Help - F1 ║"
@ JABTOP+2,JABLEFT SAY "╟───────────────────────────╢"
@ JABTOP+3,JABLEFT SAY "║ ║"
@ JABTOP+4,JABLEFT SAY "╟───────────────────────────╢"
@ JABTOP+5,JABLEFT SAY "║ Func. Keys F2 - Clr.Mem ║"
@ JABTOP+6,JABLEFT SAY "║ ┌─3─╖┌─4─╖┌─╖┌─╖┌─╖┌─╖┌─╖ ║"
@ JABTOP+7,JABLEFT SAY "║ │Arc║│Log║│║│7║│8║│9║│/║ ║"
@ JABTOP+8,JABLEFT SAY "║ ╘═══╝╘═══╝╘═╝╘═╝╘═╝╘═╝╘═╝ ║"
@ JABTOP+9,JABLEFT SAY "║ ┌─5─╖┌─6─╖┌─╖┌─╖┌─╖┌─╖┌─╖ ║"
@ JABTOP+10,JABLEFT SAY "║ │Sin║│Exp║│%║│4║│5║│6║│*║ ║"
@ JABTOP+11,JABLEFT SAY "║ ╘═══╝╘═══╝╘═╝╘═╝╘═╝╘═╝╘═╝ ║"
@ JABTOP+12,JABLEFT SAY "║ ┌─7─╖┌─8─╖┌─╖┌─╖┌─╖┌─╖┌─╖ ║"
@ JABTOP+13,JABLEFT SAY "║ │Cos║│ π ║│M║│1║│2║│3║│-║ ║"
@ JABTOP+14,JABLEFT SAY "║ ╘═══╝╘═══╝╘═╝╘═╝╘═╝╘═╝╘═╝ ║"
@ JABTOP+15,JABLEFT SAY "║ ┌─9─╖┌─0─╖┌─╖┌─╖┌─╖┌─╖┌─╖ ║"
@ JABTOP+16,JABLEFT SAY "║ │Tan║│ √x║│R║│0║│.║│=║│+║ ║"
@ JABTOP+17,JABLEFT SAY "║ ╘═══╝╘═══╝╘═╝╘═╝╘═╝╘═╝╘═╝ ║"
@ JABTOP+18,JABLEFT SAY "╚═══════════════════════════╝"
********************
SET COLOR TO W/N
@ JABTOP+1,JABLEFT+25 SAY "F1"
SET COLOR TO N/W
@ JABTOP+2,JABLEFT+12 SAY " DEC "
SET COLOR TO W/N
@ JABTOP+1,JABLEFT+2 SAY JBANGLE
@ JABTOP+3,JABLEFT+1 SAY SPACE(27)
STORE "Y" TO JABWAIT
STORE "Greetings from..." TO JABANNER
STORE 5 TO JABTIMER
STORE "R" TO JABDIRECT
STORE LASTKEY() TO JABLAST
DO JBPRESS WITH JABANNER,JABWAIT,JABTIMER,JABTOP+3,JABLEFT+1,JABLEFT+27,JABLAST,JABDIRECT
STORE " " TO JABWAIT
STORE 0 TO JABLAST
SET COLOR TO W*/N
@ JABTOP+3,JABLEFT+1 SAY " JBCALC"
SET COLOR TO W/N
@ JABTOP+3,JABLEFT+9 SAY " - Scientific V1.0 "
DO JBDELAY WITH 2500
********************
SET COLOR TO W/N
@ JABTOP+3,JABLEFT+1 SAY SPACE(27)
@ JABTOP+3,JABLEFT+24 SAY JBCURR+" "
DO JBKEY && Mainline program - waiting for key
CALL _SETCTYP WITH WORD(1) && Set Cursor back on
IF JB1 = 99 && Ditto.
STORE STR(JABTOP,2) TO JABTOT
ENDIF
IF JB2 = 99 && Double Ditto
STORE STR(JABLEFT,2) TO JABLEFT
ENDIF
IF JB3 = 99 && Double Ditto
STORE STR(JABSIZE,3) TO JABLEFT
ENDIF
RELEASE ALL LIKE JB* && Release those stupid JB variables