! BADDUMP, a program for dumping out a filestore's bad block list.
! (This will all be a thing of the past with the new discs....)
! GDMR, 14/02/86
include "INC:UTIL.IMP"
constinteger bad limit = 512 - 3
recordformat bad fm((integer stamp, integerarray bad(1 : bad limit),
integer last bad, checksum) c
or integerarray x(1 : 512))
integerfn bad checksum(record (bad fm)name b)
! Calculate the checksum for the bad block lists
integer i, c
c = 0
c = c + b_x(i) for i = 1, 1, 512
result = c
end
begin
record (bad fm)name bad block list
integer start, size, i, last, error
on 9 start
printstring("Error:"); printstring(event_message)
newline
stop
finish
connect file("$:BADLIST", 0, start, size)
if size # 4 * 512 start
printstring("Bad size for bad list"); newline
stop
finish
bad block list == record(start)
unless bad checksum(bad block list) = 0 start
printstring("Bad block list checksum error")
newline
stop
finish
write(bad block list_last bad, 0)
printstring(" bad block")
print symbol('s') if bad block list_last bad # 1
printstring(", sequence "); write(bad block list_stamp, 0)
print symbol(':'); newline
last = -1; error = 0
for i = 1, 1, bad block list_last bad cycle
write(bad block list_bad(i), 8)
newline if i & 7 = 0
if bad block list_bad(i) > last start
last = bad block list_bad(i) if error = 0
else
error = 1
finish
repeat
newline if bad block list_last bad & 7 # 0
if error # 0 start
printstring("Monoticity error at "); write(last, 0)
newline
finish
end of program