Bill和Steven正在調試那臺嗡嗡作響的鐵柜子。Duane蹲在旁邊,手里攥著一疊泛黃的電路圖。沒人想到,這臺從約翰霍普金斯大學搶救出來的1960年代海軍雷達計算機,八個月后會在《我的世界》里生成第一塊草方塊。
一、一臺"反人類"的機器
![]()
UNIVAC 1219B的設計初衷很純粹:讀取雷達信號,指揮艦炮射擊。它的硬件規格在今天看來近乎荒誕——250kHz主頻,90KB內存,全部程序靠手工匯編編寫。
![]()
更離譜的是它的交互方式。沒有屏幕,只有一臺電傳打字機。你輸入指令,它噠噠噠地打在紙上;計算機回應,也是噠噠噠地打在同一張紙上。標準輸入和標準輸出,物理上就是同一個卷軸。
全球僅存兩臺UNIVAC 1219。另一臺在博物館里沉睡,只有這臺還能通電運轉。
作者第一次親眼見到它,是在2025年4月的VCF East復古電腦展。「那些閃爍的指示燈,打字機的咔嗒聲,機油的氣味……」他后來回憶,「我當時就知道,得在這上面跑點瘋狂的東西。」
目標清單相當膨脹:NES模擬器。OCaml語言環境。以及——《我的世界》服務器。
二、400倍速的作弊器
第一步是造工具。Duane早年用BASIC寫過一個匯編器,用VB.NET寫過一個模擬器。但VB版的速度只有真實硬件的1/100——跑個簡單程序要卡死。
TheScienceElf接手后,用Rust重寫了整套工具。新模擬器比真機快400倍,比VB版快40000倍。
這個速度差距后來成了關鍵。因為接下來他們要干的事,需要天文數字般的試錯次數。
三、把C語言塞進海軍雷達
作者掏出了一個陳年項目:wee——一個極簡C編譯器。但讓C代碼在UNIVAC上運行,需要跨越三層地獄。
第一層:wee本身要能在UNIVAC上編譯。這意味著先用匯編寫一個極簡C子集,再用這個子集去編譯更完整的C編譯器——經典的「自舉」難題。
第二層:UNIVAC的指令集極其詭異。沒有硬件乘法,沒有除法,沒有浮點運算。連條件跳轉都有限制——某些情況下你只能往前跳,不能回頭。
第三層:內存只有90KB。《我的世界》服務器的內存 footprint 經過暴力壓縮后,依然要把數據結構拆成碎片,在磁帶上換進換出。
他們用了模糊測試(fuzzing)來驗證編譯器正確性——自動生成隨機C程序,對比真機和模擬器的輸出。Rust模擬器的400倍速讓這件事成為可能。否則等VB版跑完一輪測試,人都退休了。
![]()
四、當《我的世界》遇上電傳打字機
最終的解決方案是一層荒謬的抽象。
UNIVAC 1219B作為計算核心,實際運行精簡后的Minecraft服務器代碼。但它沒有圖形輸出能力——于是把畫面數據編碼后,通過電傳打字機的接口,傳給一臺現代樹莓派。
樹莓派負責渲染,再把玩家的輸入指令傳回UNIVAC。兩臺機器的年齡差距超過半個世紀,卻在同一個回路里協作。
第一幀NES《彈珠臺》畫面渲染成功時,團隊拍了張照片。不是屏幕截圖,是真的拍了一張照片——因為輸出設備是紙。
他們還實現了「overstrike」自拍:讓打字機在同一位置多次擊打,用墨水的疊加密度模擬灰度。1960年代的硬件,輸出2020年代的濾鏡效果。
五、為什么這件事值得八個月
這不是懷舊,也不是炫技。作者的原話是:「我癡迷于在奇怪的地方運行代碼,粉碎技術限制。」
但更深層的驅動力,可能是對「技術必然性」的反抗。我們習慣了硬件性能每兩年翻倍的敘事,習慣了「舊設備只能進博物館」的默認設定。UNIVAC 1219B項目證明:限制往往來自假設,而非物理邊界。
90KB內存能跑《我的世界》——不是因為優化魔法,而是因為有人愿意重新定義「跑」的含義。畫面可以外包,計算可以精簡,交互可以重新設計。
全球只有一臺能運行的UNIVAC 1219B。這個項目的全部代碼已經開源,但沒有人能復制這個 exact 的 setup。它是一次性的,不可規模化的,純粹因執念而存在的工程藝術品。
八個月,三個人,一臺250kHz的老爺機。最終產出的不是產品,而是一個問題的答案:如果徹底無視「合理」的邊界,技術能走多遠?
答案寫在一張長長的打印紙卷上。噠噠噠。
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.