static int put_data(struct _simulate *simulate, int PC, int reg, int Ad, int bw, uint32_t data) { struct _simulate_msp430 *simulate_msp430 = (struct _simulate_msp430 *)simulate->context; if (Ad == 0) // Rn { if (bw == 0) { simulate_msp430->reg[reg] = data; } else { //simulate_msp430->reg[reg]&=0xff00; //simulate_msp430->reg[reg]|=data&0xff; simulate_msp430->reg[reg] = data & 0xff; } return 0; } if (reg == 2) { if (Ad == 1) // &LABEL { uint16_t a = READ_RAM(PC) | (READ_RAM(PC+1) << 8); if (bw == 0) { WRITE_RAM(a, data & 0xff); WRITE_RAM(a + 1, data >> 8); } else { WRITE_RAM(a, data & 0xff); }
void MainWND::LOAD_PATTERN(void) { unsigned int W_ADDR=0,ADC0,ADC1; unsigned int i; // unsigned short int trailing_value = 399; TextFrame->AppendText(wxString::Format(wxT("Loading... "))); W_EN(true); wxYield(); TextFrame->AppendText(wxString::Format(wxT("Sending... "))); /* for(i=0; i<6; i++) { WADDR(W_ADDR); WRITE_RAM(trailing_value, trailing_value); W_STRB(); W_ADDR++; } */ // for(j=0; j<8; j++) { // for(i=0; i<512; i++) { for(i=0; i<samples_per_waveform; i+=4) { // for(i=0;i<128; i++){ // for(j=0;j<64; j+=2){ // W_ADDR = 128*i + j; // if (i==0) { // ADC0 = trailing_value; // } else { ADC0 = RAM_DATA[i+0]; // } ADC1 = RAM_DATA[i+1]; // ADC1 = 0xfff; // ADC1 = 0xfff; // ADC0 = RAM_DATA[i][j]; // ADC1 = RAM_DATA[i][j + 1]; //TextFrame->AppendText(wxString::Format(wxT("LOADING: %d of 128 and %d of 32\n"),i,j)); // TextFrame->AppendText(wxString::Format(wxT("[%03d, %03d, %04d] ADC0 = %04d, ADC1 = %04d\n"),i,j,W_ADDR,ADC0,ADC1)); WADDR(W_ADDR); WRITE_RAM(ADC0,ADC1); // WRITE_RAM(ADC1,ADC0); W_STRB(); W_ADDR++; // - - - - - - - - - - - - - ADC0 = RAM_DATA[i+2]; ADC1 = RAM_DATA[i+3]; // ADC0 = 0xfff; // ADC1 = 0xfff; // TextFrame->AppendText(wxString::Format(wxT("[%03d, %03d, %04d] ADC0 = %04d, ADC1 = %04d\n"),i,j,W_ADDR,ADC0,ADC1)); WADDR(W_ADDR); WRITE_RAM(ADC0,ADC1); // WRITE_RAM(ADC1,ADC0); W_STRB(); W_ADDR++; // - - - - - - - - - - - - - } // TextFrame->AppendText(wxString::Format(wxT("%d\n"), i)); /* for(i=0; i<samples_per_waveform; i+=4) { WADDR(W_ADDR); WRITE_RAM(trailing_value, trailing_value); W_STRB(); W_ADDR++; // - - - - - - - - - - - - - WADDR(W_ADDR); WRITE_RAM(trailing_value, trailing_value); W_STRB(); W_ADDR++; } // TextFrame->AppendText(wxString::Format(wxT("%d\n"), i)); // TextFrame->AppendText(wxString::Format(wxT("%03d\n"),j)); // } */ wxYield(); TextFrame->AppendText(wxString::Format(wxT("Done!!!\n"))); W_EN(false); //TX_LENGTH(4099); // TX_LENGTH(8192); }