44 lines
2.5 KiB
Markdown
44 lines
2.5 KiB
Markdown
```
|
||
. : :::. . : :::::::. ::: .,:::::: :::::::..
|
||
;;,. ;;; ;;`;; ;;,. ;;; ;;;'';;' ;;; ;;;;'''' ;;;;``;;;;
|
||
[[[[, ,[[[[, ,[[ '[[, [[[[, ,[[[[, [[[__[[\. [[[ [[cccc [[[,/[[['
|
||
$$$$$$$$"$$$c$$$cc$$$c $$$$$$$$"$$$ $$""""Y$$ $$' $$"""" $$$$$$c
|
||
888 Y88" 888o888 888,888 Y88" 888o_88o,,od8Po88oo,.__888oo,__ 888b "88bo,
|
||
MMM M' "MMMYMM ""` MMM M' "MMM""YUMMMP" """"YUMMM""""YUMMMMMMM "W"
|
||
```
|
||
|
||
`mambler` converts a Markdown document (and any local Markdown files it links to) into an Ancient Machine Book (AMB) ready for distribution.
|
||
|
||
The project wraps the [md2txt](https://github.com/randogoth/md2txt/) toolchain, using its Markdown parser and AMA renderer to generate the article content.
|
||
`mambler` then packs the rendered output into the AMB binary format, handling large documents by automatically splitting them into multiple AMA files with navigational “Continue” links.
|
||
|
||
### Installation
|
||
|
||
Install the CLI directly from GitHub with [uv](https://github.com/astral-sh/uv):
|
||
|
||
```
|
||
uv tool install --from github:randogoth/mambler mambler
|
||
```
|
||
|
||
### Usage
|
||
|
||
```bash
|
||
uv run mambler.py --title "Your Book Title" --codepage 437 path/to/index.md output.amb
|
||
```
|
||
|
||
- `index.md` is the root Markdown file. Any local Markdown links it contains will be followed and bundled automatically.
|
||
- `--title` is optional; when provided the value is embedded in the AMB archive header (truncated to 64 ASCII bytes).
|
||
- `--codepage` controls the 8-bit encoding used for every AMA article (default: `437`). Any character that cannot be expressed in the chosen codepage aborts the build with a helpful error so you can pick a better fit.
|
||
- If any emitted byte lives in the 0x80–0xFF range, `mambler` automatically writes a companion `UNICODE.MAP` file describing the high-half character mapping, mirroring the recommendation in the AMA/AMB specification.
|
||
- Words of length 2–17 are indexed into `DICT.IDX` so readers can offer fast full-text search. The index is omitted if it would overflow the 64 KiB LoW data limit mandated by the spec.
|
||
- The command prints the path of the generated AMB file on success.
|
||
|
||
### Development Notes
|
||
|
||
- Run `uv run python -m compileall mambler.py` to ensure the script still compiles.
|
||
- The `md2txt` dependency is fetched from GitHub; contribute renderer/parser changes upstream in that project.
|
||
|
||
---
|
||
|
||
* Directed and vibe coded by Tobias Raayoni Last
|
||
* Programmed by `gpt-5-codex`
|