MCPcopy Create free account
hub / github.com/AppleWin/AppleWin / CmdBreakpointAddReg

Function CmdBreakpointAddReg

source/Debugger/Debug.cpp:1643–1718  ·  view source on GitHub ↗

=========================================================================== Pre: nArgs = last valid index into g_aArgs[]

Source from the content-addressed store, hash-verified

1641//===========================================================================
1642// Pre: nArgs = last valid index into g_aArgs[]
1643Update_t CmdBreakpointAddReg (const int nArgs)
1644{
1645 if (! nArgs)
1646 {
1647 return Help_Arg_1( CMD_BREAKPOINT_ADD_REG );
1648 }
1649
1650 BreakpointSource_t iSrc = BP_SRC_REG_PC;
1651 BreakpointOperator_t iCmp = BP_OP_EQUAL ;
1652
1653 bool bHaveSrc = false;
1654 bool bHaveCmp = false;
1655
1656 int iParamSrc;
1657 int iParamCmp;
1658
1659 int nFound;
1660
1661 int iArg = 1;
1662 while (iArg <= nArgs)
1663 {
1664 char *sArg = g_aArgs[iArg].sArg;
1665
1666 bHaveSrc = false;
1667 bHaveCmp = false;
1668
1669 nFound = FindParam( sArg, MATCH_EXACT, iParamSrc, _PARAM_REGS_BEGIN, _PARAM_REGS_END );
1670 if (nFound)
1671 {
1672 switch (iParamSrc)
1673 {
1674 case PARAM_REG_A : iSrc = BP_SRC_REG_A ; bHaveSrc = true; break;
1675 case PARAM_FLAGS : iSrc = BP_SRC_REG_P ; bHaveSrc = true; break;
1676 case PARAM_REG_X : iSrc = BP_SRC_REG_X ; bHaveSrc = true; break;
1677 case PARAM_REG_Y : iSrc = BP_SRC_REG_Y ; bHaveSrc = true; break;
1678 case PARAM_REG_PC: iSrc = BP_SRC_REG_PC; bHaveSrc = true; break;
1679 case PARAM_REG_SP: iSrc = BP_SRC_REG_S ; bHaveSrc = true; break;
1680 default:
1681 break;
1682 }
1683 }
1684
1685 nFound = FindParam( sArg, MATCH_EXACT, iParamCmp, _PARAM_BREAKPOINT_BEGIN, _PARAM_BREAKPOINT_END );
1686 if (nFound)
1687 {
1688 switch (iParamCmp)
1689 {
1690 case PARAM_BP_LESS_EQUAL : iCmp = BP_OP_LESS_EQUAL ; bHaveCmp = true; break;
1691 case PARAM_BP_LESS_THAN : iCmp = BP_OP_LESS_THAN ; bHaveCmp = true; break;
1692 case PARAM_BP_EQUAL : iCmp = BP_OP_EQUAL ; bHaveCmp = true; break;
1693 case PARAM_BP_NOT_EQUAL : iCmp = BP_OP_NOT_EQUAL ; bHaveCmp = true; break;
1694 case PARAM_BP_NOT_EQUAL_1 : iCmp = BP_OP_NOT_EQUAL ; bHaveCmp = true; break;
1695 case PARAM_BP_GREATER_THAN : iCmp = BP_OP_GREATER_THAN ; bHaveCmp = true; break;
1696 case PARAM_BP_GREATER_EQUAL: iCmp = BP_OP_GREATER_EQUAL; bHaveCmp = true; break;
1697 default:
1698 break;
1699 }
1700 }

Callers 1

CmdBreakpointAddSmartFunction · 0.85

Calls 3

Help_Arg_1Function · 0.85
FindParamFunction · 0.85

Tested by

no test coverage detected