Descr:  NetBSD/Amiga bootstrap loader
Author: Michael van Elst, Gunther Nikl, Frank Wille

The original loadbsd program requires the presence of ixemul.library
on the system disk. This also requires an existing ASSIGN for
ENV: and possibly for LIBS:.

In an effort to write a real RDB-installable bootloader I started
with a gobsd tool that replicates the loadbsd functionality and
compiles with SAS C. It no longer needs anything else on the
disk and should work with no startup-sequence.

Under AmigaOS2.0+ it will use standard ReadArgs() argument passing.
Under AmigaOS1.3 it will use a simpler argument string. I didn't
bother to write some user-friendly argument parser for 1.3.

Parameters for ReadArgs():

MULTIUSER/S      - boot into multiuser mode, default is single user
ASKROOT/S        - ask for root device
RESERVE/S        - Do not use the first 4 Megabytes for the kernel
MEMLIMIT/N       - Memory usage limit in kbytes.
TWOSEG/S         - Use two memory segments
MANYSEG/S        - Use all memory segments
LARGESTSEG/S     - Use the largest segment for the kernel instead of the
                   segment with the highest priority.
TEST/S           - Test mode
SYMBOLS/S        - Load kernel symbol table
KDB/S            - Start kernel debugger
AGA/S            - Ask kernel for AGA console if applicable
NOSYNC           - String specifying SCSI targets with synchronous transfers
                   disabled (like "146" to disable target 1, 4 and 6).
                   You can specify separate target lists for up to 4 host
                   adapters separated by a comma.
DRIVER           - name of the exec device for your controller ("scsi.device")
UNIT/N           - device unit of the disk with the root partition (0)
VOLUME           - name of the root partition, default is to search for
                   the partition marked with a root-dostype.
FAST             - force sufficiently recent kernel to bootstrap directly
                   into fast memory. This is tried automatically if there
                   is not enough chip memory for the boot
KERNEL           - Name of the kernel image. Default is "netbsd" in the
                   current directory.

If one of the DRIVER, UNIT or VOLUME parameters is given then gobsd
reads the kernel image directly from the specified BSD filesystem.
The KERNEL name should then be a real filename in the root directory
(i.e. no symbolic link).

Parameters for 1.3:

gobsd [-abk123ltSDA] [=machine] [+memlimit] [kernel]

-a  == MULTIUSER/S
-b  == ASKROOT/S
-k  == RESERVE/S
-1  == TWOSEG/S
-2  == MANYSEG/S
-3  == TWOSEG/S and MANYSEG/S
-l  == LARGESTSEG/S
-t  == TEST/S
-S  == SYMBOLS/S
-D  == KDB/S
-A  == AGA/S
-F  == FAST/S

=machine  == MACHINE/N
+memlimit == MEMLIMIT/N
%nosync   == NOSYNC
~driver   == DRIVER
#unit     == UNIT
:volume   == VOLUME

Version history:

1.1  - BPPC support. Kernels are loaded and relocated to the current BPPC's
       Fast-RAM address.
       Changed FIRSTSEG/S option into LARGESTSEG/S. Loading into the segment
       with the highest priority is default now.

Michael van Elst, Gunther Nikl, Frank Wille