------------------------------
One hates to spoil a beautiful theory with an ugly fact, but here's a
direct quote from the Tape MSCP Specification, Rev 2.02, dated November
8, 1987:
Still, the driver could be "right" because, as Tim noted, TMSCP went
through a lot of variants and implementation missteps. The TK50 may
have done object counting differently (and incorrectly). I don't have a
TK50 manual that details its implementation of TMSCP (DEC guarded that
very carefully), and the TMSCP spec only has a revision history back to
v1.6. The revision history
does mention a bunch of TK50 "temporary waivers," as well as five
ones, so it's certainly possible that the TK50
doing things wrong at the time this version of Ultrix was released.
would be useful to try installing a later version of Ultrix from the
TK50 and see what happens.
I've sent the MSCP and TMSCP specs to be posted on Bitsaver.
/Bob
Thanks for that TMSCP doc!
I spent the day testing some combinations of SimH/tape image/Ultrix version.
- SimH: original V3.8-1 vs. my "JH-path" version
- Ultrix installation: v3.0 vs. v4.0
- Test tapes:
TAPE1 =
www.bitsavers.org/bits/DEC/vax/ultrix/3.0/Ultrix-32_3.0_unsupp.tap
TAPE2 = "DEC C FOR RISC-ULTRIX TK50 (DEC 1991, AQ-PCXFA-BE
ME214414).simh_tq.tk50" (own copy, call me)
Results:
1) A real uVAX under Ultrix 3.0 can read the real "Ultrix-32_3.0_unsupp.tap"
(surprise!)
The controller was QBUS TQK50 (M7546), the drive was TK50.
2) SimH can not read "Ultrix-32_3.0_unsupp.tap" error free, neither on Ultrix
v3 nor on Ultrix v4.
3) The TMSCP driver in Ultrix v4 is apparently different from v3:
The error patterns under SimH are similar, but not the same. Data loss is
greater under v4.
4) My little hack (I was so proud of it:-)) is very weak:
- Sure, it makes "Ultrix-32_3.0_unsupp.tap" readable under Ultrix v3, as
intended.
- But SimH can not ">>> boot MUA0" anymore.
- It does not work on Ultrix v4 with "Ultrix-32_3.0_unsupp.tap"
- It does not work with other tapes under Ultrix v3: Tapes with a small file
before EOT fail.
I attached my test setups& protocols, if somebody likes to work with it.
How would we continue from here?
regards,
Joerg
################################################################################
Test 1:
Tape=TAPE1, exercises "backspace reverse by objects" with "setld" cmd.
TAPE1 has this structure:
obj # | What? | Repeat | File:rec | Offset (hex/dec)
------+------------------------------+--------+----------+----------------------
0 | Data record with 512 bytes | 1 | 0:0 | 0:0000 = 0
1 | Tape Mark | 1 | | 0:0208 = 520
...
1621 | Tape Mark | 1 | | FB:2878 = 16459896
1622 | Data record with 10240 bytes | 7 | 13:0-6 | FB:287C = 16459900
1629 | Tape Mark | 1 | | FC:40B4 = 16531636
1630 | Data record with 10240 bytes | 3 | 14:0-2 | FC:40B8 = 16531640
1633 | Tape Mark | 1 | | FC:B8D0 = 16562384
1634 | Data record with 10240 bytes | 12 | 15:0-11 | FC:B8D4 = 16562388
1646 | Tape Mark | 1 | | FE:9934 = 16685364
1647 | Data record with 10240 bytes | 5 | 16:0-4 | FE:9938 = 16685368
1652 | Tape Mark | 1 | | FF:6160 = 16736608
...
sim> att tq0 -r
www.bitsavers.org/bits/DEC/vax/ultrix/3.0/Ultrix-32_3.0_unsupp.tap
# setld -x /dev/rmt0a
check for parity errors!
Combinations & Results for various setups:
# Setup-ID Info
Result
--- ---------- ----------------------------------
----------
1.1) real microVAX with TQK50/TK50, real tape, Ultrix v3:
OK
1.2) SIM-ORG_U3_TAPE1 SimH 3.8-1, Ultrix V3:
checksum errors
1.3) SIM-JH_U3_TAPE1 patched SimH Ultrix V3:
OK
1.4) SIM-ORG_U4_TAPE1 SimH 3.8-1, Ultrix V4:
checksum errors, final "rewinding tape" hangs (> 10 minutes)
1.5) SIM-JH_U4_TAPE1 patched SimH Ultrix V4:
checksum errors, final "rewinding tape" hangs (2 min)
################################################################################
Test 2:
Tape=TAPE1, isolates "backspace reverse by object" as error, shows that tape
image is OK.
sim> att tq0 -r
www.bitsavers.org/bits/DEC/vax/ultrix/3.0/Ultrix-32_3.0_unsupp.tap
Test 2.a: read file stream
# mt rewind begin from tape
start
# mt fsf 13 jump to 14th
tape file
# dd if=/dev/nrmt0h bs=10240 of=tapefile13 read it
7+0 records in
7+0 records out
# dd if=/dev/nrmt0h bs=10240 of=tapefile14.err and read the
critical 15th file in sequence
2+0 records in FAIL: only 2
blocks read!
2+0 records out
Test 2.b: position to start of file, no "backspace reverse by object count"
# mt rewind begin from tape
start
# mt fsf 14 now jump
directly to critical 15th file
# dd if=/dev/nrmt0h bs=10240 of=tapefile14.ok read it
3+0 records in OK: now
correctly 3 records are read!
3+0 records out
Combinations & Results for various setups:
# Setup-ID Info Result
--- ---------- ------------------------ ------------------
2.1) SIM-ORG_U3_TAPE1 SimH 3.8-1, Ultrix V3: Test 2.a fails (2
records) , Test 2.b OK (3 records)
2.2) SIM-JH_U3_TAPE1 patched SimH Ultrix V3: Test 2.a OK (3 records)
, Test 2.b OK (3 records)
2.3) SIM-ORG_U4_TAPE1 SimH 3.8-1, Ultrix V4: Test 2.a fails (0
records) , Test 2.b OK (3 records)
2.4) SIM-JH_U4_TAPE1 patched SimH Ultrix V4: Test 2.a fails (0
records) , Test 2.b OK (3 records)
################################################################################
Test 3:
Tape=TAPE2, has a 3-record file at the end. exercises "backspace reverse by
objects at end of tape"
Shows that there's another error at end of tape
sim> att tq0 -r DEC C FOR RISC-ULTRIX TK50 (DEC 1991, AQ-PCXFA-BE
ME214414).simh_tq.tk50
# setld -x /dev/rmt0a
check for parity errors!
Dump:
obj # | What? | Repeat | File:rec | Offset (hex/dec)
------+------------------------------+--------+----------+----------------------
0 | Data record with 10240 bytes | 1 | 0:0 | 0:0000 = 0
1 | Tape Mark | 1 | | 0:2808 = 10248
2 | Data record with 10240 bytes | 1 | 1:0 | 0:280C = 10252
3 | Tape Mark | 1 | | 0:5014 = 20500
4 | Data record with 10240 bytes | 1 | 2:0 | 0:5018 = 20504
5 | Tape Mark | 1 | | 0:7820 = 30752
6 | Data record with 10240 bytes | 5 | 3:0-4 | 0:7824 = 30756
11 | Tape Mark | 1 | | 1:404C = 81996
12 | Data record with 10240 bytes | 385 | 4:0-384 | 1:4050 = 82000
397 | Tape Mark | 1 | | 3D:7458 = 4027480
398 | Data record with 10240 bytes | 72 | 5:0-71 | 3D:745C = 4027484
470 | Tape Mark | 1 | | 48:B69C = 4765340
471 | Data record with 10240 bytes | 2 | 6:0-1 | 48:B6A0 = 4765344
473 | Tape Mark | 3 | | 49:06B0 = 4785840
Test 3.a: read file stream
# mt rewind begin from tape
start
# mt fsf 5 jump to 6th tape
file
# dd if=/dev/nrmt0h bs=10240 of=tapefile5 read it
72+0 records in
72+0 records out
# dd if=/dev/nrmt0h bs=10240 of=tapefile6.err and read the
critical 15th file in sequence
0+0 records in FAIL: 0 blocks
read!
0+0 records out
Test 3.b: position to start of file, no "backspace reverse by object count"
# mt rewind begin from tape
start
# mt fsf 6 now jump
directly to critical 14th file
# dd if=/dev/nrmt0h bs=10240 of=tapefile6.ok read it
2+0 records in OK: now
correctly 2 records are read!
2+0 records out
Combinations & Results for various setups:
# Setup-ID Info Result
3.1) SIM-ORG_U3_TAPE2 SimH 3.8-1, Ultrix V3.0: Test 3.a fails (0
records) , Test 3.b OK (2 records)
3.2) SIM-JH_U3_TAPE2 patched SimH Ultrix V3.0: Test 3.a fails (1
records) , Test 3.b OK (2 records)
3.3) SIM-ORG_U4_TAPE2 SimH 3.8-1, Ultrix V4: Test 3.a fails (0
records) , Test 3.b OK (2 records)
3.4) SIM-JH_U4_TAPE2 patched SimH Ultrix V4: Test 3.a fails (0
records) , Test 3.b OK (2 records)
Test 4:
Boot from TK50
>>> boot mua0
# Setup-ID Info Result
SIM-JH_U3_TAPE1 patched SimH ERROR
SIM-ORG_U3_TAPE1 original SimH BOOT OK
_______________________________________________
Simh mailing list
[email protected]
http://mailman.trailing-edge.com/mailman/listinfo/simh