示例#1
0
        protected virtual byte _mode2_Tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:
                return(0);

            case 31:
                completeEntry(toString());
                return(_rpnf.requestNextReceiver(_return_to));

            case 32:
                return(_rpnf.requestNextReceiver(_return_to));

            case 33:
                _rpnf.requestNextReceiver(_return_to);
                return(33);

            default:
                _mode = _Text;
                break;
            }
            return(scancode);
        }
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();
            char          c     = _convertButton(_AR_ButtonConversion, scancode);

            switch (c)
            {
            case 'e':     // entry completed
            case 'f':     // entry completed, action needed
                completeEntry(toTrimmedString());
                _rpnf.requestNextReceiver(_return_to);
                return((c == 'e') ? (byte)0 : scancode);

            case '0':
            case '1':
            case '2':
            case '3':
            case '4':
            case '5':
            case '6':
            case '7':
            case '8':
            case '9':
                _text.Remove(0, 1);
                _text.Append(c);
                if (_text[0] == ' ')
                {
                    break;
                }
                completeEntry(toTrimmedString());
                return(_rpnf.requestNextReceiver(_return_to));

            case 'c':     // erase
                _text.Remove(3, 1);
                _text.Insert(0, ' ');
                if (_text[3] != ' ')
                {
                    break;
                }
                completeEntry(toTrimmedString());
                return(_rpnf.requestNextReceiver(_return_to));

            default:
                break;
            }
            updateDisplay(toString());
            return(0);
        }
示例#3
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            if (!_parent._m_backgroundWorker.IsBusy)
            {
                return(_rpnf.requestNextReceiver("AUTO_N"));
            }
            if (scancode == 8)
            {
                _parent._m_backgroundWorker.CancelAsync();
                return(0);
            }
            TimeSpan ts = DateTime.Now.Subtract(_lastUIUpdate);
            bool     update_required = ts.TotalMilliseconds > KBD_RUNNING_DELAY;

            if (!update_required)
            {
                return(0);
            }
            LCD_Manager lm = _parent.getLCD();

            lm.updateStatusPC(_rpnf.progMem.getCounter());
            lm.updateStatusMC(_rpnf.extMem.getCounter());
            lm.updateCalcRegister(0, _rpnf.rpnStack.X.toString());
            lm.requestUpdate();
            _lastUIUpdate = DateTime.Now;
            return(0);
        }
示例#4
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("DATA_F"));

            case 2:
                return(_rpnf.requestNextReceiver("DATA_K"));

            case 4:
                //_parent._m_RPN_Stack.toggleAngleMode();
                // return base.tick(0);
                return(0);

            // Column 1 does nothing (for now)
            // Column 2 does nothing (for now)
            // Column 3 does nothing (for now)
            // Column 4 does nothing (for now)

            // Column 5
            case 24:
                return(_rpnf.requestNextReceiver("FILE_N"));

            // Column 6 does nothing (for now)

            // Column 7
            case 32:
            case 33:
                _rpnf.requestNextReceiver("DATA_N");
                return(33);

            default:     // all other buttons do nothing, keeping A-mode
                return(0);
            }
            //return _rpnf.requestNextReceiver("DATA_N");
        }
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("AUTO_FK"));

            case 3:
                return(_rpnf.requestNextReceiver("AUTO_A"));

            case 4:
                _parent._m_RPN_Stack.toggleAngleMode();
                return(base.tick(0));

            // Column 7
            case 29:
                _parent._m_Hardware_KBD.LEDOn = true;
                break;

            case 30:
                _parent._m_Hardware_KBD.LEDOn = false;
                break;

            case 32:
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("AUTO_N");
                return(33);

            default:     // all other buttons do nothing, keeping FA-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("AUTO_N"));
        }
示例#6
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("PROG_K"));

            case 3:
                return(_rpnf.requestNextReceiver("PROG_FA"));

            case 4:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DMOD_DEG);
                break;

            // Column 6
            case 27:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_POWYX);
                break;

            // Column 7
            case 32:
                // Clear FK mode
                return(_rpnf.requestNextReceiver("PROG_N"));

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("PROG_N");
                return(33);

            default:     // all other buttons do nothing, keeping FK-mode
                return(0);
            }
            _rpnf.progMem.incrementCounter();
            return(_rpnf.requestNextReceiver("PROG_N"));
        }
示例#7
0
        private void fontToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (myRPN.current_Receiver.Moniker == "AUTO_R")
            {
                return;
            }
            RPN_Functions fn = _stopIfRunning();

            fn.requestNextReceiver("FontTest");
            myRPN.tick();
            timer1.Enabled = true;
        }
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("AUTO_K"));

            case 3:
                return(_rpnf.requestNextReceiver("AUTO_FA"));

            case 4:
                _parent._m_RPN_Stack.toggleAngleMode();
                return(base.tick(0));

            // Column 6
            case 27:
                _rpnf.execute(RPN_Functions.FUNC_POWYX);
                break;

            // Column 7
            case 32:
                // Clear FK mode
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("AUTO_N");
                return(33);

            default:     // all other buttons do nothing, keeping FK-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("AUTO_N"));
        }
示例#9
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:
                return(0);

            case 31:
                performAction();
                return(_rpnf.requestNextReceiver(_return_to));

            case 33:
                _rpnf.requestNextReceiver(_return_to);
                return(33);

            default:
                break;
            }
            return(_rpnf.requestNextReceiver(_return_to));
        }
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();
            char          c     = _convertButton(_RR_ButtonConversion, scancode);

            switch (c)
            {
            case (char)0:
                return(0);

            case 'f':     // entry completed, action needed
                _rpnf.requestNextReceiver(_return_to);
                return(scancode);

            case 'a':
                _text.Append("L0");
                break;

            case 'b':
                _text.Append("L1");
                break;

            case 'c':
                _text.Append("L2");
                break;

            case 'd':
                _text.Append("L3");
                break;

            default:
                _text.Append(c);
                break;
            }
            completeEntry(toString());
            return(_rpnf.requestNextReceiver(_return_to));
        }
示例#11
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("FILE_FK"));

            case 3:
                return(_rpnf.requestNextReceiver("FILE_A"));

            // Column 1 does nothing (for now)

            // Column 2
            case 9:
                _rpnf.execute(RPN_Functions.FUNC_LOADALL);
                return(_rpnf.requestNextReceiver("AUTO_N"));

            case 10:
                return(_rpnf.requestNextReceiver("File_Overwrite_All"));

            case 12:
                return(_rpnf.requestNextReceiver("File_All"));

            // Column 3 does nothing (for now)
            // Column 4 does nothing (for now)
            // Column 5 does nothing (for now)
            // Column 6 does nothing (for now)

            // Column 7
            case 32:
                return(_rpnf.requestNextReceiver("Prog_Erase", "PROG_N"));

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("FILE_N");
                return(33);

            default:     // all other buttons do nothing, keeping K-mode
                return(0);
            }
            //return _rpnf.requestNextReceiver("FILE_N");
        }
示例#12
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("PROG_F"));

            case 3:
                return(_rpnf.requestNextReceiver("PROG_A"));

            case 4:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DMOD_RAD);
                break;

            // Column 1
            case 5:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTLTY);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 6:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTEQY);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 7:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTGEY);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 8:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTNEY);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            // Column 2
            case 9:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_K_M2X);
                return(_rpnf.requestNextReceiver("REGISTER", "PROG_N"));

            case 10:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_K_X2M);
                return(_rpnf.requestNextReceiver("REGISTER", "PROG_N"));

            case 11:
                _rpnf.progMem.updateLine_P("# K-GOTO is bad!");
                break;

            case 12:
                _rpnf.progMem.updateLine_P("# K-GOSUB is bad!");
                break;

            // Column 3
            case 13:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_WHOLE);
                break;

            case 14:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_ABS);
                break;

            case 15:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_EE);
                break;

            case 16:
                _rpnf.progMem.commentLine();
                break;

            // Column 4
            case 17:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_FRAC);
                break;

            case 18:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_SIGN);
                break;

            case 19:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LOG);
                break;

            case 20:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_AND);
                break;

            // Column 5
            case 21:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_MAX);
                break;

            case 22:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DM2D);
                break;

            case 23:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DMS2D);
                break;

            case 24:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_OR);
                break;

            // Column 6
            case 25:
                // TODO
                _rpnf.progMem.updateLine_P("#K-SQRT");
                break;

            case 26:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_D2DM);
                break;

            case 27:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_D2DMS);
                break;

            case 28:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_XOR);
                break;

            // Column 7
            case 29:
                // TODO
                _rpnf.progMem.updateLine_P("#K-1/X");
                break;

            case 30:
                // TODO
                _rpnf.progMem.updateLine_P("#K-X^2");
                break;

            case 31:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_RAND);
                break;

            case 32:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_NOT);
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("PROG_N");
                return(33);

            default:     // all other buttons do nothing, keeping K-mode
                return(0);
            }
            _rpnf.progMem.incrementCounter();
            return(_rpnf.requestNextReceiver("PROG_N"));
        }
示例#13
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("DATA_K"));

            case 3:
                return(_rpnf.requestNextReceiver("DATA_A"));

            case 4:
                //_parent._m_RPN_Stack.toggleAngleMode();
                //return base.tick(0);
                return(0);

            // Column 1
            case 5:
                for (int i = 0; i < 9; i++)
                {
                    _rpnf.extMem.incrementCounter();
                }
                break;

            case 6:
                for (int i = 0; i < 9; i++)
                {
                    _rpnf.extMem.decrementCounter();
                }
                break;
            //case 7:
            //    TODO: goto to the next entry
            //    break;
            // Column 2 does nothing (for now)
            // Column 3 does nothing (for now)
            // Column 4 does nothing (for now)

            // Column 5
            case 24:
                return(_rpnf.requestNextReceiver("AUTO_N"));

            // Column 6
            case 28:
                return(_rpnf.requestNextReceiver("PROG_N"));

            // Column 7
            case 32:
                // Clear F mode
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("DATA_N");
                return(33);

            default:     // all other buttons do nothing, keeping F-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("DATA_N"));
        }
示例#14
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("AUTO_FK"));

            case 3:
                return(_rpnf.requestNextReceiver("AUTO_A"));

            case 4:
                _parent._m_RPN_Stack.toggleAngleMode();
                return(base.tick(0));

            // Column 1 does nothing (for now)
            case 5:
            case 6:
            case 7:
            case 8:
                return(0);

            // Column 2
            case 9:
                return(_rpnf.requestNextReceiver("REGISTER_KMX"));

            case 10:
                return(_rpnf.requestNextReceiver("REGISTER_KXM"));

            case 11:
                _parent._m_RPN_Stack.setLabel_P(0, "K-GOTO is bad for you!");
                break;

            case 12:
                _parent._m_RPN_Stack.setLabel_P(0, "K-GOSUB is bad for you!");
                break;

            // Column 3
            case 13:
                _rpnf.execute(RPN_Functions.FUNC_WHOLE);
                break;

            case 14:
                _rpnf.execute(RPN_Functions.FUNC_ABS);
                break;

            case 15:
                _rpnf.execute(RPN_Functions.FUNC_EE);
                break;

            case 16:
                // NOP
                break;

            // Column 4
            case 17:
                _rpnf.execute(RPN_Functions.FUNC_FRAC);
                break;

            case 18:
                _rpnf.execute(RPN_Functions.FUNC_SIGN);
                break;

            case 19:
                _rpnf.execute(RPN_Functions.FUNC_LOG);
                break;

            case 20:
                _rpnf.execute(RPN_Functions.FUNC_AND);
                break;

            // Column 5
            case 21:
                _rpnf.execute(RPN_Functions.FUNC_MAX);
                break;

            case 22:
                _rpnf.execute(RPN_Functions.FUNC_DM2D);
                break;

            case 23:
                _rpnf.execute(RPN_Functions.FUNC_DMS2D);
                break;

            case 24:
                _rpnf.execute(RPN_Functions.FUNC_OR);
                break;

            // Column 6
            case 25:
                // TODO
                _parent._m_RPN_Stack.setLabel_P(0, "K-SQRT is available!");
                break;

            case 26:
                _rpnf.execute(RPN_Functions.FUNC_D2DM);
                break;

            case 27:
                _rpnf.execute(RPN_Functions.FUNC_D2DMS);
                break;

            case 28:
                _rpnf.execute(RPN_Functions.FUNC_XOR);
                break;

            // Column 7
            case 29:
                // TODO
                _parent._m_RPN_Stack.setLabel_P(0, "K-1/X is available!");
                break;

            case 30:
                // TODO
                _parent._m_RPN_Stack.setLabel_P(0, "K-X2 is available!");
                break;

            case 31:
                _rpnf.execute(RPN_Functions.FUNC_RAND);
                break;

            case 32:
                _rpnf.execute(RPN_Functions.FUNC_NOT);
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("AUTO_N");
                return(33);

            default:     // all other buttons do nothing, keeping K-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("AUTO_N"));
        }
示例#15
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("DATA_F"));

            case 2:
                return(_rpnf.requestNextReceiver("DATA_K"));

            case 3:
                return(_rpnf.requestNextReceiver("DATA_A"));

            case 4:
                // TODO: Insert mode
                //_parent._m_RPN_Stack.toggleAngleMode();
                // base.tick(0);
                return(0);

            // Column 1
            case 5:
                _rpnf.extMem.incrementCounter();
                break;

            case 6:
                _rpnf.extMem.decrementCounter();
                break;

            case 7:
                _rpnf.extMem.resetCounter();
                break;

            case 8:
                _rpnf.execute(RPN_Functions.FUNC_MEXTOX);
                _rpnf.extMem.incrementCounter();
                break;

            // Column 2
            case 9:
                // TODO
                return(_rpnf.requestNextReceiver("REGISTER_ME"));

            case 10:
                // TODO
                return(_rpnf.requestNextReceiver("REGISTER_EM"));

            case 11:
                return(_rpnf.requestNextReceiver("ADDRESS_MC", "DATA_N"));

            case 12:
                _rpnf.execute(RPN_Functions.FUNC_XTOMEX);
                _rpnf.extMem.incrementCounter();
                break;

            // Column 3-5 - number entry

            // Column 6
            case 25:
            case 26:
                break;

            case 27:
                _rpnf.execute(RPN_Functions.FUNC_MEMSWP);
                _rpnf.extMem.incrementCounter();
                break;

            // Column 7
            case 29:
            case 30:
                break;

            case 31:
                _rpnf.execute(RPN_Functions.FUNC_MEMSET,
                              _parent._m_RPN_Stack._DataEntry.ToString().Trim());
                _rpnf.extMem.incrementCounter();
                break;

            case 32:
                _parent._m_Extended_Memory.clearCurrent();
                _rpnf.extMem.incrementCounter();
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("OFF");
                return(33);

            default:     // all other buttons activate number entry
                _rpnf.requestNextReceiver("NUMBER_DATA");
                return(scancode);
            }
            return(base.tick(0));
        }
示例#16
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("PROG_FK"));

            case 3:
                return(_rpnf.requestNextReceiver("PROG_A"));

            case 4:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DMOD_DEG);
                break;

            // Column 1
            case 5:
                for (int i = 0; i < 9; i++)
                {
                    _rpnf.progMem.incrementCounter();
                }
                return(base.tick(0));

            case 6:
                for (int i = 0; i < 9; i++)
                {
                    _rpnf.progMem.decrementCounter();
                }
                return(base.tick(0));

            case 7:
                _rpnf.progMem.resetCounter();
                return(_rpnf.requestNextReceiver("PROG_N"));

            // Column 2
            case 11:
                return(_rpnf.requestNextReceiver("ADDRESS_PC", "PROG_N"));

            case 12:
                _rpnf.progMem.setCounterToBottom();
                return(_rpnf.requestNextReceiver("PROG_N"));

            // Column 6
            case 25:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DELAY);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 26:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_UPDATE);
                break;

            // Column 7
            case 29:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LEDON);
                break;

            case 30:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LEDOFF);
                break;

            case 31:
                _rpnf.progMem.updateLine(_rpnf.rpnStack.X.toString());
                break;

            case 32:
                // Clear FA mode
                return(_rpnf.requestNextReceiver("PROG_N"));

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("PROG_N");
                return(33);

            default:     // all other buttons do nothing, keeping FA-mode
                return(0);
            }
            _rpnf.progMem.incrementCounter();
            return(_rpnf.requestNextReceiver("PROG_N"));
        }
示例#17
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("AUTO_FA"));

            case 2:
                return(_rpnf.requestNextReceiver("AUTO_K"));

            case 4:
                _parent._m_RPN_Stack.toggleAngleMode();
                return(base.tick(0));

            // Column 1
            case 5:
                _rpnf.extMem.incrementCounter();
                break;

            case 6:
                _rpnf.extMem.decrementCounter();
                break;

            case 7:
                _rpnf.extMem.resetCounter();
                break;

            case 8:
                return(0);

            // Column 2
            case 9:
                return(_rpnf.requestNextReceiver("ADDRESS_AMX"));

            case 10:
                return(_rpnf.requestNextReceiver("ADDRESS_AXM"));

            case 11:
                return(_rpnf.requestNextReceiver("ADDRESS_MC", "AUTO_N"));

            case 12:
                _rpnf.execute(RPN_Functions.FUNC_A_M2X);
                _rpnf.extMem.incrementCounter();
                break;

            // Column 3 does nothing
            // Column 4 does nothing

            // Column 5
            case 22:
                _rpnf.execute(RPN_Functions.FUNC_D2RAD);
                break;

            case 23:
                _rpnf.execute(RPN_Functions.FUNC_MM2IN);
                break;

            case 24:
                return(_rpnf.requestNextReceiver("FILE_N"));

            // Column 6
            case 25:
                // TODO
                _parent._m_RPN_Stack.setLabel_P(0, "A-SQRT is available!");
                break;

            case 26:
                _rpnf.execute(RPN_Functions.FUNC_RAD2D);
                break;

            case 27:
                _rpnf.execute(RPN_Functions.FUNC_IN2MM);
                break;

            case 28:
                return(_rpnf.requestNextReceiver("DATA_N"));

            // Column 7
            case 29:
                // TODO
                _parent._m_RPN_Stack.setLabel_P(0, "A-1/X is available!");
                break;

            case 30:
                // TODO
                _parent._m_RPN_Stack.setLabel_P(0, "A-X2 is available!");
                break;

            case 31:
                _rpnf.execute(RPN_Functions.FUNC_SEED);
                break;

            case 32:
            case 33:
                _rpnf.requestNextReceiver("AUTO_N");
                return(33);

            default:     // all other buttons do nothing, keeping A-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("AUTO_N"));
        }
示例#18
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:
                return(0);

            case 4:
                _mode++;
                if (_mode > _Number)
                {
                    _mode = _Text;
                }
                updateDisplay(toString());
                return(0);

            case 31:
                completeEntry(toString());
                return(_rpnf.requestNextReceiver(_return_to));

            case 32:
                if (_text.Length > 0)
                {
                    _text.Remove(_text.Length - 1, 1);
                }
                updateDisplay(toString());
                return(0);

            case 33:
                _rpnf.requestNextReceiver(_return_to);
                return(33);

            default:
                break;
            }

            char c = (char)0;

            switch (_mode)
            {
            case _Text:
                c = _convertButton(_RT_LetterConversion, scancode);
                break;

            case _Number:
                c = _convertButton(_RT_DigitConversion, scancode);
                break;

            default:
                break;
            }
            if (c == 0)
            {
                return(0);
            }
            if (_text.Length >= RPN_Functions.PROGRAM_LINE_LENGTH)
            {
                return(0);
            }
            _text.Append(c);
            updateDisplay(toString());
            return(0);
        }
示例#19
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(base.tick(0));

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("AUTO_F"));

            case 2:
                return(_rpnf.requestNextReceiver("AUTO_K"));

            case 3:
                return(_rpnf.requestNextReceiver("AUTO_A"));

            case 4:
                _parent._m_RPN_Stack.toggleAngleMode();
                break;

            // Column 1
            case 5:
                _rpnf.progMem.incrementCounter();
                break;

            case 6:
                _rpnf.progMem.decrementCounter();
                break;

            case 7:
                _rpnf.progMem.resetCounter();
                break;

            case 8:
                return(_rpnf.requestNextReceiver("AUTO_R"));

            // Column 2
            case 9:
                return(_rpnf.requestNextReceiver("REGISTER_MX"));

            case 10:
                return(_rpnf.requestNextReceiver("REGISTER_XM"));

            case 11:
                return(_rpnf.requestNextReceiver("ADDRESS_PC"));

            case 12:
                _rpnf.executeStep();
                break;

            // Column 5
            case 24:
                _rpnf.execute(RPN_Functions.FUNC_NEGATE);
                break;

            // Column 6
            case 25:
                _rpnf.execute(RPN_Functions.FUNC_MINUS);
                break;

            case 26:
                _rpnf.execute(RPN_Functions.FUNC_PLUS);
                break;

            case 27:
                _rpnf.execute(RPN_Functions.FUNC_SWAP);
                break;

            // Column 7
            case 29:
                _rpnf.execute(RPN_Functions.FUNC_DIVIDE);
                break;

            case 30:
                _rpnf.execute(RPN_Functions.FUNC_MULTIPLY);
                break;

            case 31:
                _rpnf.execute(RPN_Functions.FUNC_ENTER);
                break;

            case 32:
                if (_parent._m_RPN_Stack.customLabels())
                {
                    _parent._m_RPN_Stack.resetLabels();
                }
                else
                {
                    _rpnf.execute(RPN_Functions.FUNC_CLEAR_X);
                }
                break;

            case 33:
                return(_rpnf.requestNextReceiver("OFF"));

            default:          // all other buttons activate number entry
                _rpnf.execute(RPN_Functions.FUNC_ENTER);
                base.tick(0); // redraw stack movement
                _rpnf.requestNextReceiver("NUMBER");
                return(scancode);
            }
            return(base.tick(0));
        }
示例#20
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("FILE_K"));

            case 3:
                return(_rpnf.requestNextReceiver("FILE_A"));

            // Column 1
            case 5:
                for (int i = 0; i < 9; i++)
                {
                    _parent.getSD().nextListingPosition();
                }
                break;

            case 6:
                for (int i = 0; i < 9; i++)
                {
                    _parent.getSD().previousListingPosition();
                }
                break;

            // Column 2
            case 9:
                _rpnf.execute(RPN_Functions.FUNC_LOADDATA);
                return(_rpnf.requestNextReceiver("DATA_N"));

            case 10:
                return(_rpnf.requestNextReceiver("File_Overwrite_Data"));

            case 12:
                return(_rpnf.requestNextReceiver("File_Data"));

            // Column 3 does nothing (for now)
            // Column 4 does nothing (for now)

            // Column 5
            case 24:
                return(_rpnf.requestNextReceiver("AUTO_N"));

            // Column 6
            case 28:
                return(_rpnf.requestNextReceiver("PROG_N"));

            // Column 7
            case 32:
                // Clear F mode
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("FILE_N");
                return(33);

            default:     // all other buttons do nothing, keeping F-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("FILE_N"));
        }
示例#21
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("PROG_F"));

            case 2:
                return(_rpnf.requestNextReceiver("PROG_K"));

            case 4:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DMOD_GRD);
                break;

            // Column 1
            case 5:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LBT);
                return(_rpnf.requestNextReceiver("TEXT", "PROG_N"));

            case 6:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LBZ);
                return(_rpnf.requestNextReceiver("TEXT", "PROG_N"));

            case 7:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LBY);
                return(_rpnf.requestNextReceiver("TEXT", "PROG_N"));

            case 8:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LBX);
                return(_rpnf.requestNextReceiver("TEXT", "PROG_N"));

            // Column 2
            case 9:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_A_M2X);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 10:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_A_X2M);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 11:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LBR);
                break;

            case 12:
                _rpnf.progMem.deleteLine();
                break;

            // Column 3
            case 16:
                _rpnf.progMem.commentLine();
                return(_rpnf.requestNextReceiver("TEXT", "PROG_N"));

            // Column 5
            case 22:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_D2RAD);
                break;

            case 23:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_MM2IN);
                break;

            case 24:
                return(_rpnf.requestNextReceiver("FILE_N"));

            // Column 6
            case 26:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_RAD2D);
                break;

            case 27:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IN2MM);
                break;

            case 28:
                return(_rpnf.requestNextReceiver("DATA_N"));

            // Column 7
            case 31:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_SEED);
                break;

            case 32:
            case 33:
                _rpnf.requestNextReceiver("PROG_N");
                return(33);

            default:     // all other buttons do nothing, keeping A-mode
                return(0);
            }
            _rpnf.progMem.incrementCounter();
            return(_rpnf.requestNextReceiver("PROG_N"));
        }
示例#22
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("PROG_FK"));

            case 3:
                return(_rpnf.requestNextReceiver("PROG_FA"));

            case 4:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DMOD_DEG);
                break;

            // Column 1
            case 5:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTLT0);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 6:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTEQ0);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 7:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTGE0);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 8:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_IFNOTNE0);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            // Column 2 does nothing (for now)
            case 9:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_L0);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 10:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_L1);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 11:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_L2);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            case 12:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_L3);
                return(_rpnf.requestNextReceiver("ADDRESS", "PROG_N"));

            // Column 3
            case 13:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_SIN);
                break;

            case 14:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_ARCSIN);
                break;

            case 15:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_EXP);
                break;

            case 16:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_10X);
                break;

            // Column 4
            case 17:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_COS);
                break;

            case 18:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_ARCCOS);
                break;

            case 19:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LG);
                break;

            case 20:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_ROT);
                break;

            // Column 5
            case 21:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_TG);
                break;

            case 22:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_ARCTG);
                break;

            case 23:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_LN);
                break;

            case 24:
                return(_rpnf.requestNextReceiver("AUTO_N"));

            // Column 6
            case 25:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_SQRT);
                break;

            case 26:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_PI);
                break;

            case 27:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_POW);
                break;

            case 28:
                // PROG is already on
                return(_rpnf.requestNextReceiver("PROG_N"));

            // Column 7
            case 29:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_1X);
                break;

            case 30:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_X2);
                break;

            case 31:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_BX);
                break;

            case 32:
                // Clear F mode
                return(_rpnf.requestNextReceiver("PROG_N"));

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("PROG_N");
                return(33);

            default:     // all other buttons do nothing, keeping F-mode
                return(0);
            }
            _rpnf.progMem.incrementCounter();
            return(_rpnf.requestNextReceiver("PROG_N"));
        }
示例#23
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(base.tick(0));

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("PROG_F"));

            case 2:
                return(_rpnf.requestNextReceiver("PROG_K"));

            case 3:
                return(_rpnf.requestNextReceiver("PROG_A"));

            case 4:
                _parent._m_Program_Memory.toggleEditMode();
                return(base.tick(0));

            // Column 1
            case 5:
                break;

            case 6:
                _rpnf.progMem.decrementCounter();
                return(base.tick(0));

            case 7:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_RETURN);
                break;

            case 8:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_STOP);
                break;

            // Column 2
            case 9:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_M2X);
                return(_rpnf.requestNextReceiver("REGISTER"));

            case 10:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_X2M);
                return(_rpnf.requestNextReceiver("REGISTER"));

            case 11:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_GOTO);
                return(_rpnf.requestNextReceiver("ADDRESS"));

            case 12:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_GOSUB);
                return(_rpnf.requestNextReceiver("ADDRESS"));

            // Column 5
            case 24:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_NEGATE);
                break;

            // Column 6
            case 25:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_MINUS);
                break;

            case 26:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_PLUS);
                break;

            case 27:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_SWAP);
                break;

            // Column 7
            case 29:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_DIVIDE);
                break;

            case 30:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_MULTIPLY);
                break;

            case 31:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_ENTER);
                break;

            case 32:
                _rpnf.appendProgramLine_P(RPN_Functions.FUNC_CLEAR_X);
                break;

            case 33:
                return(_rpnf.requestNextReceiver("OFF"));

            default:     // all other buttons activate number entry
                _rpnf.requestNextReceiver("NUMBER_PROG");
                return(scancode);
            }
            _rpnf.progMem.incrementCounter();
            return(base.tick(0));
        }
示例#24
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 1:
                return(_rpnf.requestNextReceiver("FILE_F"));

            case 2:
                return(_rpnf.requestNextReceiver("FILE_K"));

            case 3:
                return(_rpnf.requestNextReceiver("FILE_A"));

            // Column 1
            case 5:
                _parent.getSD().nextListingPosition();
                break;

            case 6:
                _parent.getSD().previousListingPosition();
                break;

            case 7:
                _parent.getSD().upFolder();
                break;

            case 8:
                _rpnf.stepIn();
                break;

            // Column 2
            case 9:
                _rpnf.execute(RPN_Functions.FUNC_LOAD);
                return(_rpnf.requestNextReceiver("PROG_N"));

            case 10:
                return(_rpnf.requestNextReceiver("File_Overwrite"));

            case 11:
                // find program TODO
                break;

            case 12:
                return(_rpnf.requestNextReceiver("File_Name"));

            // Column 3-5 - do nothing (for now)

            // Column 6
            case 28:
                return(_rpnf.requestNextReceiver("File_MkDir"));

            // Column 7
            case 31:
                _rpnf.stepIn();
                break;

            case 32:
                return(_rpnf.requestNextReceiver("File_Delete"));

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("OFF");
                return(33);

            default:     // all other buttons do nothing (for now)
                return(0);
            }
            return(base.tick(0));
        }
示例#25
0
        public override byte tick(byte scancode)
        {
            RPN_Functions _rpnf = _parent.getFunctions();

            switch (scancode)
            {
            case 0:     // keyboard inactive
                return(0);

            // Column 0
            case 2:
                return(_rpnf.requestNextReceiver("AUTO_FK"));

            case 3:
                return(_rpnf.requestNextReceiver("AUTO_FA"));

            case 4:
                _parent._m_RPN_Stack.toggleAngleMode();
                return(base.tick(0));

            // Column 1 does nothing (for now)
            case 5:
            case 6:
            case 7:
            case 8:

            // Column 2 does nothing (for now)
            case 9:
            case 10:
            case 11:
            case 12:
                return(0);

            // Column 3
            case 13:
                _rpnf.execute(RPN_Functions.FUNC_SIN);
                break;

            case 14:
                _rpnf.execute(RPN_Functions.FUNC_ARCSIN);
                break;

            case 15:
                _rpnf.execute(RPN_Functions.FUNC_EXP);
                break;

            case 16:
                _rpnf.execute(RPN_Functions.FUNC_10X);
                break;

            // Column 4
            case 17:
                _rpnf.execute(RPN_Functions.FUNC_COS);
                break;

            case 18:
                _rpnf.execute(RPN_Functions.FUNC_ARCCOS);
                break;

            case 19:
                _rpnf.execute(RPN_Functions.FUNC_LG);
                break;

            case 20:
                _rpnf.execute(RPN_Functions.FUNC_ROT);
                break;

            // Column 5
            case 21:
                _rpnf.execute(RPN_Functions.FUNC_TG);
                break;

            case 22:
                _rpnf.execute(RPN_Functions.FUNC_ARCTG);
                break;

            case 23:
                _rpnf.execute(RPN_Functions.FUNC_LN);
                break;

            case 24:
                // AUTO is already on
                break;

            // Column 6
            case 25:
                _rpnf.execute(RPN_Functions.FUNC_SQRT);
                break;

            case 26:
                _rpnf.execute(RPN_Functions.FUNC_PI);
                break;

            case 27:
                _rpnf.execute(RPN_Functions.FUNC_POW);
                break;

            case 28:
                return(_rpnf.requestNextReceiver("PROG_N"));

            // Column 7
            case 29:
                _rpnf.execute(RPN_Functions.FUNC_1X);
                break;

            case 30:
                _rpnf.execute(RPN_Functions.FUNC_X2);
                break;

            case 31:
                _rpnf.execute(RPN_Functions.FUNC_BX);
                break;

            case 32:
                // Clear F mode
                break;

            case 33:
                // Shutdown signal
                _rpnf.requestNextReceiver("AUTO_N");
                return(33);

            default:     // all other buttons do nothing, keeping F-mode
                return(0);
            }
            return(_rpnf.requestNextReceiver("AUTO_N"));
        }