Hi All;
I have swapped one bit, (bit 0) to make sure that the switching of the bit fixed the problem and it Did..
I did a Deposit and then an Examine of bit 0 and it shows correctly..
Now Eleven more to go..
First four done and Tested..
The middle four are Done and Tested..
Last four are done and Tested..
I am going to Re-Run Dave's Tests !!!
"" OK - I am working on a series of small programs so here goes:
STOP CLEAR
Deposit 7000 into all of the memory locations (NOP).
Set PC to 0000
Set IR to 0777
Set AC to 1234
Note the value of the LINK register.
CONT.
IR should get loaded with 7000 (the NOP instruction we will be continuously executing).
PC should be incrementing from 0000 in 1's up to 7777 and then wrap-around back to 0000 again.
AC should retain 1234 (i.e. not be modified).
LINK should retain it's original value (i.e. not be modified).
This should continue indefinitely and never stop (until you get bored and press STOP of course). I would leave it for a while to see if anything unexpected happens.
YES !!!!!
I used all ones (7777) on the Accumulator, instead of '1234
Next test
STOP
Deposit 7402 instructions (HLT) into all memory locations.
Set PC=0000
Set IR=0375
Set AC=1234
CONT.
The machine should halt with 7402 in IR and PC=0001.
CONT.
The machine should halt with 7402 in IR and PC=0002.
Every depress of CONT should result in the machine halting with the PC having been incremented. AC should never change from 1234. When you get bored - end of test!
YES !!!
Next test
Enter the following small program. First number is the address, second number is the data value.
0000 7000 ; NOP
0001 7000 ; NOP
0002 7000 ; NOP
0003 7402 ; HLT
0004 5000 ; JMP 0
Set PC=0000
Set AC=1234
CONT.
The machine should halt with PC=0004 and AC should remain at 1234.
Every time you press CONT - the machine should always halt at PC=00004 and AC should remain at 1234.
YES !!!!
Next test
Enter the following small program. First number is the address, second number is the data value.
0000 7604 ; CLA OSR
0001 5000 ; JMP 0
Set PC=0000
Set AC=0000
CONT.
Whatever value you set on the hand-keys should appear in the accumulator.
YES, YES, YES !!!!!
Next test
Enter the following small program. First number is the address, second number is the data value.
0000 7001 ; IAC Increment accumulator
0001 2004 ; ISZ 4 ; Increment memory location 4 and skip next instruction if the result was zero.
0002 5001 ; JMP 1 ; Keep looping until ISZ gets to zero.
0003 5000 ; JMP 0 ; Repeat entire program again.
Set PC=0000
Set AC=0000
CONT.
The accumulator should increment by 1 - but at a slow(ish) rate (the ISZ should slow things down). You could replace memory address 0001 and 0002 with 7000 (NOPs) to see how fast that is first and then see if it runs slower with the ISZ/JMP instructions in place instead of the NOPs.
YES !!!!!
I am waiting for it to loop thru all of it, until the accumulator is all Ones and the Link Bit..
I am running it with the Fastest Clock Frequency to date..
Before it used a set of Resistors at 2.7K, But Now it is at 1.0K for the Highest Frequency with the 555..
Now it's at 100 Ohms, and it does Fly !!! For Now this is as Fast as I will go..
Next test
Enter the following small program. First number is the address, second number is the data value.
0000 7301 ; CLA CLL - Clear accumulator and link registers
0001 1006 ; TAD 6 - Load the number in memory location 6 (the number A) into the accumulator.
0002 1007 ; TAD 7 - Add the number in memory location 7 (the number B) to the accumulator.
0003 3010 ; DCA 8 - Deposit the answer (C) into memory location 8.
0004 7402 ; HLT - Stop so we can see the answer.
0005 5000 ; JMP 0 - Repeat on the next CONT.
0006 0001 ; The number A.
0007 0002 ; The number B.
0010 0000 ; The answer C = A + B. ""
No, Not Yet, I have to slow it down and see where the hang up is..
I am going to try this modification to the program..
0000 7301 ; CLA CLL - Clear accumulator and link registers
0001 7402 ; HLT - Stop so we can see the answer.
0002 1011 ; TAD 11 - Load the number in memory location 11 (the number A) into the accumulator.
0003 7402 ; HLT - Stop so we can see the answer.
0004 1012 ; TAD 12 - Add the number in memory location 12 (the number B) to the accumulator.
0005 7402 ; HLT - Stop so we can see the answer.
0006 3013 ; DCA 13 - Deposit the answer (C) into memory location 13.
0007 7402 ; HLT - Stop so we can see the answer.
0010 5000 ; JMP 0 - Repeat on the next CONT.
0011 0001 ; The number A.
0012 0002 ; The number B.
0013 0000 ; The answer C = A + B.
Changing to my next to the Last slowest clock, it gets the following.. (1 meg ohm)..
After the 7301, all is well.. Maybe Not..
MA has '0002,
M has '1011,
MB has '7776,
PC has '0002,
IR has '7402,
AC has '0001..
CONT..
After the 1011, all is Not well, we have '0377 in the Accumulator..
MA has '0012,
M has '0001,
MB has '7776,
PC has '0003,
IR has '1011,
AC has '0377..
CONT..
After the 1012, all Not well, we have '0377 in the Accumulator
MA has '0002,
M has '1011,
MB has '7776,
PC has '0004,
IR has '7402,
AC has '0377..
CONT..
After the 1012, all Not well, we have '0376 in the Accumulator
MA has '0012,
M has '0001,
MB has '7776,
PC has '0005,
IR has '1012,
AC has '0376..
CONT..
After the 3013, all Not well, we have '0375 in the Accumulator
MA has '0002,
M has '1011,
MB has '7776,
PC has '0006,
IR has '7402,
AC has '0375..
CONT..
After the 3013, all Not well, we have '0000 in the Accumulator
MA has '0013,
M has '0775,
MB has '7002,
PC has '0775,
IR has '3013,
AC has '0000..
I have Stopped here..
I am trying it a second time, I found one memory mistake that I corrected, Location '0012 had '0001 instead of '0002..
Changing to my next to the Last slowest clock, it gets the following.. (1 meg ohm)..
After the 7301, all is well.. Maybe Not..
MA has '0002,
M has '1011,
MB has '7777,
PC has '0002,
IR has '7402,
AC has '0001..
CONT..
After the 1011, all is Not well, we have '0377 in the Accumulator..
MA has '0011,
M has '0001,
MB has '7776,
PC has '0003,
IR has '1011,
AC has '0377..
CONT..
After the 1012, all Not well, we have '0377 in the Accumulator
MA has '0002,
M has '1011,
MB has '7776,
PC has '0004,
IR has '7402,
AC has '0377..
CONT..
After the 1012, all Not well, we have '0376 in the Accumulator
MA has '0012,
M has '0002,
MB has '7775,
PC has '0005,
IR has '1012,
AC has '0774..
CONT..
After the 3013, all Not well, we have '0375 in the Accumulator
MA has '0002,
M has '1011,
MB has '7775,
PC has '0006,
IR has '7402,
AC has '0774..
CONT..
After the 3013, all Not well, we have '0000 in the Accumulator
MA has '0013,
M has '0774,
MB has '7003,
PC has '0774,
IR has '3013,
AC has '0000..
I have Stopped here..
I have checked Memory and all are correct, Except for '0013, which has '0774 in it instead of '0003...
0000 7301 ; CLA CLL - Clear accumulator and link registers
0001 7402 ; HLT - Stop so we can see the answer.
0002 1011 ; TAD 11 - Load the number in memory location 11 (the number A) into the accumulator.
0003 7402 ; HLT - Stop so we can see the answer.
0004 1012 ; TAD 12 - Add the number in memory location 12 (the number B) to the accumulator.
0005 7402 ; HLT - Stop so we can see the answer.
0006 3013 ; DCA 13 - Deposit the answer (C) into memory location 13.
0007 7402 ; HLT - Stop so we can see the answer.
0010 5000 ; JMP 0 - Repeat on the next CONT.
0011 0001 ; The number A.
0012 0002 ; The number B.
0013 0000 ; The answer C = A + B.
"" I have just noticed we have missed a couple of important tests out (dead simple ones though).
STOP CLEAR
Set AC to 1234
CLEAR.
AC should be cleared to 0000.
YES ..
Set the LINK register with a little program as follows:
0000 7120 ; CLL CML
0001 7402 ; HLT
PC=0000
CONT.
The machine should halt with the link register set and PC=0002.
YES..
CLEAR.
The link register should be cleared. ""
YES..
THANK YOU Marty