Giter Club home page Giter Club logo

atrcopy's People

Contributors

robmcmullen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

atrcopy's Issues

Support SpartaDOS format ATR images

Bitmap sectors (e.g. SpartaDOS's VTOC) are contiguous, pointed to by $10 in the boot sector. Directory sector map is located in the boot sector. Directory entries are stored in a file just like regular files. Sector maps contain list of sectors used by the file, in the order they should be read in to load the file into memory.

Support DCM images

Currently, atrcopy only identifies DCM images but does not support actually unpacking them. This would be a good first issue for someone to tackle: it's all stubbed out in dcm.py, so all that needs to be done is the actual file parsing and unpacking. ๐Ÿ˜„

I have not been able to find a text description of the file format, but I have found some source code examples:

I'm sure I'll get to it eventually, but if you have the desire I will happily accept pull requests!

Updated atrcopy with pip install atrcopy, now it just crashes.

I updated today and now I just get this

atrcopy /Users/steve/Downloads/atrfilestest/5-dos.atr 
Traceback (most recent call last):
  File "/usr/local/bin/atrcopy", line 4, in <module>
    import atrcopy
  File "/usr/local/lib/python3.6/site-packages/atrcopy/__init__.py", line 355
    except InvalidDiskImage, e:
                           ^
SyntaxError: invalid syntax

pip removed atrcopy and pip installed it again, it's still the same.

Program crash on create new disk file.

atrcopy new.atr create -f dos2ed+2.5
Fails with a crash

Traceback (most recent call last): File "/usr/local/bin/atrcopy", line 6, in <module> atrcopy.run() File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 541, in run create_image(options.template[0], disk_image_name) File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 337, in create_image data, inf = get_template_data(template) File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 324, in get_template_data raise InvalidDiskImage("Template disk image %s not found" % template) atrcopy.errors.InvalidDiskImage: Template disk image dos2ed+2.5 not found

I uninstalled and reinstalled atrcopy, same problem
pip uninstall atrcopy Uninstalling atrcopy-6.2.0: /usr/local/bin/atrcopy /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/DESCRIPTION.rst /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/INSTALLER /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/METADATA /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/RECORD /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/WHEEL /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/metadata.json /usr/local/lib/python2.7/site-packages/atrcopy-6.2.0.dist-info/top_level.txt /usr/local/lib/python2.7/site-packages/atrcopy/__init__.py /usr/local/lib/python2.7/site-packages/atrcopy/__init__.pyc /usr/local/lib/python2.7/site-packages/atrcopy/_metadata.py /usr/local/lib/python2.7/site-packages/atrcopy/_metadata.pyc /usr/local/lib/python2.7/site-packages/atrcopy/ataridos.py /usr/local/lib/python2.7/site-packages/atrcopy/ataridos.pyc /usr/local/lib/python2.7/site-packages/atrcopy/cartridge.py /usr/local/lib/python2.7/site-packages/atrcopy/cartridge.pyc /usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py /usr/local/lib/python2.7/site-packages/atrcopy/diskimages.pyc /usr/local/lib/python2.7/site-packages/atrcopy/dos33.py /usr/local/lib/python2.7/site-packages/atrcopy/dos33.pyc /usr/local/lib/python2.7/site-packages/atrcopy/errors.py /usr/local/lib/python2.7/site-packages/atrcopy/errors.pyc /usr/local/lib/python2.7/site-packages/atrcopy/fstbt.py /usr/local/lib/python2.7/site-packages/atrcopy/fstbt.pyc /usr/local/lib/python2.7/site-packages/atrcopy/kboot.py /usr/local/lib/python2.7/site-packages/atrcopy/kboot.pyc /usr/local/lib/python2.7/site-packages/atrcopy/mame.py /usr/local/lib/python2.7/site-packages/atrcopy/mame.pyc /usr/local/lib/python2.7/site-packages/atrcopy/parsers.py /usr/local/lib/python2.7/site-packages/atrcopy/parsers.pyc /usr/local/lib/python2.7/site-packages/atrcopy/segments.py /usr/local/lib/python2.7/site-packages/atrcopy/segments.pyc /usr/local/lib/python2.7/site-packages/atrcopy/spartados.py /usr/local/lib/python2.7/site-packages/atrcopy/spartados.pyc /usr/local/lib/python2.7/site-packages/atrcopy/standard_delivery.py /usr/local/lib/python2.7/site-packages/atrcopy/standard_delivery.pyc /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2dd.atr /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2dd.atr.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2ed+2.5.atr /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2ed+2.5.atr.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2ed.atr /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2ed.atr.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2sd+2.0s.atr /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2sd+2.0s.atr.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2sd.atr /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos2sd.atr.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos33.dsk /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos33.dsk.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos33autobrun.dsk /usr/local/lib/python2.7/site-packages/atrcopy/templates/dos33autobrun.dsk.inf /usr/local/lib/python2.7/site-packages/atrcopy/templates/no-json.dsk /usr/local/lib/python2.7/site-packages/atrcopy/templates/no-json.dsk.inf /usr/local/lib/python2.7/site-packages/atrcopy/utils.py /usr/local/lib/python2.7/site-packages/atrcopy/utils.pyc Proceed (y/n)? y Successfully uninstalled atrcopy-6.2.0

ยป ChoccyBook:Altirra-3.00 >pip install atrcopy Collecting atrcopy Requirement already satisfied: numpy in /usr/local/lib/python2.7/site-packages (from atrcopy) Requirement already satisfied: future in /usr/local/lib/python2.7/site-packages (from atrcopy) Installing collected packages: atrcopy Successfully installed atrcopy-6.2.0

ยป ChoccyBook:Altirra-3.00 >atrcopy new.atr create -f dos2ed+2.5 Traceback (most recent call last): File "/usr/local/bin/atrcopy", line 6, in <module> atrcopy.run() File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 541, in run create_image(options.template[0], disk_image_name) File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 337, in create_image data, inf = get_template_data(template) File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 324, in get_template_data raise InvalidDiskImage("Template disk image %s not found" % template) atrcopy.errors.InvalidDiskImage: Template disk image dos2ed+2.5 not found

Problem with specific DOS 3.3 image

I was trying atrcopy with https://archive.org/download/Arcade_Games_Collection_Side_1 and found that it couldn't list the catalog.
An Apple //e emulator (mame) can.

It appears 'real Apple DOS 3.3' ignores at least some out of range values for 'sector size' in the VTOC. This particular image has a VTOC sector size of 1 byte! which is super broken.

The following change makes my particular disk image work. However, I don't know if it's the "most correct" change. If you like, I can propose this change as a PR instead. Please let me know.

diff --git a/atrcopy/dos33.py b/atrcopy/dos33.py
index 96b1010..a4b675e 100644
--- a/atrcopy/dos33.py
+++ b/atrcopy/dos33.py
@@ -447,6 +447,8 @@ class Dos33DiskImage(DiskImageBase):
         values = data[0:self.vtoc_type.itemsize].view(dtype=self.vtoc_type)[0]
         self.header.first_directory = self.header.sector_from_track(values['cat_track'], values['cat_sector'])
         self.header.sector_size = int(values['sector_size'])
+        if self.header.sector_size == 1:
+            self.header.sector_size = 256
         self.header.max_sectors = int(values['num_tracks']) * int(values['sectors_per_track'])
         self.header.ts_pairs = int(values['max_pairs'])
         self.header.dos_release = values['dos_release']

atrcopy 8.1 kboot file processing is broken

I can no longer extract the file from a kboot.
listing a kboot now gives a traceback.

atrcopy kttst.atr        
kttst.atr: ATR Disk Image (size=14720 (115x128B), crc=0 flags=0 unused=0) KBoot Format: 14265 byte executable
Traceback (most recent call last):
  File "/usr/local/bin/atrcopy", line 6, in <module>
    atrcopy.run()
  File "/usr/local/lib/python3.6/site-packages/atrcopy/__init__.py", line 589, in run
    list_files(parser.image, options.files, options.crc, options.metadata)
  File "/usr/local/lib/python3.6/site-packages/atrcopy/__init__.py", line 166, in list_files
    print("%s%s" % (dirent, extra))
  File "/usr/local/lib/python3.6/site-packages/atrcopy/ataridos.py", line 100, in __str__
    return "File #%-2d (%s) %03d %-8s%-3s  %03d" % (self.file_num, self.summary, self.starting_sector, self.basename.decode("latin1"), self.ext.decode("latin1"), self.num_sectors)
AttributeError: 'str' object has no attribute 'decode'

UTF-8 decode failures on some non-english images

From #6:

atrcopy ABBUC\ Magazin\ #44\ \(1996\)\(ABBUC\)\(Side\ A\).atr 
Traceback (most recent call last):
  File "../run.py", line 6, in <module>
    atrcopy.run()
  File "/home/rob/src/atrcopy/atrcopy/__init__.py", line 576, in run
    parser = find_diskimage(disk_image_name)
  File "/home/rob/src/atrcopy/atrcopy/__init__.py", line 66, in find_diskimage
    parser = guess_parser_for_mime(mime, rawdata, options.verbose)
  File "/home/rob/src/atrcopy/atrcopy/parsers.py", line 165, in guess_parser_for_mime
    found = parser(r, True)
  File "/home/rob/src/atrcopy/atrcopy/parsers.py", line 28, in __init__
    self.parse()
  File "/home/rob/src/atrcopy/atrcopy/parsers.py", line 70, in parse
    self.image = self.get_image(r)
  File "/home/rob/src/atrcopy/atrcopy/parsers.py", line 80, in get_image
    return self.image_type(r)
  File "/home/rob/src/atrcopy/atrcopy/ataridos.py", line 447, in __init__
    DiskImageBase.__init__(self, *args, **kwargs)
  File "/home/rob/src/atrcopy/atrcopy/diskimages.py", line 111, in __init__
    self.setup()
  File "/home/rob/src/atrcopy/atrcopy/diskimages.py", line 152, in setup
    self.get_metadata()
  File "/home/rob/src/atrcopy/atrcopy/diskimages.py", line 157, in get_metadata
    self.get_directory()
  File "/home/rob/src/atrcopy/atrcopy/ataridos.py", line 550, in get_directory
    log.debug("dirent %d not sane: %s" % (num, dirent))
  File "/home/rob/src/atrcopy/atrcopy/ataridos.py", line 101, in __str__
    return "File #%-2d (%s) %03d %-8s%-3s  %03d" % (self.file_num, self.summary, self.starting_sector, self.basename.decode("utf-8"), self.ext.decode("utf-8"), self.num_sectors)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 0: invalid start byte

numpy no longer has alen. Causes catastrophic failures.

There code uses numpy.alen, which numpy removed after 1.18.0. Most of the rest of the world has moved on to numpy 1.23 and above.

gmgauthier@plato $ atrcopy FDISK/DOS/ATARI_DOS_2.5.atr                                                  (7d0h59m)|*[master]
INFO:atrcopy.parsers:image does not appear to be a container.
INFO:atrcopy.parsers:133136 not found in signature database; skipping sha1 matching
INFO:atrcopy.parsers:checking image type <class 'atrcopy.kboot.KBootImage'>
INFO:atrcopy.parsers:checking image type <class 'atrcopy.spartados.SpartaDosDiskImage'>
INFO:atrcopy.parsers:checking image type <class 'atrcopy.ataridos.AtariDosDiskImage'>
Traceback (most recent call last):
  File "/home/gmgauthier/.local/bin/atrcopy", line 12, in <module>
    atrcopy.run()
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/__init__.py", line 609, in run
    parser, mime = find_diskimage(disk_image_name, options.verbose)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/__init__.py", line 94, in find_diskimage
    parser, mime = find_diskimage_from_data(data, verbose)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/__init__.py", line 69, in find_diskimage_from_data
    parser = guess_parser_for_mime(mime, rawdata, verbose)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/parsers.py", line 262, in guess_parser_for_mime
    found = parser(r, True)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/parsers.py", line 33, in __init__
    self.parse()
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/parsers.py", line 78, in parse
    self.image.parse_segments()
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/diskimages.py", line 270, in parse_segments
    self.segments.extend(self.get_file_segments())
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/ataridos.py", line 671, in get_file_segments
    segments_in = DiskImageBase.get_file_segments(self)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/diskimages.py", line 305, in get_file_segments
    segment = self.get_file_segment(dirent)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/ataridos.py", line 664, in get_file_segment
    raw = self.rawdata.get_indexed(byte_order)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/segments.py", line 355, in get_indexed
    return SegmentData(data_base, style_base, self.extra, order=base_index)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/segments.py", line 158, in __init__
    self.calc_lookups()
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/segments.py", line 229, in calc_lookups
    self.data_length = len(self.data)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/atrcopy/segments.py", line 101, in __len__
    return np.alen(self.order)
  File "/home/gmgauthier/.local/lib/python3.9/site-packages/numpy/__init__.py", line 322, in __getattr__
    raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'alen'

Here are all the places in the atrcopy dir, that I modified (simply replacing "np.alen" with "len").

gmgauthier@plato $ grep -rnw . -e '.*alen.*'                                                          (476d19h50m)|[master]
./kboot.py:34:        num_bytes = np.alen(raw)
./kboot.py:112:    bootsize = np.alen(bootcode)
./segments.py:101:        return np.alen(self.order)
./segments.py:709:        log.info("fixup comments: %d correctly marked, %d without style, %d empty text" % (np.alen(both), np.alen(comment_text_indexes) - np.alen(both), np.alen(has_comments) - np.alen(both)))
./segments.py:783:            if np.alen(group) > 0:
./diskimages.py:107:        self.size = np.alen(self.bytes)
./diskimages.py:155:        self.size = np.alen(self.bytes)

After the local fix in site-packages, it worked fine.

gmgauthier@plato $ atrcopy FDISK/DOS/ATARI_DOS_2.5.atr                                                  (7d0h59m)|*[master]
INFO:atrcopy.parsers:image does not appear to be a container.
INFO:atrcopy.parsers:133136 not found in signature database; skipping sha1 matching
INFO:atrcopy.parsers:checking image type <class 'atrcopy.kboot.KBootImage'>
INFO:atrcopy.parsers:checking image type <class 'atrcopy.spartados.SpartaDosDiskImage'>
INFO:atrcopy.parsers:checking image type <class 'atrcopy.ataridos.AtariDosDiskImage'>
FDISK/DOS/ATARI_DOS_2.5.atr: ATR Disk Image (size=133120 (1040x128B), crc=0 flags=0 unused=0) Atari DOS Format: 1010 usable sectors (739 free), 6 files
File #0  (.2.u.*) 004 DOS     SYS  037
File #1  (.2.u.*) 041 DUP     SYS  042
File #2  (.2.u.*) 083 RAMDISK COM  009
File #3  (.2.u.*) 092 SETUP   COM  070
File #4  (.2.u.*) 162 COPY32  COM  056
File #5  (.2.u.*) 218 DISKFIX COM  057

I couldn't create a pull request, due to permissions, so this issue ticket will have to do.

Misidentification of small ATR boot images

Creating a boot image and then examining it produces:

$ p run.py cent.atr boot -b centipede.xex 
XFD Disk Image (size=5585 (43x128B)
adding  $6000-$7581 ($1581 @ $0006) from centipede.xex
adding  $7ff8-$8000 ($0008 @ $158b) from centipede.xex
adding  $0600-$0634 ($0034 @ $1597) from centipede.xex
adding  $02e0-$02e2 ($0002 @ $15cf) from centipede.xex
saving boot disk cent.atr
$ p run.py cent.atr 
XFD Disk Image (size=6016 (47x128B)
cent.atr: BSAVE data $0300-$0a00 ($0700 @ $0004)

where it should be recognized as a short, valid ATR disk image at least because the header magic is correct.

Some KBOOT disks not being identified

I've been running atrcopy on a few of my collected disk images and I've noticed that quite a few that are identified in the name as [k-file] and indeed when booted have the "k" in the top left corner are nonetheless not identified as KBOOT by atrcopy.

I've attached one which exhibits this behaviour.

The output I get is this...
atrcopy -v /Users/steve/Emulation/A8/Zipper\ \[PCS\]/Zipper\ \(1984\)\(Small\)\[PCS\]\[k-file\].atr Loading file /Users/steve/Emulation/A8/Zipper [PCS]/Zipper (1984)(Small)[PCS][k-file].atr Trying MIME type application/vnd.atari8bit.atr DEBUG:atrcopy.parsers:Trying <class 'atrcopy.kboot.KBootImage'> INFO:atrcopy.parsers:parser isn't KBootSegmentParser: Sector 360 out of range DEBUG:atrcopy.parsers:Trying <class 'atrcopy.spartados.SpartaDosDiskImage'> INFO:atrcopy.parsers:parser isn't SpartaDosSegmentParser: Invalid SpartaDos parameters in boot header DEBUG:atrcopy.parsers:Trying <class 'atrcopy.ataridos.AtariDosDiskImage'> INFO:atrcopy.parsers:parser isn't AtariDosSegmentParser: Sector 360 out of range DEBUG:atrcopy.parsers:Trying <class 'atrcopy.ataridos.BootDiskImage'> Found parser Atari Boot Disk Image /Users/steve/Emulation/A8/Zipper [PCS]/Zipper (1984)(Small)[PCS][k-file].atr: ATR Disk Image (size=30720 (240x128B), crc=0 flags=0 unused=0) Boot Disk

unknown kboot.zip

Program crash on some ATR files

I have 595 ATR files that atrcopy wont open at all. Mostly non-english, there are a few english language disks in there too, here is an example crash. They all seem to work OK in an emulator.

>atrcopy /Users/steve/Emulation/A8/old_.atr/ABBUC\ Magazin\ \#44\ \(1996\)\(ABBUC\)\(Side\ A\).atr Traceback (most recent call last): File "/usr/local/bin/atrcopy", line 6, in <module> atrcopy.run() File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 548, in run parser = find_diskimage(disk_image_name) File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 68, in find_diskimage parser = guess_parser_for_mime(mime, rawdata, options.verbose) File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 162, in guess_parser_for_mime found = parser(r, True) File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 30, in __init__ self.parse() File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 72, in parse self.image = self.get_image(r) File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 82, in get_image return self.image_type(r) File "/usr/local/lib/python2.7/site-packages/atrcopy/ataridos.py", line 446, in __init__ DiskImageBase.__init__(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py", line 115, in __init__ self.setup() File "/usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py", line 156, in setup self.get_metadata() File "/usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py", line 161, in get_metadata self.get_directory() File "/usr/local/lib/python2.7/site-packages/atrcopy/ataridos.py", line 549, in get_directory log.debug("dirent %d not sane: %s" % (num, dirent)) File "/usr/local/lib/python2.7/site-packages/atrcopy/ataridos.py", line 106, in __str__ return "File #%-2d (%s) %03d %-8s%-3s %03d" % (self.file_num, self.summary, self.starting_sector, self.basename.decode("utf-8"), self.ext.decode("utf-8"), self.num_sectors) File "/usr/local/Cellar/python/2.7.13_1/Frameworks/Python.framework/Versions/2.7/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 0: invalid start byte
ABBUC Magazin #44 (1996)(ABBUC)(Side A).atr.zip

Here's another one with a different crash.
atrcopy /Users/steve/Emulation/A8/old_.atr/Jewels\ of\ Darkness\ \#2\ -\ Adventure\ Quest\ \(1983\)\ \(Level\ 9\ Computing\)\ \(GB\)\ .atr Traceback (most recent call last): File "/usr/local/bin/atrcopy", line 6, in <module> atrcopy.run() File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 548, in run parser = find_diskimage(disk_image_name) File "/usr/local/lib/python2.7/site-packages/atrcopy/__init__.py", line 68, in find_diskimage parser = guess_parser_for_mime(mime, rawdata, options.verbose) File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 162, in guess_parser_for_mime found = parser(r, True) File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 30, in __init__ self.parse() File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 72, in parse self.image = self.get_image(r) File "/usr/local/lib/python2.7/site-packages/atrcopy/parsers.py", line 82, in get_image return self.image_type(r) File "/usr/local/lib/python2.7/site-packages/atrcopy/spartados.py", line 119, in __init__ AtariDosDiskImage.__init__(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/atrcopy/ataridos.py", line 446, in __init__ DiskImageBase.__init__(self, *args, **kwargs) File "/usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py", line 115, in __init__ self.setup() File "/usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py", line 156, in setup self.get_metadata() File "/usr/local/lib/python2.7/site-packages/atrcopy/diskimages.py", line 161, in get_metadata self.get_directory() File "/usr/local/lib/python2.7/site-packages/atrcopy/spartados.py", line 177, in get_directory d = SpartaDosDirent(self, 0, bytes[0:23], starting_sector=self.root_dir) File "/usr/local/lib/python2.7/site-packages/atrcopy/spartados.py", line 30, in __init__ AtariDosDirent.__init__(self, image, file_num, bytes=bytes) File "/usr/local/lib/python2.7/site-packages/atrcopy/ataridos.py", line 102, in __init__ self.parse_raw_dirent(image, bytes) File "/usr/local/lib/python2.7/site-packages/atrcopy/spartados.py", line 70, in parse_raw_dirent self.filename = str(values['filename']).rstrip() AttributeError: can't set attribute
Jewels of Darkness #2 - Adventure Quest (1983) (Level 9 Computing) (GB) .atr.zip

support MAC/65 detokenation

Hi,

There's no way to convert from ATASCII to ASCII, and no related programs linked to, to handle this task.

Some BOOT files identified as BLOAD

Sorry for all these bug reports :/

These files are bootable but atrcopy is saying they are BLOAD. For the looks of it they are some kind of tape to disk software so may be mostly just a bunch of binary but there is a bootable bit in there somewhere!

bootable bloads.zip

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.