问题标签 [retro-computing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 中的老式声音编程
很久以前,在一个遥远的星系中,有微型计算机运行 BASIC 并发出简单的声音命令,使机器发出各种奇怪而奇妙的哔哔声和嘶嘶声。
除了发出一些美妙的声音外,它作为一种学习工具也非常有用,因为您可以听到代码的结果。
我希望能够通过它的“信封”命令拥有像 BBC Micro 这样的机器的声音功能,但不必使用模拟器来学习或重新学习 BASIC 各种方言的所有怪癖。
我还想避免生成 midi 或 wav 文件,但想直接用代码制作声音。我试过 winsound.Beep,但在大约 4 个音符之后,音符之间的时间似乎是随机的,而且与 ZX 频谱之类的功能相比,它的功能也算不了什么。
有谁知道如何用 Python 做到这一点?
sd-card - z80 的 SPI 硬件接口
我正在尝试使用 z80 制作一台复古计算机,理想情况下希望它能够从 SD 卡启动。我 100% 准备使用 z80,不想使用带有内部 SPI 硬件接口的微控制器。我想了解计算机的硬件和软件方面,所以 arduinos 和微控制器不在桌面上,因为硬件方面在你购买之前就已经完成了。无论如何,我的主要问题是是否可以结合移位寄存器、一些解码逻辑和软件通过 SPI 模式从 SD 卡读取?我已经在互联网上搜索了几个小时并阅读了几篇文章,但似乎找不到教程。我了解 SPI 协议,但是缺乏有关硬件方面的信息,因为微控制器倾向于内置所有硬件。我打算将SD卡的SOMI连接到移位寄存器的串行输入引脚,SD卡的SIMO连接到移位寄存器的串行输出引脚,然后将一些数据引脚连接到一些触发器和一些解码之间的逻辑,因此如果我输出到特定端口,它将切换触发器。触发器将用作 SD 卡的时钟和芯片使能线。我还将 z80 的一个引脚连接到移位寄存器的锁存引脚(同样在其间使用解码逻辑),这样如果我输出到特定端口,它将锁存移位寄存器的数据。我不关心速度/效率,只要我能准确地从 SD 卡读取数据。另外,我是否将移位寄存器时钟输入连接到与连接 SD 卡的时钟相同的时钟?任何有关如何实现这一点的建议将不胜感激,
retro-computing - 将 Commodore 64 连接到高清电视
从那天起,我就拥有 Commodore Vic 20 和 Commodore 64。它们都可以工作,但我想将它们连接到高清电视。(1) 这可能吗?(2) 连接高清电视需要哪些电缆?
提前致谢。
c - C 中的 textcolor() 和 textbackground()
我有一个使用 C 的项目(我认为我正在使用的编译器是Turbo C++ 3.0)。我使用了一些textcolor()
和textbackground()
函数来为一些文本着色。当我第一次运行它时,控制台是正常颜色的——黑色背景上的白色文本。
但是,当我第二次运行代码等时,背景颜色变为蓝色。
我为上述程序使用了以下代码(唯一使用的格式化文本cprintf()
是洋红色和蓝色背景的文本):
我怀疑这是因为我使用的编译器,但我仍然不确定。有没有办法解决这个问题?
logical-operators - 如何在 ZX Spectrum basic 中模拟逻辑异或?
有时在 ZX Spectrum Basic 中编码时,我需要评估由两个操作数和一个逻辑异或组成的逻辑表达式,如下所示:
由于 ZX Basic 只知道 NOT、OR 和 AND,我不得不求助于某种奇特的计算,其中包括左/右操作数的多次使用。这很尴尬,因为它消耗时间和内存,如果您在 8 位机器上工作,这两者都是稀疏的。我想知道是否有模仿 xor 运算符的巧妙技巧。
为了测试结果,我提供了一个小代码示例:
你能帮我找到一个高效的解决方案吗?到目前为止,我尝试过DEF FN x(a,b)=(a AND NOT b) OR (b AND NOT a)
,但有点笨拙。
编辑:
如果您想测试您的想法,我建议您使用BasinC v1.69 ZX 模拟器(仅限 Windows)。
正如@Jeff 指出的那样,大多数基础知识(例如 ZX one's)确实将零值视为false,将非零值视为true。
我已经调整了样本以使用各种非零值进行测试。
c++ - 如何为基于 ROM 的程序预初始化内存数据结构?
考虑 STL 的unordered_map
. 相同的模板类用于在运行时生成的哈希表和由编译时常量值组成的哈希表。虽然最近版本的 C++ 添加constexpr
了支持,但它并没有扩展到涉及自由存储的更复杂的操作,因此从编译时常量构建哈希表仍然必须在运行时进行,这使得它与在运行时构建任何其他哈希表一样昂贵。
理想情况下,一个完美的编译器会看到这一点并在编译时预先评估哈希表结构并将其直接嵌入程序中。
unordered_map
这让我想到了逆向计算和微控制器,考虑到汇编的开发成本,可以想象它们的软件可以用 C 或 C++ 编写:这些环境通常具有有限的 RAM,但有大量的 ROM,而那些内存中的数据结构(例如可以在编译时预先生成并保存到 ROM 中。
如前所述,C++ 语言不支持这种非平凡的constexpr
. 我知道您可以将其组合在一起,假设您可以将复杂的数据结构基于数组类型或将其简化为constexpr
- 或将其全部写入汇编并在十六进制编辑器中手动设置结构的每个字节并希望它匹配编译器对您的struct
类型的表示(例如)。
那今天怎么做呢?在 RAM 和 CPU 周期非常宝贵的 16 位和 32 位游戏机时代,它是如何做到的?我特别热衷于了解基于 ROM 卡带的游戏,其中的结构可以作为原始内存立即访问。
vms - 在 VMS 7.3 下读取 RSTS/E V6 9 轨磁带
我正在尝试从两个旧的 9 磁道磁带中恢复一些备份。它们是在 1980 年左右在 RSTS/E 版本 6 下创建的。
我在 MicroVAX II 和功能正常的 TU80 磁带机上安装了 VMS 7.3。两个系统功能齐全,因此不是“侏罗纪计算”硬件问题。
我尝试了几种策略,包括 BACKUP 和 EXCHANGE,但到目前为止“不行”。磁带密度未知,但考虑到磁带的使用年限,可能为 800 或 1600。
任何建议,将不胜感激。
提前致谢,
凯文
intel - 带有 Z80 处理器的任何东西都可以运行 Gameboy 游戏吗?
由于 Gameboy 的处理器 LR35902 是 Z80 和 Intel 8080 的混合体,请记住,Z80 和 Intel 8080 的设计基本上是交叉兼容的,任何具有 Z80 处理器的东西都可以运行以下操作码吗?适用于LR35902?我想知道不是因为我希望用我的 TI84 在自习室玩口袋妖怪。
编辑:我知道我必须重新编程控件,可能还有游戏访问 RAM 的方式,但我宁愿这样做,也不愿移植整个游戏。