- Minimum -B is 14 (shorter records on mag tapes are considered noise)
- Maximum -B is 65535 (DEC tape controllers have a 16-bit byte count register)
- Remove redundant setting of TAR default record size
- Notify the user when the -E option is being ignored
- Use the UNIT_RO format flag to set the SIMH ReadOnly attach option
- Use three tape marks to mark the end of a volume for RT-11 and RSTS
(ANSI and DOS11 formats); the third tape mark is harmless on RSX-11
and VMS, which only write two
- TAR -B must be a multiple of 512 (tar specifies the mag tape block size
in number of 512-byte records)
- The TAR file must exist
- Use a conditional test with the "is a MEMORY_TAPE image" invariant in
sim_tape.h to select the correct tape unit attach failure message
- Always print a tape attach summary message, like SIMH does for disks;
simplify and fix some of the other messages there
- Remove unnecessary memset()'s in dos11_copy_ascii_file()
- Fix a 16-bit integer overflow in the DOS label date calculation
- when the file ends on a block boundary, the block count was
off by one.
- always use the max_record_size in ANSI labels independent of
the ansi-type.
- Force the detection point of a tape structure error to be the logical EOM
on the tape.
- Enable SIGINT abort of a possibly long running validation scan
- Add -L detail record structure option at ATTACH time
- Add extra garbage at end of generated test data files
- Different systems used tape marks in different ways that are now
tolerated (multiple successive ones located on different parts of
the tape, etc.)
- Always validate beginning and end of record length indicators to avoid
moving into invalidly structured tape data
With this update, the erase gap operation has been split out of
"sim_tape_wrgap" into a separate, internal "tape_erase_fwd" routine that
is called from "sim_tape_wrgap" as well as from the new "sim_tape_errecf"
routine. There's a corresponding internal "tape_erase_rev" that's called
from the new "sim_tape_errecr" routine.
I've shimmed "sim_tape_rdlntf" and "sim_tape_rdlntr" to move the tape
context and debug stuff out of the routines that I'm maintaining. This
will allow me to replace those functions in their entirety with the
corresponding functions in my development sources for future updates.
It also allows me to keep Bob's version in sync. As my routines are static
and only called once from the shims, compilers should optimize away
the function calls and instead inline the code, so there'd be no extra call
overhead.
I'd also like to keep "tape_erase_fwd" and "tape_erase_rev" untouched for
the same reason. If you wish to add debug calls to "sim_tape_errecf" and
"sim_tape_errecr", that's fine.