formats.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from greaseweazle.tools import util
  2. class Format:
  3. img_compatible = False
  4. default_trackset = 'c=0-79:h=0-1'
  5. def __init__(self):
  6. self.tracks = util.TrackSet(self.default_trackset)
  7. class Format_Amiga_AmigaDOS(Format):
  8. def __init__(self):
  9. import greaseweazle.codec.amiga.amigados as m
  10. self.fmt = m.AmigaDOS
  11. self.default_revs = m.default_revs
  12. self.decode_track = m.decode_track
  13. super().__init__()
  14. class Format_IBM_720(Format):
  15. img_compatible = True
  16. def __init__(self):
  17. import greaseweazle.codec.ibm.mfm as m
  18. self.fmt = m.IBM_MFM_720
  19. self.default_revs = m.default_revs
  20. self.decode_track = self.fmt.decode_track
  21. super().__init__()
  22. class Format_IBM_1440(Format):
  23. img_compatible = True
  24. def __init__(self):
  25. import greaseweazle.codec.ibm.mfm as m
  26. self.fmt = m.IBM_MFM_1M44
  27. self.default_revs = m.default_revs
  28. self.decode_track = self.fmt.decode_track
  29. super().__init__()
  30. formats = {
  31. 'amiga.amigados': Format_Amiga_AmigaDOS,
  32. 'ibm.720': Format_IBM_720,
  33. 'ibm.1440': Format_IBM_1440
  34. }
  35. def print_formats(f = None):
  36. s = ''
  37. for k, v in sorted(formats.items()):
  38. if not f or f(k, v):
  39. s += k if not s else ', ' + k
  40. return s