{"id":41497826,"url":"https://github.com/barbeque/pc98-disk-tools","last_synced_at":"2026-01-23T18:45:09.340Z","repository":{"id":142172976,"uuid":"149943832","full_name":"barbeque/pc98-disk-tools","owner":"barbeque","description":"Open-source tools for working with common PC98 disk image formats","archived":false,"fork":false,"pushed_at":"2025-07-29T05:31:24.000Z","size":25,"stargazers_count":61,"open_issues_count":3,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-07-29T07:41:41.905Z","etag":null,"topics":["converter","disk-image","fdi","hdm","pc98","retrocomputing"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/barbeque.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-09-23T03:15:08.000Z","updated_at":"2025-07-29T05:31:28.000Z","dependencies_parsed_at":null,"dependency_job_id":"af86ef91-dd18-41d4-bc40-37fa157df2f9","html_url":"https://github.com/barbeque/pc98-disk-tools","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/barbeque/pc98-disk-tools","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbeque%2Fpc98-disk-tools","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbeque%2Fpc98-disk-tools/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbeque%2Fpc98-disk-tools/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbeque%2Fpc98-disk-tools/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/barbeque","download_url":"https://codeload.github.com/barbeque/pc98-disk-tools/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/barbeque%2Fpc98-disk-tools/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28697774,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-23T17:25:48.045Z","status":"ssl_error","status_checked_at":"2026-01-23T17:25:47.153Z","response_time":59,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["converter","disk-image","fdi","hdm","pc98","retrocomputing"],"created_at":"2026-01-23T18:45:09.263Z","updated_at":"2026-01-23T18:45:09.330Z","avatar_url":"https://github.com/barbeque.png","language":"Python","readme":"# PC98 disk image tools\nHere are some various tools for dealing with PC98 disk images.\n\n## History\nMany historical image sets of PC98 software store them in \"BKDSK\" HDM format, but at the time [the FlashFloppy firmware](https://github.com/keirf/FlashFloppy) only supported FDI images. A converter was needed to convert them.\n\nMost people used the closed-source (AFAIK) [Virtual Floppy Image Converter](https://www.vector.co.jp/soft/win95/util/se151106.html) tool, which is excellent. Out of fear of the software one day becoming incompatible, I wanted to figure out for myself what the format differences were. Also, VFIC didn't run right in WINE, which meant having to use a real Windows machine every time I wanted to update or add images.\n\nNowadays, the FlashFloppy firmware supports HDM images, so this code is primarily useful as a reference.\n\n## Getting Started\nDownload this repository using the \"Download ZIP\" option under the Code menu at the top of the page, then unzip the zip. Make sure you have Python 3 installed.\n\n## The tools\n### `is_fdi.py`\nHas a bunch of best-guess heuristics about whether or not a random image actually _is_ in the FDI format. I ran across a few that were just raw images renamed to .FDI, and so had nonsense headers or the wrong size.\n\nUseful so you don't waste too much time looking at an image that can't possibly be right.\n\n#### Usage:\n```bash\n$ python3 is_fdi.py Windows\\ 95\\ \\?\\?\\?\\?\\?\\?.fdi\ndummy = 0\nfddtype = 144\nheader size = 4096\nfdd size = 1261568\nsector size = 1024\nsectors = 8\nsurfaces = 2\ncylinders = 77\nWindows 95 ??????.fdi: yes\n```\n\n### `hdm_to_fdi.py`\nConverts raw HDM images to FDI by generating a fake FDI header for a \"2HD\"-size disk, and then appends the header and the pad bytes to the front of the HDM raw image.\n\nThis worked with FlashFloppy. I don't think it will work if you have any other BKDSK size format (e.g. `*.HD5` or `*.DD9`).\n\nIt also worked for me on a D88 image that was converted using [d88split](https://github.com/tomari/d88split)'s `d882mhlt` utility, which makes me think that any raw (i.e. uncompressed) Mahalito image will work.\n\nPatches very welcome.\n\n#### Usage:\n```bash\n$ python3 hdm_to_fdi.py Lemmings.hdm\nConverting Lemmings.hdm\nCompleted write of Lemmings.fdi\n```\n\n### `fdi_to_hdm.py`\nConverts FDI images to HDM (raw) by clawing the first 4096 bytes off of them and then sanity-checking that they seem like the right length afterward.\n\nThis worked to convert a few FDI images to a raw image that I could mount with `mount_disk_image.sh`.\n\n#### Usage:\n```bash\n$ python3 fdi_to_hdm.py Lemmings.fdi\nCompleted write of Lemmings.hdm\n```\n\n### `hdi_to_flat.py`\nConverts an *.HDI hard disk image into a flat image, suitable for writing to a CompactFlash card or other destination hard drive using `dd` or similar tool.\n\n#### Usage:\n```bash\n$ python3 hdi_to_flat.py A Ressha de Ikou III HD - Hard Disk Only.hdi\nCompleted write of A Ressha de Ikou III HD - Hard Disk Only.img\n```\n\n### `make_blank_image.py`\nProduces a blank FDI or HDM image. Determines which one based on the extension given.\n\n### Usage:\n```bash\n% python3 make_blank_image.py blank.fdi\nWrote blank.fdi\n```\n\n### `mount_disk_image.sh`\nConvenience script to mount a raw MSDOS disk image as a loopback on macOS.\n\nMounts read-write, so be careful if you are afraid of corrupting a disk image.\n\n#### Usage:\n```bash\n$ sh mount_disk_image.sh Lemmings.hdm\n/dev/disk3\t/Volumes/Untitled\n```\n\nOn Linux, you would probably use something like `mount -o loop Lemmings.hdm /mnt/Lemmings`, but I haven't tried this yet.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbeque%2Fpc98-disk-tools","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbarbeque%2Fpc98-disk-tools","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbarbeque%2Fpc98-disk-tools/lists"}