[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: [MiNT] MetaDOS compatibility broken (fwd)



> From: owner-mint@fishpool.com [mailto:owner-mint@fishpool.com]On Behalf
> Of Jo-Even.Skarstein@gjensidige.no
> Sent: Friday, June 25, 1999 10:31 AM
> To: mint@fishpool.com
> Subject: FW: [MiNT] MetaDOS compatibility broken (fwd)
>
>
> Hi!
>
> I'm forwarding some interesting remarks from a private discussion between
> Ronald Andersson and myself.
>
> Jo Even Skarstein
>
> > -----Original Message-----
> > From:	dlanor@oden.se [SMTP:dlanor@oden.se]
> > Sent:	Thursday, June 24, 1999 10:10 PM
> > To:	Jo-Even.Skarstein@gjensidige.no
> > Subject:	RE: [MiNT] MetaDOS compatibility broken (fwd)
> >
> > Here follows a fairly comprehensive description of what I consider to be
> > the
> > necessary 'linking' for what I see as TOS compatibility, together with a
> > new
> > method to implement that in MiNT, such that no MiNT
> capabilities are lost
> > or
> > in any way downgraded. If you think this would interest MiNT people, you
> > are
> > naturally free to forward it to them:
> >
> > 1: When a file or drive function known to MiNT, but addressing a drive
> > that is
> >    not known to internal drivers (or loaded XFS drivers) then
> MiNT should
> > pass
> >    control to some underlying dispatcher.  As MiNT does
> implement drivers
> > for
> >    all drives known to normal TOS, it will never be normal TOS
> that deals
> > with
> >    such an access, but will always be some other dispatcher that has
> > logged in
> >    to the XBRA chain between TOS and MiNT.  Naturally MiNT may
> first check
> > if
> >    any bit in the system variable '_drvbits' ($4C2) has been set that
> > matches
> >    the specified drive, as it is not necessary to 'link down' otherwise.
> > That
> >    will make MiNT work fine with BetaDOS (or other MetaDOS) and
> yet retain
> > all
> >    positive qualities for all MiNT-level drivers, including error
> > reporting
> >    capability for access attempts to drives not implemented by any
> > dispatcher.

1) Actually, checking _drvbits would be wrong here. _drvbits indicates
whether a drive is known by BIOS. To find out whether there is GEMDOS
support for that drive, you need to do a Dsetdrv(Dgetdrv()).

2) No, MiNT should not do this. Everything Ronald is asking for here can be
done in a separate, loadable XFS in case somebody really needs it. I'd still
like to see a use case, though. I am not aware of any useful (!) MetaDOS
filesystem driver that doesn't have a similar or better MiNT XFS
counterpart.

> > 2: When a gemdos function is not known to MiNT at all, it should always
> > pass
> >    the call down some underlying dispatcher that may have
> implemented it.
> > If
> >    such a call reaches the TOS gemdos dispatcher, then the only result
> > will
> >    be the return of an E_INVFN error value, which is identical to what
> > MiNT
> >    too must return for such cases.  The only problem with this is if
> > another
> >    similar call is made by another task, switched to while TOS
> gemdos work
> >    is in progress.  A solution for all such problems is given further
> > below.
> >    The 'linking down' for unknown functions will allow other
> dispatchers,
> >    such as the one of BetaDOS, to add new functions (eg: MagiC 6 type
> > SLBs)
> >    to maximize compatibility with other systems of the TOS platform,
> > without
> >    requiring all such things to be incorporated into MiNT.

Again, I don't see the use case. The example mentions shared libraries,
which clearly can not be implemented by any layer "below" MiNT as MiNT owns
the free memory.

> > 3: Bios and Xbios functions should always be 'passed down', when they
> > concern
> >    anything that MiNT can not deal with completely.  There are many TOS
> > clone
> >    machines in existence, and it is necessary to allow patch programs to
> > fix
> >    compatibility problems. MiNT can never be expected to do it all
> > internally
> >    as the family of TOS machines is constantly growing.
> Another important
> >    aspect is that they often have conflicting needs, and trying
> to include
> >    code for all those needs in the kernel would make it ridiculously
> > large.

I agree, and this certainly happens for XBIOS, otherwise MetaXBS would not
work. However I am not sure about BIOS.

In general I see lots of areas where MiNT could be improved which would have
a much higher priority -- like shared libraries (see remark above), virtual
memory or reentrant dispatchers ultimately leading to background I/O. But
there's not much point in just asking -- the source is available to
everybody, and I am sure that Frank would welcome good contributions.