Skip to main content

Utility to manage file systems on retro computer disk images

Project description

Python library for hierarchical filesystem parsing on Atari 8-bit and Apple ][ disk images. The successor to atrcopy, this is under heavy development and is still in a beta state. It is the basis for disk image support in Omnivore 2.

Pronounced “uh-trip”, the name is a happy coincidence that a dictionary word exists that is the quasi-portmanteau of “ATR” (the Atari 8 bit disk image container) & “rip” (extracting stuff from images). The actual word is a nautical term: “atrip” as in “the anchor is atrip”, meaning the ship’s anchor is off the bottom. I have no particular affinity for ships, but that I had some justification in the portmanteau is enough for me.

Prerequisites

Python

Supported Python versions:

  • Python 3.6 (and later)

Runtime Dependencies

  • numpy

  • jsonpickle

  • lz4

It will be automatically installed when installing with pip as described below.

Development Dependencies

  • pytest

  • pytest-cov (optional)

The test suite uses pytest and pytest-cov, but these are not required for normal installation.

Installation

ATRip is available in the PyPI and installable using pip:

pip install atrip

Linux and macOS note: if numpy needs to be installed on your system, it may be compiled from source which can take several minutes.

Features

  • list contents of disk images

  • copy files to and from disk images

  • delete files from disk images

  • create new disk images

  • concatenate binary data together into a file on the disk image

  • compile assembly source into binary files if pyatasm is installed

Supported Formats

Supported Disk Image Types

  • XFD: XFormer images, basically raw disk dumps

  • ATR: Nick Kennedy’s disk image format; includes 16 byte header

  • DCM: Disk Communicator images, Bob Puff’s compression format for Atari disk images

  • CAS: Atari cassette images

  • DSK: Apple ][ DOS 3.3 disk image; raw sector dump

Supported File System Formats

File System

Platform

Read

Write

Status

DOS 2 (90K)

Atari 8-bit

Yes

Yes

Fully supported

DOS 2 (180K)

Atari 8-bit

Yes

Yes

Fully supported

DOS 2.5 (130K)

Atari 8-bit

Yes

Yes

Fully supported

DOS 3 (130K)

Atari 8-bit

No

No

Unimplemented

SpartaDOS

Atari 8-bit

No

No

Under development

MyDOS

Atari 8-bit

Partial

No

Under development

DOS 3.3

Apple ][

Yes

Yes

Fully supported

ProDOS 8

Apple ][

No

No

Unimplemented

Other Supported Formats

Format

Platform/description

Read

Write

Status

.xex

Atari 8-bit executable files

Yes

Yes

Fully supported

KBoot

Atari 8-bit xex in boot disk

Yes

Yes

Fully supported

.car

Atari 8-bit cartridge images

Yes

No

Read only

BSAVE

Apple ][ BSAVE data

Yes

Yes

Fully supported

Note: Atari ROM cartridges are supported in both both plain binary and atari800 .car format

Archives

Archives containing multiple disk images are supported, where each disk image within the archive will be given a disk number and is addressable using that prefix.

Container

File Ext

Read

Write

Status

Zip File

.zip

Yes

Yes

Fully supported

Tar File

.tar

Yes

Yes

Fully supported

Archives may also be compressed with any of the general purpose compression formats listed below.

Supported Compression Formats

Compression is supported transparently, so any type of disk image compressed with any of the following formats can be used directly, without first decompressing it before running ATRip.

Chaining is supported to an arbitrary depth, meaning that one compression algorithm can be applied to the output of another. This is not practical except in limited cases, as in a Disk Communicator image that is subsequently gzipped (image.dcm.gz). But cases that actually make compression worse will be handled as well, like image.gz.bz2.xz.bz2.gz.gz.gz.

Compression Format

File Ext

Read

Write

Status

gzip

.gz

Yes

Yes

Fully supported

bzip2

.bz2

Yes

Yes

Fully supported

lzma

.xz, .lzma

Yes

Yes

Fully supported

lzw (Unix compress)

.Z

Yes

No

Read only [1]

lz4

.lz4

Yes

Yes

Fully supported

Disk Communicator

.dcm

Yes

Yes

Atari images only [2]

Segment Structure

Collection:      example.atr: plain file
Container:          D1: 92176 bytes, compression=none
Header:                 ATR Header (16 bytes)
DiskImage:              Atari SD (90K) Floppy Disk Image, size=92160, filesystem=Atari DOS 2
BootSegment:                Boot Sectors (384 bytes)
Segment:                        Boot Header (6 bytes)
Segment:                        Boot Code (378 bytes @ 0006)
VTOC:                       DOS2 SD VTOC (128 bytes)
Directory:                  Directory (1024 bytes)
Dirent:                         File #0  (.2.u. ) 004 DOS     SYS  035
FileType:                           DOS.SYS (4375 bytes) Unknown file type
Dirent:                         File #1  (.2.u. ) 039 DUP     SYS  054
AtariObjectFile:                    DUP.SYS (6708 bytes) Atari 8-bit Object File
ObjSegment:                             Segment #1 (6706 bytes)
Segment:                                    [$2949-$4376] (6702 bytes)

References

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

atrip-0.5.0.tar.gz (632.5 kB view hashes)

Uploaded source

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page