123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240 |
- # greaseweazle/codec/formats.py
- #
- # Written & released by Keir Fraser <keir.xen@gmail.com>
- #
- # This is free and unencumbered software released into the public domain.
- # See the file COPYING for more details, or visit <http://unlicense.org>.
- from collections import OrderedDict
- from greaseweazle.tools import util
- class Format:
- adf_compatible = False
- img_compatible = False
- default_trackset = 'c=0-79:h=0-1'
- max_trackset = 'c=0-81:h=0-1'
- def __init__(self):
- self.default_tracks = util.TrackSet(self.default_trackset)
- self.max_tracks = util.TrackSet(self.max_trackset)
- self.decode_track = self.fmt.decode_track
- class Format_Acorn_DFS_SS(Format):
- img_compatible = True
- default_trackset = 'c=0-39:h=0'
- max_trackset = 'c=0-81:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.fm as m
- self.fmt = m.Acorn_DFS
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_Acorn_DFS_DS(Format):
- img_compatible = True
- default_trackset = 'c=0-39:h=0-1'
- max_trackset = 'c=0-81:h=0-1'
- def __init__(self):
- import greaseweazle.codec.ibm.fm as m
- self.fmt = m.Acorn_DFS
- self.default_revs = m.default_revs
- super().__init__()
- class Format_Acorn_ADFS_160(Format):
- img_compatible = True
- default_trackset = 'c=0-39:h=0'
- max_trackset = 'c=0-81:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.Acorn_ADFS_640
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_Acorn_ADFS_320(Format):
- img_compatible = True
- default_trackset = 'c=0-79:h=0'
- max_trackset = 'c=0-81:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.Acorn_ADFS_640
- self.default_revs = m.default_revs
- super().__init__()
- class Format_Acorn_ADFS_640(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.Acorn_ADFS_640
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_Acorn_ADFS_800(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.Acorn_ADFS_800
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_Acorn_ADFS_1600(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.Acorn_ADFS_1600
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_Amiga_AmigaDOS_DD(Format):
- adf_compatible = True
- def __init__(self):
- import greaseweazle.codec.amiga.amigados as m
- self.fmt = m.AmigaDOS_DD
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_Amiga_AmigaDOS_HD(Format):
- adf_compatible = True
- def __init__(self):
- import greaseweazle.codec.amiga.amigados as m
- self.fmt = m.AmigaDOS_HD
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_IBM_180(Format):
- img_compatible = True
- default_trackset = 'c=0-39:h=0'
- max_trackset = 'c=0-41:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.IBM_MFM_720
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_IBM_360(Format):
- img_compatible = True
- default_trackset = 'c=0-39:h=0-1'
- max_trackset = 'c=0-41:h=0-1'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.IBM_MFM_720
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_IBM_720(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.IBM_MFM_720
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_IBM_800(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.IBM_MFM_800
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_IBM_1440(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.IBM_MFM_1440
- self.default_revs = m.default_revs
- super().__init__()
- class Format_IBM_1200(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.IBM_MFM_1200
- self.default_revs = m.default_revs
- super().__init__()
- class Format_AtariST_360(Format):
- img_compatible = True
- default_trackset = 'c=0-79:h=0'
- max_trackset = 'c=0-81:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.AtariST_SS_9SPT
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_AtariST_400(Format):
- img_compatible = True
- default_trackset = 'c=0-79:h=0'
- max_trackset = 'c=0-81:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.AtariST_10SPT
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_AtariST_440(Format):
- img_compatible = True
- default_trackset = 'c=0-79:h=0'
- max_trackset = 'c=0-81:h=0'
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.AtariST_11SPT
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_AtariST_720(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.AtariST_DS_9SPT
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_AtariST_800(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.AtariST_10SPT
- self.default_revs = m.default_revs
- super().__init__()
-
- class Format_AtariST_880(Format):
- img_compatible = True
- def __init__(self):
- import greaseweazle.codec.ibm.mfm as m
- self.fmt = m.AtariST_11SPT
- self.default_revs = m.default_revs
- super().__init__()
-
-
- formats = OrderedDict({
- 'acorn.dfs.ss': Format_Acorn_DFS_SS,
- 'acorn.dfs.ds': Format_Acorn_DFS_DS,
- 'acorn.adfs.160': Format_Acorn_ADFS_160,
- 'acorn.adfs.320': Format_Acorn_ADFS_320,
- 'acorn.adfs.640': Format_Acorn_ADFS_640,
- 'acorn.adfs.800': Format_Acorn_ADFS_800,
- 'acorn.adfs.1600': Format_Acorn_ADFS_1600,
- 'amiga.amigados': Format_Amiga_AmigaDOS_DD,
- 'amiga.amigados_hd': Format_Amiga_AmigaDOS_HD,
- 'atarist.360': Format_AtariST_360,
- 'atarist.400': Format_AtariST_400,
- 'atarist.440': Format_AtariST_440,
- 'atarist.720': Format_AtariST_720,
- 'atarist.800': Format_AtariST_800,
- 'atarist.880': Format_AtariST_880,
- 'commodore.1581': Format_IBM_800,
- 'ibm.180': Format_IBM_180,
- 'ibm.360': Format_IBM_360,
- 'ibm.720': Format_IBM_720,
- 'ibm.1200': Format_IBM_1200,
- 'ibm.1440': Format_IBM_1440,
- })
- def print_formats(f = None):
- s = ''
- for k, v in formats.items():
- if not f or f(k, v):
- if s:
- s += '\n'
- s += ' ' + k
- return s
|