Exemplo n.º 1
0
        // -------------------------------------------------------------------------------------------------
        // Gets the breakpoints
        //
        // \param   cb  The cb.
        // \param   tag (Optional) The tag.
        // -------------------------------------------------------------------------------------------------
        public void GetBreakpoints(SerialCallback cb, int tag = 0)
        {
            sendbuffer.Clear();
            AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_GetBreakpoint);

            SendCommand(UARTCommand.Cmd_GetBreakpoint, sendbuffer.ToArray(), cb, 53, tag, 0, 0);
        }
Exemplo n.º 2
0
        // -------------------------------------------------------------------------------------------------
        // Gets the registers
        //
        // \param   cb  The cb.
        // \param   tag (Optional) The tag.
        // -------------------------------------------------------------------------------------------------
        public void GetRegisters(SerialCallback cb, int tag = 0)
        {
            sendbuffer.Clear();
            AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_SendRegs);

            SendCommand(UARTCommand.Cmd_SendRegs, sendbuffer.ToArray(), cb, 93, tag, 0, 0);
        }
Exemplo n.º 3
0
        int _count;                                           // Counter for serial comm

        /// <summary>
        /// Constructor
        /// </summary>
        public SerialComm(string portName, SerialCallback callBack)
        {
            const uint bitRate = 115200;

            _portDef  = PortDefinition.CreateInstanceForSerial(portName, portName, bitRate);
            _callBack = callBack;
        }
Exemplo n.º 4
0
        public void RemoveBreakpoint(SerialCallback cb, int addr, int bank)
        {
            sendbuffer.Clear();
            AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_RemoveBreakpoint);
            Add8Value(ref sendbuffer, bank);
            Add16Value(ref sendbuffer, addr);

            SendCommand(UARTCommand.Cmd_RemoveBreakpoint, sendbuffer.ToArray(), cb, 0, 0, 0, 0);
        }
Exemplo n.º 5
0
        // -------------------------------------------------------------------------------------------------
        // Sends a watch
        //
        // \param   cb      The cb.
        // \param   addr    The address.
        // \param   bank    The bank.
        // \param   tag     (Optional) The tag.
        // -------------------------------------------------------------------------------------------------
        public void SendWatch(SerialCallback cb, int addr, int bank, int tag = 0)
        {
            sendbuffer.Clear();
            AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_SendWatch);
            Add8Value(ref sendbuffer, bank);
            Add16Value(ref sendbuffer, addr);

            SendCommand(UARTCommand.Cmd_SendWatch, sendbuffer.ToArray(), cb, 5, tag, addr, 0);
        }
Exemplo n.º 6
0
        public void SendRequest(byte[] bytes, SerialCallback callback)
        {
            _bytesToRead = 0;
            _serialPort.DiscardInBuffer();

            _callback     = callback;
            _requestOwner = bytes[0];

            byte function = bytes[1];
            int  quantity = 0;

            byte[] quantityBytes = null;

            switch (function)
            {
            case 1:
            case 2:

                quantity = Quantity(bytes);

                if (quantity % 8 == 0)
                {
                    _bytesToRead = 5 + quantity / 8;
                }
                else
                {
                    _bytesToRead = 6 + quantity / 8;
                }

                break;

            case 3:
            case 4:

                quantity     = Quantity(bytes);
                _bytesToRead = 5 + 2 * quantity;

                break;

            case 5:
            case 6:
            case 15:
            case 16:

                _bytesToRead = 8;

                break;
            }

            var crc = BitConverter.GetBytes(CalculateCRC(bytes, (ushort)(bytes.Length - 2), 0));

            bytes[bytes.Length - 2] = crc[0];
            bytes[bytes.Length - 1] = crc[1];

            _serialPort.Write(bytes, 0, bytes.Length);
        }
Exemplo n.º 7
0
 public SerialCommand(UARTCommand uart, byte[] c, SerialCallback cb, int wantBytes, int _tag = 0, int _a0 = 0, int _a1 = 0)
 {
     sendcommand = c;
     callback    = cb;
     tag         = _tag;
     uartCommand = uart;
     returnbytes = wantBytes;
     a0          = _a0;
     a1          = _a1;
 }
Exemplo n.º 8
0
        // -------------------------------------------------------------------------------------------------
        // Gets a memory
        //
        // \param   cb      The cb.
        // \param   addr    The address.
        // \param   bytes   The bytes.
        // \param   tag     (Optional) The tag.
        // -------------------------------------------------------------------------------------------------
        public void GetMemory(SerialCallback cb, int addr, int bytes, int bank, int tag = 0)
        {
            sendbuffer.Clear();
            AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_SendMem);
            Add8Value(ref sendbuffer, bank);
            Add16Value(ref sendbuffer, addr);
            Add16Value(ref sendbuffer, bytes);

            SendCommand(UARTCommand.Cmd_SendMem, sendbuffer.ToArray(), cb, bytes + 5, tag, addr, bytes);
        }
Exemplo n.º 9
0
 // -------------------------------------------------------------------------------------------------
 // Pause execution
 //
 // \param   cb      The cb.
 // \param   pause   True to pause.
 // -------------------------------------------------------------------------------------------------
 public void PauseExecution(SerialCallback cb, bool pause)
 {
     sendbuffer.Clear();
     if (pause)
     {
         Program.StepBusy = true;
         AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_Pause);
         SendCommand(UARTCommand.Cmd_Pause, sendbuffer.ToArray(), cb, 0, 0, 0, 0);
     }
     else
     {
         AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_Continue);
         SendCommand(UARTCommand.Cmd_Continue, sendbuffer.ToArray(), cb, 0, 0, 0, 0);
     }
 }
Exemplo n.º 10
0
        // -------------------------------------------------------------------------------------------------
        // Sends a command
        //
        // \param   uart        The uart.
        // \param   sendBytes   The send in bytes.
        // \param   cb          The cb.
        // \param   wantbytes   The wantbytes.
        // \param   tag         (Optional) The tag.
        // -------------------------------------------------------------------------------------------------
        public void SendCommand(UARTCommand uart, byte[] sendBytes, SerialCallback cb, int wantbytes, int tag, int a0, int a1)
        {
            if (pause)
            {
                return;
            }

            if (commands.Count > 50)
            {
                return;
            }
            if (!mySerialPort.IsOpen)
            {
                return;
            }

            SerialCommand t = new SerialCommand(uart, sendBytes, cb, wantbytes, tag, a0, a1);

            commands.Enqueue(t);
        }
Exemplo n.º 11
0
        public void SendRegisters(SerialCallback cb)
        {
            sendbuffer.Clear();
            AddCommand(ref sendbuffer, (int)UARTCommand.Cmd_SetRegs);
            Add8Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.f_e));
            Add8Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.a_e));
            Add8Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.r));
            Add8Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.i));
            Add8Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.f));
            Add8Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.a));

            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.iy));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.ix));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.bc_e));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.de_e));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.hl_e));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.bc));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.de));
            Add16Value(ref sendbuffer, MainForm.myNewRegisters.GetRegisterValueint(Registers.Z80Register.hl));

            SendCommand(UARTCommand.Cmd_SetRegs, sendbuffer.ToArray(), cb, 0, 0, 0, 0);
        }