static bool RecordMsgText( unsigned *conditions ) { char *p,*p2; unsigned flags; bool rc = false; do { flags = RemoteGetMsgText( TxtBuff, TXT_LEN ); p2 = TxtBuff; for( p = TxtBuff; *p != NULLCHAR ;p++ ) { if( *p != '\r' && *p != '\n' ) { *p2++ = *p; } } if( MsgText != NULL ) { DUIDlgTxt( MsgText ); DbgFree( MsgText ); MsgText = NULL; } *p2++ = '\n'; *p2 = NULLCHAR; rc = SetMsgText( TxtBuff, conditions ); } while( flags & MSG_MORE ); return( rc ); }
static void DisplayMsgText( void ) /********************************/ { if( MsgText != NULL ) { DUIDlgTxt( MsgText ); DbgFree( MsgText ); MsgText = NULL; } }
remap_return ReMapImageAddress( mappable_addr *loc, image_entry *image ) { map_entry *map; if( loc->image_name == NULL ) { return( REMAP_WRONG_IMAGE ); } if( strcmp( image->image_name, loc->image_name ) != 0 ) { return( REMAP_WRONG_IMAGE ); } for( map = image->map_list; map != NULL; map = map->link ) { if( map->map_addr.segment == loc->addr.mach.segment ) { loc->addr.mach.segment = map->real_addr.segment; loc->addr.mach.offset = loc->addr.mach.offset + map->real_addr.offset; AddrSection( &loc->addr, OVL_MAP_CURR ); DbgFree( loc->image_name ); loc->image_name = NULL; return( REMAP_REMAPPED ); } } return( REMAP_ERROR ); }
bool UnMapAddress( mappable_addr *loc, image_entry *image ) { map_entry *map; mod_handle himage; if( image == NULL ) { if( DeAliasAddrMod( loc->addr, &himage ) == SR_NONE ) return( false ); image = ImageEntry( himage ); } if( image == NULL ) return( false ); DbgFree( loc->image_name ); loc->image_name = DupStr( image->image_name ); for( map = image->map_list; map != NULL; map = map->link ) { if( map->real_addr.segment == loc->addr.mach.segment ) { loc->addr.mach.segment = map->map_addr.segment; loc->addr.mach.offset = loc->addr.mach.offset - map->real_addr.offset; return( true ); } } return( false ); }
static void VarModify( a_window *wnd, int row, int piece ) { var_node *v; type_kind class; var_window *var = WndVar( wnd ); bool ok; bool followable; unsigned old; if( row < 0 ) { if( var->vtype == VAR_WATCH || var->vtype == VAR_VARIABLE ) { VarMenuItem( wnd, MENU_VAR_NEW_EXPRESSION, row, piece ); } return; } VarErrState(); VarKillExprSPCache( &var->i ); v = VarFindRow( &var->i, row ); if( v == NULL ) { v = VarFindRowNode( &var->i, row ); if( v == NULL ) return; if( piece != VAR_PIECE_GADGET && piece != VAR_PIECE_NAME ) return; if( v->expand != NULL || v->node_type == NODE_INHERIT ) { VarExpandRow( &var->i, v, row ); WndNewCurrent( wnd, row, VAR_PIECE_NAME ); VarRepaint( wnd ); } return; } followable = VarGetStackClass( &class ); switch( piece ) { case VAR_PIECE_GADGET: case VAR_PIECE_NAME: if( VarExpandable( class ) || followable || v->expand != NULL ) { VarExpandRow( &var->i, v, row ); WndNewCurrent( wnd, row, VAR_PIECE_NAME ); VarRepaint( wnd ); } break; case VAR_PIECE_VALUE: if( !VarExpandable( class ) ) { char *value = DbgAlloc( TXT_LEN ); char *name = DbgAlloc( TXT_LEN ); old = VarNewCurrRadix( v ); ExprValue( ExprSP ); VarBuildName( &var->i, v, FALSE ); StrCopy( TxtBuff, name ); VarPrintText( &var->i, value, PrintValue, TXT_LEN ); VarKillExprSPCache( &var->i ); v = VarFindRow( &var->i, row ); FreezeStack(); ok = DlgAnyExpr( name, value, TXT_LEN ); UnFreezeStack( FALSE ); if( ok ) VarDoAssign( &var->i, v, value ); NewCurrRadix( old ); WndRowDirty( wnd, row ); DbgFree( value ); DbgFree( name ); } break; } VarDoneRow( &var->i ); VarOldErrState(); }
// Public void DbgInit(int baud_rate) { DbgFree(); Serial.begin(baud_rate); }