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.
248 KiB
248 KiB