diskii

command module
v0.0.0-...-0b85248 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 1, 2021 License: MIT Imports: 10 Imported by: 0

README

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.

Seagull Srs Micro Software

diskii-the-tool is a commandline tool for working with Apple II disk images. Given that AppleCommander already does everything, it's not terribly necessary. It is, however, mine. Minor benefits (right now) are binaries you can copy around (no Java needed), support for Super-Mon symbol tables on NakedOS disks, and creation of "Standard Delivery" disk images.

diskii-the-library is probably more useful: a library of disk-image-manipulation code that can be used by other Go programs.

diskii's major disadvantage is that it mostly doesn't exist yet.

Build Status Report Card GoDoc

It rhymes with “whiskey”.

Discussion/support is on the apple2infinitum Slack (invites here).

Examples

Get a listing of files on a DOS 3.3 disk image:

diskii ls dos33master.dsk

… or a ProDOS disk image:

diskii ls ProDOS_2_4_2.po

… or a Super-Mon disk image:

diskii ls Super-Mon-2.0.dsk 

Reorder the sectors in a disk image:

diskii reorder ProDOS_2_4_2.dsk ProDOS_2_4_2.po

Goals

Eventually, it aims to be a comprehensive disk image manipulation tool, but for now only some parts work.

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.

Current disk operations supported:

Feature DOS 3.3 ProDOS NakedOS/Super-Mon
basic structures
ls
dump
put
dumptext
delete
rename
put
puttext
extract (all)
lock/unlock
init
defrag

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. 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 (✗) in the disk operations matrix is listed below. Anything that an actual user needs will be likely to get priority.

  • Make put accept load address for appropriate filetypes.
  • Fix golint errors
  • Implement GetFile for prodos
  • Implement PutFile for prodos
  • Implement Delete for Super-Mon
  • Implement Delete for DOS 3.3
  • Implement Delete for ProDOS
  • Add and implement the -l flag for ls
  • Make OperatorFactory.SeemsToMatch more sophisticated for ProDOS
  • Make OperatorFactory.SeemsToMatch more sophisticated for DOS 3.3
  • Make OperatorFactory.SeemsToMatch more sophisticated for NakedOS
  • Build per-platform binaries for Linux, MacOS, Windows.

Notes

Disk formats

  • .do
  • .po
  • .dsk - could be DO or PO. When in doubt, assume DO.
Physical Sectors DOS 3.2 Logical DOS 3.3 Logical ProDOS/Pascal Logical CP/M Logical
0 0 0 0.0 0.0
1 1 7 4.0 2.3
2 2 E 0.1 1.2
3 3 6 4.1 0.1
4 4 D 1.0 3.0
5 5 5 5.0 1.3
6 6 C 1.1 0.2
7 7 4 5.1 3.1
8 8 B 2.0 2.0
9 9 3 6.0 0.3
A A A 2.1 3.2
B B 2 6.1 2.1
C C 9 3.0 1.0
D 1 7.0 3.3
E 8 3.1 2.2
F F 7.1 1.1

Note: DOS 3.2 rearranged the physical sectors on disk to achieve interleaving.

RWTS - DOS

Sector mapping: http://www.textfiles.com/apple/ANATOMY/rwts.s.txt and search for INTRLEAV

Mapping from specified sector to physical sector:

00 0D 0B 09 07 05 03 01 0E 0C 0A 08 06 04 02 0F

So if you write to "T0S1" with DOS RWTS, it ends up in physical sector 0D.

Commandline examples for thinking about how it should work

diskii ls dos33.dsk diskii --order=do ls dos33.dsk diskii --order=do --system=nakedos ls nakedos.dsk

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package basic contains routines useful for both Applesoft and Integer BASIC.
Package basic contains routines useful for both Applesoft and Integer BASIC.
applesoft
Package applesoft provides routines for working with Applesoft files.
Package applesoft provides routines for working with Applesoft files.
integer
Package integer provides routines for working with Integer BASIC files.
Package integer provides routines for working with Integer BASIC files.
Package cmd contains the actual command implementations.
Package cmd contains the actual command implementations.
Package data is a bunch of go:embed embedded files.
Package data is a bunch of go:embed embedded files.
Package disk contains routines for reading and writing various disk file formats.
Package disk contains routines for reading and writing various disk file formats.
Package dos3 contains routines for working with the on-disk structures of Apple DOS 3.
Package dos3 contains routines for working with the on-disk structures of Apple DOS 3.
Package errors contains helpers for creating and testing for certain types of errors.
Package errors contains helpers for creating and testing for certain types of errors.
Package helpers contains helper routines for reading and writing files, allowing `-` to mean stdin/stdout.
Package helpers contains helper routines for reading and writing files, allowing `-` to mean stdin/stdout.
Package prodos contains routines for working with the on-device structures of Apple ProDOS.
Package prodos contains routines for working with the on-device structures of Apple ProDOS.
Package supermon contains routines for working with the on-disk structures of NakedOS/Super-Mon disks.
Package supermon contains routines for working with the on-disk structures of NakedOS/Super-Mon disks.
Package types holds various types that are needed all over the place.
Package types holds various types that are needed all over the place.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL