;;; -*- Mode:LISP; Package:TAPE; Base:10 -*-

(defun debug-bad-block2(bad-block-num test)
  (rewind)
  (flet
    ((dump ()
	   (dumpr:dumpr (substring
			  (send *selected-format* :current-block)
			  0 (send *selected-format* :block-length)))))
    ;;skip good ones
    (dotimes(x bad-block-num)
      (send *selected-format* :read-block *selected-device*))
    (format t "~%Previous good block:~2%")
    ;;dump last good one
    (dump)
    (when (eq test :bad)
      (format t "~2%Skipping bad block~2%")
      (send *selected-device* :space 1))
    (send *selected-format* :read-block *selected-device*)
    (format t "~%Subsequent good block:~2%")
    (dump)))

(defun debug-bad-block(bad-block-num &optional (test :bad))
  (check-type test (member :bad :good))
  (with-open-file (standard-output
		    (string-append "lm:keith;debug-tape-"
				   (format nil "~a" test)
				   ".text")
		    :direction :output)
    (debug-bad-block2 bad-block-num test)))