从黑胶唱片启动电脑
Booting from a vinyl record (2020)

原始链接: https://boginjr.com/it/sw/dev/vinyl-boot/

这个项目详细介绍了一种非常规的启动IBM PC的方法:从黑胶唱片启动!系统不使用传统介质,而是利用一个定制的ROM引导加载程序,该程序利用了PC很少使用的磁带接口。 该过程涉及将64KB的FreeDOS内核编码到10英寸的唱片上。PC通过唱机和放大器将此数据读取为音频信号,并将其解释为磁带。由于黑胶唱片固有的RIAA均衡,通过放大器调整(低音/高音均衡)进行信号校正是至关重要的。 该引导加载程序受到BootLPT/86和5150CAXX的启发,将操作系统加载到RAM中,使PC能够正常运行。虽然需要特定的ROM芯片和至少512KB RAM的IBM 5150,但该项目展示了一种成功且异想天开的替代传统启动方法。创建者提供了引导加载程序二进制文件和原始磁盘映像的链接,供希望复制实验的人使用。

最近一篇Hacker News上的帖子展示了一个引人入胜的项目:从黑胶唱片启动电脑 (boginjr.com)。该项目涉及将启动代码编码到黑胶唱片上,并使用改装的唱机读取和执行它。 讨论该文章的用户分享了项目的视频链接,绕过了带有侵入性cookie请求的网站。评论者对该方法的巧妙和可行性表示赞赏。一位用户思考了从其他老式设备(如SCSI扫描仪)启动的可能性,并建议UEFI可能会简化此类尝试。总的来说,讨论的中心是这项非常规计算壮举的“酷”和令人惊讶的可实现性。
相关文章

原文

Most PCs tend to boot from a primary media storage, be it a hard disk drive, or a solid-state drive, perhaps from a network, or – if all else fails – the USB stick or the boot DVD comes to the rescue… Fun, eh? Boring! Why don’t we try to boot from a record player for a change?

64 512 byte DOS boot disk on a 10″ record, total playing time 06:10 on 45 rpm

Update February 2022: Click here to observe the very same vinyl ramdisk booted on an IBM PCjr!
So this nutty little experiment connects a PC, or an IBM PC to be exact, directly onto a record player through an amplifier. I made a small ROM on-chip boot loader that operates the built-in “cassette interface” of the PC (that was hardly ever used), which will now be invoked by the BIOS if all the other boot options fail, i.e. floppy disk and the hard drive. The turntable spins an analog recording of a small bootable read-only RAM drive, which is 64K in size. This contains a FreeDOS kernel, modified by me to cram it into the memory constraint, a micro variant of COMMAND.COM and a patched version of INTERLNK, that allows file transfer through a printer cable, modified to be runnable on FreeDOS. The bootloader reads the disk image from the audio recording through the cassette modem, loads it to memory and boots the system on it. Simple huh?

The vinyl loader code, in a ROM
(It can also reside on a hard drive or a floppy, but that’d be cheating)

And now to get more technical: this is basically a merge between BootLPT/86 and 5150CAXX, minus the printer port support. It also resides in a ROM, in the BIOS expansion socket, but it does not have to. The connecting cable between the PC and the record player amplifier is the same as with 5150CAXX, just without the line-in (PC data out) jack.
The “cassette interface” itself is just PC speaker timer channel 2 for the output, and 8255A-5 PPI port C channel 4 (PC4, I/O port 62h bit 4) for the input. BIOS INT 15h routines are used for software (de)modulation.
The boot image is the same 64K BOOTDISK.IMG “example” RAM drive that can be downloaded at the bottom of the BootLPT article. This has been turned into an “IBM cassette tape”-protocol compliant audio signal using 5150CAXX, and sent straight to a record cutting lathe.
Vinyls are cut with an RIAA equalization curve that a preamp usually reverses during playback, but not perfectly. So some signal correction had to be applied from the amplifier, as I couldn’t make it work right with the line output straight from the phono preamp. In my case, involving a vintage Harman&Kardon 6300 amplifier with an integrated MM phono preamp, I had to fade the treble all the way down to -10dB/10kHz, increase bass equalization to approx. +6dB/50Hz and reduce the volume level to approximately 0.7 volts peak, so it doesn’t distort. All this, naturally, with any phase and loudness correction turned off.
Of course, the cassette modem does not give a hoot in hell about where the signal is coming from. Notwithstanding, the recording needs to be pristine and contain no pops or loud crackles (vinyl) or modulation/frequency drop-outs (tape) that will break the data stream from continuing. However, some wow is tolerated, and the speed can be 2 or 3 percent higher or lower too.

Bootloader in a ROM; being an EPROM for a good measure

And that’s it! For those interested, the bootloader binary designed for a 2364 chip (2764s can be used, through an adaptor), can be obtained here. It assumes an IBM 5150 with a monochrome screen and at least 512K of RAM, which kind of reminds me of my setup (what a coincidence). The boot disk image can be obtained at the bottom of the BootLPT/86 article, and here’s its analog variant, straight from the grooves 🙂

联系我们 contact @ memedata.com