{"id":18074360,"url":"https://github.com/zellyn/diskii","last_synced_at":"2025-04-12T05:52:51.673Z","repository":{"id":48332723,"uuid":"72256595","full_name":"zellyn/diskii","owner":"zellyn","description":"apple2 disk image manipulation commandline tool","archived":false,"fork":false,"pushed_at":"2025-01-29T14:24:03.000Z","size":1099,"stargazers_count":12,"open_issues_count":0,"forks_count":3,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-12T05:52:44.014Z","etag":null,"topics":["apple2","appleii","emulator"],"latest_commit_sha":null,"homepage":"https://zellyn.com/diskii/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/zellyn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-29T01:21:19.000Z","updated_at":"2025-02-21T14:11:36.000Z","dependencies_parsed_at":"2022-09-09T01:01:30.747Z","dependency_job_id":null,"html_url":"https://github.com/zellyn/diskii","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zellyn%2Fdiskii","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zellyn%2Fdiskii/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zellyn%2Fdiskii/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zellyn%2Fdiskii/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zellyn","download_url":"https://codeload.github.com/zellyn/diskii/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248525156,"owners_count":21118616,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["apple2","appleii","emulator"],"created_at":"2024-10-31T10:12:21.566Z","updated_at":"2025-04-12T05:52:51.641Z","avatar_url":"https://github.com/zellyn.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"diskii\n======\n\n**Note:** diskii is not stable yet! I don't expect to remove\nfunctionality, but I'm still experimenting with the command syntax and\norganization, so don't get too comfy with it.\n\n![Seagull Srs Micro Software](img/seagull-srs.png)\n\ndiskii-the-tool is a commandline tool for working with Apple II disk\nimages. Given that\n[AppleCommander](http://applecommander.sourceforge.net/) already does\neverything, it's not terribly necessary. It is, however, mine. Minor\nbenefits (right now) are binaries you can copy around (no Java\nneeded), support for Super-Mon symbol tables on NakedOS disks, and\ncreation of\n\"[Standard Delivery](https://github.com/peterferrie/standard-delivery)\"\ndisk images.\n\ndiskii-the-library is probably more useful: a library of\ndisk-image-manipulation code that can be used by other Go programs.\n\ndiskii's major disadvantage is that it mostly doesn't exist yet.\n\n[![Build Status](https://travis-ci.org/zellyn/diskii.svg?branch=master)](https://travis-ci.org/zellyn/diskii)\n[![Report Card](https://goreportcard.com/badge/github.com/zellyn/diskii)](https://goreportcard.com/report/github.com/zellyn/diskii)\n[![GoDoc](https://godoc.org/github.com/zellyn/diskii/lib?status.svg)](https://godoc.org/github.com/zellyn/diskii/lib)\n\nIt rhymes with “whiskey”.\n\nDiscussion/support is on the\n[apple2infinitum Slack](https://apple2infinitum.slack.com/)\n(invites [here](http://apple2.gs:3000/)).\n\n# Examples\n\nGet a listing of files on a DOS 3.3 disk image:\n```\ndiskii ls dos33master.dsk\n```\n\n… or a ProDOS disk image:\n```\ndiskii ls ProDOS_2_4_2.po\n```\n\n… or a Super-Mon disk image:\n```\ndiskii ls Super-Mon-2.0.dsk \n```\n\nReorder the sectors in a disk image:\n```\ndiskii reorder ProDOS_2_4_2.dsk ProDOS_2_4_2.po\n```\n\n\n# Goals\n\nEventually, it aims to be a comprehensive disk image manipulation\ntool, but for now only some parts work.\n\nThe library code aims (a) to support the commandline tool operations,\nand (b) to replace the \"read and write disk images\" code of the\n[goapple2 emulator](https://github.com/zellyn/goapple2).\n\nCurrent disk operations supported:\n\n| Feature          | DOS 3.3  | ProDOS | NakedOS/Super-Mon  |\n| ---------------- | -------- | ------ | ------------------ |\n| basic structures | ✓        | ✓      | ✓                  |\n| ls               | ✓        | ✓      | ✓                  |\n| dump             | ✗        | ✗      | ✗                  |\n| put              | ✗        | ✗      | ✗                  |\n| dumptext         | ✗        | ✗      | ✗                  |\n| delete           | ✗        | ✗      | ✗                  |\n| rename           | ✗        | ✗      | ✗                  |\n| put              | ✗        | ✗      | ✗                  |\n| puttext          | ✗        | ✗      | ✗                  |\n| extract (all)    | ✗        | ✗      | ✗                  |\n| lock/unlock      | ✗        | ✗      | ✗                  |\n| init             | ✗        | ✗      | ✗                  |\n| defrag           | ✗        | ✗      | ✗                  |\n\n# Installing/updating\nAssuming you have Go installed, run `go get -u github.com/zellyn/diskii`\n\nYou can also download automatically-built binaries from the\n[latest release\npage](https://github.com/zellyn/diskii/releases/latest). If you\nneed binaries for a different architecture, please send a pull\nrequest or open an issue.\n\n# Short-term TODOs/roadmap/easy ways to contribute\n\nMy rough TODO list (apart from anything marked (✗) in the disk\noperations matrix is listed below. Anything that an actual user needs\nwill be likely to get priority.\n\n- [x] Make `put` accept load address for appropriate filetypes.\n- [x] Fix `golint` errors\n- [ ] Implement `GetFile` for prodos\n- [ ] Implement `PutFile` for prodos\n- [ ] Implement `Delete` for Super-Mon\n- [ ] Implement `Delete` for DOS 3.3\n- [ ] Implement `Delete` for ProDOS\n- [ ] Add and implement the `-l` flag for `ls`\n- [ ] Make `OperatorFactory.SeemsToMatch` more sophisticated for ProDOS\n- [ ] Make `OperatorFactory.SeemsToMatch` more sophisticated for DOS 3.3\n- [ ] Make `OperatorFactory.SeemsToMatch` more sophisticated for NakedOS\n- [x] Build per-platform binaries for Linux, MacOS, Windows.\n\n# Related tools\n\n- http://a2ciderpress.com/ - the great grandaddy of them all. Windows only, unless you Wine\n  - http://retrocomputingaustralia.com/rca-downloads/ Michael Mulhern's MacOS package of CiderPress\n- http://applecommander.sourceforge.net/ - the commandline, cross-platform alternative to CiderPress\n- http://brutaldeluxe.fr/products/crossdevtools/cadius/index.html - Brutal Deluxe's commandline tools\n- https://github.com/paleotronic/dskalyzer - cross-platform disk analysis tool (also written in Go!) from the folks who brought you [Octalyzer](http://octalyzer.com/).\n- https://github.com/cybernesto/dsktool.rb\n- https://github.com/cmosher01/Apple-II-Disk-Tools\n- https://github.com/madsen/perl-libA2\n- https://github.com/markdavidlong/AppleSAWS\n- https://github.com/dmolony/DiskBrowser\n- https://github.com/deater/dos33fsprogs\n- https://github.com/jtauber/a2disk\n- https://github.com/datajerk/c2d\n- https://github.com/thecompu/Driv3rs - A Python Script to work with Apple III SOS DSK files\n- http://www.callapple.org/software/an-a-p-p-l-e-review-shink-fit-x-for-mac-os-x\n- https://github.com/dmolony/DiskBrowser - graphical (Java) disk browser that knows how to interpret and display many file formats\n- https://github.com/slotek/apple2-disk-util - ruby\n- https://github.com/slotek/dsk2nib - C\n- https://github.com/robmcmullen/atrcopy - dos3.3, python\n\n# Notes\n\n## Disk formats\n\n- `.do`\n- `.po`\n- `.dsk` - could be DO or PO. When in doubt, assume DO.\n\n| Physical Sectors | DOS 3.2 Logical | DOS 3.3 Logical | ProDOS/Pascal Logical | CP/M Logical |\n|------------------|-----------------|-----------------|-----------------------|------------- |\n|        0         |        0        |        0        |          0.0          |      0.0     |\n|        1         |        1        |        7        |          4.0          |      2.3     |\n|        2         |        2        |        E        |          0.1          |      1.2     |\n|        3         |        3        |        6        |          4.1          |      0.1     |\n|        4         |        4        |        D        |          1.0          |      3.0     |\n|        5         |        5        |        5        |          5.0          |      1.3     |\n|        6         |        6        |        C        |          1.1          |      0.2     |\n|        7         |        7        |        4        |          5.1          |      3.1     |\n|        8         |        8        |        B        |          2.0          |      2.0     |\n|        9         |        9        |        3        |          6.0          |      0.3     |\n|        A         |        A        |        A        |          2.1          |      3.2     |\n|        B         |        B        |        2        |          6.1          |      2.1     |\n|        C         |        C        |        9        |          3.0          |      1.0     |\n|        D         |                 |        1        |          7.0          |      3.3     |\n|        E         |                 |        8        |          3.1          |      2.2     |\n|        F         |                 |        F        |          7.1          |      1.1     |\n\n_Note: DOS 3.2 rearranged the physical sectors on disk to achieve interleaving._\n### RWTS - DOS\n\nSector mapping:\nhttp://www.textfiles.com/apple/ANATOMY/rwts.s.txt and search for INTRLEAV\n\nMapping from specified sector to physical sector:\n\n`00 0D 0B 09 07 05 03 01 0E 0C 0A 08 06 04 02 0F`\n\nSo if you write to \"T0S1\" with DOS RWTS, it ends up in physical sector 0D.\n\n## Commandline examples for thinking about how it should work\n\ndiskii ls dos33.dsk\ndiskii --order=do ls dos33.dsk\ndiskii --order=do --system=nakedos ls nakedos.dsk\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzellyn%2Fdiskii","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzellyn%2Fdiskii","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzellyn%2Fdiskii/lists"}