Five monitors on a Commodore 128 [video]

Hacker News Top 工具

摘要

A retrocomputing experiment driving five independent monitors from a Commodore 128 by splitting RGBI signals with a custom circuit board, along with similar tests on IBM CGA/EGA systems.

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/06/23 16:46

TL;DR: 一位玩家用Commodore 128的RGBI信号和VIC-II输出,通过自制的分路电路板,让五台显示器各自显示独立画面,并尝试了EGA显卡的类似应用。 ## 引言:五台显示器上的独立画面 今天要展示一个特别的实验:一台完全未经改装的Commodore 128,后面只连接了SD转IEC接口的软驱、视频输出、80列输出和电源,却同时驱动了五台显示器。更关键的是,这五台显示器可以显示完全不同的画面——从静态幻灯片到滚动的动画文字,全部由这台原汁原味的C128独立控制。 ## 工作原理:RGBI信号的分解 标准的RGBI输出包含红、绿、蓝三条信号线和一条亮度位(I),通过电阻组合可以形成不同灰度,再与同步信号混合成NTSC复合视频。但这样只能驱动一台显示器。 我的想法是将每条信号线分别接到各自的显示器上,共享同一个同步信号。我的朋友Joe Burks为此设计并制作了这块小电路板:它连接RGBI视频信号,输出4路独立的复合信号,每路对应一个颜色位。C128的16种颜色用二进制表示时,每个位代表一条信号线,因此4个位分别驱动4台显示器,最后一台(第5台)则由标准VIC-II视频输出驱动。这样就实现了总共5台独立显示器。 ## 演示内容:静态与动态画面 我编写了一个小型幻灯片和绘图程序。所有画是我亲手绘制,质量一般但功能验证成功。随后又编写了另一个程序,在高分辨率图形上滚动显示文字信息,同时在五台显示器上同步更新。 如果在模拟器或彩色显示器上观察RGBI原始输出,会看到一个“合并”后的彩色图像。我设计的程序允许将第5台显示器切换到任意一幅图像上进行编辑,否则在模拟器中编辑其他四台显示器会非常困难。 ## 启动模式与颜色陷阱 用40列显示模式启动时,第5台显示器正常显示,其他四台漆黑。用80列模式启动时,有三台显示器有画面,第四台却是黑的。原因出乎意料:我一直以为C128启动文本是白色,但实际上它是浅青色,完全不使用红色信号(对应那台显示器)。改为红色后,该显示器立刻显示文本。 ## Commodore 128的限制 一个关键限制是无法控制屏幕上每个独立像素的颜色——只能操作颜色单元(80×25)。虽然可以在像素级别显示(如底部的滚动条),但所有像素颜色相同(白色),会出现在所有四台RGBI显示器上。要精确控制像素到决定使用RGB还是I输出,就必须依赖颜色单元,分辨率为80×25。 第5台显示器必须用四种块状字符组合来模拟其他四个屏幕上的80列块状字符。 #### 尝试增强VDC 通过修改VDC寄存器,理论上可以减小文本字符高度,甚至到单个像素。我把高度设为4个像素,分辨率提高了一倍。在模拟器上完美运行,但真实硬件上画面严重扭曲。经查,可能是早期版本C128的VDC芯片存在缺陷,而128DCR等后期型号使用的新版芯片可能没问题。DCR型号有更多显存,理论上可以创建160×200分辨率、每像素任意颜色的模式,但手头已没有该机型。 ## 扩展至IBM CGA/EGA 这套设备理论上也能与IBM CGA配合使用。CGA在文本模式下同样只能输出16种颜色,效果相似。但EGA图形更有趣。虽然无法使用350线模式(NTSC显示器无法同步),但320×200或640×200模式可行。我对640×200模式特别感兴趣。 ### 在386上运行EGA 我从朋友Oliver那里借来一台386,配置了Trident EGA显卡。将显卡DIP开关设置好,启动后看到BIOS屏幕的不同部分根据颜色出现在不同显示器上——比如白色的启动文本其实是浅灰色,所以亮度位对应的那台显示器最初是黑的。进入CMOS启用硬盘后,运行幻灯片,每台显示器显示一幅独立的640×200两色图像。由于电视的模糊感,抖动模式看起来几乎像灰度。 ### 创建图像的流程 以托尼·斯塔克的照片为例:先调整为4:3宽高比(836×628),再缩放至640×200(在绘图软件中看起来比例失调但目标系统上正确)。复制一份,分别用加权和非加权方法转换为两色(黑/白),选择效果更好的一份。预览时先垂直加倍尺寸恢复比例,再增加颜色深度并轻微模糊,模拟电视机效果。 ## 多图像组合与遇到的问题 需要将四幅独立的黑白图像合并成一个16色图像。PaintShop Pro可以保存为原始数据(每个像素8位,0或1)。我写了一个Python脚本,将四个文件的每个字节按位组合成一个字节(每个位对应一幅图),输出合并后的原始图像。在PaintShop Pro中打开(手动指定尺寸),加载特殊调色板(保持索引不变),再缩减到16色,最终得到包含四张分离图像的16色文件。 ### 驱动与软件Bug - 借来的几张EGA显卡中,有一张坏了。大部分显卡在配置为CGA监视器模式时,无法进入高彩色EGA模式(尽管此限制不合理),只有Trident卡正常工作。 - 我一直使用C-Show (Compushow)查看图像。它能精确选择视频模式,但遇到一个Bug:图像中的两种灰色(浅灰和深灰)无法正确分离,其中一种显示为白色。调试数小时后确认是C-Show的问题。 - 改用Deluxe Paint Gallery后,灰色正确分离,最终在真实硬件上成功展示。 ## 显示器的校准与挑战 我原本希望五台显示器完全一致。已有三台三星电视,从eBay买了第四台,Adrian Black从波特兰寄来了第五台。扬声器坏了一台但未使用。调整了偏转线圈(画面倾斜)和行输出变压器(亮度一致)。花了很多时间在维修菜单中匹配颜色,最终四台接近,但有一台无论如何调校,在镜头里仍显偏蓝。肉眼看与其它一致,推测该显像管的光谱输出(特别是紫外线或红外线区域)与他人不同,但未证实。 ## 未来想法 这个实验可以将概念提升到新的水平,但受限于硬件和时间,视频中没有完全深入探索。后续可能继续尝试其他系统或更高分辨率模式。 Source: [Five monitors on a Commodore 128 [video]](https://www.youtube.com/watch?v=ul5hC3PY1Yg)

相似文章

C64演示效果详解:Rodents In The Attic

Lobsters Hottest

一篇关于Commodore 64演示的技术解析,该演示利用边框开启技巧、VIC芯片幽灵字节故障以及精确的光栅时间编码,将彩色精灵放置在边框区域。

工作显示器

Hacker News Top

一篇讨论企业显示器标准、便携显示器作为廉价补充,以及更大或额外显示器带来的生产力提升的博客文章。

两台电脑,一个显示器,零折腾(2025)

Hacker News Top

一份指南,详细介绍如何利用内置KVM功能的显示器以及DDC命令(在macOS上通过m1ddc实现),仅使用一个键盘、鼠标和显示器在Mac笔记本和Linux台式机之间切换,免去了手动插拔线缆的麻烦。