Skip to content
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

PDP11: RP11: Major update after XXDP #303

Merged
merged 1 commit into from
Oct 10, 2023
Merged

Conversation

al20878
Copy link
Contributor

@al20878 al20878 commented Oct 5, 2023

I have run the code thru XXDP and some other OS's and scenarios rigorously, and found discrepancies, which need to be addressed by this rather extensive patch.

  1. Each drive must implement its own "drive status" register, to be able to track per-drive errors / conditions correctly;
  2. Fixed INT_SET() / INT_CLR() in RPCS write function (wrong order of the "if" conditions);
  3. Some behavior was implemented not exactly how it was expected from the real hardware, such as:
    a. Post-I/O register values in RPDA and RPCA (including the corner case of pack overflow);
    b. I/O stacking, which wasn't mentioned in any available documentation, but only XXDP listings;
    c. RESET/IDLE function must be accepted for a "busy" controller;
    d. HOME function must always execute, even when "device ready" is not set (e.g. when SEEK error detected);
    e. SEEK incomplete should not respond with "device ready" (however, the condition can be cleared by HOME, d.);
    f. WLOA-induced write-lock violation wasn't reflected in "device status".
  4. Some timing was off so that the device worked "too fast" -- this was fixed (except when the races are in the actual test code, and cannot be logically fixed);
  5. WLOA setup command bug was fixed;
  6. Added more code comments found per the above peculiarities.

There is a DEC/X11 IOMODX test available (XRPAM0) but I was still unable to build it successfully [somehow, its linker zeroes the entire XXDP+ drive when creating a file on a DU: (RQ) device -- so the XXDP+ disk image can simply be just corrupt]. But I still have a couple of ideas about it, which I want to explore. If the test builds and shows some additional discrepancies (which I do not anticipate from just looking through the listing), I'll post another patch.

@markpizz
Copy link
Contributor

markpizz commented Oct 6, 2023

You might want to fix an unusual spelling of "suppoerted".

In general, the PR creation comments should be in the commit message so that the thinking behind the changes travels with the repo rather than depending on a particular repo instance/location. Commit messages can be of arbitrary length. Start extra info after a blank line following the summary message and wrap long lines less than 80 characters.

@al20878
Copy link
Contributor Author

al20878 commented Oct 6, 2023

You might want to fix an unusual spelling of "suppoerted".

Thanks. Fixed. Although it's not the first typo in the simh code and def is not going to be the last one. Besides, it was inside a comment so not even exposed.

PR creation comments should be in the commit message

Redid the commit message to re-state all changes detailed in the PR description.

Both changes squashed into a single commit and re-pushed.

@al20878 al20878 force-pushed the rp11 branch 2 times, most recently from 0e76945 to 445155e Compare October 6, 2023 14:16
@al20878
Copy link
Contributor Author

al20878 commented Oct 9, 2023

UPD: DEC/X11 XRPAM0 test has also passed for this implementation:

BSY>
RPAM0 END PASS #00135. RUNTIME: 000:00:00 PSTIME: 000:00:00

RPAM0 END PASS #00136. RUNTIME: 000:00:00 PSTIME: 000:00:00

RPAM0 END PASS #00137. RUNTIME: 000:00:00 PSTIME: 000:00:00

RPAM0 END PASS #00138. RUNTIME: 000:00:00 PSTIME: 000:00:00

RPAM0 END PASS #00139. RUNTIME: 000:00:00 PSTIME: 000:00:00

RPAM0 END PASS #00140. RUNTIME: 000:00:00 PSTIME: 000:00:00

...

SUMMARY AT RUNTIME: 000:00:00
RPAM0 AT VA: 066370 STAT 154015 PASS #00177 HRDERRS 00000 SFTERRS 00000

No errors detected.

@al20878
Copy link
Contributor Author

al20878 commented Oct 10, 2023

I rebased this commit on top of the latest commits in open-simh master... Can this please be applied?

PDP11/pdp11_rr.c Outdated Show resolved Hide resolved
Having run the device code thru XXDP and some other OS's and scenarios
rigorously, a bunch of discrepancies were found, which need to be addressed
by this rather extensive patch.

1. Each unit must implement its own "drive status" register, to be able to
   track per-drive errors / conditions correctly;
2. Fixed INT_SET() / INT_CLR() in RPCS write function (wrong order of the "if"
   conditions);
3. Some behavior was implemented not exactly how it was expected from the real
   hardware, such as:
   a. Post-I/O register values in RPDA and RPCA (including the corner case of
      pack overflow);
   b. I/O stacking, which wasn't mentioned in any available documentation, but
      only XXDP listings;
   c. RESET/IDLE function must be accepted for a "busy" controller;
   d. HOME function must always execute, even when "device ready" is not set
      (e.g. when SEEK error detected);
   e. SEEK incomplete should not respond with "device ready" (however, the
      condition can be cleared by HOME, d.);
   f. WLOA-induced write-lock violation wasn't reflected in "device status".
4. Some timing was off so that the device worked "too fast" -- this was fixed
   (except for the pathological cases when the races are in the actual test
   code, and cannot be logically fixed);
5. WLOA setup command bug was fixed;
6. Added more code comments found per the above peculiarities.
@pkoning2 pkoning2 merged commit 090ed21 into open-simh:master Oct 10, 2023
16 of 18 checks passed
@al20878 al20878 deleted the rp11 branch October 10, 2023 19:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants