Skip to main content

riscos-conv

A Python command-line utility and library to list, extract and create a number of RISC OS file formats.

Supported formats:

Format Identify List Extract Create
ADFS disc image (.adf, .adl) ✓ ✓ ✓
RISC OS ZIP/SparkFS archive (.zip) ✓ ✓ ✓ ✓
Spark archive (.spk) ✓ ✓ ✓
ArcFS archive (.arc) ✓ ✓ ✓
RISC OS ISO 9660 CD image (.iso) ✓ ✓ ✓
RISC OS Sprite file * ✓ ✓ ✓
HFE disc image (.hfe) ✓

Currently only Sprite files created on RISC OS 3.1 and earlier are supported.

Usage

usage: riscos-conv [-h] [-d DIR] [-a] [{x,l,c,d2z}] file [files ...]

  • x - Extract
  • l - List
  • c - create
  • d2z - convert an ADF disc image to a RISC OS ZIP file

Listing

Files are listed with the RISC OS dot-separated path style.

$ riscos-conv l riscos3-app2.adf 
file type DISC_IMAGE
ADFS Disc - App2
         Obey feb     132 1989-09-08 15:14:09 !65Host.!Boot
         Text fff     157 1992-05-11 11:22:59 !65Host.!Help
         Obey feb    1282 1992-05-18 15:03:14 !65Host.!Run
       Module ffa   64968 1992-05-18 11:59:05 !65Host.!RunImage
       Sprite ff9    1272 1991-06-12 12:21:21 !65Host.!Sprites
...

List sprites in a Sprite file:

$ riscos-conv l Sprites,ff9
file type RISC_OS_SPRITES
SpriteArea(num_sprites=110 next_free=0x85e8)
  directory (34x17) mode 12
  small_dir (18x9) mode 12
  application (34x17) mode 12
  small_app (18x9) mode 12
  file_xxx (34x17) mode 4
  ...

Extracting files

For ADF disc images, this will create and extract into a directory with the name of the disc. Files are extracted with the RISC OS file type appended in a way that is compatible with Arculator's HostFS.

$ riscos-conv x ../archimedes-live/dlcache/riscos3-app2.adf 
file type DISC_IMAGE
ADFS Disc - App2
Extracting to ./App2:
  ./App2/!65Host/!Boot,feb
  ./App2/!65Host/!Help,fff
  ./App2/!65Host/!Run,feb
  ./App2/!65Host/!RunImage,ffa
  ./App2/!65Host/!Sprites,ff9
  ...

Sprites are extracted to PNG files.

$ riscos-conv x \!Sprites22\,ff9 
file type RISC_OS_SPRITES
SpriteArea(num_sprites=2 next_free=0x768)
Extracting to .
  ./!clock.png
  ./sm!clock.png

Creating a RISC OS ZIP file

Create a RISC OS ZIP from files on disc. Files must have a comma-extension with the RISC OS hex filetype (e.g. filename,abc)

$ riscos-conv c tube.zip \!65Tube/
!65Tube/!RunImage RiscOsFileMeta(type=ffa date=1992-05-18 12:24:32.070000 attr=3)
!65Tube/!Help RiscOsFileMeta(type=fff date=1992-05-11 11:28:41 attr=3)
!65Tube/!Sprites23 RiscOsFileMeta(type=ff9 date=1991-09-11 11:33:20 attr=3)
!65Tube/!Run RiscOsFileMeta(type=feb date=1992-05-18 15:04:48.590000 attr=3)
!65Tube/!Sprites22 RiscOsFileMeta(type=ff9 date=1989-11-10 13:21:06 attr=3)
!65Tube/!Sprites RiscOsFileMeta(type=ff9 date=1990-11-15 17:58:31 attr=3)
!65Tube/!Boot RiscOsFileMeta(type=feb date=1990-07-23 16:22:10.080000 attr=3)

Converting an ADFS disc image to RISC OS ZIP

This will convert a disc image to a ZIP file while retaining the file types and date stamps.

$ riscos-conv d2z ~/projects/archimedes-live/dlcache/riscos3-app1.adf app1.zip
file type DISC_IMAGE
ADFS Disc - App1
!FontPrint.!Help RiscOsFileMeta(type=fff date=1992-05-11 10:01:45 attr=3)
!FontPrint.!Run RiscOsFileMeta(type=feb date=1992-05-14 16:18:01 attr=3)
!FontPrint.!RunImage RiscOsFileMeta(type=ff8 date=1992-05-18 17:22:53.220000 attr=3)
!FontPrint.!Sprites RiscOsFileMeta(type=ff9 date=1991-05-31 14:04:57 attr=3)
!FontPrint.!Sprites22 RiscOsFileMeta(type=ff9 date=1991-05-31 14:10:06 attr=3)
!FontPrint.!Sprites23 RiscOsFileMeta(type=ff9 date=1991-05-31 14:20:40 attr=3)

If you only want to convert some of the contents of the disc to a ZIP, you can specify one or more paths from the disc image to archive:

$ riscos-conv d2z ~/projects/archimedes-live/dlcache/riscos3-app1.adf app1.zip \!Squash DrawDemo
file type DISC_IMAGE
ADFS Disc - App1
!Squash.!Boot RiscOsFileMeta(type=feb date=1991-05-29 09:57:02 attr=3)
!Squash.!Help RiscOsFileMeta(type=fff date=1992-05-19 15:25:35 attr=3)
!Squash.!Run RiscOsFileMeta(type=feb date=1992-05-14 16:44:00 attr=3)
!Squash.!RunImage RiscOsFileMeta(type=ff8 date=1992-05-19 15:55:22.800000 attr=3)
!Squash.!Sprites RiscOsFileMeta(type=ff9 date=1991-06-12 12:07:32 attr=3)
!Squash.!Sprites22 RiscOsFileMeta(type=ff9 date=1991-06-12 12:08:13 attr=3)
!Squash.!Sprites23 RiscOsFileMeta(type=ff9 date=1991-06-12 12:08:45 attr=3)
!Squash.Messages RiscOsFileMeta(type=fff date=1992-05-19 15:25:45 attr=3)
!Squash.Squash RiscOsFileMeta(type=ff8 date=1992-05-19 15:54:59.330000 attr=3)
!Squash.Templates RiscOsFileMeta(type=fec date=1992-05-14 18:46:04 attr=3)
DrawDemo RiscOsFileMeta(type=aff date=1991-09-06 16:19:36 attr=3)

Running tests

$ pip install -e '.[test]'
$ pytest

The ArcFS and Spark tests generate their own archives (see tests/arcfs_builder.py and tests/spark_builder.py). Some optional tests are skipped unless configured:

  • NSPARK=/path/to/nspark (or nspark on the PATH) - check generated ArcFS and Spark archives extract correctly with nspark
  • RISCOS_CONV_ARCFS_SAMPLE=/path/to/archive - extract a real ArcFS archive and check CRCs
  • RISCOS_CONV_SPARK_SAMPLE=/path/to/archive - extract a real Spark archive and check CRCs

Metadata

Release files for riscos-conv 0.0.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for riscos-conv 0.0.3
File Size Uploaded Provenance
riscos_conv-0.0.3.tar.gz 118.3 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for riscos-conv 0.0.3
File Interpreter ABI Platform
riscos_conv-0.0.3-py3-none-any.whl Python 3 none any Details

Total release size: 213.4 kB

Release files / riscos_conv-0.0.3.tar.gz

Download URL riscos_conv-0.0.3.tar.gz
Size 118.3 kB
Tags Source
SHA-256 checksum
How to use checksums
6527ea05fe1a503422c85400872d19cd9732818bd2864bef67dd5c2645e35e64
BLAKE2b-256 checksum
How to use checksums
a9e75ba7c43dc0b084c063738d72cc6d33c32aa52694a888837cb0dca96790f3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Release files / riscos_conv-0.0.3-py3-none-any.whl

Download URL riscos_conv-0.0.3-py3-none-any.whl
Size 95.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b85fce434fce28f1911c8b17d97a5c147fc21fef51ae71a5d23465a15c71a11c
BLAKE2b-256 checksum
How to use checksums
ea8d744491d1f62aa69a499b135835c5f9d254416d5466f42bebe5100d3f80de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

Security for riscos-conv 0.0.3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for riscos_conv-0.0.3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 23, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.3 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page