diskii/README.md
2016-11-15 22:00:16 -05:00

88 lines
3.5 KiB
Markdown

diskii
======
**Note:** diskii is not stable yet! I don't expect to remove
functionality, but I'm still experimenting with the command syntax and
organization, so don't get too comfy with it yet.
diskii is a commandline tool for working with Apple II disk images.
It is also a library of code that can be used by other Go programs.
Its major advantage is that it's written in Go, hence
cross-platform.
Its major disadvantage is that it mostly doesn't exist yet.
[![Build Status](https://travis-ci.org/zellyn/diskii.svg?branch=master)](https://travis-ci.org/zellyn/diskii)
It rhymes with “whiskey”.
Discussion/support is in
[#apple2 on the retrocomputing Slack](https://retrocomputing.slack.com/messages/apple2/)
(invites [here](https://retrocomputing.herokuapp.com)).
### Goals
Eventually, it aims to be a comprehensive disk image manipulation
tool, but for now only the `applesoft decode` command works.
The library code aims (a) to support the commandline tool operations,
and (b) to replace the "read and write disk images" code of the
[goapple2 emulator](https://github.com/zellyn/goapple2).
Current disk operations supported:
| Feature | DOS 3.3 | ProDOS | NakedOS/Super-Mon |
| ---------------- | ------------------ | ------ | ------------------ |
| basic structures | :white_check_mark: | :x: | :white_check_mark: |
| ls | :white_check_mark: | :x: | :white_check_mark: |
| dump | :x: | :x: | :white_check_mark: |
| dumptext | :x: | :x: | :x: |
| delete | :x: | :x: | :x: |
| rename | :x: | :x: | :x: |
| put | :x: | :x: | :x: |
| puttext | :x: | :x: | :x: |
| extract (all) | :x: | :x: | :x: |
| lock/unlock | :x: | :x: | :x: |
| init | :x: | :x: | :x: |
| defrag | :x: | :x: | :x: |
### Installing/updating
Assuming you have Go installed, run `go get -u github.com/zellyn/diskii`
You can also download automatically-built binaries from the
[latest release
page](https://github.com/zellyn/diskii/releases/latest). If you
need binaries for a different architecture, please send a pull
request or open an issue.
### Short-term TODOs/roadmap/easy ways to contribute
My rough TODO list (apart from anything marked (:x:) in the disk
operations matrix is listed below. Anything that an actual user needs
will be likely to get priority.
- [x] Build per-platform binaries for Linux, MacOS, Windows.
- [ ] Implement `GetFile` for DOS 3.3
- [ ] Add and implement the `-l` flag for `ls`
- [ ] Add `Delete` to the `disk.Operator` interface
- [ ] Implement it for supermon
- [ ] Implement it for DOS 3.3
- [ ] Make 13-sector DOS disks work
- [ ] Read/write nybble formats
- [ ] Read/write gzipped files
- [ ] Add ProDOS support (add `lib/prodos/prodos.go` and register a ProDOS operator factory)
### Related tools
- http://a2ciderpress.com/
- http://applecommander.sourceforge.net/
- https://github.com/cybernesto/dsktool.rb
- https://github.com/cmosher01/Apple-II-Disk-Tools
- https://github.com/madsen/perl-libA2
- https://github.com/markdavidlong/AppleSAWS
- https://github.com/dmolony/DiskBrowser
- https://github.com/deater/dos33fsprogs
- https://github.com/jtauber/a2disk