ao486 and PC Booter games

jamesfmackenzie
Posts: 12
Joined: Tue Aug 18, 2020 4:08 am

ao486 and PC Booter games

Unread post by jamesfmackenzie »

I've tried booting a few "PC Booter" floppy images: https://en.wikipedia.org/wiki/List_of_PC_booter_games

All that I've tried so far give me "Boot failed: not a bootable disk". Is this something we should expect to work on ao486 or no?

I'm interested if we can get these old PC Booters running
ExCyber
Posts: 232
Joined: Sun May 24, 2020 3:33 pm
Has thanked: 12 times
Been thanked: 77 times

Re: ao486 and PC Booter games

Unread post by ExCyber »

I don't especially have direct experience with booter games, but researching this has led to believe that a lot of the disk images floating around online are associated with a utility program called "Flopper" that somehow loads them from DOS, and thus aren't necessarily actually bootable disk images as-is. In particular, you might try making sure that the byte sequence "55 AA" is in the disk image at hex offset 1FE.
ExCyber
Posts: 232
Joined: Sun May 24, 2020 3:33 pm
Has thanked: 12 times
Been thanked: 77 times

Re: ao486 and PC Booter games

Unread post by ExCyber »

Here's a (probably not very "Pythonic") Python script that will add the signature in question.

Honestly, though, the thing you're likely to run into with games of this vintage is that many of them really don't run properly on anything other than an early PC/clone, at least not without additional tools that would require conversion to DOS executables. Some of them probably also have copy protection that can't be represented in a flat disk image file.

Code: Select all

#!/usr/bin/env python3
import argparse
import os

parser = argparse.ArgumentParser()
parser.add_argument("infile", help="Input floppy image file name")
parser.add_argument("-f", "--force", action="store_true", help="apply signature even if infile is not an expected size")
parser.add_argument("-o", "--outfile", metavar="outfile", help="write modified image to outfile (optional)")
args = parser.parse_args()

infilebase, infileext = os.path.splitext(args.infile)
if (args.outfile):
    outFilename = args.outfile
else:
    outFilename = infilebase + '-bootsig' + infileext

with open(args.infile, 'rb') as infile, open(outFilename, 'wb') as outfile:
    inbytes = infile.read()
    if not args.force and not len(inbytes) in [163840, 184320, 204800, 327680, 368640]:
        print("File is not an expected floppy image size.")
        exit(1)
    outbytes = bytearray(inbytes)
    outbytes[0x1fe] = 0x55
    outbytes[0x1ff] = 0xaa
    outfile.write(outbytes)
Post Reply