Nguồn: pagetable.com
Tóm tắt
Project retro-ps lấy ROM của HP C2089A “PostScript Cartridge Plus” — một add-on năm 1991 cho máy in LaserJet II/III với PostScript Level 2 implementation của Adobe (version 2010.118) — emulate CPU Motorola 68K mà nó chạy, và chạy trực tiếp trong trình duyệt. Kết quả là một PostScript renderer hoàn chỉnh chạy client-side, không cần server, có thể render file .ps tùy ý.
Điều đáng chú ý là PostScript là ngôn ngữ ổn định: spec không thay đổi trong 35 năm qua, và implementation của Adobe vẫn render đúng hoàn toàn ngày nay. ROM 2MB này chứa toàn bộ interpreter, fonts, halftone engine và banding logic — tất cả chạy trong 1MB system RAM của LaserJet III.
Emulator mở rộng so với phần cứng gốc theo nhiều hướng: hỗ trợ DPI tùy ý (lên đến ~1450 DPI trên giấy Letter), kích thước giấy tùy chọn, không margin, và RAM tăng lên 16MB (thay vì 1MB gốc — cho phép render trang DPI cao mà không cần viết lại allocator của ROM). Một số kỹ thuật thú vị: inject setscreen prolog theo tỷ lệ DPI để fix halftone rendering, và fake engine-done interrupt để state machine của cartridge tiến lên bình thường.
Bài viết thể hiện một triết lý thú vị về “old code”: phần mềm viết cẩn thận 35 năm trước không nhất thiết là “retro” — nó vẫn hoàn toàn có thể dùng được và thậm chí là reference implementation chính xác nhất cho một ngôn ngữ page description quan trọng.