formats.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  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. class Format_AtariST_360(Format):
  31. img_compatible = True
  32. default_trackset = 'c=0-79:h=0'
  33. def __init__(self):
  34. import greaseweazle.codec.ibm.mfm as m
  35. self.fmt = m.AtariST_SS_9SPT
  36. self.default_revs = m.default_revs
  37. self.decode_track = self.fmt.decode_track
  38. super().__init__()
  39. class Format_AtariST_400(Format):
  40. img_compatible = True
  41. default_trackset = 'c=0-79:h=0'
  42. def __init__(self):
  43. import greaseweazle.codec.ibm.mfm as m
  44. self.fmt = m.AtariST_10SPT
  45. self.default_revs = m.default_revs
  46. self.decode_track = self.fmt.decode_track
  47. super().__init__()
  48. class Format_AtariST_440(Format):
  49. img_compatible = True
  50. default_trackset = 'c=0-79:h=0'
  51. def __init__(self):
  52. import greaseweazle.codec.ibm.mfm as m
  53. self.fmt = m.AtariST_11SPT
  54. self.default_revs = m.default_revs
  55. self.decode_track = self.fmt.decode_track
  56. super().__init__()
  57. class Format_AtariST_720(Format):
  58. img_compatible = True
  59. def __init__(self):
  60. import greaseweazle.codec.ibm.mfm as m
  61. self.fmt = m.AtariST_DS_9SPT
  62. self.default_revs = m.default_revs
  63. self.decode_track = self.fmt.decode_track
  64. super().__init__()
  65. class Format_AtariST_800(Format):
  66. img_compatible = True
  67. def __init__(self):
  68. import greaseweazle.codec.ibm.mfm as m
  69. self.fmt = m.AtariST_10SPT
  70. self.default_revs = m.default_revs
  71. self.decode_track = self.fmt.decode_track
  72. super().__init__()
  73. class Format_AtariST_880(Format):
  74. img_compatible = True
  75. def __init__(self):
  76. import greaseweazle.codec.ibm.mfm as m
  77. self.fmt = m.AtariST_11SPT
  78. self.default_revs = m.default_revs
  79. self.decode_track = self.fmt.decode_track
  80. super().__init__()
  81. formats = {
  82. 'amiga.amigados': Format_Amiga_AmigaDOS,
  83. 'ibm.720': Format_IBM_720,
  84. 'ibm.1440': Format_IBM_1440,
  85. 'atarist.360': Format_AtariST_360,
  86. 'atarist.400': Format_AtariST_400,
  87. 'atarist.440': Format_AtariST_440,
  88. 'atarist.720': Format_AtariST_720,
  89. 'atarist.800': Format_AtariST_800,
  90. 'atarist.880': Format_AtariST_880
  91. }
  92. def print_formats(f = None):
  93. s = ''
  94. for k, v in sorted(formats.items()):
  95. if not f or f(k, v):
  96. if s:
  97. s += '\n'
  98. s += ' ' + k
  99. return s