krizmotlhala
asked on
reseting
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).toStrin g()).equal sIgnoreCas e("LDA"))
output = Integer.parseInt(v.element At(j).toSt ring());
else if ((v.elementAt(j-1).toStrin g()).equal sIgnoreCas e("ADD"))
output = output + Integer.parseInt(v.element At(j).toSt ring());
else if ((v.elementAt(j-1).toStrin g()).equal sIgnoreCas e("SUB"))
output = output - Integer.parseInt(v.element At(j).toSt ring());
}
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);
}
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,
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).toStrin
output = Integer.parseInt(v.element
else if ((v.elementAt(j-1).toStrin
output = output + Integer.parseInt(v.element
else if ((v.elementAt(j-1).toStrin
output = output - Integer.parseInt(v.element
}
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
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
1) Your Strings are all cleared. That's for sure.
2) Nevertheless, when you call BreakCode() again it produces the same output
Conclusion: (as twobitadder said)
==> you call BreakCode() with the same text parameter as before.
btw. In java functions better start with a lower case letter: breakCode() [ while classes start with an upper case ]