mirror of
https://github.com/robmcmullen/atrcopy.git
synced 2025-02-18 03:30:39 +00:00
Changed sector labels for DOS 33 to report track, sector rather than sector number
This commit is contained in:
parent
3157b13727
commit
5a1718bf1d
@ -161,6 +161,10 @@ class DiskImageBase(object):
|
||||
def writeable_sector_class(self):
|
||||
return WriteableSector
|
||||
|
||||
@property
|
||||
def raw_sector_class(self):
|
||||
return RawSectorsSegment
|
||||
|
||||
@property
|
||||
def vtoc_class(self):
|
||||
return VTOC
|
||||
@ -313,7 +317,7 @@ class DiskImageBase(object):
|
||||
i = self.header.header_offset
|
||||
if self.header.image_size > 0:
|
||||
self.segments.append(ObjSegment(r[0:i], 0, 0, 0, i, name="%s Header" % self.header.file_format))
|
||||
self.segments.append(RawSectorsSegment(r[i:], self.header.starting_sector_label, self.header.max_sectors, self.header.image_size, self.header.initial_sector_size, self.header.num_initial_sectors, self.header.sector_size, name="Raw disk sectors"))
|
||||
self.segments.append(self.raw_sector_class(r[i:], self.header.starting_sector_label, self.header.max_sectors, self.header.image_size, self.header.initial_sector_size, self.header.num_initial_sectors, self.header.sector_size, name="Raw disk sectors"))
|
||||
self.segments.extend(self.get_boot_segments())
|
||||
self.segments.extend(self.get_vtoc_segments())
|
||||
self.segments.extend(self.get_directory_segments())
|
||||
|
@ -2,7 +2,7 @@ import numpy as np
|
||||
|
||||
from errors import *
|
||||
from diskimages import AtrHeader, DiskImageBase, Directory, VTOC, WriteableSector, BaseSectorList
|
||||
from segments import DefaultSegment, EmptySegment, ObjSegment, RawSectorsSegment, SegmentSaver
|
||||
from segments import DefaultSegment, EmptySegment, ObjSegment, RawTrackSectorSegment, SegmentSaver
|
||||
|
||||
import logging
|
||||
log = logging.getLogger(__name__)
|
||||
@ -299,6 +299,10 @@ class Dos33DiskImage(DiskImageBase):
|
||||
def directory_class(self):
|
||||
return Dos33Directory
|
||||
|
||||
@property
|
||||
def raw_sector_class(self):
|
||||
return RawTrackSectorSegment
|
||||
|
||||
def get_boot_sector_info(self):
|
||||
# based on logic from a2server
|
||||
data, style = self.get_sectors(0)
|
||||
@ -389,7 +393,7 @@ class Dos33DiskImage(DiskImageBase):
|
||||
segments = []
|
||||
addr = 0
|
||||
start, count = self.get_contiguous_sectors(self.header.vtoc_sector, 1)
|
||||
segment = RawSectorsSegment(r[start:start+count], self.header.vtoc_sector, 1, count, 0, 0, self.header.sector_size, name="VTOC")
|
||||
segment = RawTrackSectorSegment(r[start:start+count], self.header.vtoc_sector, 1, count, 0, 0, self.header.sector_size, name="VTOC")
|
||||
segments.append(segment)
|
||||
return segments
|
||||
|
||||
|
@ -828,6 +828,21 @@ class RawSectorsSegment(DefaultSegment):
|
||||
return "s%03d:%02x" % (sector + self.first_sector, byte)
|
||||
return "s%03d:%02X" % (sector + self.first_sector, byte)
|
||||
|
||||
|
||||
class RawTrackSectorSegment(RawSectorsSegment):
|
||||
def label(self, index, lower_case=True):
|
||||
boot_size = self.num_boot_sectors * self.boot_sector_size
|
||||
if index >= boot_size:
|
||||
sector, byte = divmod(index - boot_size, self.page_size)
|
||||
sector += self.num_boot_sectors
|
||||
else:
|
||||
sector, byte = divmod(index, self.boot_sector_size)
|
||||
sector += self.first_sector
|
||||
t, s = divmod(sector, 16)
|
||||
if lower_case:
|
||||
return "t%02ds%02d:%02x" % (t, s, byte)
|
||||
return "t%02ds%02d:%02X" % (t, s, byte)
|
||||
|
||||
def interleave_indexes(segments, num_bytes):
|
||||
num_segments = len(segments)
|
||||
size = len(segments[0])
|
||||
|
Loading…
x
Reference in New Issue
Block a user