%constinteger heads = 11 %constinteger sectors = 16, sector mask = sectors - 1 %constinteger cylinders = 754 %constinteger size = heads * sectors * cylinders %include "System:Disqio.Inc" %recordformat header partition fm(%integer start, finish, lp, flags, %string(15) name) %recordformat disc header fm((%integer checksum, %record(header partition fm)%array p(1 : 15)) %c %or %integerarray x(1 : 128)) %constinteger hazarded flag = 1 %constinteger structured flag = 2 %constinteger valid flag = 4 %begin %record(disc header fm) h %integername x %integer i, c x == transfer(d read ! d verify, 512, (size - 1) << 9, integer(addr(h))) %cycle; %repeat %until x # 0 h_p(1)_flags = h_p(1)_flags ! hazarded flag c = 0 c <- c + h_x(i) %for i = 2, 1, 128 h_checksum = -c x == transfer(d write ! d verify, 512, (size - 1) << 9, integer(addr(h))) %cycle; %repeat %until x # 0 %end %of %program