Experiment with global _dbg variable to short-circuit log.debug
This commit is contained in:
parent
f41f86c1b0
commit
291006867f
|
@ -188,17 +188,17 @@ def assemble(image, source_files, data_files, obj_files, run_addr=""):
|
||||||
asm = pyatasm.Assemble(name)
|
asm = pyatasm.Assemble(name)
|
||||||
except SyntaxError, e:
|
except SyntaxError, e:
|
||||||
raise AtrError("Assembly error: %s" % e.msg)
|
raise AtrError("Assembly error: %s" % e.msg)
|
||||||
log.debug("Assembled %s into:" % name)
|
if _dbg: log.debug("Assembled %s into:" % name)
|
||||||
for first, last, object_code in asm.segments:
|
for first, last, object_code in asm.segments:
|
||||||
s = segments.add_segment(object_code, first)
|
s = segments.add_segment(object_code, first)
|
||||||
log.debug(" %s" % s.name)
|
if _dbg: log.debug(" %s" % s.name)
|
||||||
print "adding %s from %s assembly" % (s, name)
|
print "adding %s from %s assembly" % (s, name)
|
||||||
for name in data_files:
|
for name in data_files:
|
||||||
if "@" not in name:
|
if "@" not in name:
|
||||||
raise AtrError("Data files must include a load address specified with the @ char")
|
raise AtrError("Data files must include a load address specified with the @ char")
|
||||||
name, addr = name.rsplit("@", 1)
|
name, addr = name.rsplit("@", 1)
|
||||||
first = text_to_int(addr)
|
first = text_to_int(addr)
|
||||||
log.debug("Adding data file %s at $%04x" % (name, first))
|
if _dbg: log.debug("Adding data file %s at $%04x" % (name, first))
|
||||||
subset = slice(0, sys.maxint)
|
subset = slice(0, sys.maxint)
|
||||||
if "[" in name and "]" in name:
|
if "[" in name and "]" in name:
|
||||||
name, slicetext = name.rsplit("[", 1)
|
name, slicetext = name.rsplit("[", 1)
|
||||||
|
@ -218,7 +218,7 @@ def assemble(image, source_files, data_files, obj_files, run_addr=""):
|
||||||
with open(name, 'rb') as fh:
|
with open(name, 'rb') as fh:
|
||||||
data = fh.read()[subset]
|
data = fh.read()[subset]
|
||||||
s = segments.add_segment(data, first)
|
s = segments.add_segment(data, first)
|
||||||
log.debug("read data for %s" % s.name)
|
if _dbg: log.debug("read data for %s" % s.name)
|
||||||
for name in obj_files:
|
for name in obj_files:
|
||||||
parser = find_diskimage(name)
|
parser = find_diskimage(name)
|
||||||
if parser and parser.image:
|
if parser and parser.image:
|
||||||
|
|
|
@ -22,7 +22,7 @@ class AtariDosWriteableSector(WriteableSector):
|
||||||
self.data[index + 0] = (self.file_num << 2) | (hi & 0x03)
|
self.data[index + 0] = (self.file_num << 2) | (hi & 0x03)
|
||||||
self.data[index + 1] = lo
|
self.data[index + 1] = lo
|
||||||
self.data[index + 2] = self.used
|
self.data[index + 2] = self.used
|
||||||
log.debug("sector metadata for %d: %s" % (self._sector_num, self.data[index:index + 3]))
|
if _dbg: log.debug("sector metadata for %d: %s" % (self._sector_num, self.data[index:index + 3]))
|
||||||
# file number will be added later when known.
|
# file number will be added later when known.
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,10 +31,10 @@ class AtariDosVTOC(VTOC):
|
||||||
self.vtoc1 = segments[0].data
|
self.vtoc1 = segments[0].data
|
||||||
bits = np.unpackbits(self.vtoc1[0x0a:0x64])
|
bits = np.unpackbits(self.vtoc1[0x0a:0x64])
|
||||||
self.sector_map[0:720] = bits
|
self.sector_map[0:720] = bits
|
||||||
log.debug("vtoc before:\n%s" % str(self))
|
if _dbg: log.debug("vtoc before:\n%s" % str(self))
|
||||||
|
|
||||||
def calc_bitmap(self):
|
def calc_bitmap(self):
|
||||||
log.debug("vtoc after:\n%s" % str(self))
|
if _dbg: log.debug("vtoc after:\n%s" % str(self))
|
||||||
packed = np.packbits(self.sector_map[0:720])
|
packed = np.packbits(self.sector_map[0:720])
|
||||||
self.vtoc1[0x0a:0x64] = packed
|
self.vtoc1[0x0a:0x64] = packed
|
||||||
s = WriteableSector(self.sector_size, self.vtoc1)
|
s = WriteableSector(self.sector_size, self.vtoc1)
|
||||||
|
@ -52,7 +52,7 @@ class AtariDosDirectory(Directory):
|
||||||
|
|
||||||
def encode_dirent(self, dirent):
|
def encode_dirent(self, dirent):
|
||||||
data = dirent.encode_dirent()
|
data = dirent.encode_dirent()
|
||||||
log.debug("encoded dirent: %s" % data)
|
if _dbg: log.debug("encoded dirent: %s" % data)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_sector_numbers(self, image):
|
def set_sector_numbers(self, image):
|
||||||
|
@ -225,7 +225,7 @@ class AtariDosDirent(Dirent):
|
||||||
self.file_num = index
|
self.file_num = index
|
||||||
self.dos_2 = True
|
self.dos_2 = True
|
||||||
self.in_use = True
|
self.in_use = True
|
||||||
log.debug("set_values: %s" % self)
|
if _dbg: log.debug("set_values: %s" % self)
|
||||||
|
|
||||||
|
|
||||||
class MydosDirent(AtariDosDirent):
|
class MydosDirent(AtariDosDirent):
|
||||||
|
@ -279,7 +279,7 @@ class AtariDosFile(object):
|
||||||
pos = 0
|
pos = 0
|
||||||
style_pos = 0
|
style_pos = 0
|
||||||
first = True
|
first = True
|
||||||
log.debug("Initial parsing: size=%d" % self.size)
|
if _dbg: log.debug("Initial parsing: size=%d" % self.size)
|
||||||
while pos < self.size:
|
while pos < self.size:
|
||||||
if pos + 1 < self.size:
|
if pos + 1 < self.size:
|
||||||
header, = b[pos:pos+2].view(dtype='<u2')
|
header, = b[pos:pos+2].view(dtype='<u2')
|
||||||
|
@ -294,7 +294,7 @@ class AtariDosFile(object):
|
||||||
continue
|
continue
|
||||||
elif first:
|
elif first:
|
||||||
raise InvalidBinaryFile("Object file doesn't start with 0xffff")
|
raise InvalidBinaryFile("Object file doesn't start with 0xffff")
|
||||||
log.debug("header parsing: header=0x%x" % header)
|
if _dbg: log.debug("header parsing: header=0x%x" % header)
|
||||||
if len(b[pos:pos + 4]) < 4:
|
if len(b[pos:pos + 4]) < 4:
|
||||||
self.segments.append(ObjSegment(r[pos:pos + 4], 0, 0, 0, len(b[pos:pos + 4]), "Short Segment Header"))
|
self.segments.append(ObjSegment(r[pos:pos + 4], 0, 0, 0, len(b[pos:pos + 4]), "Short Segment Header"))
|
||||||
break
|
break
|
||||||
|
@ -534,7 +534,7 @@ class AtariDosDiskImage(DiskImageBase):
|
||||||
files.append(dirent)
|
files.append(dirent)
|
||||||
if not dirent.is_sane:
|
if not dirent.is_sane:
|
||||||
self.all_sane = False
|
self.all_sane = False
|
||||||
log.debug("dirent %d not sane: %s" % (num, dirent))
|
if _dbg: log.debug("dirent %d not sane: %s" % (num, dirent))
|
||||||
elif dirent.flag == 0:
|
elif dirent.flag == 0:
|
||||||
break
|
break
|
||||||
if directory is not None:
|
if directory is not None:
|
||||||
|
@ -646,7 +646,7 @@ class AtariDosDiskImage(DiskImageBase):
|
||||||
binary = AtariDosFile(segment.rawdata)
|
binary = AtariDosFile(segment.rawdata)
|
||||||
segments_out.extend(binary.segments)
|
segments_out.extend(binary.segments)
|
||||||
except InvalidBinaryFile:
|
except InvalidBinaryFile:
|
||||||
log.debug("%s not a binary file; skipping segment generation" % str(segment))
|
if _dbg: log.debug("%s not a binary file; skipping segment generation" % str(segment))
|
||||||
return segments_out
|
return segments_out
|
||||||
|
|
||||||
def create_executable_file_image(self, segments, run_addr=None):
|
def create_executable_file_image(self, segments, run_addr=None):
|
||||||
|
|
|
@ -227,7 +227,7 @@ class AtariCartImage(DiskImageBase):
|
||||||
return
|
return
|
||||||
k, rem = divmod((len(self) - len(self.header)), 1024)
|
k, rem = divmod((len(self) - len(self.header)), 1024)
|
||||||
c = get_cart(self.cart_type)
|
c = get_cart(self.cart_type)
|
||||||
log.debug("checking type=%d, k=%d, rem=%d for %s, %s" % (self.cart_type, k, rem, c[1], c[2]))
|
if _dbg: log.debug("checking type=%d, k=%d, rem=%d for %s, %s" % (self.cart_type, k, rem, c[1], c[2]))
|
||||||
if rem > 0:
|
if rem > 0:
|
||||||
raise InvalidDiskImage("Cart not multiple of 1K")
|
raise InvalidDiskImage("Cart not multiple of 1K")
|
||||||
if k != c[2]:
|
if k != c[2]:
|
||||||
|
|
|
@ -348,7 +348,7 @@ class DiskImageBase(object):
|
||||||
def write_sector_list(self, sector_list):
|
def write_sector_list(self, sector_list):
|
||||||
for sector in sector_list:
|
for sector in sector_list:
|
||||||
pos, size = self.header.get_pos(sector.sector_num)
|
pos, size = self.header.get_pos(sector.sector_num)
|
||||||
log.debug("writing: %s at %d" % (sector, pos))
|
if _dbg: log.debug("writing: %s at %d" % (sector, pos))
|
||||||
self.bytes[pos:pos + size] = sector.data
|
self.bytes[pos:pos + size] = sector.data
|
||||||
|
|
||||||
def delete_file(self, filename):
|
def delete_file(self, filename):
|
||||||
|
@ -373,7 +373,7 @@ class DiskImageBase(object):
|
||||||
try:
|
try:
|
||||||
vtoc = self.get_vtoc_object()
|
vtoc = self.get_vtoc_object()
|
||||||
for sector_num, pos, size in vtoc.iter_free_sectors():
|
for sector_num, pos, size in vtoc.iter_free_sectors():
|
||||||
log.debug("shredding: sector %s at %d, fill value=%d" % (sector_num, pos, fill_value))
|
if _dbg: log.debug("shredding: sector %s at %d, fill value=%d" % (sector_num, pos, fill_value))
|
||||||
self.bytes[pos:pos + size] = fill_value
|
self.bytes[pos:pos + size] = fill_value
|
||||||
except AtrError:
|
except AtrError:
|
||||||
self.rollback_transaction(state)
|
self.rollback_transaction(state)
|
||||||
|
|
|
@ -24,7 +24,7 @@ class Dos33TSSector(WriteableSector):
|
||||||
t, s = self.header.track_from_sector(sector.sector_num)
|
t, s = self.header.track_from_sector(sector.sector_num)
|
||||||
self.data[index] = t
|
self.data[index] = t
|
||||||
self.data[index + 1] = s
|
self.data[index + 1] = s
|
||||||
log.debug("tslist entry #%d: %d, %d" % (index, t, s))
|
if _dbg: log.debug("tslist entry #%d: %d, %d" % (index, t, s))
|
||||||
index += 2
|
index += 2
|
||||||
|
|
||||||
def get_tslist(self):
|
def get_tslist(self):
|
||||||
|
@ -93,10 +93,10 @@ class Dos33VTOC(VTOC):
|
||||||
# so we need to reorder them using numpy's indexing before stuffing
|
# so we need to reorder them using numpy's indexing before stuffing
|
||||||
# them into the sector map
|
# them into the sector map
|
||||||
self.sector_map[0:self.max_sectors] = bits[self.vtoc_bit_reorder_index]
|
self.sector_map[0:self.max_sectors] = bits[self.vtoc_bit_reorder_index]
|
||||||
log.debug("vtoc before:\n%s" % str(self))
|
if _dbg: log.debug("vtoc before:\n%s" % str(self))
|
||||||
|
|
||||||
def calc_bitmap(self):
|
def calc_bitmap(self):
|
||||||
log.debug("vtoc after:\n%s" % str(self))
|
if _dbg: log.debug("vtoc after:\n%s" % str(self))
|
||||||
|
|
||||||
# reverse the process from above, so swap the order of every 16 bits,
|
# reverse the process from above, so swap the order of every 16 bits,
|
||||||
# turn them into bytes, then stuff them back into the vtoc. The bit
|
# turn them into bytes, then stuff them back into the vtoc. The bit
|
||||||
|
@ -129,7 +129,7 @@ class Dos33Directory(Directory):
|
||||||
|
|
||||||
def encode_dirent(self, dirent):
|
def encode_dirent(self, dirent):
|
||||||
data = dirent.encode_dirent()
|
data = dirent.encode_dirent()
|
||||||
log.debug("encoded dirent: %s" % data)
|
if _dbg: log.debug("encoded dirent: %s" % data)
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def set_sector_numbers(self, image):
|
def set_sector_numbers(self, image):
|
||||||
|
@ -140,7 +140,7 @@ class Dos33Directory(Directory):
|
||||||
t, s = image.header.track_from_sector(next_sector)
|
t, s = image.header.track_from_sector(next_sector)
|
||||||
sector.data[1] = t
|
sector.data[1] = t
|
||||||
sector.data[2] = s
|
sector.data[2] = s
|
||||||
log.debug("directory sector %d -> next = %d" % (sector.sector_num, next_sector))
|
if _dbg: log.debug("directory sector %d -> next = %d" % (sector.sector_num, next_sector))
|
||||||
current_sector = next_sector
|
current_sector = next_sector
|
||||||
|
|
||||||
|
|
||||||
|
@ -266,7 +266,7 @@ class Dos33Dirent(Dirent):
|
||||||
tslist = BaseSectorList(header)
|
tslist = BaseSectorList(header)
|
||||||
for start in range(0, len(sector_list), header.ts_pairs):
|
for start in range(0, len(sector_list), header.ts_pairs):
|
||||||
end = min(start + header.ts_pairs, len(sector_list))
|
end = min(start + header.ts_pairs, len(sector_list))
|
||||||
log.debug("ts: %d-%d" % (start, end))
|
if _dbg: log.debug("ts: %d-%d" % (start, end))
|
||||||
s = Dos33TSSector(header, sector_list, start, end)
|
s = Dos33TSSector(header, sector_list, start, end)
|
||||||
s.ts_start, s.ts_end = start, end
|
s.ts_start, s.ts_end = start, end
|
||||||
tslist.append(s)
|
tslist.append(s)
|
||||||
|
@ -274,7 +274,7 @@ class Dos33Dirent(Dirent):
|
||||||
vtoc.assign_sector_numbers(self, tslist)
|
vtoc.assign_sector_numbers(self, tslist)
|
||||||
sector_list.extend(tslist)
|
sector_list.extend(tslist)
|
||||||
self.track, self.sector = header.track_from_sector(tslist[0].sector_num)
|
self.track, self.sector = header.track_from_sector(tslist[0].sector_num)
|
||||||
log.debug("track/sector lists:\n%s" % str(tslist))
|
if _dbg: log.debug("track/sector lists:\n%s" % str(tslist))
|
||||||
|
|
||||||
def sanity_check(self, image):
|
def sanity_check(self, image):
|
||||||
if self.deleted:
|
if self.deleted:
|
||||||
|
@ -294,7 +294,7 @@ class Dos33Dirent(Dirent):
|
||||||
sector_map = []
|
sector_map = []
|
||||||
while sector_num > 0:
|
while sector_num > 0:
|
||||||
image.assert_valid_sector(sector_num)
|
image.assert_valid_sector(sector_num)
|
||||||
log.debug("reading track/sector list at %d for %s" % (sector_num, self))
|
if _dbg: log.debug("reading track/sector list at %d for %s" % (sector_num, self))
|
||||||
data, _ = image.get_sectors(sector_num)
|
data, _ = image.get_sectors(sector_num)
|
||||||
sector = Dos33TSSector(image.header, data=data)
|
sector = Dos33TSSector(image.header, data=data)
|
||||||
sector.sector_num = sector_num
|
sector.sector_num = sector_num
|
||||||
|
@ -318,7 +318,7 @@ class Dos33Dirent(Dirent):
|
||||||
if not self.is_sane:
|
if not self.is_sane:
|
||||||
raise InvalidDirent("Invalid directory entry '%s'" % str(self))
|
raise InvalidDirent("Invalid directory entry '%s'" % str(self))
|
||||||
self.get_track_sector_list(image)
|
self.get_track_sector_list(image)
|
||||||
log.debug("start_read: %s, t/s list: %s" % (str(self), str(self.sector_map)))
|
if _dbg: log.debug("start_read: %s, t/s list: %s" % (str(self), str(self.sector_map)))
|
||||||
self.current_sector_index = 0
|
self.current_sector_index = 0
|
||||||
self.current_read = self.num_sectors
|
self.current_read = self.num_sectors
|
||||||
|
|
||||||
|
@ -327,7 +327,7 @@ class Dos33Dirent(Dirent):
|
||||||
sector = self.sector_map[self.current_sector_index]
|
sector = self.sector_map[self.current_sector_index]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
sector = -1 # force ByteNotInFile166 error at next read
|
sector = -1 # force ByteNotInFile166 error at next read
|
||||||
log.debug("read_sector: index %d=%d in %s" % (self.current_sector_index,sector, str(self)))
|
if _dbg: log.debug("read_sector: index %d=%d in %s" % (self.current_sector_index,sector, str(self)))
|
||||||
last = (self.current_sector_index == len(self.sector_map) - 1)
|
last = (self.current_sector_index == len(self.sector_map) - 1)
|
||||||
raw, pos, size = image.get_raw_bytes(sector)
|
raw, pos, size = image.get_raw_bytes(sector)
|
||||||
bytes, num_data_bytes = self.process_raw_sector(image, raw)
|
bytes, num_data_bytes = self.process_raw_sector(image, raw)
|
||||||
|
@ -415,7 +415,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||||
else:
|
else:
|
||||||
raise InvalidDiskImage("Invalid VTOC location for DOS 3.3")
|
raise InvalidDiskImage("Invalid VTOC location for DOS 3.3")
|
||||||
|
|
||||||
log.debug("DOS 3.3 byte swap: %s" % swap_order)
|
if _dbg: log.debug("DOS 3.3 byte swap: %s" % swap_order)
|
||||||
|
|
||||||
vtoc_type = np.dtype([
|
vtoc_type = np.dtype([
|
||||||
('unused1', 'S1'),
|
('unused1', 'S1'),
|
||||||
|
@ -453,7 +453,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||||
files = []
|
files = []
|
||||||
while sector > 0:
|
while sector > 0:
|
||||||
self.assert_valid_sector(sector)
|
self.assert_valid_sector(sector)
|
||||||
log.debug("reading catalog sector: %d" % sector)
|
if _dbg: log.debug("reading catalog sector: %d" % sector)
|
||||||
values, style = self.get_sectors(sector)
|
values, style = self.get_sectors(sector)
|
||||||
sector = self.header.sector_from_track(values[1], values[2])
|
sector = self.header.sector_from_track(values[1], values[2])
|
||||||
i = 0xb
|
i = 0xb
|
||||||
|
@ -468,7 +468,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||||
files.append(dirent)
|
files.append(dirent)
|
||||||
if directory is not None:
|
if directory is not None:
|
||||||
directory.set(num, dirent)
|
directory.set(num, dirent)
|
||||||
log.debug("valid directory entry %s" % dirent)
|
if _dbg: log.debug("valid directory entry %s" % dirent)
|
||||||
i += 0x23
|
i += 0x23
|
||||||
num += 1
|
num += 1
|
||||||
self.files = files
|
self.files = files
|
||||||
|
@ -525,7 +525,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||||
sector = self.header.first_directory
|
sector = self.header.first_directory
|
||||||
while sector > 0:
|
while sector > 0:
|
||||||
self.assert_valid_sector(sector)
|
self.assert_valid_sector(sector)
|
||||||
log.debug("loading directory segment from catalog sector %d" % sector)
|
if _dbg: log.debug("loading directory segment from catalog sector %d" % sector)
|
||||||
raw, pos, size = self.get_raw_bytes(sector)
|
raw, pos, size = self.get_raw_bytes(sector)
|
||||||
byte_order.extend(range(pos, pos + size))
|
byte_order.extend(range(pos, pos + size))
|
||||||
sector = self.header.sector_from_track(raw[1], raw[2])
|
sector = self.header.sector_from_track(raw[1], raw[2])
|
||||||
|
@ -557,7 +557,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||||
self.assert_valid_sector(sector_num)
|
self.assert_valid_sector(sector_num)
|
||||||
raw, _, _ = self.get_raw_bytes(sector_num)
|
raw, _, _ = self.get_raw_bytes(sector_num)
|
||||||
next_sector = self.header.sector_from_track(raw[1], raw[2])
|
next_sector = self.header.sector_from_track(raw[1], raw[2])
|
||||||
log.debug("checking catalog sector %d, next catalog sector: %d" % (sector_num, next_sector))
|
if _dbg: log.debug("checking catalog sector %d, next catalog sector: %d" % (sector_num, next_sector))
|
||||||
if next_sector == 0:
|
if next_sector == 0:
|
||||||
raise NoSpaceInDirectory("No space left in catalog")
|
raise NoSpaceInDirectory("No space left in catalog")
|
||||||
return sector_num, next_sector
|
return sector_num, next_sector
|
||||||
|
@ -596,7 +596,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||||
for s in segments:
|
for s in segments:
|
||||||
origin = min(origin, s.start_addr)
|
origin = min(origin, s.start_addr)
|
||||||
last = max(last, s.start_addr + len(s))
|
last = max(last, s.start_addr + len(s))
|
||||||
log.debug("contiguous bytes needed: %04x - %04x" % (origin, last))
|
if _dbg: log.debug("contiguous bytes needed: %04x - %04x" % (origin, last))
|
||||||
if run_addr and run_addr != origin:
|
if run_addr and run_addr != origin:
|
||||||
# check if run_addr points to some location that has data
|
# check if run_addr points to some location that has data
|
||||||
found = False
|
found = False
|
||||||
|
@ -652,7 +652,7 @@ class Dos33BinFile(object):
|
||||||
pos = 0
|
pos = 0
|
||||||
style_pos = 0
|
style_pos = 0
|
||||||
first = True
|
first = True
|
||||||
log.debug("Initial parsing: size=%d" % self.size)
|
if _dbg: log.debug("Initial parsing: size=%d" % self.size)
|
||||||
if len(b[pos:pos + 4]) == 4:
|
if len(b[pos:pos + 4]) == 4:
|
||||||
start, count = b[pos:pos + 4].view(dtype='<u2')
|
start, count = b[pos:pos + 4].view(dtype='<u2')
|
||||||
s[pos:pos + 4] = get_style_bits(data=True)
|
s[pos:pos + 4] = get_style_bits(data=True)
|
||||||
|
|
|
@ -858,14 +858,14 @@ class DefaultSegment(object):
|
||||||
for where_index, comment in zip(indexes, comments):
|
for where_index, comment in zip(indexes, comments):
|
||||||
rawindex = self.get_raw_index(where_index)
|
rawindex = self.get_raw_index(where_index)
|
||||||
if comment:
|
if comment:
|
||||||
log.debug(" restoring comment: rawindex=%d, '%s'" % (rawindex, comment))
|
if _dbg: log.debug(" restoring comment: rawindex=%d, '%s'" % (rawindex, comment))
|
||||||
self.rawdata.extra.comments[rawindex] = comment
|
self.rawdata.extra.comments[rawindex] = comment
|
||||||
else:
|
else:
|
||||||
try:
|
try:
|
||||||
del self.rawdata.extra.comments[rawindex]
|
del self.rawdata.extra.comments[rawindex]
|
||||||
log.debug(" no comment in original data, removed comment in current data at rawindex=%d" % rawindex)
|
if _dbg: log.debug(" no comment in original data, removed comment in current data at rawindex=%d" % rawindex)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
log.debug(" no comment in original data or current data at rawindex=%d" % rawindex)
|
if _dbg: log.debug(" no comment in original data or current data at rawindex=%d" % rawindex)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_comments_at_indexes(self, indexes):
|
def get_comments_at_indexes(self, indexes):
|
||||||
|
@ -888,17 +888,17 @@ class DefaultSegment(object):
|
||||||
"""
|
"""
|
||||||
restore_data = []
|
restore_data = []
|
||||||
for start, end in ranges:
|
for start, end in ranges:
|
||||||
log.debug("range: %d-%d" % (start, end))
|
if _dbg: log.debug("range: %d-%d" % (start, end))
|
||||||
styles = self.style[start:end].copy()
|
styles = self.style[start:end].copy()
|
||||||
items = {}
|
items = {}
|
||||||
for i in range(start, end):
|
for i in range(start, end):
|
||||||
rawindex = self.get_raw_index(i)
|
rawindex = self.get_raw_index(i)
|
||||||
try:
|
try:
|
||||||
comment = self.rawdata.extra.comments[rawindex]
|
comment = self.rawdata.extra.comments[rawindex]
|
||||||
log.debug(" index: %d rawindex=%d '%s'" % (i, rawindex, comment))
|
if _dbg: log.debug(" index: %d rawindex=%d '%s'" % (i, rawindex, comment))
|
||||||
items[i] = (rawindex, comment)
|
items[i] = (rawindex, comment)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
log.debug(" index: %d rawindex=%d NO COMMENT TO SAVE" % (i, rawindex))
|
if _dbg: log.debug(" index: %d rawindex=%d NO COMMENT TO SAVE" % (i, rawindex))
|
||||||
items[i] = (rawindex, None)
|
items[i] = (rawindex, None)
|
||||||
|
|
||||||
restore_data.append((start, end, styles, items))
|
restore_data.append((start, end, styles, items))
|
||||||
|
@ -908,20 +908,20 @@ class DefaultSegment(object):
|
||||||
"""Restore comment styles and data
|
"""Restore comment styles and data
|
||||||
"""
|
"""
|
||||||
for start, end, styles, items in restore_data:
|
for start, end, styles, items in restore_data:
|
||||||
log.debug("range: %d-%d" % (start, end))
|
if _dbg: log.debug("range: %d-%d" % (start, end))
|
||||||
self.style[start:end] = styles
|
self.style[start:end] = styles
|
||||||
for i in range(start, end):
|
for i in range(start, end):
|
||||||
rawindex, comment = items[i]
|
rawindex, comment = items[i]
|
||||||
if comment:
|
if comment:
|
||||||
log.debug(" restoring comment: rawindex=%d, '%s'" % (rawindex, comment))
|
if _dbg: log.debug(" restoring comment: rawindex=%d, '%s'" % (rawindex, comment))
|
||||||
self.rawdata.extra.comments[rawindex] = comment
|
self.rawdata.extra.comments[rawindex] = comment
|
||||||
else:
|
else:
|
||||||
# no comment in original data, remove any if exists
|
# no comment in original data, remove any if exists
|
||||||
try:
|
try:
|
||||||
del self.rawdata.extra.comments[rawindex]
|
del self.rawdata.extra.comments[rawindex]
|
||||||
log.debug(" no comment in original data, removed comment in current data at rawindex=%d" % rawindex)
|
if _dbg: log.debug(" no comment in original data, removed comment in current data at rawindex=%d" % rawindex)
|
||||||
except KeyError:
|
except KeyError:
|
||||||
log.debug(" no comment in original data or current data at rawindex=%d" % rawindex)
|
if _dbg: log.debug(" no comment in original data or current data at rawindex=%d" % rawindex)
|
||||||
pass
|
pass
|
||||||
|
|
||||||
def get_comments_in_range(self, start, end):
|
def get_comments_in_range(self, start, end):
|
||||||
|
|
|
@ -89,7 +89,7 @@ class SpartaDosDirent(AtariDosDirent):
|
||||||
|
|
||||||
def start_read(self, image):
|
def start_read(self, image):
|
||||||
if not self.is_sane:
|
if not self.is_sane:
|
||||||
log.debug("Invalid directory entry '%s', starting_sector=%s" % (str(self), self.starting_sector))
|
if _dbg: log.debug("Invalid directory entry '%s', starting_sector=%s" % (str(self), self.starting_sector))
|
||||||
raise InvalidDirent("Invalid directory entry '%s'" % str(self))
|
raise InvalidDirent("Invalid directory entry '%s'" % str(self))
|
||||||
self.sector_map = image.get_sector_map(self.starting_sector)
|
self.sector_map = image.get_sector_map(self.starting_sector)
|
||||||
self.sector_map_index = 0
|
self.sector_map_index = 0
|
||||||
|
|
|
@ -176,7 +176,7 @@ class Directory(BaseSectorList):
|
||||||
|
|
||||||
def set(self, index, dirent):
|
def set(self, index, dirent):
|
||||||
self.dirents[index] = dirent
|
self.dirents[index] = dirent
|
||||||
log.debug("set dirent #%d: %s" % (index, dirent))
|
if _dbg: log.debug("set dirent #%d: %s" % (index, dirent))
|
||||||
|
|
||||||
def get_free_dirent(self):
|
def get_free_dirent(self):
|
||||||
used = set()
|
used = set()
|
||||||
|
@ -240,10 +240,10 @@ class Directory(BaseSectorList):
|
||||||
current = 0
|
current = 0
|
||||||
for index, dirent in d:
|
for index, dirent in d:
|
||||||
for missing in range(current, index):
|
for missing in range(current, index):
|
||||||
log.debug("Encoding empty dirent at %d" % missing)
|
if _dbg: log.debug("Encoding empty dirent at %d" % missing)
|
||||||
data = self.encode_empty()
|
data = self.encode_empty()
|
||||||
self.store_encoded(data)
|
self.store_encoded(data)
|
||||||
log.debug("Encoding dirent: %s" % dirent)
|
if _dbg: log.debug("Encoding dirent: %s" % dirent)
|
||||||
data = self.encode_dirent(dirent)
|
data = self.encode_dirent(dirent)
|
||||||
self.store_encoded(data)
|
self.store_encoded(data)
|
||||||
current = index + 1
|
current = index + 1
|
||||||
|
@ -260,7 +260,7 @@ class Directory(BaseSectorList):
|
||||||
|
|
||||||
def store_encoded(self, data):
|
def store_encoded(self, data):
|
||||||
while True:
|
while True:
|
||||||
log.debug("store_encoded: %d bytes in %s" % (len(data), self.current_sector))
|
if _dbg: log.debug("store_encoded: %d bytes in %s" % (len(data), self.current_sector))
|
||||||
data = self.current_sector.add_data(data)
|
data = self.current_sector.add_data(data)
|
||||||
if len(data) > 0:
|
if len(data) > 0:
|
||||||
self.sectors.append(self.current_sector)
|
self.sectors.append(self.current_sector)
|
||||||
|
@ -329,7 +329,7 @@ class VTOC(BaseSectorList):
|
||||||
order = []
|
order = []
|
||||||
for i in range(num):
|
for i in range(num):
|
||||||
order.append(self.get_next_free_sector())
|
order.append(self.get_next_free_sector())
|
||||||
log.debug("Sectors reserved: %s" % order)
|
if _dbg: log.debug("Sectors reserved: %s" % order)
|
||||||
self.calc_bitmap()
|
self.calc_bitmap()
|
||||||
return order
|
return order
|
||||||
|
|
||||||
|
@ -337,7 +337,7 @@ class VTOC(BaseSectorList):
|
||||||
free = np.nonzero(self.sector_map)[0]
|
free = np.nonzero(self.sector_map)[0]
|
||||||
if len(free) > 0:
|
if len(free) > 0:
|
||||||
num = free[0]
|
num = free[0]
|
||||||
log.debug("Found sector %d free" % num)
|
if _dbg: log.debug("Found sector %d free" % num)
|
||||||
self.sector_map[num] = 0
|
self.sector_map[num] = 0
|
||||||
return num
|
return num
|
||||||
raise NotEnoughSpaceOnDisk("No space left in VTOC")
|
raise NotEnoughSpaceOnDisk("No space left in VTOC")
|
||||||
|
|
|
@ -26,5 +26,8 @@ logging.basicConfig(level=logging.WARNING)
|
||||||
logger = logging.getLogger()
|
logger = logging.getLogger()
|
||||||
logger.setLevel(logging.DEBUG)
|
logger.setLevel(logging.DEBUG)
|
||||||
|
|
||||||
|
import __builtin__
|
||||||
|
__builtin__._dbg = False
|
||||||
|
|
||||||
import numpy as np
|
import numpy as np
|
||||||
from numpy.testing import assert_almost_equal
|
from numpy.testing import assert_almost_equal
|
||||||
|
|
|
@ -159,6 +159,9 @@ class TestDos33Image(BaseFilesystemModifyTest):
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
import __builtin__
|
||||||
|
__builtin__._dbg = False
|
||||||
|
|
||||||
t = TestAtariDosSDImage()
|
t = TestAtariDosSDImage()
|
||||||
for name in dir(t):
|
for name in dir(t):
|
||||||
print name
|
print name
|
||||||
|
|
Loading…
Reference in New Issue