well,
Another member of hack42.nl (bugblue at hack42.nl) came up with this code.
hopefully tonight we can check it. (depends on me being able to attend)
any thoughts on this?
*200 /LOCATE PROGRAM STARTING AT ADDR 200
CLA CLL /CLEAR ACCUMULATOR
/CLEAR AC LINK
DCA TMP1 /STORE THAT (0) IN TMP1
MAIN, NOP
TAD TMP1 // load TMP1
JMS PRINTNUM // print dit nummer
CLA CLL
TAD SPACE
JMS TTYO // output to tty0
TAD I TMP1 // indirect loading of TMP1
JMS PRINTNUM // print this number
TAD TMP1 // load TMP1
IAC // INCREMENT 1
DCA TMP1
CLA CLL
TAD CR
JMS TTYO // output to tty0
CLA CLL
TAD LF
JMS TTYO // output to tty0
JMP MAIN // tada.wav
PRINTNUM, NOP
DCA TMP3 // store this in tmp3
CLA CLL // clear AC
TAD TMP3 // load TMP3
RAR
RTR // 3 bitwise shift
JMS XOR // xor met 0070
JMS MIN // substract 0010
JMS TTYO // output to tty0
CLA CLL // clear AC
TAD TMP3 // load TMP3
JMS XOR // xor with 0070
JMS MIN // substract 0010
JMS TTYO // output to tty0
CLA CLL // clear AC
TAD TMP3 // load TMP3
RAL
RTL // 3 bitwise shift
JMS XOR // xor met 0070
JMS MIN // substract 0010
JMS TTYO // output to tty0
CLA CLL // clear AC
TAD TMP3 // load TMP3
RTL
RTL
RTL // 6 bitwise shift
JMS XOR // xor met 0070
JMS MIN // substract 0010
JMS TTYO // output to tty0
MIN, NOP
CMA IAC / 2's complement accumulator
TAD MIN10 / add operand from memory
JMP I MIN
XOR, NOP
DCA XORTMP
TAD XORTMP
AND XORDO
CMA IAC
CLL RAL
TAD XORTMP
TAD XORDO
JMP I XOR
TTYO, NOP /TTY OUTPUT ROUTINE. THE FIRST WORD OF
/A SUBROUTINE MUST BE EMPTY (0) BECAUSE
/THE JMS INSTRUCTION INSERTS THE RETURN
/ADDR IN THIS WORD.
6446 /WRITE AC TO THE OUTPUT DEVICE (TTY)
6441 /IF TTY IS READY, SKIP NEXT INSTRUCTION.
JMP .-1 /TTY IS NOT READY, SO CHECK AGAIN
CLA /CLEAR AC
JMP I TTYO /RETURN TO CALLER
MIN10, 10
XORDO, 70
TMP1, 0
TMP3, 0
XORTMP, 0
SPACE, 40
LF, 12
CR, 15
$
On 26-09-14 01:25, Simon Claessen wrote:
this is the advice I was looking for. we already found
a bad zero
address. hacking into the console is not a bad idea. I will look into
the schematic for that. right now we wrote a very small program
outputting all ascii characters to a serial vt220. that works and is
only 5 instructions:
0003 7001 increment ac +1
0004 6446 output ac to serial and set flag
0005 6441 skip if flag is 1
0006 5005 goto 5
0007 5003 goto 3
it really is just a start, but something formatting the address and
contents of addresses in octeds and some formatting of the output string
is feasable. fortunately this machine has 24Kword core, so there is
still some empty space. (or is it gone because of a faulty rewrite... we
have to test that)
simon
Due to a hardware fault in the core memory, I (had)
had only one
opportunity to get a full dump, which I had missed due to checking
memory from the front panel and not knowing about the fault, so I
didn't get the entire contents. In my case hindsight is great, but
it's something to keep in mind if recovering the contents is of some
concern.
That?s a good point. If the restore machinery is not working, you
can only read once, after that you?ll see zeroes. A quick check
would be to pick some location and read it several times. If that
works, the restore logic is at least somewhat functional.
Although, if by restore machinery you mean the
state-machine/sequencing-logic that does the (re)-write, it can still
be more subtle than that.
In my case it was just one bad address-wire driver transistor, such
that the failure was for only one direction of current flow - the
'write' or 'set' direction.
It failed as you suggest - could read once but failed to rewrite - but
did not affect the entire core array, just a sub-set of 64-word blocks.
Still, safest would be to hook to the console. A
BeagleBone Black
has enough I/O lines to do that, I think, so it sounds like just some
level shifters and a modest amount of software.
paul
--
Met vriendelijke Groet,
Simon Claessen
drukknop.nl