问题标签 [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.

0 投票
1 回答
3727 浏览

boot - 如何开发可从软盘启动的 Amiga 应用程序(非 DOS)?

跟进“我如何编码和编译 Amiga 应用程序? ”问题,从软盘启动 Amiga 应用程序需要哪个开发库?

更新:(2012-04-10)考虑到问题已解决,我编辑了标题和正文以仅关注图书馆。仍然缺少从可以在另一个问题中询问的软盘部署工具启动。

0 投票
9 回答
8255 浏览

retro-computing - 在 Commodore 64 中的屏幕边框上绘制

我有 25 年的好奇心,我很想了解其中的诀窍。

在 Commodore 64 中,6569 VIC 无法寻址边界。您所能做的就是在光标移动的中心区域绘制像素。边界总是统一的,虽然你可以用戳 53280 改变它的颜色,如果我没记错的话。

尽管如此,我清楚地记得游戏介绍中的边框带有图形,就像它是完全可寻址的一样。我试图了解它是如何工作的,但从未达到目的。传说这是对精灵的巧妙使用,在某些情况下,可以在边界上绘制,但我不知道这是否是都市传说。

编辑:只需从提供的链接之一中阅读此内容

精灵在垂直光栅线上多路复用(超过 8 个精灵,有时多达 120 个精灵)。直到 2007 年 5 月 Group Crest 发布 Krestage 3 之前,人们普遍认为在一条光栅线上不能出现超过 8 个精灵,但分配新的 Y 坐标使其重新出现在屏幕下方。

这是邪恶的......你击败了光栅并在精灵到达那里之前重新定位......

0 投票
7 回答
3951 浏览

assembly - 我在哪里可以找到 8080 到 x86 汇编程序的转换工具?

编辑,好消息!

10 年后,我决定我终于不得不坐下来让这件事发生。我编写了必要的 convert-8080-to-z80-or-x86 和 convert-z80-to-x86 工具,将 Sargon 代码转换为 x86 代码,增加了我在下面讨论的搜索深度,基本上实现了我的所有目标,请参阅项目网站

对于一个复古计算项目,我需要将 1970 年代 8080 汇编语言的主体翻译成 x86 形式。曾经有一段时间,用于实现这一目标的工具是英特尔推出 80x86 系列营销的关键部分。但是我的谷歌搜索技能似乎不适合找到那个原始工具或类似的东西。有谁知道这样的工具是否在任何地方都可用?

编辑

我决定添加一些背景信息,以更清楚地说明我想要做什么。这是出于普遍的兴趣,也可能是为了梳理出更多的反馈。

在之前的项目中,我查看了 1970 年代的国际象棋程序 Microchess,在作者 Peter Jennings 的祝福下,它在现代机器上运行。Peter 在他的网站上讲述了 Microchess 的故事,并提供了 6502 汇编语言源。我的贡献现已添加到故事中,可以在以下位置找到;

http://benlo.com/microchess/microchess9.html

我处理该项目的方法是手动最小化代码转换,使其匹配 C 语言语义,例如我转换了这个;

对此;

我创建了与所需的所有 6502 指令匹配的 C 预处理器宏,例如 LDYi() 使用 (i)mmediate 值加载模拟寄存器 Y。

一段时间后,我发现一个德国人 Andre Adrian 拿走了我的代码并添加了一个接口,以使代码能够从现代国际象棋 GUI 中驱动。很酷,我希望我能想到这一点。这可以在他的网站上看到;

http://www.andreadrian.de/schach/index.html

在同一页面上(我使用谷歌翻译),他链接到 Sargon 的原始版本,另一个经典国际象棋程序,可能复古国际象棋经典,并表示希望有人能以与我相同的方式恢复此代码Microchess(我认为这就是谷歌翻译的意思)。好吧,好吧,我是来服务的!这次我也不会忽略添加GUI界面,或者我会与Andre合作。

Sargon 汇编语言就在这里;

http://web.archive.org/web/20040217034933/madscientistroom.org/chm/Sargon.html

Andre 删除了所有无关的内容,只留下了汇编语言代码;

http://www.andreadrian.de/schach/sargon.asm

现在,情节变厚了。安德烈试图让这些东西使用模拟器自己工作。(编辑 3jan2012 - Andre 已经将这一点向前推进了很多,您现在可以在现代 PC 上运行旧的 Sargon 代码 - 请参阅下面的答案和上面链接的他的网站)。但是有一个复杂的情况,我认为他不明白。Sargon 代码实际上是针对 Z80 的。但是汇编语言不是普通的 Z80 汇编,而是 8080 汇编,带有奇怪的 Intel 风格的 Z80 助记符,只有指令。一些背景;Zilog Z80 是英特尔 8080 的第三方后代。它使用 8080 指令集的二进制兼容超集。Zilog 决定为 Z80 提供一种更简洁、更正交但完全不同(在源代码级别)的汇编语言。第三方(第四方?)显然认为这是一个糟糕的决定,并采用了英特尔风格的 Z80 汇编器替代方案,Z80 扩展以英特尔风格的方式表达。或者他们只是使用现有 8080 汇编器的宏工具添加了 Z80 扩展。没关系; 复杂之处在于 Sargon 代码使用了这种相当奇怪的混合汇编程序。

有几个原因我想要一个 8080 到 x86 的转换器,而不是模拟 Z80 或重复我的 Microchess 项目中的 C 宏方法;

1)这次有更多的代码。如果可能的话,我想避免逐行编辑,即使它是一个最小的转换。

2) 这次我希望代码全速运行。在我看来,好像我可以增加搜索深度,这是我用 Microchess 做不到的。国际象棋代码会占用 CPU 周期,它需要尽可能多的时间,然后再想要更多。

3) 即使我有一个方便的仿真解决方案,我也需要组装这些东西,考虑到奇怪的汇编程序约定,这是一个问题。但是,如果我可以将所有 8080 助记符翻译成 x86,那么我可以在 x86 领域舒适地工作,只需将 <10% 左右的 Z80 扩展行手动翻译成等效的 x86 代码。

对不起这个漫无边际的帖子。希望至少有一个人会觉得它很有趣。另一项要求;我很想得到传奇的 Sargon 程序员 Dan 和 Kathe Spracklen 的祝福。但他们似乎根本没有网络存在。Dan Spracklen 在 LinkedIn 上,但它似乎是一个死的、反应迟钝的帐户。如果有人认识这些人或如何联系他们,请告诉我。

0 投票
3 回答
5819 浏览

graphics - 模式 0Dh 下的 DOS EGA 图形编程

我正在做一些有趣的复古编程。我想要创建的是一个使用 EGA 图形的 DOS 游戏,但我在网上找到一个好的参考资料时遇到了一些麻烦。每个谈论做 DOS 编程的人都假设程序员将使用模式 13h,虽然有些页面提到了其他图形模式,但我还没有找到讨论它们正确使用的一个。

这是我现在正在尝试的工作:

如果您将 set_video_mode() 更改为 0x13 而不是 0x0d,则此示例代码效果很好,但就像我说的那样,我试图在这里获取 EGA 图形,而不是 VGA。:) 我意识到,为了做到每像素四位,我要么需要假设 plot_pixel 同时写入两个像素,要么进行一些操作以确保我只写入我自己写的四个位其实想要。

我的问题是我没有看到我期望的输出——特别是没有颜色!一切似乎都是单色的,这根本不是我想要的。在这种图形模式中使用调色板与在 13h 中使用调色板有什么不同的过程吗?还是我以某种方式调用了与我想要的完全不同的图形模式?指导将不胜感激。

我不认为我的编译器参数是相关的,但以防万一:

0 投票
5 回答
4667 浏览

macos - 我在哪里可以获得用于 Mac OS Classic 开发的资源?

我最近感到无聊并启动了我的旧 Mac OS Classic 模拟器,然后开始怀念为系统编写老式应用程序。所以,我的问题:

  1. 我在哪里可以获得仍然可以针对 Classic 的开发工具?(理想情况下是免费的,因为这只是为了好玩,但如果在 eBay 上获取使用过的 CodeWarrior 版本是最好的方法,那就这样吧。)
  2. 我在哪里可以获得至少参考资料,这样我就不必猜测和检查 Carbon/系统工具箱的方式了?
  3. 是否有任何论坛仍在运行,可以在我遇到困难时回答老式 Mac 问题?

这纯粹是为了好玩,所以不要担心这是多么不切实际。我知道。

0 投票
5 回答
2885 浏览

retro-computing - 复古视频游戏编程

我刚刚在 youtube 上观看了 Super Mario Bros. -1 World 故障,我真的开始想知道这些游戏背后的代码。使用了哪种语言?视频游戏机的操作系统呢?有没有关于这个主题的资源的网站?(我是一名 90 年代的视频游戏玩家,所以我对这些游戏背后的编程特别感兴趣,但如果你愿意,可以随意将其设为 wiki,并包含指向一般视频游戏编程资源的链接)

0 投票
7 回答
3340 浏览

embedded - 从哪个 Forth 开始移植?

我正在寻找开发一个新的Forth系统,旨在使游戏开发更容易在一个或多个复古控制台平台上进行。我有点像 Forth 初学者,需要您的帮助来决定从哪个 Forth 代码库开始移植。

我基本上是在寻找特定 Forth 之间的优缺点。我已经阅读了JonesFORTH的来源以及对它的赞扬和批评,以及关于 ANS 的讨论,不幸的是,我感到相当困惑。据我所知,Forth 社区似乎在标准合规问题上存在相当残酷的分歧,两个阵营都提出了很好的论据,说明为什么标准既好又坏。但是,我似乎找不到关于标准究竟发生了什么变化的实用建议,除了一般意义上的它使事情变得比他们可能需要的更复杂和臃肿。

我希望让目前被汇编或 C 语言开发前景吓坏的程序员和爱好者更容易开发,所以我倾向于更简单的 Forth,但我对 Forth 的了解还不够,无法制作受过教育的决定。

0 投票
1 回答
219 浏览

graphics - 有没有办法从 Applesoft Basic 访问 Apple 2 上的 DHR

在带有 80 列卡的 Apple 2 上使用 Applesoft Basic 时,有没有办法仅使用 POKE 创建 DHR 图形?

我找到了许多使用第三方扩展(例如Beagle Graphics )的解决方案,但我真的很想自己实现它。我搜索了我的 Nibble 杂志收藏和基本书籍,但找不到任何详细信息。

维基百科:

双高分辨率 双高分辨率屏幕的组成非常复杂。除了 64:1 交错之外,各个行中的像素以不同寻常的方式存储:每个像素是其通常宽度的一半,并且每个像素字节在 64KB 内存的第一组和第二组之间交替。在三个连续的像素是白色的情况下,现在需要六个在双高分辨率下。实际上,用于在 Lo-Res 图形块中生成颜色的所有像素图案都可以在 Double Hi-Res 图形中再现。其 RAM 磁盘的 ProDOS 实现通过设计保存到 /RAM 的第一个 8 KB 文件将其数据存储在 0x012000 到 0x013fff 来更容易地访问双高分辨率屏幕。此外,第二页是可能的,第二个文件(或更大的第一个文件)会将其数据存储在 0x014000 到 0x015fff。但是,通过 ProDOS 文件系统的访问速度很慢,并且不适合双高分辨率中的翻页动画,超出了内存要求。

维基百科说 DHR 使用 64:1 隔行扫描,但没有提及实现。另外 Wikipedia 说您可以使用 /RAM 磁盘进行访问,但再次没有提及实现。

我正在开发一个小程序,它绘制一个简单版本的 Connet's Circle Pattern。速度并不像分辨率那么重要。

0 投票
1 回答
320 浏览

graphics - 任何人都可以推荐一种语言来模仿/翻拍原始的俄勒冈小径吗?

我和哥哥一直在 Apple II 模拟器上玩最初的 Oregon Trail,非常有趣。我们想克隆它,有点模仿但仍然是相同的概念和类似的引擎,我们还想通过使用非常相似的分辨率和相同风格的低色位图图形来保持经典的复古魅力(示例来自游戏:http ://www.youtube.com/watch?v=QBOLN7I8omY )。

我的问题是实现这一目标的最简单或推荐的语言是什么?我们应该使用C,在C中做这样的位图图形很难吗?我知道我小时候用 QBasic 制作游戏,如果我没记错的话,我会使用一些位图方法通过字符串数组来制作图形,它是这样的:

其中每个两位数是一个像素,根据数字着色...

无论如何,我认为我已经在这里提供了足够的信息,建议离开:)

编辑:在我职业生涯的这个阶段,我最熟悉 C# 的语法风格。

0 投票
2 回答
384 浏览

winapi - win32读取文件

我正在用 win32 编写一个老式的 mmorpg(它应该在非常旧的机器上运行),我想读取一个可以是 ASCII 或 Unicode(很少)的文件,并计算其中的行数。由于这些机器的内存非常低,我不能一次在 RAM 中保留超过 4KB。

有任何想法吗?谢谢