-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KA10: Make Auxcpu talk to SimH PDP6 simulator. #121
Comments
You should be able to assign me now. |
I think I will add another unit to the existing ka10_auxcpu.c device. Agree/disagree? |
You can call it pdp6_slave.c or something like that. Since it will only be for the PDP6. Naming convention:
|
I started this now. The branch is here: |
I have been testing this. I now remember I had some problems last time I tried to make two SIMH instances talk to each other using TMXR. From what I see, they do connect to each other. However, tmxr_rx_poll calls tmxr_read which returns -1 which shuts down the connection. This is because sim_read_sock returns -1, which is because recv returned 0. Why?!? Maybe you can try this for yourself. I have this for pdp10-ka:
And this for pdp6:
Testing is:
|
I'm unassigning myself until the TMXR problem has been solved. |
@larsbrinkhoff How did the memory read/write work on the PDP6 side of things? |
On real hardware, or in the simulator? On real hardware, there was a 16K memory for the PDP-6. It was also attached to the PDP-10 memory bus. But the PDP-6 only had the 16K on its memory bus. |
So all PDP6 memory should go through slave_write and slave_read should update memory. Should it subtract auxcpu_base before sending it over to PDP6? |
Yes, it should subtract. The PDP-6 16K has historically moved around in the PDP-10 20-bit address space. But from the PDP-6 it's always starting from 0. |
Will this break aap's PDP6 interface if I subtract auxcpu_base before sending packet and add it in after receiving the packet? |
Is there any need for either auxcpu_read or slave_read? Shouldn't only modifies be sent over the shared link? |
Hmm, on second thought subtracting probably isn't necessary since the PDP-10 side has it aligned to 16K anyway. The PDP6 masks the address. auxcpu_read/write is for the PDP-10 to call into auxcpu, right? Which sends the access over the network. pdp6_slave is teh PDP-6 side. |
Yes it is masked by 16K masks so no need to subtract. Yes auxcpu_read/write reads/sends data to remote system. However if at connect the slave is synchronized to the master then only writes need be passed back and forth. |
That's true, but that's not how the protocol to @aap's pdp6 is defined. |
The protocol that he defined does not match that of pdp6_slave.c. The two devices are talking back to each other. If both simulators modify memory, they will both get protocol errors! Since auxcpu does not process DATO requests and ACK is an error to slave device. I do not believe his system allows for the PDP6 to modify memory and have this get reflected in the PDP10. |
I got PDP6 to act as a slave to PDP10. The PDP10 always reads from PDP6 so is very slow. If this works I will clean up the slave code and remove unused functions. |
Good news!
Regarding the protocol, the intent is that the PDP-6 should "own" its
own memory, and the PDP-10 should make requests for every read and
write. Yes, this will make memory slower on the PDP-10 side and faster
on the PDP-6 side.
There are also inter-processor interrupts, but they are not fully
implemented yet. There is some stub code. Either processor can send a
signal to interrupt the other. This is the only time the PDP-6
initiates a network transaction according to the protocol.
My code in pdp6_slave.c isn't to be trusted as a perfect implementation
of the protocol. It's a work in progress and has not been tested fully.
slave_read and slave_write seem like they should go away. I don't see
that they are used anywhere, nor should they.
|
Sorry, had to work on another thing. SUPDUP support for PuTT. Will check your changes tomorrow. |
Running the above test case, the KA10 hangs on the SETZM instruction. |
Log from KA10 side.
|
Make sure you are not getting any command errors. Some of your options are wrong! |
The only thing wrong was TRC in debug, but fixing that doesn't change anything. What's your test case? |
KA and KL ITS builds went through with your latest master. Restore gets me this: |
I am using the test case above. Make sure that you start PDP6 first, and that the KA connects before using continue to do test. Interesting on KL restore works... on KA I get BUGHLT due to PI LEVEL 2 at system level. Trace shows that DPA disk did a read, then ITS decided that it should not be returning an interrupt then and promptly ignores it and tries to go back into operation but interrupt is still pending. |
Yes, with the PDP-6 started first the test case does work. I was expecting it to work either way, but I dunno. |
Not sure if it can work either way. The KA needs to connect to the 6, if the 6 aint running it can't connect. |
It was getting late, so I didn't get a chance to try it with ITS yet. To be continued... |
I pushed some updates here: https://github.com/larsbrinkhoff/ka10-simh/tree/lars/aux |
How to test using ITS: pdp6 configuration:
ka10 configuraton, edit "build/pdp10-ka/run"
Run simulators. Login to ITS. Type:
The sys job is the ITS core image. Setting pdp6up to -1 makes ITS access the PDP-6 memory, or else it will refuse. The pdp6 job is the PDP-6 core image. Read and write memory locations to check that shared memory data is transferred. |
Auxcpu should be able to connect to simH PDP6 simulator.
The text was updated successfully, but these errors were encountered: