<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>
Date   : Tue, 24 Dec 1996 13:14:58 +0000
From   : deweger <deweger@...>
Subject: Re: Archive format expansion

Tom Seddon wrote:
> 
> I just thought about this today: should there be some extra information
> in the archive format to cater for different !BOOT option? The next
> version of my emulator will hopefully cater for auto-booting disks: you
> wil be able to insert a disk into a drive, then the emulated Beeb is
> reset with the appropriate startup links so that a normal reset will be
> considered an autoboot. This will make it easier to run games, without
> having to faff around with *MOUNT and all that. However as the archive
> format stands you will have to make your own !BOOT file or, at the very
> least, messs around with the appropriate *OPT4,x settings. Fair enough
> for one or two games, but for large numbers of games this could be a
> bit trcicky.

This is a very good point, and I'd love it when your emulator
would offer some help in overcoming this problem.
I have converted quite a number of games
to the archive format and played them, and one of the problems in
running these games is finding out the appropriate way of starting
them. These problems are the following:
a if there is an !BOOT file, finding out the appropriate *OPT4,x
  option
b if there is no !BOOT file, finding out which file should be started
  first
c finding out whether to CHAIN, *EXEC or *RUN this first file
d If this first file should be CHAINed or *EXECed, finding
  out the appropriate setting of PAGE.

(Therefore I think the general problem is how to start programs,
with finding out the appropriate *OPT4,x settings for !BOOT files
being a specific case of this.)

I think that there two general solutions to this problem:
A. - Create an !BOOT file for every set of related files in the
     archive that solves problems b-d.
   - Encode the appropriate *OPT4,x option in an additional file
     (e.g. !OPTION). This file simply contains a single character
     that specifies the x.
B. Create an !STARTUP file for every set of related files.
   This file could be a BASIC file or a text file to be *EXECed
   (I'm in favour of the latter option, as this allows the !STARTUP
   file to be created much easier under DOS or Linux, which is handy
   as most ppl will be doing archive file transfer/conversion under
   these OSs).
   In case the file set contains an !BOOT file, there are a few
   options for to handle this:
   - the simplest would be a command to *RUN or *EXEC this file,
     depending on needs
   - another option is a specific emulator command, such as
     BOOT x, in which x specifies the *OPT4,x option. (after which
     the emulator can set this *OPT 4,x option and start the !BOOT
     file)

I feel in favour of the option B, as it is the most general
one. Moreover, it requires the addition of only one file to
each set of archive files, instead of at most two with option A
(one if there is already an !BOOT file in the set, two if such 
a file is not there). My final argument is that I would like
the additions made in the archive disks to disks transferred
from the BBC as independent as possible of these archive disks.
This makes it easier to reconstruct the original disks. (Concen-
trating all additions in one file, e.g. !STARTUP, would allow
this.)

> I have thought of some  possibilities:
> 
> 1. An extra file, maybe called !OPTIONS or something, which contains
> the startup option. (Not sure of the best format for this file though)

I guess this what I called option A, where you leave it to the
user to define an !BOOT file to solve problems b-d. As argued above,
I'm not in favour of this option 1.

> 3. An extra parameter in the !BOOT.INF file, which specifies the
> option. This has the advantage of settings the options only when
> a !BOOT file is present. (This isn't too bad but it seems a bit
> dodgy sijnce the extra parameter will only be present in the
> !BOOT file, and conversion utilities will have to cope with this.)

This'd be my least favourite option, not only for the arguments
above, but also because this rapes the !BOOT file parameters, which
makes transfer back to a BBC more difficult.

> 2. An extra file, maybe called !STARTUP or something, which contains
> the commands to load the game/whatever. This will be added in as
> !BOOT and the startup option will be set to 3 (EXEC). (Seems a bit
> of a waste though since you may as well have a !BOOT file
> and always assume the option is *EXEC)

It seems this options is what I called option B, which I'm in favour
of. 

> 4. Some kind of marker in the 'startup' file, indicating whether it
> is a machine code or BASIC. The !BOOT file can be built from
> this information, just with an appropriate *RUN or CHAIN"" or
> maybe renaming this file to !BOOT and setting the option to 2
> (RUN). This is my personal favourite,
> and doesn't seem to have any major disadvantages.

I don't quite understand what you mean by this and how it differs
from option 3. Do you mean you want to make a startup-file only
and delete each !BOOT files from a set of related files? If you
mean this, I wouldn't be in favour of it, as it makes conversion
back to a Beeb more difficult. 

> Happy Christmas to everyone,

Happy XMas as well. And good to see you're working on your emulator
after midnight :)

Mark.

<< Previous Message Main Index Next Message >>
<< Previous Message in Thread This Month Next Message in Thread >>