Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

Troubleshooting
Research
Professional Opinions
Ask a Question
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

troubleshooting Question

reseting

Avatar of krizmotlhala
krizmotlhala asked on
Java
2 Comments1 Solution226 ViewsLast Modified:
Guys I got a problem. I am working on my CPU simulator. Now I want to implement the reset button that when I press the simulator goes to its original state.

I have got a textArea where I put the assembly code. So I have to take the code and break it and put into the memory of the simulator. I am able to break the code using the stringtokenizer and put it into the memory of the simulator.

To reset, I set all the strings to null string and all the numbers to 0. When I press the reset button, it clears every nicely, but the problem is when I change the assembly code, it does not take the new code and put it into the memory of the simulator, it uses the old previous code. Why because I cleared everthing? How can I do it successfully?

Here is my Reset method:

 public void reset()
{
      ypos=70;
      xpos=245;
      clearRegisters();
      clear();
      repaint(xpos-dx,ypos-dy,r,r);
      stop();
   repaint();

}

Reset is calling clearRegisters and clear, and they as follows:

public void clear()
{
      PCint = 0;
      MARint = 0;
      MBRint = 0;
      ACint = 0;
      ALU = "";
      trackOp = "";
      AC = "";

      content0 = "";
      content1 = "";
      content2 = "";
      content3 = "";
      content4 = "";
      content5 = "";
      content6 = "";
      content7 = "";
      content8 = "";
      content9 = "";
      content10 = "";

      tempc0 = "";
      tempc1 = "";
      tempc2 = "";
      tempc3 = "";
      tempc4 = "";
      tempc5 = "";
      tempc6 = "";
      tempc7 = "";
      tempc8 = "";
      tempc9 = "";
      dataAddress1 = "";
      dataAddress2 = "";
      dataAddress3 = "";
      dataAddress4 = "";
      dataAddress5 = "";
      dataAddress6 = "";
      dataAddress7 = "";
      dataAddress8 = "";
      dataAddress9 = "";
      dataAddress10 = "";
      operation = "";
      r=0;
      
}

public  void clearRegisters()
{      
      PC = "00000000";
      MAR = "00000000";
      MBR = "00000000";
      AC = "00000000";
      IR = "00000000";
}

All this strings I use to fill the registers and memory. content0 to content10 is for memory.

The following code I use to break the code I get from the textArea:

public void BreakCode(String text)
{
      int i=0;
   int j=0;
      int opInd=0;
      int datInd=0;
      int output=0;
      
      StringTokenizer st = new StringTokenizer(text, "\n \\s");
      
      while (st.hasMoreTokens()){      
      
            v.addElement(st.nextToken());

            
            if ((j%2) == 1) {
                  if ((v.elementAt(j-1).toString()).equalsIgnoreCase("LDA"))
                        output = Integer.parseInt(v.elementAt(j).toString());
                  else if ((v.elementAt(j-1).toString()).equalsIgnoreCase("ADD"))
                        output = output +      Integer.parseInt(v.elementAt(j).toString());       
                  else if ((v.elementAt(j-1).toString()).equalsIgnoreCase("SUB"))
                        output = output - Integer.parseInt(v.elementAt(j).toString());
            }
      

      switch(i)
            {
                  case 0:tempc0 = v.elementAt(i).toString();
                               break;
                  case 1:tempc1 = v.elementAt(i).toString();
                               break;
                  case 2:tempc2 = v.elementAt(i).toString();
                               break;
                  case 3:tempc3 = v.elementAt(i).toString();
                               break;
                  case 4:tempc4 = v.elementAt(i).toString();
                               break;
                  case 5:tempc5 = v.elementAt(i).toString();
                               break;
                  case 6:tempc6 = v.elementAt(i).toString();
                               break;
                  case 7:tempc7 = v.elementAt(i).toString();
                               break;
                  case 8:tempc8 = v.elementAt(i).toString();
                               break;
                  case 9:tempc9 = v.elementAt(i).toString();
        }
   
            if ( tempc0.equalsIgnoreCase ("ADD" ) ){
                   content0 = opcodeADD;
                   dataAddress1 = "001";
            }
            else if ( tempc0.equalsIgnoreCase ("SUB" ) ){
                   content0 = opcodeSUB;
                   dataAddress1 = "001";
            }
            else if ( tempc0.equalsIgnoreCase ("LDA" ) ){
                   content0 = opcodeLDA;
                   dataAddress1 = "001";
            }
            else if ( tempc0.equalsIgnoreCase ("INC" ) ){
                   content0 = opcodeINC;
                   dataAddress1 = "001";
            }
            else
                   content0 = tempc0;


            if ( tempc1.equalsIgnoreCase ("ADD" ) ){
                   content1 = opcodeADD;
                   dataAddress2 = "002";
            }
            else if ( tempc1.equalsIgnoreCase ("SUB" ) ){
                   content1 = opcodeSUB;
                   dataAddress2 = "002";
            }
            else if ( tempc1.equalsIgnoreCase ("LDA" ) ){
                   content1 = opcodeLDA;
                   dataAddress2 = "002";
            }
            else if ( tempc1.equalsIgnoreCase ("INC" ) ){
                   content1 = opcodeINC;
                   dataAddress2 = "002";
            }
            else
                   content1 = tempc1;


            if ( tempc2.equalsIgnoreCase ("ADD" ) ) {
                   content2 = opcodeADD;
                   dataAddress3 = "003";
            }
            else if ( tempc2.equalsIgnoreCase ("SUB" ) ){
                   content2 = opcodeSUB;
                   dataAddress3 = "003";
            }
            else if ( tempc2.equalsIgnoreCase ("LDA" ) ){
                   content2 = opcodeLDA;
                    dataAddress3 = "003";
            }
            else if ( tempc2.equalsIgnoreCase ("INC" ) ){
                   content2 = opcodeINC;
                   dataAddress3 = "003";
            }
            else
                   content2 = tempc2;


            if ( tempc3.equalsIgnoreCase ("ADD" ) ){
                   content3 = opcodeADD;
                   dataAddress4 = "004";
            }
            else if ( tempc3.equalsIgnoreCase ("SUB" ) ){
                   content3 = opcodeSUB;
                   dataAddress4 = "004";
            }

            else if ( tempc3.equalsIgnoreCase ("LDA" ) ){
                   content3 = opcodeLDA;
                   dataAddress4 = "004";
            }

            else if ( tempc3.equalsIgnoreCase ("INC" ) ){
                   content3 = opcodeINC;
                   dataAddress4 = "004";
            }

            else
                   content3 = tempc3;


            if ( tempc4.equalsIgnoreCase ("ADD" ) ) {
                   content4 = opcodeADD;
                   dataAddress5 = "005";
            }

            else if ( tempc4.equalsIgnoreCase ("SUB" ) ){
                   content4 = opcodeSUB;
                   dataAddress5 = "005";
            }
            else if ( tempc4.equalsIgnoreCase ("LDA" ) ){
                   content4 = opcodeLDA;
                   dataAddress5 = "005";
            }
            else if ( tempc4.equalsIgnoreCase ("INC" ) ){
                   content4 = opcodeINC;
                   dataAddress5 = "005";
            }
            else
                   content4 = tempc4;


            if ( tempc5.equalsIgnoreCase ("ADD" ) ){
                   content5 = opcodeADD;
                   dataAddress6 = "006";
            }
            else if ( tempc5.equalsIgnoreCase ("SUB" ) ){
                   content5 = opcodeSUB;
                   dataAddress6 = "006";
            }
            else if ( tempc5.equalsIgnoreCase ("LDA" ) ){
                   content5 = opcodeLDA;
                   dataAddress6 = "006";
            }
            else if ( tempc5.equalsIgnoreCase ("INC" ) ){
                   content5 = opcodeINC;
                   dataAddress6 = "006";
            }
            else
                   content5 = tempc5;


            if ( tempc6.equalsIgnoreCase ("ADD" ) ) {
                   content6 = opcodeADD;
                   dataAddress7 = "007";
            }
            else if ( tempc6.equalsIgnoreCase ("SUB" ) ){
                   content6 = opcodeSUB;
                   dataAddress7 = "007";
            }
            else if ( tempc6.equalsIgnoreCase ("LDA" ) ){
                   content6 = opcodeLDA;
                   dataAddress7 = "007";
            }
            else if ( tempc6.equalsIgnoreCase ("INC" ) ){
                   content6 = opcodeINC;
                   dataAddress7 = "007";
            }
            else
                   content6 = tempc6;



            if ( tempc7.equalsIgnoreCase ("ADD" ) ){
                   content7 = opcodeADD;
                   dataAddress8 = "008";
            }
            else if ( tempc7.equalsIgnoreCase ("SUB" ) ){
                   content7 = opcodeSUB;
                   dataAddress8 = "008";
            }
            else if ( tempc7.equalsIgnoreCase ("LDA" ) ){
                   content7 = opcodeLDA;
                   dataAddress8 = "008";
            }
            else if ( tempc7.equalsIgnoreCase ("INC" ) ){
                   content7 = opcodeINC;
                   dataAddress8 = "008";
            }
            else
                   content7 = tempc7;

      

            if ( tempc8.equalsIgnoreCase ("ADD" ) ) {
                   content8 = opcodeADD;
                   dataAddress9 = "009";
            }
            else if ( tempc8.equalsIgnoreCase ("SUB" ) ){
                   content8 = opcodeSUB;
                   dataAddress9 = "009";
            }
            else if ( tempc8.equalsIgnoreCase ("LDA" ) ){
                   content8 = opcodeLDA;
                   dataAddress9 = "009";
            }
            else if ( tempc8.equalsIgnoreCase ("INC" ) ){
                   content8 = opcodeINC;
                   dataAddress9 = "009";
            }
            else
                   content8 = tempc8;


            if ( tempc9.equalsIgnoreCase ("ADD" ) ){
                   content9 = opcodeADD;
                   dataAddress10 = "010";
            }
            else if ( tempc9.equalsIgnoreCase ("SUB" ) ){
                   content9 = opcodeSUB;
                   dataAddress10 = "010";
            }
            else if ( tempc9.equalsIgnoreCase ("LDA" ) ){
                   content9 = opcodeLDA;
                   dataAddress10 = "010";
            }
            else if ( tempc9.equalsIgnoreCase ("INC" ) ){
                   content9 = opcodeINC;
                   dataAddress10 = "010";
            }
            else
                   content9 = tempc9;

            j+=1;
            i+=1;
      }
      //repaint();
      result = Integer.toString(output);

}




ASKER CERTIFIED SOLUTION
Avatar of twobitadder
twobitadder

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Commented:
This problem has been solved!
Unlock 1 Answer and 2 Comments.
See Answers