Cheap PPC alternative?

The Amiga community lacks of good and cheap hardware to run their operating systems on. Allthough there are some efforts done in this area, the prices of this products (both current and future) are high. There is however another solution available, which is pretty cheap. The only disadvantage is lower speed of PPC CPU.

Imagine a regular x86 machine with PCI slots and a PPC card in one of them. If such PPC card would be able to initiate Bus Master transfers, it could control the PCI bus totally and thus would become a complete PPC system.

The Crescendo/7200 card from Sonnet is a PCI card with either G3 or G4 CPU running at maximal 500MHz. It consists of a PPC CPU, CPU-to-PCI bridge (well documented, used in another Amiga-like project too), memory and L2 cache. It was designed as an accelerator for PowerPC Macintosh machines. However, due to the beauty of the PCI bus design, it may be easily used in regular PC’s, provided they have one 5V PCI slot available.

Recently, I have been talking with the engineer of this card about the internals of this accelerator. It came out, that running this card in PC is perfectly feasible. The x86 CPU would be responsible for booting the PPC, routing IO accesses (probably) and routing interrupts (that’s for sure). It does not have to be the newest, fastest and expensive PC. It may be as well an old, passively colled 200MHz x86 machine. Such oldtimer would be more than enough as an IRQ router. It it would be faster, it could be used as an fast and effective coprocessor with it’s own memory.

The costs? The card itself may be bought for approx. 100USD. Any old PC might be used as a PCI bus and interrupt router (less than $20). The exact price would be determined by the cost of all peripherals (including memory for both x86 and PPC).

Since all AmigaOS-like operating systems (OS4/MorphOS/AROS) are fast and responsive even on slower CPU’s. That and the fact that there would be an underlying x86 as a coprocessor ready for use, would provide very nice and effective PPC platform for Amiga operating system. Let’s go dual CPU, let’s go Bi-Endian 🙂

If only any team would like to have it…. 😉

Message from the bottle

The debug output catched by 64-bit qemu showed today the following output (from emulated serial console):

[BOOT] AROS Bootstrap.
[BOOT] Command line ‘/aros-x86_64 vesa=640x480x16’
[VESA] module (@ 0010A4BC) size=2144
[VESA] Module installed
[VESA] BestModeMatch for 640x480x16 = 111
[VESA] Module uninstalled
[BOOT] GRUB provides the following memory map:
[BOOT] 0000000000000000 – 000000000009FC00: 1
[BOOT] 0000000000100000 – 0000000007F00000: 1
[BOOT] Setting up descriptor tables.
[BOOT] Mapping first 4G area with MMU
[BOOT] Loading kernel
[BOOT] GRUB has loaded 4 files
[BOOT] * module asmsupport.o
[BOOT] * module aros.o
[BOOT] * package kernel.pkg:
[BOOT]   * module aros.o
[BOOT]   * module asmsupport.o
[BOOT] * module aros.o
[BOOT] Loading asmsupport.o
[BOOT] Loading aros.o
[BOOT] Leaving 32-bit environment. LJMP $8,$0000000000F80000
[AROS64] 64-bit AROS. Copyright (C) 2006 The AROS Development Team. All rights reserved.

Please note, that the bootstrap is now capable to switch VESA mode on demand (best mode match of command line argument), parse modules loaded by grub and even parse packages of modules. 🙂

Bootstrap seems to work :-D

Hello there!

No, I did not made the 64-bit AROS working natively. Not yet… Instead I was working on 32-bit bootstrap code.

Since the BIOS of x86_64 PCs boots into 16-bit mode and GRUB switches from 16-bit mode into 32-bit one, the new kernel for AROS should be a 32-bit ELF executable. Therefore, the idea of bootstrap was born.

The bootstrap is a small 32-bit application which is loaded by GRUB. It is responsible for setting an environment for 64-bit system up, like the descriptors and MMU page tables. It contains also an ELF-relocator, which is used to load embedded 64-bit ELF image of kernel into arbitrary memory location. The same relocator is used to link any additional modules loaded by GRUB with the kernel.

And you know what?… The bootstrap works already 😀

It’s not an achivement worth mentioning (the binary of bootstrap is less than 12KB), but I felt that I have to share my hapiness with you.