Python implementation of Apple ProDOS 8 file system
Project description
pyprodos
This is a simple Python implementation of the Apple ProDOS :tm: filesystem based on the technical reference manual.
It provides a simple unix-style CLI for managing existing ProDOS images in
.po and .2mg files and for creating new ones.
This provides an accessible file system for Apple // or other 8-bit hardware.
As an example, let's recreate a ProDOS boot volume. Grab the ProDOS 2.4.3
boot disk from https://prodos8.com/. (There's a copy in images/ here.)
Check what's on it:
% prodos info images/ProDOS_2_4_3.po
Volume PRODOS.2.4.3 23-12-29T19:07
BlockDevice on images/ProDOS_2_4_3.po contains 280 total blocks, 26 free (91% used)
% prodos ls images/ProDOS_2_4_3.po
File name EOF T/FT Access Created Modified Blocks @ Key
---------------------------------------------------------------------------------
VIEW.README 512 1/FC RW-BND 18-02-13T09:09 18-02-13T09:09 1 @ 250
...
BASIC.SYSTEM 10240 2/FF RW-BND 23-12-30T02:43 23-12-30T02:43 21 @ 42
...
PRODOS 17128 2/FF RW-BND 23-12-30T02:43 23-12-30T02:43 34 @ 7
README 999 2/04 RW-BND 23-12-30T02:43 23-12-30T02:43 3 @ 251
17 files in PRODOS.2.4.3 F RW--ND 23-12-29T19:07
Let's extract the PRODOS o/s and BASIC.SYSTEM files, plus the bootloader.
ProDOS should execute the first .SYSTEM file it finds after it boots.
% prodos export images/ProDOS_2_4_3.po /PRODOS /BASIC.SYSTEM . --loader loader.bin
Now we'll make a new 140K (280 block) floppy boot disk:
% prodos create boot.po --name MYVOL --size 280
then import the system files and bootloader and check the listing:
% prodos import boot.po --loader loader.bin PRODOS BASIC.SYSTEM /
% prodos ls boot.po
File name EOF T/FT Access Created Modified Blocks @ Key
---------------------------------------------------------------------------------
PRODOS 17128 2/FF RW-BND 25-12-28T15:20 25-12-28T15:20 34 @ 7
BASIC.SYSTEM 10240 2/FF RW-BND 25-12-28T15:20 25-12-28T15:20 21 @ 41
2 files in MYVOL F RW-BND 25-12-28T15:19
Finally, test the image in your favorite emulator. I used VirtualII and popped my volume in the virtual Disk ][ drive. After a ProDOS splash screen, you you see the familiar Basic prompt:
PRODOS BASIC 1.7
COPYRIGHT APPLE 1983-92
]
My original goal was to learn how the on-disk representation worked and to manage disk images for a 6502-based breadboard computer. ProDOS is simple enough that a minimal kernel can be very small. For example I use a read-only version that's only a couple hundred lines of TaliForth. I also ported a version of the original 6502 ProDOS filestyem kernel: p8fs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyprodos-0.4.0.tar.gz.
File metadata
- Download URL: pyprodos-0.4.0.tar.gz
- Upload date:
- Size: 43.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da44adac3e0318f8582c9ab2c61541e4b8e3d7e2444d948121cc1f2548fd9e16
|
|
| MD5 |
ca2b3c213baffd140c9aafe8a1410af7
|
|
| BLAKE2b-256 |
b86b5fdf5e18438d7e41bd5640028f90421cc25d2617aa6b63d347e98db46895
|
File details
Details for the file pyprodos-0.4.0-py3-none-any.whl.
File metadata
- Download URL: pyprodos-0.4.0-py3-none-any.whl
- Upload date:
- Size: 29.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e912fb426645bad1a4538f59f356846438f2d260df1f7bb3f82f39f94ff186e4
|
|
| MD5 |
27d2e36f1325e0bfc95abdc9c551a66f
|
|
| BLAKE2b-256 |
13da3a1a22e1afcf4be20b1f3b6c5dc1e3b1fb92adc04147bdb51797ce0f0d75
|