跳转到内容

Aros/平台/68k 支持

来自 Wikibooks,开放世界的开放书籍
Aros 维基百科的导航栏
Aros 用户
Aros 用户文档
Aros 用户常见问题
Aros 用户应用程序
Aros 用户 DOS Shell
Aros/用户/AmigaLegacy
Aros 开发人员文档
Aros 开发人员文档
从 AmigaOS/SDL 移植软件
适用于 Zune 初学者
Zune .MUI 类
适用于 SDL 初学者
Aros 开发人员构建系统
特定平台
Aros x86 完整系统 HCL
Aros x86 音频/视频支持
Aros x86 网络支持
Aros Intel AMD x86 安装
Aros 存储支持 IDE SATA 等
Aros Poseidon USB 支持
x86-64 支持
摩托罗拉 68k Amiga 支持
Linux 和 FreeBSD 支持
Windows Mingw 和 MacOSX 支持
Android 支持
Arm 覆盆子派支持
PPC Power 架构
杂项
Aros 公共许可证

谷歌翻译 德语法语意大利语西班牙语印地语中文俄语波兰语日语韩语


AROS 是一个开源、可移植的 AmigaOS(TM) OS3.1 的选择/选项。系统友好的 68K AmigaOS (AOS) 二进制文件将在 Aros 68k 上的基于 68k 的 Amiga 硬件上开箱即用。AROS 可能是 Amiga68K 的生命线,因为未来的 kickstart/wb 升级,例如 CD-Rom 启动、USB 启动、潜在的替换所有过时的操作系统部件、驱动程序标准、RTG 标准、PCI 访问标准。

AROS 内核 rom 可以与现有的 OS1.3、OS2.0、OS2.05、OS3.0 或 OS3.1 一起使用,取得不同程度的成功 - 一些硬件将得到支持,但其他硬件仍处于开发中。AROS rom 可以与 AROS 的其余部分一起使用,以替换任何商业 rom + 工作台组合,例如高端 Amiga。您可以根据需要使用 AROS 的任意部分。

AROS 源代码一直或多或少与 M68K 二进制文件兼容(即使所有库源代码都定义了完整的 68k 寄存器参数,大多数公共结构都完全相同)。它实际上从一开始就被设计用于 68k。在真正的 Amiga 上运行的、与二进制文件兼容的 AROS 版本几乎是确定 AROS 与 AmigaOS (TM) 兼容性的圣杯。

原生 AROS 68k 软件无法在任何经典 amiga(TM) OS 上运行,但经典 Amiga(TM) 应用程序可以与 AROS m68k OS 一起运行。Aros m68k OS 构建在很大程度上与从 1.x 到 3.x 的 68k Amiga 操作系统、kickstarts 或工作台系列中的应用程序兼容。

The compatibility may not be perfect or complete in just every area, but this is the goal. 

因此,从软件的角度来看,您只需在 aros 上运行您的 amiga 68k 软件。库、mui 类、设备驱动程序等也是如此。您可以使用您的 amiga USB 硬件及其供应商提供的设备驱动程序。

当 Aros 被移植到 68k 时,Toni Wilen 做了大量工作来开发 kickstart 替换,这些替换现在是 Aros 的一部分。很长一段时间以来,Aros 68k 被少数人使用,然后吸血鬼/阿波罗成为现实,而 Aros 在这里提供了许多优势。与 3.1 相比,它有许多优势,并且硬件要求仍然很低,例如 AHI、USB 支持(Poseidon)、主题、网络协议栈等等。

有些元素甚至超过了 OS 3.9,但其他元素却落后。其中缺少的 18% 中的一部分不再相关,永远不会实现。错误和缺少的功能仍然是一个问题。

“大多数游戏并不使用来自操作系统的太多内容,而且 Aros68k 与 Amiga OS3.1 也是二进制兼容的。吸血鬼的阿波罗核心有一个 CPU,它实现了所有摩托罗拉 680x0 的所有(整数)指令,因此任何使用 68020 中未包含在 68040 或 68060 中的指令的游戏仍然可以从软盘启动到吸血鬼上。但是,有些游戏在任何更快的处理器上都有问题,WHDLoad 对这些问题进行了修复,而且吸血鬼也有一个设置来提高兼容性。将来,吸血鬼也可能允许仅 AGA 的游戏在 OCS 和 ECS Amiga 上玩”

大多数 AROS 程序是用 C 编写的,使用 Amiga API,但也有一些是用 C++ 编写的。

AROS 成为开源的关键在于,这意味着人们可以按照他们想要的任何方向进行 - 那些只想要原始硬件的人可以坚持使用它,并仍然获得增强功能;那些想要使用各种扩展的人可以让他们更好地与核心集成。而那些想要完全不同的硬件的人仍然可以享受类似 AmigaOS 的操作系统。


实际硬件

[编辑 | 编辑源代码]

AROS m68k 资源





吸血鬼 V4 IV

[编辑 | 编辑源代码]

可以在 这里 进行讨论。ApolloOS 是 AROS 的一个分支,它删除了不必要的抽象层,并改进了向后兼容性,例如创建 Graphics.library 的兼容替换,该替换由 AROS 使用,并从 ApolloOS 内核 中删除了 OOP.library,AmigaOS 用户认为这是不必要的,这在 AROS 许可范围内是可以的。

将 hdf 写入 sd/cf/hd,您将获得可启动驱动器作为结果。该工具实际上称为 Win32DiskImager,只需使用它将 hdf 成功放到 sd 卡上即可

尝试从 SD 卡启动,您可以尝试吸血鬼启动,在 这里 可以找到



吸血鬼 V2

[编辑 | 编辑源代码]
works via sd card boot 


吸血鬼 2000 V500

2020 年 5 月从 sd 卡启动视频


吸血鬼 1200 V2

2020 年 5 月启动


吸血鬼 600 v2

希望它很快能在 V600 上运行,一段时间运行良好,然后突然就不行了。


吸血鬼 500 V2+

最终再次在 V500 上启动,并且还在 V1200 上启动


原始平台

[编辑 | 编辑源代码]

AROS Vision 发行版大型下载

最新 nightly build ABIv1

要在 Amiga 上安装 AROS,您需要一台内存足够大的计算机。目前最小内存需求约为 6 MB,但可能会更改。为了有效运行任何应用程序,您需要更多的内存。AROS nightly 也是 Olaf 的 AROS68k Vision 发行版的基底,它针对纯 68k 编译,因此应该可以在任何 Amiga 上运行。建议至少使用 040 处理器。

首先,您需要一个足够大的硬盘驱动器,并预留一个至少 100-200 MB 的可启动分区。如果您只是想试用纯 AROS68k nightly,那么就需要这样。添加贡献或安装 AROS Vision 将占用更多空间。您可能还希望在那里放置一些您选择的 Amiga 程序,那么合理的大小肯定会超过 1 GB。

您可以在您的 Amiga 上下载 nightly 的 ISO 镜像和贡献的 gz 存档,但请记住,您需要将它们解压缩到空的可启动分区中。对于 ISO 镜像,您可以使用 diskimage 设备:http://aminet.net/package/disk/misc/diskimage.m68k-aos,但您可能会内存不足。

目前最简单的方法是在主流计算机上的目录中准备您的分区的內容,将其挂载为您选择的 UAE(在 Windows 下显然是 WinUAE)下的驱动器,然后简单地将目录的內容复制到通过 USB-IDE 适配器连接到 PC 的 Amiga 驱动器或通过 CF 适配器连接的 CF 卡。

为了使 AROS68k 分区在真实硬件(或 UAE,就此而言)上软启动,这意味着没有 AROS ROM,只是从真正的 Amiga ROM 启动,您需要编辑启动序列。请记住,您需要使用 AROS/Amiga 编辑器在 AROS68k/Amiga 端进行操作,因为 Windows 文本文件的回车符与 Amiga 格式不符,并且使用 Windows 编辑器保存的脚本在 Amiga 上不可执行。这对于 Linux 文本编辑器来说不是问题。

您只需要修改启动序列的第一行,改为

   boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz

如果您想使用支持 P96 的 RTG 卡,则需要将 P96 驱动程序所在的路径附加到 AROSBootstrap,例如使用 PicassoIV 时,启动序列中的初始条目应类似于以下内容:引用(已选择)

   boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz boot/amiga/PicassoIV.card boot/amiga/CirrusGD5446.chip

请记住采用实际路径并保存文件。

还请添加

   SetPatch

紧接第一行之后,像往常一样,您可以指定选项 QUIET,我建议您这样做,除非您需要调试 setpatch。

现在,您有一个带有 AROS 分区的 Amiga 格式化驱动器,您可以选择在 UAE 下测试启动它,或者将其连接到您的 Amiga 并尝试从那里启动。玩得开心。

 decompressing aros to drive with a bootable partition, be it a cf card, and adding arosbootstrap followed by kickstart image file should produce a bootable environment
  1. 将 CF 卡连接到 Amiga(通过内部 IDE-to-CF 转换器)
  2. 从 WB3.1 软盘启动 Amiga
  3. "HDToolbox" 准备 CF 卡(= 内部 "硬盘驱动器")
  4. 将 CF 卡连接到 Linux,通过 "mount -t affs /dev/sdb1 foldername" 挂载
  5. 将 AROS-m68k-bootiso.iso(已挂载)中的所有文件复制到 'foldername'(= CF 卡)
  6. 将 CF 卡连接到 Amiga,从 WB3.1 软盘启动
  7. 修复 CF 卡上的文件权限: "protect hd0:#? rwed all"(其中 hd0: = CF 卡)
  8. 编辑 hd0:S/Startup-Sequence,添加第一行(取自 amiga-m68k-boot/bootdisk-amiga-m68k.adf)

boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz

完成。移除 WB3.1 软盘,并重启。

需要编辑您的启动序列以包含类似的内容

boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz

然后是您 P96 RTG 驱动程序文件(.chip 和 .card)的路径和名称(假设您想使用显卡。建议删除 prefs/env/sys/theme.var 以去除皮肤。您之后可以再次启用它,如果您愿意。

在 A4000/CSPPC 上启动 AROS 运行良好。从 Amiga 4000 IDE 冷启动需要 35 秒。

如果您将 Amiga 连接到互联网,您当然可以直接在 Amiga 上格式化您的分区,下载 ISO 镜像并使用众多实用程序中的一个进行挂载,最好使用 diskimage 设备(可从 Aminet 获取),并将文件直接复制到您的 Amiga 上,无需任何磁盘交换。

请务必从 AROS 网站 或备用 Sourceforge 网站 获取 ISO 镜像 - 它以 AmigaOS HUNK 格式提供。tarball(bzip2(bz2) 存档用于调试 AROS 本身,并且以 ELF 格式提供。.adf 和 rom bin 也可以在 distfiles 目录中找到。在这里可以找到备用 构建和编译链

每日更新列表可从 ezrec 克隆镜像RepoOhloh 获取。来自 AROS 世界的最新消息摘要可以在 AROS Planet 上找到。

Amiga.org 第一阶段主题第二阶段主题 和 EAB 第一个主题第二个主题 - 正在进行。Natami 主题AW.net MinimigEvilWiki 博客

状态 AROS m68k 应用程序


模拟器

[编辑 | 编辑源代码]

Emu68(ARM 硬件上的 68k)

[编辑 | 编辑源代码]

PiStorm(Altera Max)(A500 A2000)板将允许您使用

PiStorm32Lite(Efinix)(A1200)板将允许您使用 RasPi Zero2-W Zero 2W(RP3A0)或 Compute Module 4,以及 RasPi 3B+、RasPi 3A、Raspi4,尽管需要更多工作

米歇尔的 Patreon 文章和新闻GitHubGitHub 和 [irc.libera.chat:6697 / #pistorm-emu68 IRC]

  • 2019 年 Pi 3b+ 和 4
  • 2020 年 添加了 Pi400 键盘和 capstone 反汇编器
  • 2021 年重构为仅 64 位
  • 2022 年版本 0.10 到 0.11,由于集成了 RasPi4 和 CM4 计算模块中使用的 BCM2711,这些变化被整合到主分支中
  • 2024 年 Emu68 版本 1.0 - 主 JIT 循环从 AArch64 汇编重写为 C
  • 2025 年 PiStorm16 用于 Amiga 600,使用 Efinix FPGA 芯片,概念和计划用于进一步的工作

另一个选择是在 ARM 硬件上使用 Caffeine AROS 68k 在其上的 m68k 模拟。对性能感到惊讶(以积极的方式 32/64 位)。该项目称为 Emu68,目前正在积极开发中。该项目带来了一种在裸机 ARM 上运行的非常快的 m68k JIT。在该模拟器之上将运行 m68k 版本的 AROS。所以,是的,这不是完全的速度,但仍然比真正的 Amiga 模拟快得多。JIT 已经处于能够执行简单的 m68k 应用程序(当然是指那些不需要 AmigaOS 或 AROS 的应用程序)直接与 RasPi 硬件对话的阶段。在下一阶段将开始构建在此 JIT 上运行的 m68k AROS 版本。

对于 jit emu,AArch64 并不是那么糟糕,我已经为我自己保留了 18 个 A64 整数寄存器,并且仍然有足够的寄存器用于 gcc 生成的代码以及 JIT 翻译器。始终将程序计数器、状态寄存器以及所有 D 和 A 寄存器保存在其 A64 对等寄存器中。FPU 寄存器始终存储在 ARM 寄存器中。

JIT 代码将拥有约 12 个用于自身使用的临时寄存器,能够将其用作 32 位或 64 位寄存器。m68k 上下文只加载一次,即 Emu68 启动时。只有在必要时才保存(或更新)它,从而节省了在 32 位 ARM 模式下进行的大量保存/恢复操作。

现在,AArch64 方面还有哪些其他消息?MMU 设置现已完成。查询可用内存、所有外围设备的 MMIO 范围以及视频内存。它们都映射到最低的 4GB 区域,以便 m68k 硬件驱动程序可以与 RasPi 组件通信。在地址空间的最高位,有 Emu68 内核和前 4GB 内存范围的直接映射。映射可能像这样(在 QEMU 上模拟的 RasPi 3B)

     
    0x0000000000000000 - 0x000000003affffff: User RAM, cached
    0x000000003b000000 - 0x000000003bffffff: 
    0x000000003c000000 - 0x000000003fffffff: VC4 memory, non-cacheable
    0x00000000f2000000 - 0x00000000f2ffffff: RasPi peripherals, device memory type
    0x00000000f3000000 - 0x00000000f31fffff: RasPi per-cpu region
    0x00000000f3200000 - 0xffffff7fffffffff:
    0xffffff8000000000 - 0xffffff8000ffffff: Emu68 core, JIT cache
    0xffffff8001000000 - 0xfffffffeffffffff:
    0xffffffff00000000 - 0xffffffffffffffff: 1:1 map of the first 4GB, non-cacheable, supervisor only

如您所见,内存映射中有一些空隙,会导致尝试访问时出现异常。不仅如此,m68k 代码无法访问 Emu68 地址空间,因为它远远超出了其寻址能力。MMU 映射在早期启动期间加载和修改了很多次,因为 Emu68 内核必须从内存的开头移动到可用 RAM 的顶部,但另一方面,所有设置现在都很清楚了。


  • PiStorm


  • RaspPi v2 v3 v4

Emu68 内核的其他部分?将 MMU 设置和内核移动例程从 C 重写为汇编语言。尤其是后者是必要的步骤,因为要移动的其中一项是堆栈,而在使用任何高级语言时对它的控制非常有限。此外,汇编语言中的 MMU 设置现在与内核的物理位置无关,前提是它在 RAM 内的任何 2MB 页面边界上对齐。

FPU 支持

首先,内核假设它加载到 0x00080000 的物理地址。这在 RasPi 上是正确的,但在其他机器上只是一个美好的愿望。例如,Pinebook 保留了最低的 2MB 区域用于 ATF - ARM 可信固件。该区域不应也不应该对不受信任的软件(例如操作系统)访问。此外,生成的二进制文件缺少一个特殊的标头,该标头在 RasPi 上未使用,但在尝试通过 uboot 加载和启动内核时非常有用。标头指定了一些基本内容,例如 2MB 页面内的加载偏移量(这是神奇的 0x00080000 值),它声明内核使用的基本 MMU 页面大小,它说明内核是否希望加载到最低可能的内存区域,或者如果在 2MB 边界上的任何位置都可以。它还声明了内核的字节序,以便例如 uboot 可以拒绝加载它,如果机器不支持请求的模式。标头还包含两个操作码的空间,允许使用分支操作码跳过它。为什么只需要一个的时候却有两个?嗯,这个技巧允许使用其中第一个的一部分作为常规 EXE 文件的标识符。这样一来,就可以将 PE 标头嵌入内核中,使其同时成为有效的 RasPi、uboot 和 EFI 文件。很狡猾,但令人印象深刻!


  • Pinebook Pro (2019) 64 位 ARM8v Rockchip RK3399 SOC,带 Mali T860 MP4 GPU IPS 1080p

https://www.pine64.org/pinebook-pro/

  • ISO 英国版本
  • ANSI 美国版本

PineBook Pro 怎么样?我已经让它启动代码,但还不能使用缓存。代码正常加载,设置 MMU 映射,转储整个设备树并重新定位内核。显示器还没有准备好,但这并不是首要任务。到目前为止,它看起来像这样

    [BOOT] Booting Emu68 runtime/AArch64 BigEndian
    [BOOT] Boot address is 0xffffff80000800a0
    [BOOT] Build ID: 4236bd740a2dda0091e3a2a2ad69e8e5ad5f4496
    [BOOT] ARM stack top at 0xffffff8000080000
    [BOOT] Bootstrap ends at 0xffffff8000090000
    [BOOT] Kernel args (0x00000000f3dbc000)
    [BOOT] Local memory pool:
    [BOOT] 0xffffff8000090000 - 0xffffff8000ffffff (size=16187392)
    [BOOT] Device Tree dump:
    [BOOT] 
    [BOOT]  model=Pine64 Pinebook Pro. (50696e6536342050696e65626f6f6b2050726f00)
    [....]
    [BOOT] System memory: 0x0000000000200000-0x00000000f6ffffff
    [BOOT] Moving kernel from 0x0000000000200000 to 0x00000000f7000000


获取最新的 WinUAE,它内置了 AROS ROM 映像。

可选地,您可以获取整个夜间 构建,其中包含 ROM 和 AROS 系统,但对于大多数人来说,这不是必需的。设置 WinUAE “主 ROM 文件” = aros-amiga-m68k-rom.bin 和 “扩展 ROM 文件” = aros-amiga-m68k-ext.bin。arosbootstrap 方法旨在方便地进行真实 Amiga 测试,无需刻录 EEPROM 等。

配置 WinUAE 以模拟标准 A1200,但使用完整的 68020 CPU(24 位模式未标记)。选择 2MB CHIP、64 MB Z3 FAST。在扩展选项卡上,为 RTG 卡提供一些 RAM(我有 16 MB)。然后将 AROS 目录附加为硬盘并从它启动。这将需要一些时间,但最终您应该看到 WinUAE 启动到 Wanderer 640x480x8。

重要:确保使用 JIT。没有 JIT,加载速度会慢 3-4 倍,而且 AROS 非常容易崩溃(大多数情况下是 input.device 中的内存分配问题)。有了 JIT,它“非常稳定”(至少对于移动窗口 ;)

使用最新的 winuae 测试版,参数为 -log -serlog,以查看串行日志调试(确保 rom 启用串行日志构建)

使用 -serlog -log 打开日志窗口(也会自动写入文件),或者如果您不想看到日志窗口,请勾选杂项面板中的日志复选框。

  1. 夜间 amiga-m68k-bootiso 下载到您的电脑或 Amiga 上,如果连接了互联网。
  2. 解压缩包含 ISO 的存档到您电脑上的某个目录。您可以使用 WinRAR 或 IsoBuster 之类的程序来执行此操作。
  3. 在您的 Amiga 上准备一个格式化好的 Amiga 磁盘,其中包含一个空的引导 AROS 分区(最好是优先级最高的)。您可以使用 FFS,尽管它有缺陷,但也可以使用 PFS3 作为文件系统。
  4. 使用 IDE-USB 适配器将 Amiga 磁盘驱动器(假设它是 IDE 驱动器)连接到您的电脑。
  5. 启动 WinUAE。将您解压缩的 ISO 目录作为驱动器安装到 WinUAE 中。
hardware>harddrives>add directory or archive.

或者我认为您可以将您的 ISO 存档安装到:

hardware>harddrives>add hardfile.
  1. 将您的 USB 连接的 Amiga 硬盘驱动器安装在硬件>硬盘>添加硬盘中,然后从您的常规可引导分区启动 WinUAE。
  2. 使用您选择的任何文件管理器,将 AROS 安装从 ISO 或 ISO 目录复制到您真实 Amiga 硬盘驱动器上的 AROS 分区。Diropus?确保您的 Amiga 驱动器上的 AROS 分区是可引导的,并且具有最高优先级。
  3. 现在您可以将您的 Amiga AROS 硬盘驱动器连接到您的 Amiga 控制器。无论是内部 IDE、FastATA,还是通过 ACard SCSI-IDE 适配器连接到 SCSI 控制器。请注意,CSPPC 或 CSMK3 控制器目前尚不支持,并且会导致启动时出现问题。
  4. 您的 Amiga 现在可能需要一些时间,因为 Kickstart 3.1 会等待 30 秒让驱动器旋转起来,然后软启动 AROS。您将能够观察到它,因为它会提供屏幕输出。从硬盘引导的 AROS 68k 并不像 AOS 那样是即时的,但它不会花费很长时间。
alternatively you could establish a serial debug connection between amiga and whatever else machine you use (likely with an serial sub-d adapter 25>9 pin, null modem cable and serial-USB adapter) and observe the debug output on terminal window on the alternate machine. using tera term on pc. you have to choose your USB port. and debug baudrate: 115200

正在运行


UAE E-UAE

[编辑 | 编辑源代码]

AROS 68k 有两个 ROM 文件,一个是 Kickstart,另一个是 Kickstart ext,您需要这两个文件。模拟器应与 A1200 设置完全相同,但使用完整的 020 及更高 CPU,配备 4MB 快速 RAM,如果可能的话,还要配备 RTG。它应该可以工作。如果 AROS 没有显示磁盘提示或出现插入 DEVS: 错误,那么您应该确保可引导磁盘(硬盘 HDF 或软盘 ADF)可用。

需要在启动序列的开头添加 arosbootstrap 命令,指向您的 ks 映像和 rtg 驱动程序。

boot/amiga/AROSBootstrap ROM boot/amiga/aros.hunk.gz boot/amiga/PicassoIV.card boot/amiga/CirrusGD5446.chip


uae.rc 或 euae.rc 或 uae.config(它们是文本文件) - 检查这些选项是否在里面设置。

kickstart_rom_file=<path>

kickstart_ext_rom_file=<path>

此选项指定要加载的扩展 ROM 映像的文件路径。

gfxcard_size=<n> (默认值为 0)

模拟具有 <n> MB 图形内存的 RTG 图形卡。选择大于 0 的 <n> 将启用图形卡或所谓的“Picasso96”模拟。最多可以模拟 32 MB 的图形卡内存。

E-UAE 必须模拟 32 位 CPU(68020 或更高,而不是 68ec020)才能支持图形卡模拟。

确保串行端口模拟已启用,这是所有非 WinUAE 版本中所需的(WinUAE 始终在内部模拟串行中断)。

正在使用

[编辑 | 编辑源代码]

缺失的功能

intellifont/compugraphic font support (TrueType is indeed the way forward, but it is another resource pig on anything but high-end 
Amigas. And besides, Intellifont should be implemented anyway for backwards compatibility.)
cdrom filesystem (missing L:cdrom-handler. Is it in Aros68k rom? It should be on disk, see note no. 1)
no crossdos (L:fat-handler is missing. Is it in Aros68k rom? It should be on disk, see note no. 1)
recoverable ram volume support is non existent (RAD)
No Overscan support
No PCMCIA ram support

缺失的磁盘组件

C/cpu
ed
edit
magtape (I don't know anyone who has used it, and I highly doubt it is required for backwards compatibility)
remrad (no rad support)
setfont (setdefaultfont does not provide the same functionality. e.g.: missing setfont tooltypes)
CLASSES/DATATYPES/anim.datatype (these datatypes seem implemented, but their classes are physically absent)
animation.datatype (these datatypes seem implemented, but their classes are physically absent)
cdxl.datatype (these datatypes seem implemented, but their classes are physically absent)
CLASSES/GADGETS/tapedeck.gadget
DEVS/audio.device (AHI is fine as a way forward, but it is a resource pig on anything below a 68020 on native) 
mfm.device
parallel.device
DEVS/DOSDRIVERS/aux
rad
cd0 (iso0 is present but we have the renaming issue. See note no.1)
pc1 (maybe a small omission)
DEVS/KEYMAPS/ (it is full of PC keyboard keymaps and a SUN one. But what about Amiga keymaps?)
DEVS/MONITORS/ (missing A2024, dblntsc, dblpal, euro36, euro72, multiscan, ntsc, pal, super72 and vgaonly. A generic one doesn't suit, 
see note no. 1)
DEVS/PRINTERS/ (missing all printer drivers but postscript. Not that it is really needed, but at least, "generic" and "file" drivers 
should be included) 
FONTS (not a single one of the old native ones present. I understand that there are TTF replacements, but then see note no1.) 
L/aux-handler
cdfilesystem (see note no. 1)
crossdosfilesystem (see note no. 1)
port-handler
queue-handler
LIBS/68040.library (680x0.library exists- specific processor libraries are unnecessary. insert setpatch at the beginning of the ss and the universal 680x0.library with the patches for specific processor will be automatically loaded. plug and play. definitely a gain with aros. no libs mess here.)
bullet.library 
PREFS/overscan
pallete
printergfx
printerps
sound (yes, there is AHI, but I have already mentioned its issues)
wbpattern
REXXC/hi
rxc
rxset
tcc
tco
te
ts
waitforport
SYSTEM/diskcopy
intellifont (ftmanager doesn't cut it, as I mentioned before)
nofastmem
TOOLS/bru (not that I or anyone else care or require it for backwards compatibility, but some backup option should exist for completeness)
cmd
iconedit
lacer
memacs (don't use it or care about it, but why leave it out when it is PD?)
prepcard
TOOLS/COMMODITIES/crossdos
mouseblanker (couldn't care less. But then it is not difficult to implement, isn't it?)

笔记

为了向后兼容,一些 AmigaOS 组件被替换为其他具有不同名称的组件。可以将它们恢复为原始名称,或者创建指向实际结构的占位符/链接。

一般来说,您可以轻松地添加任何内容,只要它不依赖于可能未实现或实现方式不同的内部结构。例如,您可以轻松地添加任何与 shell 相关的功能,添加更多库等等。部分情况下,您甚至可以替换现有组件。例如,我用 MUI38 替换了 Zune,因为我想要的一些软件无法工作(例如 IBrowse)。唯一的缺点是首选项不再起作用,所以我创建了一些解决方法,例如预定义的首选项文件,这些文件会被复制。

crossdos 不存在,并且在 Aros(除了 68k 之外)中,没有人需要它,也没有可用的源代码,因此机会很渺茫。缺失的磁盘组件。正如我写的那样,您可以添加几乎任何内容,只要它不依赖于未实现的低级组件,它就可以工作。例如,我不记得“cpu”,但我已经添加了许多组件,所以它可能在那里。您也不需要包含“ed”或类似组件,因为您可以在 shell-startup 中简单地定义它。例如,我定义并执行 annotate。Aros 中的数据类型系统不同,因此您不能简单地添加或替换来自 3.X 的数据类型(我已经测试过了)。数据类型无疑是一个可以悬赏的候选者。在 Aros Vision 中,我为此创建了小型 Hollywood 程序,并使用 Magellan 的文件类型系统来执行它们。Audio.device 缺失?它应该在那里,但肯定使用 AHI,这是 Aros 的标准。打印和打印到文件可以工作(至少在 UAE 上,在真实硬件上没有测试过)。我认为可以轻松添加 68040.library。我在 Aros Vision 中使用 Waitforport,它与来自 Aros 的 Rexxmast 一起使用。

基于 68k 的监视器调试

[编辑 | 编辑源代码]

一些监视器可以工作

串行调试

[编辑 | 编辑源代码]

串行调试需要每台需要相互通信的机器上的软件,以及某种物理线缆(通常是早期 Prolific 或 FTDI 基于 USB 的线缆)。

软件 PC 或其他 - Putty、TeraTerm、minicom 等

软件 Amiga - Term

直接输出到串行端口,以便它可以到达另一端。

在此处阅读更多信息

您可以在 Windows 上使用 Bray's TerminalTermite、TeraTerm 或 RealTerm。它们可以在 Linux 下使用 Wine 工作。在 Linux 上使用 CuteCom(基于 qt,使用 dmesg 获取设备 /dev/ttyS0 或 /dev/ttyUSB0)、picocom、minicom 或 gtkterm。互联网上有大量控制台和终端模拟器。只需下载其中一些,找到让你满意的那个 :-D

串行控制台速度 可以是每秒 1200、2400、4800、9600、19200、38400、57600 和 115200 比特。

  • A500/A600 限制在约 19.2 kbit/秒,传输速率不超过 2KB/秒(例如,波特率 19200,8 个数据位,1 个停止位,无奇偶校验)。
  • 未扩展的 A1200 可以预期 57.6 kbit/秒,传输速率不超过 7KB/秒。

为了诊断串行调试的引导问题,需要重新编译 AROS m68k 以支持这些较慢的速度。

更快的串行速度需要更快的 CPU(最佳选择是 030 及更高)或一个额外的专用快速串行端口(可能不受 AROS 支持)。

另外,您还需要将 Amiga 串行端口连接起来,以便拥有调试日志。默认的基本速率是 115200 8n1,但您可以在 arch/m68k-amiga/ boot/start.c 第 47 行更改它。

EAB 论坛帖子 上了解更多信息

串口 9pin -> 25pin

[编辑 | 编辑源代码]

你需要的是一条串口空模电缆。它只是一条串口电缆,但 RX 和 TX 线交叉。

9pin DB9F 母头用于 PC,25pin DB25F 母头用于 Amiga。

如果你有一条标准的 RS232 串口电缆,你可以购买一个空模适配器,将其连接到标准串口电缆,然后连接两台电脑。

第二个选择是直接购买一条 RS232 空模电缆,连接两台电脑。

只需快速搜索“Amiga 串口空模电缆”。但是,许多电缆都配备一个或两个公头,因此需要一个或两个额外的母头到母头适配器。

使用 add44k 或其他工具降低你的屏幕深度,这样可以稍微提高速度。更多的平面 = 更多的 DMA 负载 = 可用于串口的时间更少。RTG 会有所帮助,但你必须将其配置为在 RTG 屏幕可见时完全不显示自定义芯片屏幕。

这里有一些建议

1. 确保你的电缆设置中有一个空模适配器。在你的电缆链中的某个地方。空模适配器会在设备上的某个地方写着“NULL MODEM”。

2. 右键单击 Amiga 资源管理器图标,并确保选择了 PC 的正确串口(COM1:、COM2:)… 我相信默认情况下是 COM1。确保串口在设备管理器中列在“端口(COM 和 LPT)”下。确保设备管理器中设备图标上没有 (!) 或 (x) 标记。

3. 测试电缆设置:在 PC 上启动超级终端,在 Amiga 上启动终端程序。将两者都设置为 9600 波特率、8 个数据位、无奇偶校验、1 个停止位、无握手。在一台系统上输入的字符应该显示在另一台系统上。如果不行,那就是电缆或配置问题。

4. 测试握手:在两端启用硬件握手,并通过在每台机器上输入来检查连接性。如果你通过了步骤 3,但在这里失败了,那么你的串口电缆接线错误(或者,不太可能,空模适配器接线错误)。

有些人使用 68000 机器(A500/600)上的 baud bandit 和 020+ 机器上的 new8n1,但 AROS 有自己的串口驱动程序,该驱动程序尚未与以下串口硬件扩展进行测试

  • VarIO
  • HyperCOM +3
  • SilverSurfer
  • Twister 1200

USB 串口

[编辑 | 编辑源代码]

使用串口转 USB 适配器和 **RealTerm** 115200 波特率,端口 70 奇偶校验:无,数据位:8,停止位:1。

在 PC 上使用 TeraTerm(将端口和波特率调整为 115200),你可以捕获启动日志并将其提供给 aros-dev 列表或 Aros-Exec。欢迎反馈。

有人告诉我串口 USB 适配器有问题,或者并不总是能正常工作,但我没有得到详细的解释?其中一些适配器在 EEPROM 编程器中存在问题,因为它们需要串口电缆上的 12V 电压,但 USB 适配器不提供这种电压。用于数据传输和基本通信的最便宜的 USB 适配器仍然是不错的选择。

Amiga 1200 时钟端口的 Subway USB 控制器
[编辑 | 编辑源代码]
Deneb USB for Amiga 3000/4000
[编辑 | 编辑源代码]

由于无法在 Deneb 中使用大于 512 kb 的 ROM 镜像,我认为我无法从闪存启动 AROS kickstart。如果我尝试使用 algor kick 初始化前半部分,计算机将陷入无限的启动循环中。因此,我在 AROS 启动序列的开头使用 blizkick 加载 kickstart 的第一部分。我通过这种方式能够捕获的所有内容如下。blizkick 应该能够管理 1MB ROM,但显然不接受 ELF 文件。否则,使用 algorkick 接受的 512KB kickstart 文件是理想的选择。

需要日志

[编辑 | 编辑源代码]
  • **始终**包含完整日志。(你可能有多个硬件配置,知道确切的硬件非常重要)。
  • **始终**描述硬盘的连接方式… 有时日志会暗示没有连接 IDE 硬盘,并且可能在第三方 SCSI 板上有一些东西。请注意,如果没有相同的硬件,调试非 AROS 内置的 HD 驱动程序(= 第三方扩展 + 启动 ROM)兼容性实际上是不可能的。(什么都没有记录,因为所有内容都由启动 ROM 处理,包括驱动程序检测、RDB 解析等…)

例如,这是我的真实 A1200/68060(使用 USB 串口适配器)的日志。

[reset]
[SysBase] fakebase at: 0000020c
RAM lower: 00001000
RAM upper: 001fffff
BSS lower: 00135620
BSS upper: 0013577f
Protect: : 00001000
    bss: : 00135620
    rom: : 00135788
    ext: : 001a2e10
[prep SysBase]: 00001000
[new  SysBase]: 00001508
CPU: 68060 FPU: 68060
[ColdCapture] Ignoring AOS->AROS trampoline
[start] InitCode(RTF_SINGLETASK, 0)
configchain
Found board: mfg=8512 prod=17 size=00020000 serial=00000000
diag=00000080
configchain done
adding ram boards
ram boards done
coolcapture=00000000 kickmemptr=00000000 kicktagptr=001fe7a8
kickchecksum=001fe78a
* 00195afc:  127 02   3 "kernel.resource"
* 0013e380:  120 42  41 "exec.library"
* 00154e1c:  110 82  41 "expansion.library"
* 00151798:  105 82  41 "utility.library"
* 00154f3a:  105 01  41 "diag init"
* 0015a930:  104 81   2 "partition.library"
* 001413d8:  102 81  41 "aros.library"
* 0019d028:  100 81  41 "potgo.resource"
* 00196118:   99 01   2 "processor.resource"
* 00153af0:   94 81  42 "oop.library"
* 0017cb64:   92 81   1 "hiddclass.hidd"
* 0019ce50:   80 01   0 "cia.resource"
* 0019d864:   80 01   1 "FileSystem.resource"
* 0019469c:   70 81  41 "battclock.resource"
* 001894ac:   66 81   1 "graphics.hidd"
* 001b5e3c:   65 81  41 "graphics.library"
* 001bb4d0:   60 81  41 "layers.library"
* 0015dd4c:   50 81  41 "timer.device"
* 00168784:   50 81  41 "audio.device"
* 0019dcac:   50 81  41 "m680x0.resource"
* 0018a698:   45 81   1 "keyboard.hidd"
* 0018afb4:   45 81   1 "mouse.hidd"
* 0019dadc:   45 01  41 "misc.resource"
* 0015f7f0:   44 81  41 "keyboard.device"
* 0016746c:   44 81  41 "gameport.device"
* 0018b88c:   40 81   1 "amigakbd.hidd"
* 0018c2b8:   40 81   1 "amigamouse.hidd"
* 001a390c:   40 81  41 "keymap.library"
* 0019d634:   39 81  41 "disk.resource"
* 00166988:   35 81  41 "trackdisk.device"
* 0015ecb0:   30 81  41 "input.device"
* 001dee48:   15 81  50 "intuition.library"
* 0018ffe8:    9 81   1 "amigavideo.hidd"
* 00193b20:    8 81   1 "uaegfx.hidd"
* 001644f8:    4 81  41 "console.device"
* 0016d8ac:    4 81  41 "ata.device"
* 001ea1a4:    0 81  41 "gadtools.library"
* 00178bcc: -   1 81  41 "afs.handler"
* 001fcfee: -  45 01  41 "alert.hook"
* 00155ba2: - 119 01  41 "Boot Strap"
* 0014e6fc: - 120 00  41 "dos.library"
* 00156394: - 120 80  41 "mathffp.library"
* 001f2f60: - 120 80  44 "workbench.library"
* 0015ae60: - 121 04   1 "FSLoader"
* 001ef89c: - 122 84  44 "icon.library"
* 0014fb0e: - 123 04  41 "LDDemon"
* 001f8fa0: - 123 04  41 "shellcommands.resource"
* 001fc5d4: - 123 04  44 "workbook.resource"
* 001fcc52: - 123 00  40 "workbench.task"
* 00171f74: - 124 84  41 "con.handler"
* 0017c476: - 125 04   1 "amberram.handler"
* 00197704: - 128 04  41 "dosboot.resource"
KickTag residents:
* 001fe78a:  110 00   0 "1234-BootPrefs0"
Resident modules after KickTags merge:
+ 00195afc:  127 02   3 "kernel.resource"
+ 0013e380:  120 42  41 "exec.library"
+ 00154e1c:  110 82  41 "expansion.library"
+ 001fe78a:  110 00   0 "1234-BootPrefs0"
+ 00151798:  105 82  41 "utility.library"
+ 00154f3a:  105 01  41 "diag init"
+ 0015a930:  104 81   2 "partition.library"
+ 001413d8:  102 81  41 "aros.library"
+ 0019d028:  100 81  41 "potgo.resource"
+ 00196118:   99 01   2 "processor.resource"
+ 00153af0:   94 81  42 "oop.library"
+ 0017cb64:   92 81   1 "hiddclass.hidd"
+ 0019ce50:   80 01   0 "cia.resource"
+ 0019d864:   80 01   1 "FileSystem.resource"
+ 0019469c:   70 81  41 "battclock.resource"
+ 001894ac:   66 81   1 "graphics.hidd"
+ 001b5e3c:   65 81  41 "graphics.library"
+ 001bb4d0:   60 81  41 "layers.library"
+ 0015dd4c:   50 81  41 "timer.device"
+ 00168784:   50 81  41 "audio.device"
+ 0019dcac:   50 81  41 "m680x0.resource"
+ 0018a698:   45 81   1 "keyboard.hidd"
+ 0018afb4:   45 81   1 "mouse.hidd"
+ 0019dadc:   45 01  41 "misc.resource"
+ 0015f7f0:   44 81  41 "keyboard.device"
+ 0016746c:   44 81  41 "gameport.device"
+ 0018b88c:   40 81   1 "amigakbd.hidd"
+ 0018c2b8:   40 81   1 "amigamouse.hidd"
+ 001a390c:   40 81  41 "keymap.library"
+ 0019d634:   39 81  41 "disk.resource"
+ 00166988:   35 81  41 "trackdisk.device"
+ 0015ecb0:   30 81  41 "input.device"
+ 001dee48:   15 81  50 "intuition.library"
+ 0018ffe8:    9 81   1 "amigavideo.hidd"
+ 00193b20:    8 81   1 "uaegfx.hidd"
+ 001644f8:    4 81  41 "console.device"
+ 0016d8ac:    4 81  41 "ata.device"
+ 001ea1a4:    0 81  41 "gadtools.library"
+ 00178bcc: -   1 81  41 "afs.handler"
+ 001fcfee: -  45 01  41 "alert.hook"
+ 00155ba2: - 119 01  41 "Boot Strap"
+ 0014e6fc: - 120 00  41 "dos.library"
+ 00156394: - 120 80  41 "mathffp.library"
+ 001f2f60: - 120 80  44 "workbench.library"
+ 0015ae60: - 121 04   1 "FSLoader"
+ 001ef89c: - 122 84  44 "icon.library"
+ 0014fb0e: - 123 04  41 "LDDemon"
+ 001f8fa0: - 123 04  41 "shellcommands.resource"
+ 001fc5d4: - 123 04  44 "workbook.resource"
+ 001fcc52: - 123 00  40 "workbench.task"
+ 00171f74: - 124 84  41 "con.handler"
+ 0017c476: - 125 04   1 "amberram.handler"
+ 00197704: - 128 04  41 "dosboot.resource"
SS  lower: 00131620
SS  upper: 0013561f
callroms 10
Read boot ROM base=00ea0000 type=d2
bus=80
size=4f2
Call boot rom @00013a84 board 00ea0000 diag 000139b8 configdev 000036c8
callroms done
[ATA--] ata_init: ata.device Initialization
[ATA--] Gayle ID=d1. Possible IDE port=00da0000
[ATA--] Status=00
[ATA--] ata_init: MemPool @ 68084178
[ATA--] ata_init: BootloaderBase = 00000000
[ATA--] Gayle ID=d1. Possible IDE port=00da0000
[ATA--] Status=00
[ATA>>] ata_RegisterBus: Analysing bus 0, units 0 and 1
[ATA>>] ata_RegisterBus: IRQ 2, IO: da0000:da1010, DMA: 0
[ATA  ] Approximate number of iterations per 100 nanoseconds: 1
[ATA  ] ata_InitBus(0)
[ATA00] ata_InitBus: Device type = 0
[ATA01] ata_InitBus: Device type = 0
[ATA  ] ata_ResetBus(0)
[ATA  ] ata_InitBus: Finished
[ATA>>] ata_RegisterBus: Bus 0: Unit 0 - 0, Unit 1 - 0
[ATA--] ata_Scan: Initialising Bus Tasks..
[ATA  ] ata_setup_unit(0,0)
[ATA  ] ata_setup_unit(0,1)
[ATA--] ata_Scan: Waiting for Buses to finish Initialising
[ATA--] ata_Scan: Finished
romtaginit
initresident 139c6 '1230scsi.device'
romtaginit done

还包括 KS3.1+/OS3.1+ 工具/showconfig 的输出

PROCESSOR:      CPU 68060/68060fpu/68060mmu
CUSTOM CHIPS:   AA PAL Alice (id=$0023), AA Lisa (id=$00F8)
VERS:   Kickstart version 45.57, Exec version 45.20, Disk version 45.3
RAM:    Node type $A, Attributes $505 (FAST), at $8000000-$CFFFFFF (80.0 meg)
       Node type $A, Attributes $505 (FAST), at $7000000-$7F7FFFF (15.5 meg)
       Node type $A, Attributes $703 (CHIP), at $80000C8-$1FFFFF (~3970.0 meg)
BOARDS:
Board (phase 5):   Prod=8512/34($2140/$22)
    (@$40000000, size 64meg, subsize same)
Board + ROM (HD?) (phase 5):   Prod=8512/12($2140/$C) (@$E90000 64K)

用于 amiga-m68k 的 C:GDBStub 已准备好供所有人使用。仅配置文件

win32.serial_port=tcp://127.0.0.1:1234

如果你希望模拟器延迟启动直到有人先连接,请添加 /wait。

要启用 GDBStub,请执行以下操作

AROS> Run C:GDBStub

下次 AROS 因陷阱而崩溃时(或者你运行“C:GDBStop”),GDB 存根将在(真实或虚拟)串口上等待 GDB 连接

使用以下 .gdbinit 与 m68k-elf-gdb 连接到 AROS 下的 GDB 存根

---- .gdbinit ---
file  ../AROS.amiga-m68k/distfiles/aros-amiga-m68k-rom.elf
cd ../AROS.amiga-m68k/bin/amiga-m68k/AROS
source .gdbinit
## Uncomment for WinUAE connection
# target remote localhost:1234
## Uncomment for serial connection
# target remote /dev/ttyS0
## Fix up Debug_ModList
set variable Debug_ModList = &KernelBase->kb_Modules
--------------

然后所有常规的 AROS GDB 调试宏都可以使用,例如“loadseg”、“modlist”、“showtask”等。

我已经能够通过内核和用户代码获得完整的跟踪,并通过此方法获得完整的 GDB 支持。这使得 m68k 调试变得更加容易。

你可以获得 m68k-elf-gdb

这样一来,PARANOIA_CFLAGS 就消失了。如果你希望启用“ -Wall -Werror”构建,只需在 configure 中添加“ --with-paranoia=yes”,整个树将被构建,以便任何编译器警告都会停止构建。

你需要注意某些问题

  • 日志正在吃掉一些行和换行符。(或期望换行符 + 换页符而不是单个换行符)。
[ColdCapture] Ignoring AOS->AROS trampoline [start]
InitCode(RTF_SINGLETASK, 0)

例如,上面的行应该在 trampoline 后有换行符,还有其他一些行似乎完全丢失了(由于行太长而被截断?)以及早期的 configchain 行。

  • 最令人困惑的是缺少扩展/自动配置相关的行。(“configchain”)。在某些日志中缺少 ATA 行是正常的,因为 A4000 IDE 无驱动程序检测比 A1200 更简单。
  • 早期的启动菜单是否正常工作?(即使它似乎卡住了,也一直按住两个鼠标按钮,例如 Blizzard SCSI 初始化大约需要 10 秒)。是的,它可以正常工作。我记得 Blizzard scsi 有点麻烦。按住 lmb+rmb 重启到早期启动屏幕

另一个尝试直接连接到 IDE 端口的驱动程序已经成功地将我从硬盘引导到一个只有红色光标、没有其他内容的屏幕。无论如何,它似乎启动了当前的 nightly 版本。在随后的尝试中,我能够启动到 AROS,没有启动序列。命令工作正常。

[reset]
[SysBase] fakebase at: 0000020c
RAM lower: 00001000
RAM upper: 001fffff
BSS lower: 00135be8
BSS upper: 00135de3
Protect: : 00001000
   bss: : 00135be8
   rom: : 00135df8
   ext: : 001a14b0
[prep SysBase]: 00001000
[new  SysBase]: 00001500
CPU: 68060 FPU: 68060
[ColdCapture] Ignoring AOS->AROS trampoline
[start] InitCode(RTF_SINGLETASK, 0)
SS  lower: 00131be8
SS  upper: 00135be7
[ATA--] ata_init: ata.device Initialization
[ATA--] Gayle ID=d1. Possible IDE port=00da0000
[ATA--] Status=50
[ATA--] ata_init: MemPool @ 6807f338
[ATA--] ata_init: BootloaderBase = 00000000
[ATA--] Gayle ID=d1. Possible IDE port=00da0000
[ATA--] Status=50
[ATA>>] ata_RegisterBus: Analysing bus 0, units 0 and 1
[ATA>>] ata_RegisterBus: IRQ 2, IO: da0000:da1010, DMA: 0
[ATA  ] Approximate number of iterations per 100 nanoseconds: 1
[ATA  ] ata_InitBus(0)
[ATA00] ata_InitBus: Device type = 1
[ATA01] ata_InitBus: Device type = 1
[ATA  ] ata_ResetBus(0)
[ATA00] ata_ResetBus: Wait for Device to clear BSY
[ATA00] ata_ResetBus: Wait left after 0 ms
[ATA  ] ata_ResetBus: Wait DEV1 to allow access
[ATA  ] ata_ResetBus: DEV1 1/2 TimeOut!
[ATA  ] ata_ResetBus: DEV1 1/2 Wait left after 50 ms
[ATA01] ata_ResetBus: Wait for Device to clear BSY
[ATA01] ata_ResetBus: Wait left after 0 ms
[ATA  ] ata_ReadSignature(00)
[ATA 0] ata_ReadSignature: Status 50 Device a0
[ATA 0] ata_ReadSignature: ATA[PI] device present. Attempting to detect specific subtype
[ATA 0] ata_ReadSignature: Subtype check returned 00:00 (0000)
[ATA 0] ATA_EXECUTE_DIAG sent
[ATA 0] ata_ReadSignature: Further validating ATA signature: 1 & 0x7f = 1, a0 & 0x10 = unit
[ATA 0] ata_ReadSignature: Found *valid* signature for ATA device
[ATA  ] ata_ReadSignature(01)
[ATA 1] ata_ReadSignature: Status 00 Device b0
[ATA 1] ata_ReadSignature: ATA[PI] device present. Attempting to detect specific subtype
[ATA 1] ata_ReadSignature: Subtype check returned 00:00 (0000)
[ATA  ] ata_InitBus: Finished
[ATA  ] ata_init_unit(0)
[ATA>>] ata_RegisterBus: Bus 0: Unit 0 - 2, Unit 1 - 0
[ATA--] ata_Scan: Initialising Bus Tasks..
[ATA1654092] IRQ: Checking busy flag: device still busy. ignoring irq.
[ATA  ] ata_setup_unit(0,0)
[ATA  ] ata_setup_unit: Enabling IRQs
[ATA00] ata_Identify: Executing ATA_IDENTIFY_DEVICE command
[ATA00] IRQ: Checking busy flag: device still busy. ignoring irq.
[ATA--] ata_Scan: Waiting for Buses to finish Initialising

由于每台扩展设备都已从这台机器上物理移除,但仍然收到相同的日志,缺少“configchain”及其朋友?

可能是 cyberstorm 0x00f00000 映射 ROM 做了一些奇怪的事情…

  • 下载 http://aminet.net/dev/moni/mon165.lha
  • AOS 冷启动(断电,开机),在没有启动序列的情况下启动。(冷启动很重要,暖启动后奇怪的居民可能会处于活动状态)
  • 运行“mon”
  • 输入“ ] f00000 10000 dump.rom”保存 ROM 数据。(现在你可以正常重启了)

压缩并通过电子邮件发送该文件。

选择模式后,屏幕模式首选项崩溃,这种情况从一开始就一直在发生。我很久以前就尝试调试过这个问题,但没有发现任何有趣的东西。现在我只需要忽略崩溃,并在需要更改模式时重启就可以了 :P

m68k 原生环境源代码

[编辑 | 编辑源代码]

如果你想设置 m68k 构建环境,只需运行“arch/m68k-amiga/doc/build-toolchain.sh”脚本。它会下载并编译所有 m68k 交叉工具,并将它们安装到 /opt/m68k-elf(或任何你想要安装的位置)

Jason 的典型 m68k ./configure 是

$ configure—target=amiga-m68k \
            --with-optimization="-Os" \
            --with-paranoia="-Wall -Werror" \
            --with-serial-debug \
            --enable-debug=all

所有 AROS regcall 宏都还没有在 -O2 下进行广泛测试。有些没有 m68060 来测试。默认优化是“-Os”,它在没有或只有少量指令缓存的系统上通常比 -O2 更能提升性能。

以前编译你自己的版本的方法…

arch/m68k-amiga/doc/README.txt - add GCC/Binutils fetch/compile/install script

regcall 配置(目标 amiga-m68k)。**注意** 堆栈调用配置(目标 amiga-m68k-eabi)已过时。

注意:要使用 regcall 配置,你**必须**应用此页面底部的补丁到 GCC 4.5.1,才能让 GCC **不**践踏 A6。实际上,我检查了我的宏的修复,让 A5 正常工作。我还有另一个修复,应该允许未修补的 GCC(想要使用 A6 作为帧指针)正常工作。

由于 nightly AROS m68k 构建旨在在所有 Amiga 架构(m68000 - m68060)上运行而无需修改,因此我始终使用 -m68000 编译。你可以随意使用不同的 ./configure——with-optimization=… 选项编译你自己的自定义构建。

编译的 m68k-elf binutils

./configure—prefix=/opt/m68k-elf—target=m68k-elf

按如下方式编译 gcc-4.5.1

$ cd gcc-4.5.1
$ ./configure  \
        --without-headers \
        --disable-threads \
        --disable-libssp \
        --disable-nls \
        --disable-shared \
        --without-pic \
        --prefix=/opt/m68k-elf \
        --target=m68k-elf \
        --program-prefix=m68k-elf- \
        --enable-languages=c

—program-prefix=m68k-elf - 不需要,它似乎自动添加了前缀。

构建并安装 gcc-4.5.1(到 /opt/m68k-elf,或任何你设置的——prefix)

lib 目录需要手动创建

mkdir bin/amiga-m68k/AROS/Development/lib
$ export PATH=$PATH:/opt/m68k-elf/bin
$ cd AROS
$ autoconf
$ ./configure --target=amiga-m68k \
              --with-optimization="-Os" \
              --with-serial-debug
$ make

(等待 zune/betterstring 结束构建)

$ make kernel-link-amiga-m68k

(等待一段时间)最终你会得到以下文件:最终成功完成!(总时间大约 4 小时…)

  • bin/amiga-m68k/AROS/aros-amiga-m68k.elf
  • bin/amiga-m68k/AROS/aros-amiga-m68k.rom

elf 文件在调试时可以提供给 GDB 连接到 UAE 串口…

rom 文件可以这样提供给 UAE

uae -s kickstart_rom_file=bin/amiga-m68k/AROS/aros-amiga-m68k.rom

在作为“库存”A1200 AGA 运行的 UAE 上测试

干净的 AROS 构建,使用以下配置行

../AROS/configure—target=amiga-m68k—with-optimization="-Os"—with-serial-debug

也尝试从头开始构建,有时并非所有文件都会自动重建。

https://gitorious.org/aros/aros

关于 m68k 可“ROM”代码的注意事项

  • 没有全局变量 - ROM 中没有 .data 或 .bss 部分!
  • 全局常量是可以的 - 我们有 .rodata

如果您需要打开库,您必须显式执行此操作 - 您不能使用 AROS 自动打开功能。

VBCC 支持一些 C99 和所有 C89。GCC 和 LLVM 都支持从 C89 到 C++14 的所有级别。VBCC 根本不支持 C++。恐怕沃尔克没有像 PHX 对 VAsm 和 VLink 一样有那么多时间来更新他的编译器。此外,LLVM 和 GCC 背后都有庞大的团队:分别为 Apple 和 Linux。LLVM 有更好的许可证情况(BSD 等效许可证与 GPL3),而 VBCC、VAsm 和 VLink 都需要书面许可才能进行任何商业用途。

VBCC 不支持 GCC 中的 GNU 扩展。Clang 支持,但几乎与 GCC 一样重。坦率地说,我怀疑更新 GCC 后端的工作量不会比在我 GitHub 帐户上完成 LLVM 68k 后端的工作量少。

GCC 生成的 68K 代码很糟糕,这意味着 AROS 的二进制文件更大,执行速度比 Amiga 3.x 的二进制文件慢。GCC 的问题不在于编译器框架本身,而在于将中间表示翻译成最终二进制文件的后端。后端从最佳的中间代码生成次优的 68k 代码。最终,无论使用 GCC 还是 LLVM,我们都需要一个新的或更新的后端。

Amiga 3.x 操作系统有很大一部分是用汇编代码编写的,而在 AROS 中,这只是一小部分(严格来说是需要与硬件进行接口的操作系统)。

Linux 宿主构建

[编辑 | 编辑源代码]

debian7 构建,获取源代码请参考“building aros68k”。

至于 x86 宿主构建的依赖项,您还需要

-x11-dev 头文件和链接库

为了编译贡献(您首先需要将 contribs 文件夹复制到 aros 文件夹中,然后“make contrib”,您需要 cmake 和 gperf 包用于 aros-owb。

首先配置:从并行文件夹构建,您需要指定

../AROS-source/AROS/configure—enable-x11-shm—enable-x11-hidd—enable-debug—with-serial-debug=yes

首先,这两个选项都应该让你与 x11 系统集成,以便获得任何图形输出。最后两个选项是由于调试,它们可以在普通用户构建中省略。

遇到以下错误的人

   Making     country files...
   /home/wawa/x86-build/bin/linux-i386/gen/workbench/locale/countries/makecountry: System locale is invalid

用“dpkg-reconfigure locales”设置 en_GB.UTF-8 作为默认值暂时解决了这个问题。否则以 root 身份编译可以解决这个问题

首先,需要在您的(交叉)编译器主机上安装的 aros 依赖项包

    binutils-source
    libcloog-ppl-dev (adds lots of other dependencies)
    g++ (may be necessary too look for gnu-c++ compiler package)
    libelf-dev
    bison
    flex
    gcc-4.5-source (doesn't seem to be necessary anymore since the compiler version has been upgraded)
    libmpfr-dev
    libmpc-dev
    libecm-dev
    netpbm
    automake
    libpng-dev (libpng12-dev)
    libc6-dev-i386

获取 V1 源代码

源代码可以从以下链接下载:http://aros.sourceforge.net/de/download2.php 或通过 git(假设您已安装此包)

    mkdir AROS-source
    git clone git://gitorious.org/aros/aros.git AROS-source
    cd AROS-source
    git checkout ABI_V1

现在实际上在与 AROS-source 目录同级的单独构建目录中构建 aros

    mkdir build
    cd build
    ../AROS-source/AROS/configure --target=amiga-m68k --with-serial-debug=yes
    make

这里还有另一种方法:在单独的目录中构建 aros 68k 交叉工具

我们从头开始。目录结构(请注意,这与前面的示例不同)

<some dir>
- aros (clean aros sources here, no binaries!)
- build-m68k-tools (cross compiler will be built here)
- yet another directory where aros-m68k will be build (I just use "build")
    <some dir>
    cd build-m68k-tools
    ../aros/configure --target=amiga-m68k --with-aros-toolchain-install=/opt/aros-m68k
    sudo make -s crosstools

(sudo 是必需的,因为工具链将安装在 /opt/aros-m68k 中。否则构建将失败)

交叉工具现在应该已成功构建。

现在我们回到我们的主目录

cd ..

在另一个单独的目录中构建 aros

更改到构建目录,配置并在那里构建 aros。

    ../aros/configure --target=amiga-m68k --with-aros-toolchain-install=/opt/aros-m68k --with-aros-toolchain=yes --with-serial-debug=yes
    make -s (-s to keep it less verbose)

aros 现在可以在 /build/bin/amiga-m68k/AROS 中找到,可执行文件都以 elf 格式存在,因此如果我们希望 aros 从 amiga kiskstart 软启动,我们需要将 boot/amiga/AROSBootstrap 转换为 hunk 可执行文件,这可以使用为主机体系结构编译的工具来完成,在本例中为 ubuntu,它位于 /build/bin/linux-i386/tools/elf2hunk 中

boot/amiga/AROSBootstrap 需要替换为结果文件。s:startup-sequence 需要修改以加载 aros.elf

boot/amiga/AROSBootstrap ROM  boot/amiga/aros.elf

现在将 /build/bin/amiga-m68k/AROS 目录的内容复制到 amiga 可引导分区。您应该能够在 uae 或实际的 amiga 计算机上使用它引导 aros。:)

一些额外的 make 选项

make distfiles - 应该自动将 elf 可执行文件转换为 hunk(待确认)

make kernel-link-amiga-m68k - 构建 kickstart rom 文件 aros.elf

make (在特定模块的源目录的 mmakefile.src 中找到的模块名称)-quick - 使用快速选项构建所需的模块,以节省一些时间。

请注意,为了在编辑源代码后重新构建模块,必须先删除构建目标目录中的编译二进制文件。为了处理和构建某些模块,可能需要先编译完整的构建。

ELF 到 HUNK 和反向

[编辑 | 编辑源代码]

它确实使用 Amiga hunk 文件,并且你可以混合和匹配到一定程度(AROS 组件是 ELF 文件),但 AROS 可以加载两者:) 双向工作,不仅仅是 AROS 环境中的 Amiga 文件,还有 Amiga 环境中的 AROS 可执行文件。要使用的工具是 ELF2HUNK,由 Jason McMullan 开发。有一些限制。最值得注意的是,使用 arosc.library(类似 ixemul)的 AROS 应用程序将无法运行(至少现在还不行),arosc.library 本身也无法运行,因此将其迁移过去对你没有任何帮助。但是,那些坚持纯粹使用 AmigaOS API 的应用程序将可以运行。这个限制使得它在目前非常有限。为了使 AROS 组件在 AmigaOS 上运行,您最好看看 AfA

请记住,在相同的硬件上,Amiga68k 仍然比 AROS 优化/更快,但我们正在努力解决这个问题。

事实上,我们计划在未来切换到 ELF 可执行文件,而不是可重定位对象。我们仍然需要文件中的重定位信息。如果你在具有重定位数据的 ELF 可执行文件上调用 strip,你会保留重定位数据,但会丢失 SysBase 符号。但是,错误的“strip”会使任何当前的可执行文件都无法使用:我们需要符号表和重定位信息才能加载可执行文件。

第一次尝试

2008 年底
Heron,又名 Gregory John Casamento,决定接手 m86k 移植。
2009 年 1 月 5 日,星期一
ARaNyM 配置问题...目前正在尝试让 ARaNyM 运行,以便我可以继续在 680x0 上构建 AROS。

这个移植在这篇文章发布后几个月令人遗憾地失败了,事实证明,为了完成这项工作,很难检索参考材料以及旧硬件(例如 ROM 内核手册、技术通讯、开发工具包等)。

2010 年 1 月 4 日
Gary Pearman 写道:欢迎来到我的第一篇博文。这个博客主要用于我收集我的想法,并让所有 AROS 人员了解我在 Kickstart ROM 替换奖励方面的进展。干杯,Gaz。
2010 年 1 月 12 日
在与 AROS 开发列表和 #aros 上的许多人交谈后,我决定改变对奖励的态度,尝试不同的方法。这个想法是忘记 .unmaintained 中的东西,而是尝试让 AROS 为 m68k 主机编译。要开始工作,我需要在 Aranym(是的,一个 Atari ST 虚拟机)上安装并运行 debian m68k。
2010 年 1 月 23 日
进展 - 好的,所以我决定放弃 Aranym 路线,直面我对 AROS 构建过程的恐惧!基本上,我从头开始创建了 m68k-amiga 构建文件,并将它们基于 ppc-sam440 构建文件,这些文件很新、干净。我已经删除了 unmaintained 中几乎所有内容,并且只是尝试让内核编译。
2010 年 3 月 21 日
工作 工作 工作 - 最近我一直忙于其他工作,所以没有时间去看(现在已经过期的)奖励。
截至 2010 年 4 月
关于 摩托罗拉 68k 移植 AROS 的工作再次停止。

最初,该端口将不依赖于 MMU 的存在,并将首先针对 UAE 第一阶段。 某些专用的 Amiga 硬件支持(目标是能够启动大多数 KS1-3 磁盘,包括游戏和演示,并涵盖处理器 68000、68020、68030、68040 和 68060)将在 第二阶段 之后进行。 然后进行带有低级调试器的 alpha 测试,并生成完整的错误报告。 然后进行优化,最后是常规测试。

  • 使它能够正确编译(这是一项非常艰巨的任务 - Jason 在 2010 年第一阶段完成)
  • 添加低级内核代码(任务切换、中断处理等.. Jason 在 2010 年第一阶段完成)
  • 添加硬件驱动程序(鼠标、键盘、图形 P96 RTG、磁盘等.. Toni 在 2011 年第二阶段完成了这些)
  • 一些额外的硬件支持(Gary IDE、afs 处理器等.. Toni 在 2011 年第二阶段完成了这些)

第二阶段是提供一个 *基线* Kickstart 替代品。 请不要期望对非官方 Amiga 硬件(例如 NatamiReplay FPGA Arcade)提供驱动程序,仅限真正的 Amiga 或 UAE。 目前所有时序和显示设置都假定 PAL 配置。 建议使用 RTG 模式,自定义芯片组驱动程序只是一个概念验证(在更重要的功能运行之前,它不会被优化或改进)。

2010 年 10 月 10 日星期日
Jason S McMullan (ezrec) 写道:终于,经过 3 周,我将 AROS 移植到 m68k-amiga 的 m68k 端口初见端倪。 它 无法运行,很快就会崩溃,但我已经完成了 "编译它"、"用 Amiga ABI 编译它" 和 "进入 Exec Init" 阶段。 非常开心。
2010 年 10 月 17 日
m68k-amiga 内核已经签入。
2010 年 10 月 18 日星期一
下午 6:10,Jason McMullan 写道:完成了我的(最小化)gcc 补丁,这些补丁引入了 Fred Fish 的 asm() 标签来用于寄存器参数(regcalls),并且正在努力让 AROS 用它编译。 主要是在重新排列变量声明,使它们全部位于函数的顶部等等。
2010 年 10 月 20 日星期三
我的 GCC 4.5.1 问题已经解决。 使用对 GCC 4.5.1 的微不足道的补丁,将默认的 FP 寄存器从 A6 移动到 A5,以及我签入的新 "gencall.c" 来生成 libcalls,我现在可以执行正确的 Amiga 风格的寄存器 libcalls! 由于 AROS 存根的设计,当您调用使用与您放入寄存器变量的相同寄存器的 Amiga 函数时,您可能会遇到问题,例如,当您告诉 GCC 使用寄存器 a2 作为 foo 时。 这是通过宏解决的。 我负责处理所有这些问题。 我正在使用的工具链只会生成 ELF 二进制文件。 *ROM* 将能够加载并运行 ELF 和 HUNK(最终),但我没有计划在工具链中添加 HUNK 支持。
2010 年 11 月 1 日星期一
Toni Wilen 写道 - disk.resource(trackdisk.device) - cia.resource(cia 中断) - potgo.resource(鼠标第二/第三按钮) - trackdisk.device(目前为只读,基于 PC 驱动程序,需要大量重写,没有 disk.resource 使用,非常依赖于 PC 控制器) - amiga 鼠标 hidd - amiga 键盘 hidd。 Jason 写道太棒了! 我们现在只需要 "仅仅" graphics.hidd 和磁盘块读取,我们就可以在没有 Frankenrom 的情况下启动 AROS 了!
2010 年 11 月 3 日星期三
Jason 写道 KS 3.0:正在 那里! Exec 现在将通过 OS3 库到达启动屏幕! 我现在需要做一个只包含 Install 启动块的磁盘。
2010 年 11 月 3 日星期三
Toni Wilen 委派了 KS 奖励第二阶段。 主要缺少的驱动程序似乎是 gfx hidd,我的第一次尝试将是仅限 UAE 的 Picasso96 HIDD,当显示器正常工作时,其余更新应该相当简单。(主要是 hunk 加载器、expansion.library 自动配置?) 我不反对自定义芯片组 HIDD,但 UAE Picasso96 HIDD(使用 AmigaOS(TM) 侧 Picasso96 使用的原生 UAE Picasso96 辅助例程)将更容易、更快捷地实现,并且还会使非 HIDD 部分更快、更简便地调试。(没有共享 VRAM,更少的代码,1:1 帧缓冲区映射等..)。 我也不明白如果自定义芯片组 gfx HIDD 只是一个虚拟帧缓冲区,失去了所有自定义芯片组功能(硬件精灵、用户铜列表等..),它将是两全其美 :)。 当然,将来需要某种简单的自定义芯片组 gfx HIDD 来显示启动游戏时的可能 CLI 消息,但这应该在其他所有东西都正常工作后才出现,并为有兴趣提供 OCS/ECS/AGA 支持的人提供 "基本级别" 的功能。
2010 年 11 月 8 日星期一
Jason 写道 ROM 现在已经拆分。 "rom" 映像将包含从磁盘启动所需的一切,而 "ext" 映像将包含该任务不需要的一切。 理想情况下,"ext" 磁盘上的库和资源可以在 AFS 文件系统上。 现在,直觉、图形和层都存在于 "ext" 上。

0xf80000-0xffffff: a-m-a-rom.bin - 0xe00000-0xe7ffff: a-m-a-ext.bin.

11 月 7 日星期日
Toni 写道 我需要签入非 hacky 的代码更改,然后睡一觉。

Jason 接着写道 我刚醒来,所以我想现在轮到我了 :D - 两人编程。

2010 年 11 月 12 日星期四
Jason 写道 Shell 正在运行
2010 年 11 月 16 日星期二
第一阶段被认为已经完成。 还包括一些 Amiga hunk 支持。
11 月 22 日星期一
Toni 写道
  • 只使用 WinUAE 测试过,需要最新的 WinUAE beta 版 (2.3.1b6),它重新添加了多年以前删除的 "旧式" RTG 界面,应该可以在所有支持 Picasso96 的 UAE 版本中使用。
  • 仅测试过调色板 8 位模式,以及块状 640x480x8。 16 位和 32 位 PC 风格模式已包含,但未测试。
  • 使用的大多数原生 blitter 函数 = 快速。 但是如果您的 UAE 端口不支持任何 P96 blitter 函数,它将非常慢,当前驱动程序只是退回到非常慢的 get/putpixel 模式。 报告此问题,我会添加 "软件加速" CopyBox() 及其相关函数。
  • 据我所知,只有 WinUAE 有硬件精灵模拟,而且只有在 D3D 模式下(出于某种原因,aoHidd_Gfx_SupportsHWCursor = FALSE 没有任何作用?)
  • Z3 32 位快速 RAM 板现在可以正常工作。
  • UAE 目录文件系统挂起问题已解决(卷标/名称仍然很奇怪......无法使用)
  • 启动序列中的大多数内容都能正常工作(最大的例外是工作台)。 我们决定首先改进 WB/OS 使用,它也使调试更快、更轻松。
11 月 23 日星期二
Jason 写道 因此,这是我的 Kickstart 奖励我任务列表,按照优先级顺序:优先级 0:协助 Toni Wilen。
  • 让 AROS KickStart 能够使用 LDDaemon 从启动驱动器的 Libs/ 目录中提取 AROS 图形、工作台、gadtools 等库 - 清理各种问题,并进行测试。 尝试修复超层/图形循环依赖关系。
  • 让 AmigaOS 3.1 + AROS Libs/ 在 HD0: 上启动 - 来自磁盘的 AmigaOS workbench.library - BCPL 工作,根据需要 - 弄清楚如何处理 ConClip
  • 让 AmigaOS 3.0 + AROS Libs/ 在 HD0: 上启动 - 更多 BCPL 工作
  • 让 AmigaOS 1.3 + AROS Libs/ 在 HD0: 上启动 - 更多 BCPL 工作,兼容性修复
12 月 7 日星期二
Toni 写道 dos.library 兼容性得到了极大的改善(而且它也快得多)。 例如,原始的 WB2/3 磁盘现在可以在没有警告、错误或崩溃的情况下启动。 请注意,工作台不会运行,因为它还没有包含在 ROM 中,Wanderer 是 AROS WB 替代品,太大了。 BCPL 支持即将推出(Jason 正在做这件事)。 Jason 写道 借助 Toni 的 DOS Packets 补丁,以及我今晚的最新签入,我目前可以让 WB 1.3 的 C:Echo(BCPL!)运行。 现在,BCPL 和 Packet 支持基础设施已经到位,WB 1.3/3.0/3.1 的 BCPL CLI 应用程序的完整 AmigaOS 1.3 支持只是一个编程的小事。 我预计到 2011 年 1 月中旬,将有 95% 的工作台 1.3/3.0/3.1 BCPL 应用程序正常工作。 有没有人知道除了 1.x/2.x/3.x 的工作台/安装磁盘上的那些之外,还有其他任何 "主要的" BCPL 应用程序应该测试吗?
12 月 19 日星期日
Toni 添加了 dos 数据包模式 AFS 处理程序的大多数常见部分......Toni 添加了更多缺少的 dos 数据包 AFS 处理程序命令......
2010 年 12 月 27 日星期一
Toni 写道 m68k-amiga AROS 端口现在可以启动 AROS 原始启动序列,没有任何奇怪的副作用(没有插入磁盘请求器或启动 shell 没有关闭等)。 大多数实用程序可以运行,大多数首选项程序至少可以打开。
  • prefs/screenmode 在宽度、高度和深度字符串小部件中显示随机(未初始化变量?)值。(选择任何模式时系统会崩溃,我稍后会调试)GUI 问题对我来说太高级了。(我对 MUI 也有一些个人问题)
  • WB "信息" 菜单无法打开,TextEditor.mcc 无法初始化。(又是 MUI,啊)
  • WB 双击检测非常不可靠。
  • compiler/alib/timedelay.c 和 compiler/include/clib/alib_protos.h 不匹配。 我尝试将 AROS_UFP3() 宏添加到 alib_protos.h,但随后 intuition/menutask_aros.c 拒绝编译。(没什么大不了的,目前它只是使所有 TimeDelay 调用由于 UnitNum 是一个很大的数字而失败)
  • 最后,WB1.3 启动序列现在运行得相当好。 剩余问题:FastFonts (ff) 会损坏所有字体,system/setmap 预期从 OpenDevice() 获得 LONG 返回类型。 将 OpenDevice()/WaitIO()/DoIO() 返回类型更改为 LONG 可以吗? 它对现有程序应该没有影响。
2010 年 12 月 31 日星期五
Toni 写道 SYS:Extras/Zune/ MCC_NList/s/Package-Startup 无法工作(它真的有必要吗?SYS:Classes 此时已经分配了)。 Assign 打开启动控制台窗口并打印 "找不到 Classes",因为启动序列 SYS:Packages 部分在执行脚本之前会 CD: 到包目录。 Package-Startup(和 Shutdown)应该被删除,或者命令应该改为 "Assign LIBS: SYS:Classes ADD"。 另外,C:Assign 坏了,它在 doslist 锁中调用 NameFromLock(),这可能是个坏主意(在非 dos 数据包模式下可能不是问题)。 最后,2010 年的最终年度状态报告
  • Wanderer PNG 图标现在可以正确渲染(需要真彩色 UAE RTG 模式,注意屏幕模式更改会导致崩溃,您必须选择保存 + 冷启动),仅限 WinUAE 的真彩色硬件精灵颜色已修复。
  • Shell CTRL+D 和 CLI faillevel 检查已实现(至少在 dos 数据包模式下可以工作,仍然有一些问题,因为 >NIL: 会吞掉不应该吞掉的某些错误输出)
  • UAE 鼠标滚轮键码不再无限重复。
  • Titanics 压缩器伪叠加可执行文件受支持 :)(真实/完整叠加可执行文件尚不支持)
  • WB1.3 C:FF 不再损坏字体。WB1.3 启动序列现在完美运行。(减去工作台)
  • 还有更多。
2011 年 1 月 7 日星期五
Jason 写道 我刚收到了我的 ACA 1230/56,它将允许我在我的 Amiga 1200 上开始测试 AROS(需要明天买一个性别转换器用于串口!),并且正在努力尝试让 AROS m68k 在真实硬件上运行。祝我好运!我的 A1200 上的第一次启动日志 - 在初始化期间挂起,我将在明天添加一些调试信息。Toni 写道 这可能是与自动配置有关的问题。你能运行 Scout 并附加系统中每个自动配置设备的自动配置详细信息吗?扩展自动调整 z3 扩展板支持已提交。此外,执行重定位现在可以正常工作并已启用。
2011 年 1 月 13 日星期四
Jason 写道 A1200 上的 AROS 非常慢,但我认为这主要是由于默认情况下我获得的未优化的 AGA 隔行扫描模式。我将 amiga-m68k(以及其他一些地方)中保留的 all '#define DEBUG 1's 重置为 '#define DEBUG 0',现在我们可以禁用—启用串行调试(并且仍然可以在串口上获得 SAD)。减少串行调试(并将 OOP MID .bss 放入芯片 RAM 中,事实证明只有 512 字节左右)对图形性能几乎没有改善,所以我暂时让 Toni 去担心它。鼠标在 A1200 上的 AROS 上运行良好,但我没有收到任何按键。我将在明晚调试它,除非 Toni 比我先完成。如果即使在显示器处于空闲状态时它仍然很慢,那就一定有别的原因。Toni 写道 这可能是与键盘无法工作有关,键盘握手工作不良会导致占用过多中断时间。与 WinUAE 快速启动 A1200 周期精确最兼容模式进行比较,如果它同样慢或甚至更慢:它一定是硬件兼容性问题。Gayle 兼容 ata.device 状态:驱动器检测部分工作,应该在今天或明天“完全”工作。(它目前是 ifdefs 的一大堆混乱,在确认工作后将清理干净)。
2011 年 1 月 15 日星期六
Toni 写道 m68k-amiga ata.device 现在完成了。(应该叫它“scsi.device”吗?)。我将特定于 pc 硬件的代码和特定于 amiga 的代码(ata_pc 和 ata_amiga)分开,ata.device 维护者如果感兴趣可以将其合并回 rom/devs/ata.device(我不介意 Amiga 版本是否被破坏,我只是不想破坏“PC”版本或造成意外的数据损坏.. IDE 太奇怪了,太容易被破坏了)。A600 和 A1200 Gayle 接口以及 A4000 类 Gayle 接口受支持。(仅测试了 A1200 真实的 Amiga)。
  • 硬件特定部分已分离
  • 一些 CF 卡(也许还有其他卡?)似乎将 1 作为多重传输大小返回。仅设置 ATA 规范中列出的值(2、4、8、16、32、64、128)
  • 在执行诊断 ATAF_BUSY 等待之后添加了 ATAF_DRDY 等待,上面的 CF 卡如果在执行诊断后但在设置 DRDY 之前发送新命令,似乎会挂起。
  • #ifdef DMA 支持和其他 Amiga 端口不需要的东西。
  • 如果未检测到驱动器,则不初始化设备驱动程序。(仅快速测试)
  • 如果未检测到 ATAPI 设备,则不启动 ATAPI 媒体检查任务。
  • 还有一些我忘记了的东西..

WinUAE 说明:你需要 2.3.1 beta 11(今天晚些时候发布)或更高版本,因为执行诊断尚未模拟。(我不模拟看起来未使用的命令,甚至 m68k linux 或 netbsd 也没有使用它)

2011 年 1 月 16 日星期日
Toni 写道 AROS ROM 加载器终于在我的 A1200 上运行了(Blizzard 1260 + SCSI 套件 + SCSI-IDE + 8G CF 卡)。Blizzard 1260 快速 RAM 和 1230scsi.device 也似乎可以正常工作,即使引导分区挂载(PFS3ds)和自动引导(但第二个分区没有挂载,它被格式化为 SFS。不要问。)。显示器非常慢并且闪烁,我想 sooner or later 需要对原生芯片组驱动程序进行优化.. 加载器和如何构建可重定位 rom 映像的说明将在稍后发布。我还将先进行 A3000 测试。(它必须在公开发布之前工作)。唯一的先决条件是 1M 或更多 MEMF_LOCAL 快速 RAM(在重置期间不会消失的 RAM)或 2M 芯片 RAM(在这种情况下,上部 1M 将由 ROM 使用)。不使用或不需要 MMU(我不想触碰任何与 MMU 相关的东西)。所有内容都由加载的 AROS “ROM” 处理,包括自动配置。当你只有串口输出时,调试这东西花了很长时间.. 我想我必须在 ROM 加载器中包含 HRTMon 调试器 :)
1 月 27 日星期四
Jason 写道 有没有人有兴趣进行 AROS m68k 的 Alpha 测试?现在我们(Toni 和我)需要测试人员来
  • 尝试在 A1200 和其他 Amiga 硬件上运行 AROS
  • 至少拥有 2M 芯片 RAM 和 4M 快速 RAM
  • 能够自己调试他们发现的任何问题
  • 提交修复这些问题的补丁,或者至少是一个演示缺陷的小型 C 或 m68k 汇编测试用例。

我们还没有准备好进行通用测试。如果你不了解 m68k 汇编语言和底层调试器的使用方法,请等待 AROS m68k 开发的下一阶段。这些早期版本的 AROS 只保证会崩溃,破坏你的数据,或释放你 Amiga 中的所有魔力烟雾。你已被警告。

2011 年 2 月 3 日星期四
Toni 写道 是时候检查 Kickstart ROM 替换(第二阶段)的状态了。
  • 唯一缺少的部分是创建与 AmigaOS 二进制文件兼容的可执行文件(ELF 与 HUNK)。我们真的需要某种(非常无聊的代码)ELF 到 HUNK 转换器吗?gcc 永远不会直接创建 hunk 二进制文件,这是很有可能的。(Jason,你是否已经对转换做了一些工作?)
  • 然后是第 4 部分:Michal 的所谓工具在哪里,谁会使用它?:) 启动 Sys:Tools/Screengrabber,进行屏幕截图并将结果文件保存。
  • IMO 这需要在开始 ABI v1(和 dos 包?)合并之前关闭,因为它可能会在很长一段时间内破坏很多东西..
2011 年 2 月 15 日星期二
Jason 写道 我认为 ELF2HUNK 足够让用户在 AROS 下编译非 arosc.library 应用程序并在 AOS 下运行它们,但让 AROS 在 AOS 下运行是一项更大的任务。我现在将 SetPatchAROS 保留下来 - 它足以在 AOS 3.1 下运行非 arosc.library ELF 应用程序。arosc.library 很痛苦,但更糟糕的是 Intuition 和 Exec 中的扩展函数,它们很难干净地添加到正在运行的库中。
2011 年 2 月 16 日星期三
jason 写道 这就是为什么我们接近 m68k Amiga KickStart *Replacement* 赏金的第二阶段结束的原因。在我让 AROS-Contrib 再次构建之后,我的待办事项清单是“Wanderer Lite”,因为 Toni 对 KS Bounty II 的截止日期即将到来,我已经答应他一个适合 A1200(2M RAM)、带有 GUI 的 gdb 的 Wanderer 的 ROM 版本,以及一个窗口任务和对数学库的关注。
2011 年 2 月 26 日星期六
Jason 写道 我一直在清理 BGUI 以在 m68k 和托管 x86_64 上运行,并取得了一些进展。主要的 BGUI 演示现在可以在 m68k 和 x86_64 上运行,存在以下问题,我应该在本周末结束之前解决这些问题。$(PARANOIA_CFLAGS) 已为那些用—with-paranoia ./configure 的人启用。
  • LayoutGroup 失败(m68k & x86_64)
  • 嵌套视图(对齐问题)(m68k & x86_64)
  • 拖放崩溃(m68k & x86_64)
  • PrefMX 复选框(在 m68k 上工作,在 x86_64 上失败)
  • bgui_calculator(在 m68k 上工作,在 x86_64 上失败)
2011 年 3 月 8 日星期二
Toni 写道 用最新的 winuae 试试,它内置了 AROS rom 映像。请注意,使用未公开功能或其他奇怪内容的 WB 程序将无法工作(主要是 2.0+ c:setpatch 和 c:iprefs)。1.3 内容运行良好。原生显示模式 ID 不正确,它们目前使用一些生成的 ID。(AROS 图形子系统存在一些与原生图形相关的限制,需要在它可以 100% 工作之前修复,这不是我的问题)。audio.device 什么也不做。(我还没有费心去处理它,除了分配通道之外,很少需要它)。
2011 年 3 月 9 日星期三
Jason 写道 Workbook 超轻量级工作台/流浪者替代品
  • Workbook 是一个基于 BOOPSI 的工作台替代品,专为非常轻量级的系统设计,即 Amiga m68k。
  • 这是初始原型检入,它可以(在由于我尚未完全诊断的某些内存损坏而崩溃之前)打开磁盘卷、抽屉并启动应用程序
  • 待办事项:停止崩溃、快照、复制、粘贴、重命名、信息等等。

在 m68k 上的编译总大小为 20k。这 *不* 意味着它要替代完整系统上的 Wanderer。它适用于内存不足/CPU 速度慢的系统,以及作为 workbench.library 的练习工具。我计划尽可能使用 workbench.library 挂钩。一旦我让 Workbook 稳定下来,并能够进行一些简单的文件管理(删除、重命名、复制、格式化),我计划让它成为“LoadWB”的 ROM 常驻版本,以便 KS 1.3-3.x 可以使用它作为他们的“工作台”。Workbook 再次强调,对于所有其他体系结构来说,它完全是可选的,并且将驻留在 SYS:System/Workbook/ 中。

2011 年 3 月 9 日星期三
Toni 写道 截止日期还有几周的时间。在被认为完成之前还需要做其他什么事情?我计划做的事情(不确定何时)
  • Paula audio.device
  • 优化原生芯片组 gfx 驱动程序(它目前非常慢)
  • 支持 Picasso96 *.card 驱动程序文件的 HIDD 包装器。(已经部分完成了,但这只是最简单的一部分..)

这让人很烦, “不工作” “错误报告”,期望所有事情都由我和 Jason 迅速完成,即使这与赏金无关,主要是核心代码的更改,无法在没有讨论和计划的情况下完成。这些东西中的大部分是只有 m68k-amiga 端口才需要的,你不能仅仅添加它,然后破坏所有端口(我想这样做,但这不符合工作方式)。WinUAE 方面要轻松得多,因为我可以自由地选择做什么以及何时做,而无需询问任何人。这就是为什么我想尽快完成这个赏金,因为只有这样我才能再次纯粹为了乐趣而做 AROS 的事情,而不会被挟持。(“你仍然需要做这做那,否则...”)。调试和增强将持续进行。

第二阶段被认为已完成。

2011 年 3 月 25 日
Toni 写道
  • 2.x-3.1 WB 磁盘应该可以无问题地引导,现在还包括正确的调色板和鼠标光标设置。
  • 现在完全兼容 WB2+ C:IPrefs。
  • 1.x 除了 C:Run(只输出错误)和 AROS 常驻运行需要 T: -> WB 磁盘必须启用写入。这将在以后修复。
  • devs:system-configuration 已加载并使用(1.x 启动盘颜色正确等)。
  • 支持防重置程序(kicktags、coldcapture 等)。
  • ArosBootStrap 附带源代码树,AROS softkick 加载器可在任何具有 2M 芯片或 1M 或更多本地快速 RAM 的 Amiga 上运行。(*)

已知问题

  • 不要使用 OS3.5+ setpatch,它在没有特定 setpatch 检测的情况下将永远无法工作。
  • 系统补丁(如 FBlit 等)无法兼容。不要使用。
  • Scalos 不工作,原因未知。
2011 年 4 月 3 日
Toni 写道:大多数只使用引导块加载硬件加载器的游戏应该可以正常工作,除非它们假设 KS1.x 如内存分配和覆盖 OS 结构,或者做了些只在 1.x 上偶然有效的愚蠢操作。(这并不罕见,不幸的是)。100% 的兼容性是不可能的。不可能同时制作既兼容 1.3 又兼容 3.0/3.1 的 ROM。即使 3.1 的兼容性也不能达到 100%,因为它需要实现所有已知和未知的 bug 100%! (可以保证至少有一个程序只能由于某种 OS 错误而工作)。

一些更新说明

  • real audio.device 已实现,但只进行了最小的测试(audio.device 很少用于声音,通常只用于通道分配)。
  • AROS 图形模式 ID 更新的第一部分已完成,模式 ID 和深度已分开。下一步是将生成的模式 ID 替换为真正的 AOS 模式 ID。
2011 年 4 月 15 日
Toni Wilen 写道:随机状态报告。

UAEGFX RTG/定制芯片组屏幕切换终于正常工作。即使 whdload 现在也能完美运行。

2011 年 5 月 26 日(星期四)
Toni 写道:PutTemplate() 光标加速,应该能大大提高原生芯片组速度,不再有缓慢的平面 getpixel/putpixel “光标”。
2011 年 6 月 19 日(星期日)
Toni 写道:ArosBootStrap 现在接受更多参数,一个或多个额外的常驻文件(类似于 BlizKick)。例如,“arosbootstrap aros.elf.gz scsi.device_40.12(A3000)” 允许 AROS 从我真实 A3000 上的 SCSI 启动。(scsi.device 是使用 remus 包附带的 romsplit 从 A3000 ROM 中提取的)。

下一阶段是支持使用 AOS Picasso96 .card 和 .chip 文件的 RTG 板。(我认为我几个月前已经提到过)。

“arosbootstrap aros.elf.gz libs:picasso96/CirrusGD542X.chip libs:picasso96/PicassoII.card scsi.device_40.12(A3000)” 已经在我扩展的 PicassoII A3000 上加载,PicassoII.card FindCard() 和 InitCard() 函数已经成功并工作。引导菜单、引导动画和引导 shell 已快速测试。(现在是休息的时候了,使用 Amiga 格式的可引导 CF 将 aros.elf.gz 从 PC 移动到 A3000 SCSI-IDE 将在 30 次左右的交换后变得非常烦人)。

  • 仅支持 320x240、640x480、800x600,使用硬编码的或多或少标准的计时变量。
  • 至少在理论上,所有卡支持的颜色深度都可用。
  • 不检查大多数卡功能,例如支持的宽度/高度/深度/像素时钟组合。
  • 将所有位图放在 VRAM 中,如果程序分配和释放大量位图,VRAM 可能会很快用完或变得碎片化。
  • 如果可用,使用驱动程序的光标功能。
  • 支持卡的直通切换(如果可用)。

以后会改进,当我/如果我想的话,使用真实硬件进行调试与模拟相比会浪费大量时间,模拟几乎是即时的。另外,顺便说一句,其他 RTG 卡和 A4000 也会很好,提示,提示:D

查找您的 RTG 板所需的 P96 驱动程序,请注意,有些驱动程序成对出现(.card 和 .chip 文件),文件的顺序并不重要。使用 arosbootstrap 加载 ROM 映像和驱动程序文件,检查串行日志。请注意,目前没有支持的方法可以直接将驱动程序文件合并到 ROM 映像中。没有串行日志 = 无法帮助。

高级芯片组,A3000 SCSI。(当使用 SCSI 芯片时,winuae 的日志中会出现 “WD33C93 in use”。)但您不需要 SCSI 模拟来测试它,如果您在 AROS 串行日志中看到 InitResident('scsi.device'),它将工作:)

链接/合并工具也需要一些额外的功能

  • 设置 RTF_COLDSTART 或 RTF_AFTERDOS(需要使用 RTG 驱动程序或非 ROM 模块,例如正常的 libs 或 devs*)。
  • 更改常驻优先级(例如,RTG 驱动程序需要比 uaegfx.hidd 具有更高的优先级)。
  • RTG 驱动程序需要修补(它们有 OpenLibrary() 路径,如 “libs:picasso96/something.chip”,如果物理文件不存在,这些路径将无法工作)。
  • 大多数正常的 libs/devs 可能会在第二次重启后无法工作,因为它们通常不是 “纯净” 的。

这是一项我可能将来会做的事情,将其链接为可重定位(甚至压缩)文件,并在 InitResident() 时间将其重定位到 RAM。目前的计划是拥有一个单独的资源,其中包含所有支持例程,而可重定位的常驻程序只包含一个小的例程,该例程执行 OpenResource(“relocstuff.resource”),如果找到,则调用它来解压缩/重定位它。浪费很少的空间。计划太多,时间不够。

Motorola 68040/68060 缺少指令模拟库现在也正在工作,但它还没有内置到 ROM 中。它相当大(约 60k),所以我认为它应该只包含在 arosbootstrap 文件中?(官方的 68040/68060 库可能不会被使用,因为例如它们需要更新 FPU 栈帧处理 = 触碰不应触碰的 exec 内部)。

自动配置支持已部分重写,大多数板卡现在应该可以正确配置。

2011 年 7 月 5 日(星期二)
Toni 写道:自上次以来发生了很多变化。
  • AROS 现在已完全转换为 DOS 数据包(所有平台)。
  • Motorola 68040/060 支持库 ROM 内置。
  • CDFS ROM 内置(尚未自动挂载,但可能在将来)。
  • 引导菜单现在更有用(显示引导设备和扩展)。
  • ArosBootStrap(softkick)模式 AOS 驱动程序支持。允许使用任何 AOS ROM 常驻模块。例如,A3000 ROM scsi.device 可用于在 AROS 中启用真实的 A3000 内置 SCSI。还添加了对 Picasso96 驱动程序文件(.card 和 .chip 文件)的支持,以在 AROS 中启用 RTG 支持。即使引导菜单和引导图像也会自动使用 RTG 模式。
2011 年 8 月 6 日(星期六)
Jason 写道:现在实际上可以启动到 Workbook,并使用 HUNK 而不是 ELF 作为可执行文件。此系统磁盘可在 AROS 和 AOS 3.x 下启动。理想情况下,它应该使用 AROS 安装例程和 CDROM 驱动程序进行扩展,以便允许从 AOS kickstart 安装 AROS。
2011 年 8 月 23 日(星期二)
Jason 写道:我发现有关 KS 1.3 和 3.x 的 CLI/Shell 的信息。
  • 在 KS 3.x 及更高版本中,无法通过 C:Resident 用其他段替换 “CLI” 常驻程序。
  • L:Shell-Seg 绝不是一个 “正常” 程序。

- 就像 DOS BCPL fs 处理程序一样,您必须自己设置 Shell 的 pr_GlobVec,包括安装其段。有趣。

- 与 CLI 应用程序不同,A0 必须为 NULL。A5/A6 为 BCPL_jsr 和 BCPL_rts。

- 它期望 me->pr_CLI 为 BNULL,并设置其自己的 CLI 结构。

就像 DOS 处理程序一样,它期望其启动数据包在 D1 中,并使用它来确定要调用的哪个 CliInit* 例程。

  • 如果 D1 == 0,它使用 GlobVec 偏移量 0x214 处的 BCPL_cliInit(这应该映射到 DOS/CliInitNewshell 或类似的东西)。
  • 如果 D1 != 0,它使用 dp_Type(哈!)作为要调用的 BCPL 函数来设置 pr_CLI 结构,并将 D1 传递给它。
/* Return codes from the DOS/CliInit*() family
*/

#define FNF_VALIDFLAGS  (1 << 31)      /* Valid flags */
#define FNF_ASYNCSYSTEM (1 <<  3)      /* Async System() call */
#define FNF_SYSTEM      (1 <<  2)      /* If this a System() call */
#define FNF_USERINPUT  (1 <<  1)      /* User provided input stream */
#define FNF_RUNOUTPUT  (1 <<  0)      /* C:Run provided output stream */

/* Shell startup packets.
*
* In truth, only dp_Res1 and dp_Res2 are 'public' - the rest of
* the arguments here are private, and are decoded by the
* DOS/CliInit*() routines.
*
* ---- CliInitNewcli() decoded
*
* NewCli/NewShell:
*
*  dp_Type = 1
*  dp_Res1 = 1
*  dp_Res2 = 0
*  dp_Arg1 = BPTR Lock of directory (shell must close)
*  dp_Arg2 = BPTR to StandardInput
*  dp_Arg3 = BPTR to StandardOuput
*  dp_Arg4 = BPTR to CurrentInput
*
*  dp_Arg5..dp_Arg7 are unused, and have junk data
*
* ---- CliInitRun() decoded
*
* L:Shell-Seg, Run:
*  NOTE: KS 1.3: bfunc is a BCPL CliInit function
*  NOTE: L:Shell-Seg is passed a NULL packet for the Boot Shell,
*          and uses BCPL Function (APTR)(me->pr_GlobVec + 0x214)
*          as the CLIInit() routine to call.
*  dp_Type = bfunc
*  dp_Res1 = 0
*  dp_Res2 = 0
*  dp_Arg1 = BPTR to the old CommandLineInterface
*  dp_Arg2 = BPTR to StandardInput
*  dp_Arg3 = BPTR to StandardOuput
*  dp_Arg4 = BPTR to CurrentInput
*  dp_Arg5 = BPTR to Lock of directory (shell must close)
*  dp_Arg6 = 0
*
*  dp_Arg7 is unused, and has junk data
*
* Execute: (mostly guessed, may change)
*  dp_Type = -1
*  dp_Res1 = 0
*  dp_Res2 = 0
*  dp_Arg1 = BPTR to the old CommandLineInterface
*  dp_Arg2 = BPTR to StandardInput
*  dp_Arg3 = BPTR to StandardOuput
*  dp_Arg4 = BPTR to CurrentInput
*  dp_Arg5 = BPTR to Lock of directory (shell must close)
*  dp_Arg6 = 0
*
*  dp_Arg7 is unused, and has junk data
*
* System (SYS_Async == FALSE)
*  dp_Type = -2
*  dp_Res1 = 0
*  dp_Res2 = 0
*  dp_Arg1 = BPTR to the old CommandLineInterface
*  dp_Arg2 = BPTR to StandardInput
*  dp_Arg3 = BPTR to StandardOuput
*  dp_Arg4 = BPTR to CurrentInput
*  dp_Arg5 = BPTR to Lock of directory (shell must close)
*  dp_Arg6 = 1
*
*  dp_Arg7 is unused, and has junk data
*
* System (SYS_Asynch == TRUE):
*  dp_Type = -3
*  dp_Res1 = 0
*  dp_Res2 = 0
*  dp_Arg1 = BPTR to the old CommandLineInterface
*  dp_Arg2 = BPTR to StandardInput
*  dp_Arg3 = BPTR to StandardOuput
*  dp_Arg4 = BPTR to CurrentInput
*  dp_Arg5 = BPTR to Lock of directory (shell must close)
*  dp_Arg6 = 1
  */

#define CLIINIT_NEWCLI  1
#define CLIINIT_RUN      0
#define CLIINIT_EXECUTE  -1
#define CLIINIT_SYSTEM  -2
#define CLIINIT_ASYSTEM  -3
2011 年 8 月 15 日(星期三)
Jason 写道:我很惊讶。截至今天,AmigaOS 3.9 大部分可以开箱即用,只要您删除/重命名 SYS:Libs/workbench.library - 似乎与 AROS 的内置 icon.library 有些不兼容。AROS ROM 中缺少一些数学库,它们应该在明天的版本中(修复了 “缺少 resource.library” 弹出窗口)。
2011 年 10 月 14 日(星期五)
Jason 写道:特殊 aros m68k AmiWest 包已制作并发送。
2012 年 3 月 14 日(星期三)
Jason 添加了重新缩放图标以匹配显示分辨率的功能,如果图标支持的话。如果图标的 MutalExclude 位 31 设置,则将较低的 16 位解释为 X 和 Y Amiga Tick 分辨率,并将图标重新缩放为显示的分辨率。修复了小屏幕上 “图标太大” 的问题。
2012 年 3 月 16 日(星期五)
Toni 添加了对非 MEMF_KICK 快速 RAM 板的支持(主要是 Blizzard A1200 加速器)。现在大多数 ROM 映像加载到快速 RAM 中。替换为 ForceCHIP,它强制所有模块使用芯片 RAM。主要用于调试。只有 kernel.resource、exec.library、expansion.library 和 diag 初始化模块需要 MEMF_LOCAL RAM(在重置期间永远不会消失的 RAM),在最坏的情况下,这意味着芯片 RAM。(只需要大约 80k,将来会变得更小)。ForceFAST 选项强制将完整的 ROM 映像加载到快速 RAM 中,即使 RAM 类型不是 MEMF_LOCAL。(A3000/A4000 主板快速是最常见的 MEMF_LOCAL 快速 RAM)。这只适用于一些非自动配置的 RAM 扩展,例如 Blizzard 1260 快速 RAM。
2012 年 8 月 21 日(星期二)。Jason 写道,正在处理对 “正常” 可 ROM 化库的 rellib 支持。

对于我的下一个主要 m68k 更改,所有正常库(当然除了 exec.library 之外)都将有一个 rellib SysBase。理论上,只有在新的 m68k 任务启动时才需要读取 0x00000004(因为为了与 AOS 兼容,新的 m68k 任务无法假设 SysBase 在 CallEntry() 上通过 A6 传递)。

我正在开发一个 512K 的 AROS ROM 映像,它会自动从引导介质加载 “丢失” 的部分。我希望具有的一个功能是从引导介质自动加载 *.hidd 驱动程序,类似于 BindDrivers 的工作方式。有什么想法吗?或者我应该只扩展 BindDrivers 以覆盖 Amiga 芯片功能和 PCI 设备,并以这种方式加载它们?BindDrivers 已经支持探测机制。您只需要提供足够的工具类型信息来导致加载发生,如果 InitResident() 失败(其中包含探测函数),则会卸载设备。例如,我建议以下工具类型 API 扩展:(现有的 “PRODUCT” 工具类型保持不变)。

PROBE=zorro:2206/31     <= Zorro, vendor 2206, product 31
PROBE=zorro:2206        <= Zorro, vendor 2206, any product

PROBE=USB:$1234/$abcd     <= USB, vendor 0x1234, product 0xabcd
PROBE=usbclass:3/1/1    <= Any USB endpoint, class 1, subclass 1,
protocol 1  (USB keyboard)

PROBE=pci:$10de/$040c     <= Nvidia G84M
PROBE=pci:$10de          <= Any NVidia device
PROBE=pciclass:3/20/3   <= Any EHCI device

PROBE=platform:ide/$170/15    <= secondary IDE device
PROBE=platform:ocs/0xdff000   <= OCS chipset at 0xdff000

InitResident 可以通过 Expansion/GetCurrentBinding() 机制探测,或者只盲目添加模块(与当前 *.hidd 设备的实践一致)。ConfigDev->ExpansionRom 字段可以通过在 ‘er_’ 联合体中添加 ‘OOP_Object *HiddPCI’ 和其他字段来扩展,这些字段由制造商代码 0xFFFF 指示,以及由 AROS 定义的产品代码指示的子类型(PCI、USB 等)。

2012 年 10 月 19 日(星期六)Jason 在 AmiWEST 2012
2012 年 11 月 1 日(星期四)Jason 写道:那么,有人反对 “所有 BPTR/BSTR 都与 AmigaOS/MorphOS 一样” 吗?
  1. 对所有架构取消定义 ‘AROS_FAST_BPTR’ 和 ‘AROS_FAST_BSTR’。
  2. 验证所有 ISA 编译(linux-xxx 和 amiga-m68k)。
  3. 在 bptr.h 中添加注释,说明 AROS_FAST_* 宏已弃用。
  4. 如果定义了任何一个,则会发出一个 ‘#warning’,说明 AROS ABIv1 不支持 AROS_FAST_BPTR/AROS_FAST_BSTR。

以下是十个最慢的因素。

>> Exec IPrefs - 42 seconds (why???)
>> Exec C:RexxMast- 24.18 seconds (probably library loading)
>> Exec AddDataTypes - 17 seconds (library loading)
>> Exec Copy ENVARC:... 10 seconds
>> Exec SetClock LOAD - 5 seconds
>> Exec Mount - 5 seconds
>> Exec List ENV:SYS/Packages .. - 5 seconds
>> Load boot/AROSBootstrap - 4 seconds
>> Load C:RexxMast - 2 seconds
2016 年 7 月 27 日
尝试修复 Apollo Core 的 AHI 支持。
2016 年 8 月 2 日
Sidewinder mness 开始着手处理 SAGA superAGA 图形 HIDD,另一件事是优化用 Assembly bounty 为 Apollo Core / Vampire 板编写的动画查看器应用程序。
2017 年 5 月
21:39 Changeset in AROS [54753] von NicJA If setpatch is present, run it. 
20:56 Changeset in AROS [54752] von neil Better MUI compatibility for Window class: - Return zero for current … 
19:33 Changeset in AROS [54751] von neil Better MUI compatibility: don't use MUIV_Window_TopEdge_Delta, which … 
16:10 Changeset in AROS [54750] von NicJA drop the copymem patching since it is handled in exec. 
13:29 Changeset in AROS [54749] von twilen ModelStringBuffer? was too small for Apollo, fix FPU strings if EC CPU … 
13:25 Changeset in AROS [54748] von twilen ADDR32 changed. 
04:04 Changeset in AROS [54747] von NicJA show the ec version of 030 
04:01 Changeset in AROS [54746] von NicJA Show the correct cache sizes for the apollo core. 
03:10 Changeset in AROS [54745] von NicJA fix the format template so that the cpu model is shown correctly. 
03:09 Changeset in AROS [54744] von NicJA remove some whitespace 02:33 Changeset in AROS [54743] von NicJA typo 
01:24 Changeset in AROS [54742] von NicJA check if the CPU has the Apollo 68080 addiw.l instruction. If it has, … 
01:19 Changeset in AROS [54741] von NicJA tidy formatting 
01:17 Changeset in AROS [54740] von NicJA bump the copyright notice. 
01:16 Changeset in AROS [54739] von NicJA # always default to 68000 # show the EC version of 020 and EC/LC … 
01:14 Changeset in AROS [54738] von NicJA use USER_INCLUDES 
00:24 Changeset in AROS [54737] von NicJA Add AttnFlags? for the Apollo'080, and MMU presence. Use the bit … 

Amiga 硬件

[编辑 | 编辑源代码]
  • 尝试在 A1200 和其他 Amiga 硬件上运行 AROS
  • 唯一的要求是 1M 或更多 MEMF_LOCAL 快速 RAM(在重置期间不会消失的 RAM)或 2M 芯片 RAM(在这种情况下,如果未重定向到 FAST,则上面的 1M 将被 ROM 使用)。 MMU 未使用或不需要
  • 能够提供有关问题的详细日志和描述,请参见前面的部分
型号 视频 音频 粘合剂 IDE / PCMCIA SCSI 意见
A1000 OCS Daphne Paula Agnus 0.25MB 芯片 RAM n/a
A500 OCS Denise Paula Agnus 0.5MB 芯片 RAM n/a
A2000/B1500 OCS/ECS Denise Paula Agnus 0.5MB 芯片 RAM n/a
A500+ ECS Super Denise Paula Fat Agnus 1MB 芯片 RAM n/a
A3000 ECS Fat Denise Paula Super Agnus 1MB 芯片 RAM Fat Gary
A600 ECS Denise Paula Fat Agnus 1MB 芯片 RAM Gayle
A1200 技术 AGA Lisa Paula Fatter Alice 2MB 芯片 RAM Gayle
A4000 AGA Lisa Paula Fatter Alice 2MB 芯片 RAM
Amiga CD32 AGA Lisa Paula Fatter Alice 2MB 芯片 RAM
型号 图形 音频 粘合剂 IDE SCSI 意见
DCE VIPER 520 未测试
DCE VIPER 530 未测试
CSA Derringer 030 未测试
ICD AdSpeed 未测试
GVP GVP-M A530 未测试
ACT Apollo 620 未测试
ACT Apollo 630 未测试
DCE VIPER 630 (M-Tec T-630 / E-Matrix 630) 未测试
ACA 630/25 未测试
ACT Apollo 2030 未测试
DKB Wildfire 68060 未测试
Fusion Forty 040 未测试
GVP 2620 020 未测试
GVP G-Force 030/50 未测试
GVP G-Force 040/33 未测试
GVP TekMagic G-Force 68060 用于 A2000 未测试
Progressive Peripherals Zeus 68040 用于 A2000 未测试
型号 图形 音频 粘合剂 IDE SCSI 意见
MBX 1200z 4 & 8MB RAM 未测试
A1207 4 & 8 MB RAM 未测试
GVP30 MKIV 50Mhz 4MB RAM 未测试
DCE VIPER 1230/28Mhz LC 未测试
DCE VIPER 1230 MkIV 030 33/42Mhz 32MB RAM (CSA Magnum 1230?) 未测试
Phase 5 Blizzard 1230-II 未测试
Phase 5 Blizzard030 MKIII 50Mhz 32MB RAM 未测试
Phase 5 Blizzard030 MKIV 50Mhz 32MB 但未测试 64MB RAM 工作 - 你让它放了多久?另外,机器重置后,尽快从驱动器中取出软盘启动盘(你越快越好)!
Phase 5 Blizzard030 mkIV 50Mhz 68882 50 MHz 64MB 工作。紧急软盘启动。无法在工作簿中移动图标。AGA 非常慢:在调整大小或打开窗口或使用菜单时可以看到屏幕逐行清除(CPU 全部执行?)。启动菜单非常乱:无法从 + 选项中选择我想要的内容,因为某些 A-J 范围键不起作用,一段时间后所有键都切换到 50/60 Hz。Wanderer 在 AGA 上完全无法使用。Octamed IV 在启动时单击其横幅屏幕后崩溃。启动了一些游戏,一切正常。
ACT Apollo 1230 Mk-II 未测试
ACT Apollo 1240 040 未测试
Phase 5 DCE(重新设计)Blizzard 1240 68040 AGA Paula Fatter Agnus 2MB 芯片 RAM 未测试
Phase 5 DCE(重新设计)Blizzard 1260 68060 + 1230scsi AGA Paula Fatter Agnus 2MB 芯片 RAM 1230scsi 工作 工作
ACA 1230/28 AGA Paula Fatter Agnus 2MB 芯片 RAM 未测试
ACA 1230/56 AGA Paula Fatter Agnus 2MB 芯片 RAM 工作
型号 图形 音频 粘合剂 IDE SCSI 意见
ACT Apollo 4060 060 未测试
GVP-M 4060 未测试
MacroSystems Warp Engine 040 未测试
型号 图形 音频 粘合剂 IDE SCSI 意见
FastATA - - - - - 无法工作。ATA3.driver 失败并显示以下消息:“找不到 A1200!” - Allegro CDFS 也不起作用。
IDE 修复 '97 未测试
IDE 修复 '99 未测试
未测试
GVP Spectrum 110/24 未测试
MacroSystems Retina Z2 Z3 未测试
Phase 5 (DCE) Cybervision 64 3D 未测试
VillageTronic PicassoIV RTG 未测试
DCE G-Rex PCI 未测试
Elbox Mediator LT 未测试
Micronik A1200 PCI 未测试
型号 图形 音频 粘合剂 IDE SCSI 意见
未测试
Blizzard PPC 带 060 截至 2012 年 3 月,无法工作,但添加了新的 ForceFAST 选项,但未测试
Apollo CyberStrom CSPPC060 (A4k) AGA Paula Fatter Agnus 2MB 芯片 RAM 需要禁用 cyberscsi 如果禁用 PPC 芯片,则工作
型号 图形 音频 粘合剂 IDE SCSI 意见
Minimig
Replay FPGA Arcade B0 启动 6 月周一(Ezrec)
Macrosystem DraCo 未测试
Natami 未测试

现在开始测试 aros,尤其是我的构建在真实硬件上的测试,我开始了一个应该是一个详细的支持硬件列表。

a4000 rev. d (16mb onboard ram) - cs060/50 ppc (128mb ram) - mediator4000di - fastata4000 mk3 (bootcontroller) - full boot
a4000 rev. b (16mb onboard ram) - cs060/50 mk1 (no ram) (no scsi) - fastata4000 mk3 (bootcontroller) - full boot
a4000 rev. b (16mb onboard ram) - cs060/50 mk1 (no ram) (no scsi) - internal ide (bootcontroller) - no boot: timing issue
a1200 - apollo (?) 040 (16mb ram) - internal ide (bootcontroller) - foll boot (random crashes after setpatch disappeared after clean nightly install)

A1200 拥有一个 Blizzard '060/PPC 加速器和 64 MB RAM,以及一个 4 路 IDE 分隔器,其中是 CF 卡加光盘刻录机和 OS 3.1 ROM。A500 拥有一个 B5000 加速器('020 带 4 MB 快速 RAM),以及 fat Agnes hack 来提供 1 MB 芯片 RAM,另一个 1 MB 慢速 RAM 在暗门中以及 OS2 ROM。它还有一个 'dodgy' A570 CD 驱动器,位于侧面扩展插槽('dodgy' 是因为几年前它停止能够从 CD 启动机器)。

A1200 从未启动过 AROS 68k,昨晚结果相同。我从 AROS 启动软盘启动,但在重置后,机器就死了 - 没有启动活动,屏幕一片空白,需要电源循环才能将机器恢复(到正常的 AmigaOS 启动)。老实说,这并不奇怪。更令人失望的是 A500,它以前启动过 AROS 68k(但速度太慢,无法使用)。它运行启动磁盘正常,但在重新启动时立即抛出 '非法指令' 错误。它在每次尝试重新启动时都是一致的)。

老式 Mac

[编辑 | 编辑源代码]

大多数具有 68030、68040 或更强大处理器的 Mac 将是可行的目标。具有 68851 PMMU 的 68020 CPU 也应该可以工作。较早的基于 68000 的 Mac 可能更麻烦。

最好的起点是定义一个特定的 Mac 68k 模拟器作为目标,并将其用作开发环境。

然后,编写一个使用 Mac Toolbox A-Line 指令将 AROS 内核加载到 RAM 中并将控制权传递给它的 Macintosh m68k 引导程序。

我们可能希望保留 Mac Toolbox 向量和全局变量(从 0x100 到 0x1000)以用于屏幕绘制和设备访问 - 每个 Mac 模型都有其独特的怪癖,而 Toolbox 将是一个很好的方法,可以消除自己编码所有这些内容的需要。

可以想象,我们可以使用 'MacFloppy.device' 和 'MacHd.device',它们只是 Toolbox ROM 调用的一个垫片。

 
Centris 610 (also Workgroup Server 60)
Centris 650
Centris 660av
Color Classic (also Performa 250)
Color Classic II (also Performa 275)
Classic II (also Performa 200)
II
IIci
IIcx
IIfx
IIsi
IIvi (also Performa 600)
IIvx
IIx
LC
LC II (also Performa 400, 405, 410, 430)
LC III (also Performa 450)
Performa 460 (also LC III+ and Performa 466, 467)
Performa 475 (also LC 475 and Performa 476)
Performa 520 (also LC 520)
Performa 550 (also LC 550 and Performa 560)
Performa 575 (also LC 575 and Performa 577, 578)
Performa 588 (also LC 580 and Performa 580)
Performa 600 (also Performa 600CD)
PowerBook 140
PowerBook 145 (also PowerBook 145B)
PowerBook 150
PowerBook 160
PowerBook 165
PowerBook 165c
PowerBook 170
PowerBook 180
PowerBook 180c
PowerBook 190 (also PowerBook 190cs)
PowerBook Duo 210
PowerBook Duo 230
PowerBook Duo 250
PowerBook Duo 270c
PowerBook Duo 280
PowerBook Duo 280c
PowerBook 520 (also PowerBook 520c, 540, 540c, 550c)
Quadra 605
Quadra 610
Quadra 630 (also LC 630 and Performa 630, 631, 635, 636, 637, 638, 640)
Quadra 650
Quadra 700
Quadra 800 (also Workgroup Server 80)
Quadra 840av
Quadra 900
Quadra 950 (also Workgroup Server 95)
SE/30
TV

m68k 托管环境二进制文件

[编辑 | 编辑源代码]

目前还没有托管版本,但如果有人感兴趣的话...

托管操作的系统要求是什么?例如内存模型(每个进程是否需要从 0 开始的独立虚拟内存空间?)所有进程都在同一个内存上下文中。这也可以是与主机操作系统相同的内存上下文吗?虽然 FreeMiNT 具有内存保护,但它没有虚拟内存模型(即,所有 FreeMiNT 进程也具有相同的内存上下文)。是的,可以。整个 AROS 运行在一个主机操作系统进程中。

我是否需要主机操作系统中的线程支持?(这是 FreeMiNT 内核中非常有趣的一章……)

“对低内存的读写权限(特别是陷阱向量和 0x00000000-0x00000007)m68k 假设它可以在地址 4 读取一个特定的常数值(SysBase 数据结构的位置)。所有低于 0x1000 的其他低内存永远不应该被访问。”

不,你只需要主机操作系统能够对 AROS 上下文造成计时器异常(信号),而 AROS 调度器将自行完成所有进程/任务管理。我想计时器中断与整个信号方式相比,会为我节省不少处理时间,而且我还免费获得了超级用户模式(我想在这种情况下是好事,因为调度器很可能需要它?)。m68k 软件确实从 4 读取 SysBase。你可以映射这段内存以使其可读,也可以捕获主机操作系统异常(陷阱、信号等),并模拟这种访问。看看 PPC 本地内核的示例,它们也支持它。

m68k 假设它可以在地址 4 读取一个特定的常数值(SysBase 数据结构的位置)。所有低于 0x1000 的其他低内存永远不应该被访问。在用户模式下虚拟化对该区域的访问是否足够?是的,足够且推荐!(拒绝写入 0 可以捕获许多错误!)操作系统已经为我完成了这件事,因为它已经被保护了。

写入 0x4 怎么办?我想内核只设置过一次 - 但我需要也捕获它。理想情况下,它甚至不应该尝试写入 0x4,而应该写入我计划在从 0x4 读取时返回的变量。

AROS 和通用的 AROS 二进制文件是否使用类似于超级用户模式的东西?AROS 内核是肯定的,AROS 驱动程序有时也会使用,而 AROS 应用程序几乎从不使用。也许这是一个愚蠢的问题,但是...为什么要切换到超级用户模式?在 Amiga 上,硬件寄存器不受超级用户保护,所有内存都可以在用户模式下访问。是为了像缓存控制之类的东西吗?(在 030 上,这是通过访问特权的 CCR 来实现的)

内核是否在超级用户模式下访问 0x4?我之所以这样问,是因为这意味着我必须虚拟化大部分超级用户模式。理想情况下,我只想在用户模式下虚拟化对 0x4 的访问(因为这是一件容易的事。虚拟化超级用户模式也是完全有可能的,Basilisk 2 中有一些有用的代码可以做到这一点(MacOS 需要超级用户模式,但在 Amiga 上以用户模式执行)。

是的,AROS m68k 设备驱动程序使用中断。托管版可能不需要,因为它应该提供自己的设备驱动程序。我需要什么工具?VBCC/VASM 和 GCC 2-4 可用。我建议使用由 arch/m68k-amiga/doc/build-toolchain.sh 脚本编译的 gcc 4。是否有任何特定的端口可以作为这些内容的起点?arch/all-hosted、arch/all-linux、arch/m68k-all 和 arch/all-unix 应该有用。将 arch/all-linux 复制到 arch/all-mint,在其中的所有 mmakefile.src 中将 s/linux/mint/,然后从那里开始工作。实际上,只有原生端口才需要真正的 CPU 中断。对于托管端口,你可能需要一些等效的东西,可以在主机操作系统中实现。例如,在 Windows 托管端口中,中断是 WinAPI 事件对象(有点类似于 AROS 信号)。它们用于与 I/O 线程通信。在 UNIX 托管端口中,中断实际上是信号。SIGALRM 用作计时器,SIGIO 用作主机 I/O 中断。SIGUSR1 和 SIGUSR2 用于调用调度程序,因为信号是获取 UNIX 中 CPU 上下文的唯一方法。

事实上,目前我只能提出一个强制性要求。必须有一种方法可以中断正在运行的主机操作系统线程,获取并修改其 CPU 上下文。仅此而已。在超级用户模式下也会有上下文切换吗(即我是否需要处理 SSP)?不会。只有在退出用户模式(即离开最后一个嵌套级别)时才需要调用调度程序 (core_Schedule())。在 AROS 上,嵌套上下文切换也是一个非常糟糕的想法。

宏 SC_ENABLE() 和 SC_DISABLE() (cpu_xxx.h)。我不完全确定它是如何使用的;但我怀疑这是为了避免不同的信号处理程序以某种方式相互冲突?不会。这些宏用于设置要调度任务上下文的信号(即 AROS 中断)状态。它等效于在原生端口中恢复 CPU 上的“中断使能”标志。AROSCPUContext 中没有字段来保存中断状态,为了简单起见,假设它们与 task->IDNestCnt 同步。无论如何,这些宏使用信号上下文中我现在没有的某个变量。它是被中断进程的信号掩码。

即,在处理当前信号时阻止或延迟其他信号?不会。在 UNIX 中没有这样的问题。当信号到达时,它会自动被阻塞,直到我离开其处理程序。它等效于原生 CPU 中断。但是,任何信号(除了陷阱)都会真正禁用所有其他中断。这样做是为了防止嵌套上下文切换(以及混乱的调度程序状态),以防第二个(嵌套)信号发生在进入第一个信号的处理程序和递增 PlatformData->kb_Supervisor 之间。

目前有两种不同的托管 AROS 版本:Windows 和 UNIX。Linux、Darwin 等都是 UNIX 系统,它们之间的差异非常小。

UNIX 托管内核是围绕信号构建的。它们是 CPU 中断的非常好的等效物。SIGALRM 用作系统计时器,SIGUSR1 和 SIGUSR2 用作系统调用(在正在运行的任务需要放弃 CPU 时间的点)。SIGIO 等效于外部硬件中断,当主机操作系统文件描述符准备好进行 I/O 时,它会发出信号。一个特殊的组件 unixio.hidd 负责对每个 fd 基础上的单个 SIGIO 进行多路分解。一些信号(SIGILL、SIGSEGV 等)是 CPU 陷阱。

Windows 托管内核非常不同。此端口利用了 Windows 线程。AROS 最少包含两个线程。一个线程运行用户模式代码(任务),另一个线程是超级用户。采取了一些特殊的措施来同步它们,以便实际上只有一个线程在运行。超级用户线程在 WaitForMultipleObjects() 调用中循环,其中可等待对象是 AROS 中断。第一个是周期性计时器,其他来自驱动程序中包含的更多 Windows 线程的 I/O 中断。

当中断发生(对象发出信号)时,超级用户线程会停止用户线程,获取其 CPU 上下文,执行中断处理程序,然后恢复它。没有类似于 UNIX 中 SIGALRM 的机制,因此需要一个单独的线程来模拟它。I/O 也通过单独的 Windows 线程完成。WinAPI 本质上大部分是同步的,尤其是 GUI 处理,你必须在消息循环中坐等。每个驱动程序都包含一个关联的 .dll,它会启动自己的线程。每个线程都可以创建自己的可等待事件对象,从而创建新的中断。AROS 代码与 I/O 线程的通信方式类似于真正的硬件,它会填充一些结构,然后触发“go”事件。I/O 线程会完成其工作,并触发其 IRQ 事件,导致中断回到 AROS 端。对于 Windows 托管端口,从中断和任务调度开始。解决此任务后,我们已经有了关于 AROS 如何在 Windows 进程中运行的良好模型。

FreeMiNT 上的 GUI 也是同步的,需要一个消息循环。我的目标是摆脱它,将其变成一个全屏应用程序,因为在该操作系统上,另一种选择会非常混乱(因为没有便宜且有用的线程。是否有任何函数可以轮询事件循环而不阻塞?X11 和 SDL 驱动程序使用这种方法。它们只是使用垂直同步中断每秒轮询循环 50 次。Windows 不允许轮询循环,这就是我必须处理线程的原因。事实上,这似乎比轮询更慢,延迟更大。



我在 uae 中的 aros68k 编译中检查了 hd-rec,它似乎正常工作。加载了一些项目,甚至没有播放,因为还没有设置 ahi 单位,但它似乎接受了真正的 amiga 68k camd.library。aminet 上有两个不同的 camd.library 版本用于原始 m68k。camd.lha (2.0) 可以工作,但 camd40.lha 不稳定,因为它在播放了一些 MIDI 数据后按停止键时会崩溃。在 winuae amiga os3.9 下,hd-rec 中的音频录制可以正常工作。aros68k 版本的 camd 似乎目前无法正确初始化,也许是忽略了某个字节序错误。


Developer Compiler
Developer Exec
Developer HIDD
Developer Libraries
华夏公益教科书