Conversation

Jarkko Sakkinen

I’ve had so much fun with the 486 SX-33 lately that I haven’t even touched the Switch 2 I got over the weekend.

I’m putting together a devkit for the MiSTeR FPGA ao486 core, and more generally an environment for retro game and demo-style projects. Toolchains in this space have been fairly grim so far: DJGPP, Turbo C++, or Watcom C/C++.

AO486 DEVKIT
  • GCC and LLVM support. COM output is supported through a linker script, and EXE output is supported as well. A Lua script prepends an MZ header to the EXE.
  • A chain loader switches to protected mode and loads the program into extended memory.
  • Rather than relying on DOSBox or 86Box, I tuned QEMU very carefully. It now feels surprisingly close to the ao486 core in practice.
  • If this were a 386 SX devkit, I would probably have gone with flat real mode or so-called “unreal mode”. On a 486, though, the 0x66 and 0x67 prefixes used for 32-bit instructions already eat into performance on what is still a fairly modest CPU. The pipeline is only 16 bytes long.
  • There is a small proof of concept included, but only the bare minimum. I’m saving the more interesting material for my own retro projects. The idea is to provide a blank canvas built on a much better SDK.
  • 486.md covers 486-specific assembly optimisation details. In practice, it is quite a different beast from either a 386 or a Pentium. This is the sort of material that is fun to read on its own, so it felt worth writing.
  • The package includes the Unscii font, apparently pulled from GitHub, though I can no longer find the exact source URL. The original project is here: http://viznut.fi/gfx/fonts/
  • It also includes tmodplay, a MOD player. Unfortunately, the Sound Blaster 16 implementation in ao486 is pretty awful. For that era of PC hardware, the only really good option was the Gravis Ultrasound.
  • The target configuration has 16 MiB of RAM. That would have been an unusual combination back in the day, but those are the ao486 defaults, so I’m leaning into a kind of retro-modern setup. The other default was some completely absurd number.
  • There is also a proof-of-concept demo with a four-layer parallax scroller and various informational texts.

I’m not really a game or demo developer myself, but I can at least provide much better SDKs, so I felt like fixing one long-standing problem in the retro scene. It is released under the MIT license so people can do whatever they like with it.

I should also check whether that FPGA core supports VESA 2.0, because that would allow 320x240 with chunky pixels. VESA 1.x was awful.

#Intel #486 #ao486 #MiSTeR #FPGA

1
0
1
@jarkko Would you have pointer to 486.md? Quick searches did not help.
1
0
1
@pavel It's still my local NAS, which holds my local Gits :-) I can ping you once I release it. 486.md is a doc that I've putting short remarks over the course of working this.

It's my therapy project, half coding and half reading old magazines and other cool stuff that you can find e.g. from archive.org. Thus, I want to make it nice and polished and even go through my remarks before putting this out. That said this will be in shape rather in weeks than months :-)
2
0
1

Jarkko Sakkinen

Edited 17 hours ago
@pavel, and the next target after this is STE, as I said. That machine has been itching me for some time. And this trip back to 486 seems to give enough push move on that next. The hardware features and the unusually large amount of memory appeal to me.

It's also fun to try tools like devpac out and be more in discovery mode than with PC:

https://www.atarimania.com/utility-atari-st-devpac_29589.html
0
0
1
@jarkko Feel free to ping. "Optimizing for 486" sounds interesting :).
1
0
1
@pavel thanks this motivates me to put a bit more effort to it thank you, appreciate this :-) it's my way to escape from the world of clawbot.
0
0
1