Skip to content

Commit b5379b1

Browse files
committed
docs: add Atari Jaguar 1999 hardware reference set as Markdown
Mirror the 20 official Atari Jaguar developer-binder PDFs released into the public domain by Hasbro Interactive in 1999, converted to Markdown via pymupdf4llm so the Tom/Jerry register reference, opcode tables, and hardware-bugs list are greppable next to src/op.c, src/tom.c, src/gpu.c, src/dsp.c, etc. Source PDFs are mirrored from cubanismo/jaguar-sdk and hillsoftware.com. The PDFs themselves are .gitignored to keep the repo small (~73 MB skipped, ~2 MB of Markdown checked in); fetch-pdfs.sh + .convert.py reproduce them locally on demand. The 'Technical Reference v8.md' (Brennan/Dunn/Mathieson, rev 8, 28 Feb 2001) comes from a typeset PDF and is the cleanest source. The numbered binder files (00-17) are scans, so OCR quality varies — README.md notes this and points to the originals when in doubt. Made-with: Cursor
1 parent 15eb6f9 commit b5379b1

24 files changed

Lines changed: 24757 additions & 0 deletions

docs/atari-jaguar-1999/.convert.py

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
#!/usr/bin/env python3
2+
"""Convert every PDF in this directory to a sibling .md via pymupdf4llm."""
3+
from __future__ import annotations
4+
5+
import os
6+
import sys
7+
import time
8+
from concurrent.futures import ProcessPoolExecutor, as_completed
9+
from pathlib import Path
10+
11+
import pymupdf4llm
12+
13+
HERE = Path(__file__).resolve().parent
14+
15+
16+
def convert(pdf: Path) -> tuple[Path, int, float]:
17+
t0 = time.time()
18+
md = pymupdf4llm.to_markdown(str(pdf), show_progress=False)
19+
out = pdf.with_suffix(".md")
20+
out.write_text(md, encoding="utf-8")
21+
return out, len(md), time.time() - t0
22+
23+
24+
def main() -> int:
25+
pdfs = sorted(p for p in HERE.glob("*.pdf"))
26+
if not pdfs:
27+
print("no PDFs found", file=sys.stderr)
28+
return 1
29+
30+
workers = min(os.cpu_count() or 4, 8)
31+
print(f">> converting {len(pdfs)} PDFs with {workers} workers", flush=True)
32+
33+
with ProcessPoolExecutor(max_workers=workers) as ex:
34+
futs = {ex.submit(convert, p): p for p in pdfs}
35+
for f in as_completed(futs):
36+
src = futs[f]
37+
try:
38+
out, size, dt = f.result()
39+
print(f" [{dt:5.1f}s] {src.name} -> {out.name} ({size:,} chars)", flush=True)
40+
except Exception as exc:
41+
print(f" !! {src.name}: {type(exc).__name__}: {exc}", flush=True)
42+
return 0
43+
44+
45+
if __name__ == "__main__":
46+
sys.exit(main())

docs/atari-jaguar-1999/.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
.venv/
2+
__pycache__/
3+
*.pyc
4+
5+
# Source PDFs (~73 MB) are not checked in — they live in cubanismo/jaguar-sdk
6+
# and hillsoftware.com. Run `./fetch-pdfs.sh` to re-download locally if you
7+
# need them, then `./.venv/bin/python .convert.py` to regenerate the .md files.
8+
*.pdf

0 commit comments

Comments
 (0)