惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
MongoDB | Blog
MongoDB | Blog
云风的 BLOG
云风的 BLOG
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
WordPress大学
WordPress大学
T
The Blog of Author Tim Ferriss
V
Visual Studio Blog
小众软件
小众软件
Microsoft Azure Blog
Microsoft Azure Blog
博客园_首页
IT之家
IT之家
Vercel News
Vercel News
C
Check Point Blog
Google DeepMind News
Google DeepMind News
月光博客
月光博客
D
DataBreaches.Net
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog

Hacker News: Front Page

SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Introducing Claude Opus 4.7 Qwen Studio The Future of Everything is Lies, I Guess: Where Do We Go From Here? GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Ancient DNA reveals pervasive directional selection across West Eurasia [pdf] AI cybersecurity is not proof of work Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. A Better Ludum Dare; Or, How to Ruin a Legacy GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Unexpected €54k billing spike in 13 hours: Firebase browser key without API restrictions used for Gemini requests Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent Codex Hacked a Samsung TV
Running Adobe’s 1991 PostScript Interpreter in the Browse...
ingve · 2026-05-01 · via Hacker News: Front Page

The HP C2089A “PostScript Cartridge Plus”, a 1991 add-on for the LaserJet II/III, adds PostScript Level 2 support through Adobe’s own reference interpreter (version 2010.118) on a 2 MB ROM.

Thirty-five years on, that ROM is still a current PostScript implementation: it renders the language correctly, and the language hasn’t changed. We have Ghostscript today, but this is Adobe’s own reference implementation! Old code is not always retro code: Why not use it productively today?

retro-ps takes that ROM, emulates the M68K it ran on, fakes the LaserJet mainboard around it, and runs the result on the command line — or in the browser at pagetable.com/retro-ps. Drop a .ps file onto the page; the cart’s own rasterizer renders it client-side. There is no server.

retro-ps in the browser, rendering the cart's own test page

Hardware details

The LaserJet III is the host. Its formatter board has a Motorola 68000 at 8 MHz, 1 MB of system RAM (expandable to 4 MB), a cartridge port that maps an external ROM into the CPU’s address space, and memory-mapped registers for talking to the print engine. The C2089A “PostScript Cartridge Plus” plugs into that cartridge. The PostScript interpreter, fonts, halftone, and banding all run from cart ROM, working out of formatter RAM.

Emulator Internals

The cart was built to drive a LaserJet III: 300 DPI, fixed paper sizes, 0.25″ hardware margin. The PostScript interpreter inside is general — those constraints are the printer’s, not the language’s. retro-ps lifts them: any DPI up to the cart’s clip cap, any paper size, any halftone frequency, no margin. (--lj3 puts the original constraints back.) A few things made that work:

  • CPU and RAM. The emulator’s 68020 sees more memory than the original 68000 could address. 16 MB of RAM here. That headroom is what lets the cart render high-DPI pages without rewriting its allocator.
  • No mainboard, no engine. We have the cart ROM, not the LaserJet’s mainboard ROM, and no print engine. The emulator stands in for the soft-traps the mainboard provides (printer-model byte, IPC byte stream, engine-status polling) and fakes the engine-done interrupt so the cart’s state machine moves on.
  • Halftone scaling. Adobe hand-tuned the cart’s halftone cell for 300 DPI; above that the default cell renders too sparse and grayscale fills look chalky. We inject a DPI-scaled setscreen prolog.
  • Pixel ceiling. The PS interpreter’s clip operator caps content at about 16,000 device pixels per axis. This is a limit in Adobe’s code; the practical DPI max scales with paper size (≈ 1450 DPI on Letter).

Future Work

  • Other cartridge ROMs. Pacific Page P·E would be the obvious next target.
  • LaserJet 4M and later. Same Adobe code, different CPU: the 4-series formatter is Intel i960-based with PostScript Level 2 baked into the formatter ROM — no cartridge.