Эх сурвалжийг харах

adf, amigados: Mark empty/bad sectors with -=[BAD SECTOR]=-

Keir Fraser 4 жил өмнө
parent
commit
67242ff012

+ 4 - 2
scripts/greaseweazle/codec/amiga/amigados.py

@@ -18,6 +18,8 @@ sync_bytes = b'\x44\x89\x44\x89'
 sync = bitarray(endian='big')
 sync.frombytes(sync_bytes)
 
+bad_sector = b'-=[BAD SECTOR]=-' * 32
+
 class AmigaDOS:
 
     DDSEC = 11
@@ -52,7 +54,7 @@ class AmigaDOS:
     def get_adf_track(self):
         tdat = bytearray()
         for sec in self.sector:
-            tdat += sec[1] if sec is not None else bytes(512)
+            tdat += sec[1] if sec is not None else bad_sector
         return tdat
 
     def set_adf_track(self, tdat):
@@ -113,7 +115,7 @@ class AmigaDOS:
 
         for nr, sec_id in zip(range(self.nsec), full_map):
             sector = self.sector[sec_id]
-            label, data = (bytes(16), bytes(512)) if sector is None else sector
+            label, data = (bytes(16), bad_sector) if sector is None else sector
             header = bytes([0xff, self.tracknr, sec_id, self.nsec-nr])
             t += sync_bytes
             t += encode(header)

+ 2 - 3
scripts/greaseweazle/image/adf.py

@@ -56,7 +56,6 @@ class ADF(Image):
 
     def get_image(self):
 
-        tlen = self.sec_per_track * 512
         tdat = bytearray()
 
         ntracks = max(self.to_track, default=0) + 1
@@ -67,13 +66,13 @@ class ADF(Image):
                 tdat += t.get_adf_track()
             elif tnr < 160:
                 # Pad empty/damaged tracks.
-                tdat += bytes(tlen)
+                tdat += amigados.bad_sector * self.sec_per_track
             else:
                 # Do not extend past 160 tracks unless there is data.
                 break
 
         if ntracks < 160:
-            tdat += bytes(tlen * (160 - ntracks))
+            tdat += amigados.bad_sector * self.sec_per_track * (160 - ntracks)
 
         return tdat