{ "info": { "author": "Elliot Nunn", "author_email": "elliotnunn@fastmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: C", "Programming Language :: Python :: 3 :: Only", "Topic :: Software Development :: Build Tools" ], "description": "# `tbxi`: the Mac OS Toolbox Imager\n\n`tbxi` is a command-line Python script to help with the inspection and\nmodification of Macintosh Toolbox ROM images. These images contain\nvarying amounts of high-level Mac OS code and low-level boot code.\n\n`tbxi` has two modes, both with a `--help` option:\n\n- `tbxi dump` converts a ROM image to a tree of self-describing text\n files and small binaries.\n- `tbxi build` rebuilds the image as accurately as possible.\n\nIn between running the two commands, the directory tree can be modified.\nThe text-file formats produced by `tbxi dump` are designed to be easily\neditable using text editors and scripts.\n\n\n## Patch Library\n\nThis repository contains known-good scripts to patch the ROM, for\nexample to add Mac mini G4 support to Mac OS 9:\n\nhttps://github.com/elliotnunn/tbxi-patches\n\nPatches can be applied to a dumped directory or the the ROM file itself.\n\n\n## Background\n\n\"OldWorld\" (pre-USB) Macs contain a real physical ROM. \"NewWorld\" Macs\n(iMac and later) have an unusual \"ROM in RAM\" arrangement, which retains\ncompatibility with the ROM-based architecture of the Mac OS while easing\nsoftware updates. An almost-complete legacy ROM image is loaded from the\n\"Mac OS ROM\" file in the System Folder (type code 'tbxi'), leaving only\na minimal Open Firmware \"Boot ROM\" in the hardware.\n\nDuring the progression from 68k ROMs to NewWorld PowerPC ROMs, multiple\nlayers of wrapping and abstraction were added. These are reflected in\nthe multi-level output of `tbxi dump`:\n\n- Open Firmware bootinfo file (`Mac OS ROM` => `Bootscript` textfile + binaries)\n- structured binary of \"Parcels\" (`Parcels` => `Parcelfile` textfile + binaries)\n- 4 MB PowerPC ROM (`MacROM` => `Configfile-1` textfile + binaries)\n- 3 MB 68k ROM (`Mac68kROM` => `Romfile` textfile + binaries)\n\n\n## Bugs\n\nSome very quirky PowerPC OldWorld ROMs (e.g. PowerBook 1400/2400) cannot\nbe rebuilt correctly. NewWorld ROMs of version 2 or later (Sawtooth G4)\nwill be slightly different due to an uninitialised buffer in the\noriginal build process.\n\nROM images predating before the \"SuperMario\" ROM (Quadra 660AV/840AV)\nare not supported, excluding most 68k Mac ROMs.\n\nThe `tbxi dump` format is likely to change. If you keep a collection of\ndumped ROM images to peruse, re-dump them regularly.\n\n\n## Contributing\n\nYes please! Bug reports, suggestions and requests are welcome. Open a\nGitHub pull request or image, or get in contact via the email on the\nPyPI page.\n\nAll are welcome on our retro Mac-hacking mailing list:\n\nhttps://lists.ucc.gu.uwa.edu.au/mailman/listinfo/cdg5\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/elliotnunn/tbxi", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "tbxi", "package_url": "https://pypi.org/project/tbxi/", "platform": "", "project_url": "https://pypi.org/project/tbxi/", "project_urls": { "Homepage": "https://github.com/elliotnunn/tbxi" }, "release_url": "https://pypi.org/project/tbxi/0.12/", "requires_dist": [ "macresources" ], "requires_python": "", "summary": "Tools to compile and inspect Macintosh ROM images", "version": "0.12" }, "last_serial": 5952788, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "ab14c36e3bc036709d24b9e82fe514d6", "sha256": "1dcdd47b5fad07228e848051a4909f6c68782ad860df8520206bf9e02fc054b3" }, "downloads": -1, "filename": "tbxi-0.1-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "ab14c36e3bc036709d24b9e82fe514d6", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 44624, "upload_time": "2019-05-26T03:10:15", "url": "https://files.pythonhosted.org/packages/0c/cb/2051d5f3c218725b2ba25885233baf68e9f8896de4f51be920dff038ff44/tbxi-0.1-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "e1a64e15c54d0cde352e6a3b1b9c3fd0", "sha256": "09cce95b5bdeba9937f898fe17b7f77f89b0488c15281f394937e513d9f3a9a9" }, "downloads": -1, "filename": "tbxi-0.1.tar.gz", "has_sig": false, "md5_digest": "e1a64e15c54d0cde352e6a3b1b9c3fd0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24516, "upload_time": "2019-05-26T03:10:18", "url": "https://files.pythonhosted.org/packages/4c/2b/d636b7ed889e8db6d9dd4f5fd273a0f8214d7feab4806a1994f136c81f7a/tbxi-0.1.tar.gz" } ], "0.10": [ { "comment_text": "", "digests": { "md5": "e5f9734d99df06a2bd1ca493da4d3c32", "sha256": "6c9184a98c3908a183a6ef6be9a20cacaca8665831a83b155b04d91427d95895" }, "downloads": -1, "filename": "tbxi-0.10-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "e5f9734d99df06a2bd1ca493da4d3c32", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 49704, "upload_time": "2019-08-04T13:08:26", "url": "https://files.pythonhosted.org/packages/98/80/f627cf012618a4b00a89a33f4a5290a9f09b25e8f0337f1dc99c431b642a/tbxi-0.10-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "4effe4a0f5558b283f5559b528988f9d", "sha256": "df1d7c8697fc271e036d0ac9ebef2a85e48258de1c07e400b9ae9efae6e4c754" }, "downloads": -1, "filename": "tbxi-0.10.tar.gz", "has_sig": false, "md5_digest": "4effe4a0f5558b283f5559b528988f9d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30542, "upload_time": "2019-08-04T13:08:28", "url": "https://files.pythonhosted.org/packages/06/20/196ac6c52af41856c99c7a1ad17a5f7da279ee8ba9b4685f2bc289344a90/tbxi-0.10.tar.gz" } ], "0.11": [ { "comment_text": "", "digests": { "md5": "42e369aa2d1577e4258000cbfdc0d82c", "sha256": "2eec943cca78bde6eb578ad87bcdfdb3917a08a84a873d37416bc99dae8d92b3" }, "downloads": -1, "filename": "tbxi-0.11-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "42e369aa2d1577e4258000cbfdc0d82c", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 53427, "upload_time": "2019-08-11T01:39:23", "url": "https://files.pythonhosted.org/packages/da/04/ec7045b9d59407b49dd72897fea3fd0d7730536e17fcf8b9f172eac1d247/tbxi-0.11-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "dd30969a7d4be57bac989392424aa988", "sha256": "08f4b7eefa4b60ad45633a1e3a4efb730e3b5732f154d8907bdf92937afeb78b" }, "downloads": -1, "filename": "tbxi-0.11.tar.gz", "has_sig": false, "md5_digest": "dd30969a7d4be57bac989392424aa988", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 33859, "upload_time": "2019-08-11T01:39:26", "url": "https://files.pythonhosted.org/packages/f2/a2/2f8228d8cdd942c8f01da697f67cc5ccbedad4863a1eedd616b04e08c0a1/tbxi-0.11.tar.gz" } ], "0.12": [ { "comment_text": "", "digests": { "md5": "51a9b6b6cbe883dace93cd8f8098588b", "sha256": "fca902865842ea32ede196a1b6f7049cbdec5ed6b4d61e604a53c567806b6d00" }, "downloads": -1, "filename": "tbxi-0.12-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "51a9b6b6cbe883dace93cd8f8098588b", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 57343, "upload_time": "2019-10-10T02:43:16", "url": "https://files.pythonhosted.org/packages/e3/e2/2f046844c47a5b4b460f182485f3aee0ab4fba72d5a36f3be6793a681340/tbxi-0.12-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "28652b71e5d8dee7293d7a39fc27a4d7", "sha256": "657e6fe2cfe5b24b17151ec98a9a5ac56a13d0548a48744cf769614b826b6f17" }, "downloads": -1, "filename": "tbxi-0.12.tar.gz", "has_sig": false, "md5_digest": "28652b71e5d8dee7293d7a39fc27a4d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35416, "upload_time": "2019-10-10T02:43:18", "url": "https://files.pythonhosted.org/packages/5d/92/6e815c2610b5a3fe901ef33b495295ae08209a031e0fa11b6fb9ca2475e2/tbxi-0.12.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "95e32277bc848fa3713a267067edd8f8", "sha256": "bd05e44d3250f7b39bceca0f57d1c7d465fd2e132f73678a44db647402f7632c" }, "downloads": -1, "filename": "tbxi-0.2-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "95e32277bc848fa3713a267067edd8f8", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 44915, "upload_time": "2019-05-26T03:36:09", "url": "https://files.pythonhosted.org/packages/af/fb/f02fcac21b0c5d6fc320576d5ec0c56d23b6701d5ff17d47a9f6b5af507f/tbxi-0.2-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "ac656a5c7d3269c2bcc1af485a3c4fac", "sha256": "d84d73221a4606d22e41983bf067e19a6d0c3deb522bf416c9ede12c134286c0" }, "downloads": -1, "filename": "tbxi-0.2.tar.gz", "has_sig": false, "md5_digest": "ac656a5c7d3269c2bcc1af485a3c4fac", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24764, "upload_time": "2019-05-26T03:36:11", "url": "https://files.pythonhosted.org/packages/57/e2/039fac66ba1d4fd066f4453ef276289ed28d7c159879d8b0ec089c0d48f9/tbxi-0.2.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "522770b735659775de0b4949b6b4fb0b", "sha256": "8f69382177096f54af52b0457c96e717d05c1f50280f476736062b428027e209" }, "downloads": -1, "filename": "tbxi-0.3-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "522770b735659775de0b4949b6b4fb0b", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 44459, "upload_time": "2019-06-02T02:36:30", "url": "https://files.pythonhosted.org/packages/e0/ba/b7d42a20c772af1d8673334e80d534e9d14266f05b6eab25bab12e264597/tbxi-0.3-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "368ba48db7f76d2bfee9005bada33631", "sha256": "9f1f768afa74e1e9e958fdd45c7b7c6867fe5c30633fb669173e2242fffee193" }, "downloads": -1, "filename": "tbxi-0.3.tar.gz", "has_sig": false, "md5_digest": "368ba48db7f76d2bfee9005bada33631", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24407, "upload_time": "2019-06-02T02:36:32", "url": "https://files.pythonhosted.org/packages/87/99/50656a3931dc9719f5fddc563a991158747c5bb4f4732eb083f6102d84b5/tbxi-0.3.tar.gz" } ], "0.4": [ { "comment_text": "", "digests": { "md5": "35327da748ac00d35431eca1b05cf522", "sha256": "87fe79f8e946c585474a02c7bd2071a13f9b3c9b7a685e5556d6f6406cec6ee2" }, "downloads": -1, "filename": "tbxi-0.4-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "35327da748ac00d35431eca1b05cf522", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 44591, "upload_time": "2019-06-10T03:52:31", "url": "https://files.pythonhosted.org/packages/af/bb/a51c7a24f93f067cf64d93da01387b83eaf8630a3773410922680ec0fef5/tbxi-0.4-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "cb60694f2438b785317de0cbee8e39b3", "sha256": "c9bc12fa0846d46f1b4652a852269cc9bbbbd4d63e7e222ced2f3a72b4be6800" }, "downloads": -1, "filename": "tbxi-0.4.tar.gz", "has_sig": false, "md5_digest": "cb60694f2438b785317de0cbee8e39b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24490, "upload_time": "2019-06-10T03:52:32", "url": "https://files.pythonhosted.org/packages/29/72/1b8be30990145c25f473925e1940b5977257506589e6de78a82b059bd826/tbxi-0.4.tar.gz" } ], "0.5": [ { "comment_text": "", "digests": { "md5": "e121e89f534736b1c071c92e31bcc12f", "sha256": "0d62ff74504dcd1fecb1ec1771695923b9d9dad6be50baa7c039c689cfcdaf68" }, "downloads": -1, "filename": "tbxi-0.5-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "e121e89f534736b1c071c92e31bcc12f", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 45271, "upload_time": "2019-06-11T04:31:16", "url": "https://files.pythonhosted.org/packages/9c/6b/e9a143f48152acaad4e68aef5bc05ad32318242271924cf8ce2fbb55787d/tbxi-0.5-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "31895704b1a1b1fb5fe1aaccd8f08d9c", "sha256": "aceba8d144751629144296cc8fb474a709436eac70ca1ef6af9e1cd74d69dd5f" }, "downloads": -1, "filename": "tbxi-0.5.tar.gz", "has_sig": false, "md5_digest": "31895704b1a1b1fb5fe1aaccd8f08d9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25091, "upload_time": "2019-06-11T04:31:18", "url": "https://files.pythonhosted.org/packages/0b/6d/f626e1a859fb6cb6e1816c726baf212a873c015b05cdc18dd3c157afee3a/tbxi-0.5.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "f129c983a2207cfcda2ecf171ac5be43", "sha256": "5dbce7cc11371e1a3ad4f2c0a10ee7d86dfda336b6a0599524a4a9b3beb1e667" }, "downloads": -1, "filename": "tbxi-0.6-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "f129c983a2207cfcda2ecf171ac5be43", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 45272, "upload_time": "2019-06-11T08:15:17", "url": "https://files.pythonhosted.org/packages/a1/d9/dbe3d92c83b448b28e8c696335f36bc8ae4417b58a222d5b6a69aa20875d/tbxi-0.6-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "91b1d1b55e6f77e36ae8d61cbe0e397e", "sha256": "92799de76ba0b608daf405c5112ee83679e121d4761dff12e5984901a6fce176" }, "downloads": -1, "filename": "tbxi-0.6.tar.gz", "has_sig": false, "md5_digest": "91b1d1b55e6f77e36ae8d61cbe0e397e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26376, "upload_time": "2019-06-11T08:15:18", "url": "https://files.pythonhosted.org/packages/fe/a0/1da49d2a3db5b33bac11d7db09d4323c2fd94f2d63c963d74aa3f8cde62f/tbxi-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "1157e6b130e9f34e11b71093899d993b", "sha256": "a2d7ee475dcabb7f9a7ca7b5b2f1eea8b5777b60726705f0454b81ea87d72fdc" }, "downloads": -1, "filename": "tbxi-0.7-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "1157e6b130e9f34e11b71093899d993b", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 46644, "upload_time": "2019-06-11T08:38:58", "url": "https://files.pythonhosted.org/packages/8a/9d/11d075d56652b987d0aae3d1bbfd95abfe10598090de0037ea389ccbfaa4/tbxi-0.7-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "cd4c36b6337f8a5489390fd669f2a745", "sha256": "f946f0d83e6ab861da96c5a12d9546710840c18d59ffe231e7d1d72a12d7f4e6" }, "downloads": -1, "filename": "tbxi-0.7.tar.gz", "has_sig": false, "md5_digest": "cd4c36b6337f8a5489390fd669f2a745", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28087, "upload_time": "2019-06-11T08:39:02", "url": "https://files.pythonhosted.org/packages/28/8b/01f0102f719ba690ffa02df464982ddc9b2dcd9c171cc156ce81d3edaf71/tbxi-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "8df0db12e15e3749a4ed427f11f21558", "sha256": "3e8f82518d1a06d53b0474b712fd800ab810e1af835f0fe4142dbc056ec5c1d6" }, "downloads": -1, "filename": "tbxi-0.8-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "8df0db12e15e3749a4ed427f11f21558", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 46683, "upload_time": "2019-07-28T08:37:35", "url": "https://files.pythonhosted.org/packages/e4/56/ad8f1013bc160c53019e759572217133134b9a6828ce8700d7d26e52aad0/tbxi-0.8-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "3ca3d2e43806f3653d5fd240eae5ef62", "sha256": "1fc5e3d9ff358d87caa4370dab76c1dc19a18ddc730e80d79a209d6d4ba54ef2" }, "downloads": -1, "filename": "tbxi-0.8.tar.gz", "has_sig": false, "md5_digest": "3ca3d2e43806f3653d5fd240eae5ef62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 28085, "upload_time": "2019-07-28T08:37:37", "url": "https://files.pythonhosted.org/packages/b9/8e/8a52646bb60089d4e444e5b19fb4639f29971b0b2ec935d26778ebbb0a9e/tbxi-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "e2a57d1a20cad69bcf388b21b1c5cba3", "sha256": "62a071c78ae8b4c08c3daa58cf8d2ab0fc03a6de57b305c0dd8807a2bb93cd17" }, "downloads": -1, "filename": "tbxi-0.9-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "e2a57d1a20cad69bcf388b21b1c5cba3", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 48732, "upload_time": "2019-08-02T06:38:32", "url": "https://files.pythonhosted.org/packages/fd/49/393f520980e4a4dd72f4e7042340635453598aeea14b5376328f74507409/tbxi-0.9-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "f05f0d3b856c211998fa842745364c8a", "sha256": "8797c14725b84add99c4e0badfb727a654f61d0ddcb62d4af81774801fde3c60" }, "downloads": -1, "filename": "tbxi-0.9.tar.gz", "has_sig": false, "md5_digest": "f05f0d3b856c211998fa842745364c8a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 29615, "upload_time": "2019-08-02T06:38:34", "url": "https://files.pythonhosted.org/packages/a5/66/543a37bdaf08c3a6d29827a89beac297f30a437f01cb420f63a4dab323d8/tbxi-0.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "51a9b6b6cbe883dace93cd8f8098588b", "sha256": "fca902865842ea32ede196a1b6f7049cbdec5ed6b4d61e604a53c567806b6d00" }, "downloads": -1, "filename": "tbxi-0.12-cp37-cp37m-macosx_10_14_x86_64.whl", "has_sig": false, "md5_digest": "51a9b6b6cbe883dace93cd8f8098588b", "packagetype": "bdist_wheel", "python_version": "cp37", "requires_python": null, "size": 57343, "upload_time": "2019-10-10T02:43:16", "url": "https://files.pythonhosted.org/packages/e3/e2/2f046844c47a5b4b460f182485f3aee0ab4fba72d5a36f3be6793a681340/tbxi-0.12-cp37-cp37m-macosx_10_14_x86_64.whl" }, { "comment_text": "", "digests": { "md5": "28652b71e5d8dee7293d7a39fc27a4d7", "sha256": "657e6fe2cfe5b24b17151ec98a9a5ac56a13d0548a48744cf769614b826b6f17" }, "downloads": -1, "filename": "tbxi-0.12.tar.gz", "has_sig": false, "md5_digest": "28652b71e5d8dee7293d7a39fc27a4d7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 35416, "upload_time": "2019-10-10T02:43:18", "url": "https://files.pythonhosted.org/packages/5d/92/6e815c2610b5a3fe901ef33b495295ae08209a031e0fa11b6fb9ca2475e2/tbxi-0.12.tar.gz" } ] }