2012-05-02
I'm now moving back from emulation to the real hardware. I expected problems, and there they are.
Somehow upload of microcode files to the front panel did not work.
First it hangs with XOFF, so i disable XON/XOFF and lower the baud rate.
Then it transfers up to address 0x4A00 and aborts with an error. Each
time i try to do 'something' to find out the cause the error changes.
Finally i find out that at that position is the first unused gap in the
microcode and obviously refresehing the LCD is so time consuming that
even the longest delay after one line of code (100ms) is not enough.
Strange, when i re-enabled XON/XOFF it worked. So microcode upload to
the CPU is working again.
|
Fundamental Timing of the K1-16/16 CPU |
Now the code does not make it beyond the initial register test.
Loading the SR (shift-right) register failed to load the CY input to
data bit D15. I remember that there was a problem with exactly this
when i tested it more than one year ago. I had settled my mind it was a
contact issue and tried to prove this now again. But it isn't. Actually
the little chart with the fundamental timing of the CPU contains the
secret:
The blue
clk is the load signal for the registers – SR is a
register – and the rising edge is where it latches new data from the
data bus and, in case of data bit D15, from the CY line. The CY line is a
'option control' line, it controls options in the various registers, if
they have. As can be seen in the image the option control line toggles
exactly at the same moment (if it toggles) when the
clk line raises. So we have a race condition here.
The only thing i can do is to delay the CY option control line for
the shift registers. I examined whether this problem will show up at
other places too, but it seems not. Whereever CY (or any other option
control line) is used, there are some gate delays between the option
control line and the data latching register. So it's enough to delay
this signal for SR and SL only. Luckily there is an unused OR gate on
the data registers board which i will use for this.
2012-05-03
All test code performed without error.
:-) Except for i2c test, because i have not yet attached any io device.
2012-05-04
Weekend … phantastic weather … what to do? ok, i manufactured the K1-system-bus.
;-)
2012-05-05
Tata! The SIO board works. Today i got the console prompt on the
terminal. There are still some issues to examine: Speaking to the i2c
eeprom did not work. The hardware seems to work properly, but the eeprom
does not respond. This is to be investigated. Whether interrupts work
as expected is still to be tested. Though they seem to work.
2012-05-06
Yep. Interrupts obviously work. SIO works: i/o to serial to my Mac
works and i/o to the front panel works. Now i'll have to add some extras
to the terminal in the frontpanel, e.g. handle some control codes.
;-) And then add some stuff to the boot shell of the computer, like
cd,
ls and so on. And investigate the i2c problem.