SmartBoot 1.1
-------------


             (C)opyright 1989 Zonker Programming


FREEWARE --  This program is in the public domain.  It may not be sold, but
must include the copyright notice if uploaded to any
information service or BBS.


Author:      Steven Weyhrich
             Zonker Programming
             2715 N. 112th St.
             Omaha, NE 68164



Required:    Runs on any Apple II with a 65c02 or 65816 processor (//c,
IIc+, enhanced //e, or IIgs).
             UniDisk 3.5, Apple Disk 3.5, or Smartport/SCSI hard disk (such
as Chinook)

Recommended: Program Selector (such as ProSel, Davex, ECP, Squirt, or
EasyDrive)

Files :      SMARTBOOT.DOCS (you're reading it)
             SMARTBOOT      (the full featured version)
             SMARTBOOT.TINY (the tiny version, less than 256 bytes)
             SB.INSTALL     (Applesoft program to install SMARTBOOT or
SMARTBOOT.TINY)

(For best appreciation of the following discussion, it is recommended that
you as a potential user of SMARTBOOT read the books that came with your
Apple to gain a background understanding of the various ways to "boot" a
disk.)


PURPOSE
-------

   Allows an Apple II family computer to boot ProDOS 8 on a disk device
other than the ordinary default one.  This is helpful when it is
inconvenient or impossible to switch the position of disk controller cards
to change the boot disk drive.  In addition, SMARTBOOT will boot to ANY
device on a Smartport chain (not just the first one).

   SMARTBOOT is MOST useful for a computer like the IIc+ where there is one
internal Apple 3.5 drive and a hard disk (such as the superb Chinook
CT-20c).  That configuration is limited to booting from the internal Apple
3.5 drive, since that drive comes first in the slot 5 SmartPort chain.  With
SMARTBOOT, you can boot from the hard disk rather than the internal 3.5
disk.

   On the //c (my computer), SMARTBOOT is also useful because it will wait
for the secondary boot disk to come online.  I can turn on my computer AND
my Chinook CT-20c hard disk at the same time, and SMARTBOOT will not try to
boot the hard disk until it is ready.

   On a IIgs, SMARTBOOT is only good for booting ProDOS 8 from a disk other
than the first in a Smartport chain.  Since most IIgs users are heavily into
ProDOS 16 or GS/OS, I doubt there will be much demand for this program from
them; however, the program has been tested and will work on a IIgs.
SMARTBOOT does not, unfortunately, work for GS/OS, the more sophisticated
operating system for the IIgs, because of that its insistence on booting
only from drive 1 on a slot.



GLOSSARY (for those experienced users, skip down to the next section)
--------

           ProDOS 8 -- the disk operating system for 8-bit Apple computers
           Firmware -- built-in software that is present at all times in a
computer; usually controls the hardware attached to
the computer
              Slots -- connectors in the //e, ][+, or IIgs into which cards
can be plugged that allow control of various devices,
including disk drives, printers, and modems.  In the
//c or IIc+, these slots are simulated by the
firmware.
          Smartport -- the name Apple gave to the built-in software that
controls any disk device (except for 5.25 drives)
plugged into the disk port on the back of the //c,
IIc+, or IIgs
           Chaining -- attaching several disks to the same disk port by
plugging one into another
            Booting -- the process of starting up a disk operating system by
reading progressively larger segments off of a disk
into memory, until the entire system is loaded
  Primary Boot Disk -- the disk usually used to startup the ProDOS 8 disk
operating system; on a //c or IIc+, this would be the
internal disk drive
Secondary Boot Disk -- the disk to which SMARTBOOT transfers control for the
actual boot process.  Like any ordinary ProDOS boot
disk, it must have in the main directory the file
PRODOS (the true one, not a renamed SMARTBOOT as goes
on the Primary Boot Disk) and at least one SYS file
whose name ends in ".SYSTEM" (such as BASIC.SYSTEM).
               Unit -- the disk device at a particular position on a
Smartport chain.  The first disk device is Unit #1,
and so on.  On the IIc+, the internal 3.5 drive is
Unit #1 on the Slot 5 Smartport.
     Mirrored Disks -- disks that appear to be in a slot other than the one
they are physically plugged in to.  This is necessary
when there are more than two devices attached to a
slot, as ProDOS 8 can only understand two per slot.
In these cases, the third and fourth are "mirrored"
to an unused slot, usually slot 2.
        Volume Name -- a unique name given to a disk by ProDOS, allowing it
to tell the difference between disks.  It is given a
name that is preceded by "/" (such as /MYDISK).
        Device Name -- a name given to specific devices on a Smartport chain
            Block 0 -- the first block on any disk; for ProDOS disks, this
contains a short program that looks for the file
PRODOS, loads it, and transfers control to it (see
"Booting")


WHAT IT DOES
------------

   Let's take the examples of two Apple systems:


SYSTEM A:  a fully loaded Apple //c with       (ProDOS Disk Name)

  Slot 4          = Ramdisk, 1 Meg             (/RAM4  )
  Slot 5, Unit 1  = UniDisk 3.5 #1             (/DISK.A)
          Unit 2  = UniDisk 3.5 #2             (/DISK.B)
          Unit 3  = UniDisk 3.5 #3             (/DISK.C)
          Unit 4  = Chinook CT-20c hard drive  (/CT    )
  Slot 6, Drive 1 = Internal 5.25 drive        (/DISK.D)


SYSTEM B:  a minimally loaded Apple IIc+ with

  Slot 5, Unit 1  = Internal 3.5 drive         (/DISK.E)
          Unit 2  = Chinook CT-20c hard drive  (/CT2   )


   With this setup, an ONLINE call to ProDOS will return the following:


SYSTEM A:

Slot 6, Drive 1 = (/DISK.D) Internal 5.25 drive
Slot 5, Drive 1 = (/DISK.A) UniDisk 3.5 #1
Slot 5, Drive 2 = (/DISK.B) UniDisk 3.5 #2
Slot 4, Drive 1 = (/RAM4  ) Ramdisk
Slot 2, Drive 1 = (/DISK.C) UniDisk 3.5 #3 (mirrored to this slot by ProDOS)
Slot 2, Drive 2 = (/CT    ) Chinook CT-20c (mirrored to this slot by ProDOS)


SYSTEM B:

Slot 5, Drive 1 = (/DISK.E) Internal 3.5 drive
Slot 5, Drive 2 = (/CT2   ) Chinook CT-20c hard drive


   Ordinarily, if you turned the computer on with ProDOS disks in all drives
it would boot the 5.25 internal disk on System A, and the 3.5 internal disk
on System B.  If you removed the disk from the internal drive on System A,
the computer would automatically try the first device in slot 5 (the UniDisk
3.5 #1, /DISK.A in this case).  You would NOT be able to boot directly to
the hard disk on either system.

   Enter SMARTBOOT.  Run the Basic program SB.INSTALL, and follow the
instructions to install SMARTBOOT or SMARTBOOT.TINY.  If you selected the
Slot 5, Unit 4 device as the Secondary Boot Disk for System A, or the Slot
5, Unit 2 device as the Secondary Boot Disk for System B, you would be able
to boot almost immediately to the hard disk when starting up the computer at
power-on, or when restarting by pressing Control-Open-Apple-RESET.


PROGRAM DESCRIPTION
-------------------

SMARTBOOT (SYS file)

   This is the full-featured version of the program.  It replaces the file
PRODOS on the Primary Boot Disk.  When executed, it transfers control to the
slot and unit numbers specified at relative bytes 7 and 8 in the file.

   If the slot contains a Disk II controller card, it will ignore the unit
number and simply boot drive 1 on that card.

   If the slot contains a Smartport card (such as slot 5 on the //c, IIc+,
and IIgs), it will check to see if the disk device is online.  If there is
an error, it will continue checking that device until it IS online.  For
instance, if the selected device is a 3.5 disk drive, it will wait until a
disk has been inserted.  If the selected device is the Chinook CT-20c hard
disk, SMARTBOOT will continue checking until the "NO DEVICE CONNECTED" (28
hex) error is gone (that is, until the drive has come up to speed and is
ready to use.)

   If the disk device is not ready to boot, the error message returned by
the Smartport firmware is displayed.  (The other bytes displayed refer to
the place in the program where the Smartport call was made, and is primarily
for error checking purposes.)  A "clock" will be displayed that advances
approximately once per second until the Secondary Boot Disk is ready.

   If you manually patched the slot and unit numbers into SMARTBOOT (see
"HOW TO USE SMARTBOOT" below) and selected a slot and/or unit that does not
contain a disk device, an error messages is displayed and the program halts
with a "*" prompt and a cursor.  From there you can switch to an ordinary
boot disk and try again (and reconfigure your SMARTBOOT program to select a
slot that really contains a disk device).

SMARTBOOT.TINY (BIN file)

   This is the brief version that is loaded from Block 0 of the Primary Boot
Disk.  (It is less then 256 bytes long, so will load properly even from a
5.25 disk.)  It does not do as much error checking as regular SMARTBOOT, and
will fail with almost any ordinary error that would cause a "Check Disk
Drive" error on a //c.  It is not sophisticated enough to wait for a hard
disk to come up to speed (as SMARTBOOT will).  If you don't need all the
error checking, or don't want to replace the file PRODOS on the Primary Boot
Disk, this is the version you should use.


SB.INSTALL (BAS file)

   This is an Applesoft program that installs either of the two above
programs, and makes a small alteration to Block 0 on the Secondary Boot Disk
to ensure that the boot will work for Units 3 or 4 on a Smartport.  This
patch should not affect ordinary booting; however, should there be a reason
that it needs to be removed, SB.INSTALL will remove the patch and restore
the original code (as any good patch program should -- thanks for teaching
that to me, John Link!)  The patch to Block 0 DOES take into account the two
different versions of the Block 0 boot code for ProDOS that exist.


HOW TO INSTALL SMARTBOOT
------------------------

   The Applesoft program, SB.INSTALL, expects to find itself running from
the Primary Boot Disk.  That disk can contain any files you wish it to, but
must also contain SB.INSTALL and either SMARTBOOT or SMARTBOOT.TINY.  These
files must not be in a subdirectory.

   Use FILER or the Apple System Utilities Disk to transfer the files
SB.INSTALL and either SMARTBOOT or SMARTBOOT.TINY to the Primary Boot Disk.

   If installing SMARTBOOT, you must manually change the name of the program
to PRODOS.  To do this, launch BASIC.SYSTEM and at the "]" prompt insert the
Primary Boot Disk.  If PRODOS already exists on this disk, type

DELETE PRODOS

   or

RENAME PRODOS,PRODOS.OLD

   Then, type

RENAME SMARTBOOT,PRODOS

   If installing SMARTBOOT.TINY, just make sure that PRODOS is either absent
from the disk or is the true PRODOS (and not a renamed SMARTBOOT).

   Start the SB.INSTALL program by typing

RUN SB.INSTALL

   and follow the prompts.  You will need to have ProDOS disks in all online
disk devices in order for the program to properly identify the disks in the
Smartport devices.


HOW TO USE SMARTBOOT
--------------------

   SMARTBOOT.TINY can be used only by booting through a power-on (cold
boot), by Control-Open-Apple-RESET (warm boot), or from Basic by PR#6 (if
slot 6 drive 1 holds the Primary Boot Disk.)

   SMARTBOOT can be used the same way, plus can be invoked from Basic by
typing

-PRODOS

   It can also be started from various program selectors:


PROSEL (by Glen Bredon)

  Set up your menu entry like this:

Screen title:  SmartBoot           (or whatever)
Prefix:        /PRIMARY            (use your Primary Boot Disk name)
Pathname:      PRODOS
Startup:       <empty -- but see below>

   SMARTBOOT will support the ProDOS convention for accepting a startup
string.  If the startup position above contains the slot and unit numbers,
SMARTBOOT will replace the default values set by SB.INSTALL and use the new
numbers to do its booting.  This would allow you to boot to several
different devices on a Smartport chain with the same SMARTBOOT file
(renamed, or course, as PRODOS).  For example, to boot to Slot 5, Unit 3:

Screen title:  SmartBoot
Prefix:        /PRIMARY
Pathname:      PRODOS
Startup:       53


   Be sure if you want to do this for Unit 3 or 4 on a Smartport chain that
you have a patched Block 0 on the disks in those drives.  This could be done
with SB.INSTALL; just run it once for each drive you want to patch,
finishing with your usual Secondary Boot Drive.  Also, you can do this with
BLOCK.WARDEN by reading Block 0 off a patched disk and writing it to a
non-patched disk.

   Also notice that you may use BLOCK.WARDEN to change the startup slot and
unit in SMARTBOOT (renamed as PRODOS, you recall) just as it can change a
startup file name.  (See BLOCK.WARDEN documentation for details.)


DAVEX (by Dave Lyons) / ECP-8 (by Don Elton)

   SMARTBOOT can be started from DAVEX by typing:

/PRIMARY/PRODOS 53

   at the prompt to boot the disk in slot 5, unit 3.  I am not as familiar
with ECP-8, but it should work the same from that ProDOS 8 shell program.


FOR THOSE INTERESTED...
-----------------------

   After running SB.INSTALL , even if you don't actually install anything,
exit to Basic by selecting [3] from the main menu.  Then type

GOTO 20000

and you will see the full list of disk devices that are online when
SB.INSTALL was run.  "S" refers to Slot, "D" to Drive, "T" to the true
(actual) slot, and "U" to Unit.  "Dev" refers to the ProDOS device code.


FINAL COMMENTS
--------------

   If you downloaded this file from GEnie, it should be bug- and virus-free.
If you got it from any other info service or BBS, there is a chance that it
could have picked up a virus somewhere.  If there is any doubt, as usual for
downloaded software, MAKE SURE YOU HAVE A BACKUP before you commit your
disks to it.  As mentioned above, SB.INSTALL does do writing to Block 0 of
the Secondary Boot Disk (and to the Primary Boot Disk if using
SMARTBOOT.TINY).  If that makes you nervous, make a backup before you commit
yourself to using SMARTBOOT.

   This program is FREEWARE.  If you have any problems or suggestions for
improvements, send me E-mail on GEnie (S.WEYHRICH) or directly to the
address below.


Steven Weyhrich
Zonker Programming
2715 N. 112th St.
Omaha, NE 68164

GEnie Mail: S.WEYHRICH
