workbench/c/setpatch

    Patch for mathieeesingbas.library Mul/Div FPU handling.
    Patch for the OS copyright.
    Patch for WritePixelLine8() trashing the source.
    Froze 43.4.
    Fixed V39 ScreenQuiet patch.
    Froze 43.5.
    Added BOOL CheckIO() patch to help WB and others
    Froze 43.6.
    Now features NSDPatch functionality based on NSDPatch 43.20.
    Froze 43.8.
    Slight improvement to make a smart SegTracker happy.
    Froze 43.9.
    Added disk based rom update functionality.
    Froze 43.12.
    Fixed bug in WPA8 patch that I introduced myself when trying to
    make the patch better. SetPatch turns into a "doitall" due to
    requests from H&P. I don't like it. It can now try to
    selectively "soft" disable ROM modules. You can even skip ROM
    updates by name now. *sigh*
    Froze 43.13.
    The pathological cases for SetPatch had a few problems. With
    all updates skipped or no updates SetPatch rebooted too much.
    Also, killing update tags didn't work as expected.
    Froze 43.14.
    Here is a summary of the majik new options. NOROMUPDATE/S does
    what it says. DISABLEROMMODULES/K accepts a comma separated
    list (no spaces!) of module names and takes them out of the
    module list. It's the infamous RemLibrary functionality. If you
    don't know what you are doing you crash. SKIPROMUPDATES/S will
    skip selected update modules in the update file. It also
    accepts a comma separated list of module names. KILLUPDATE/S
    removes all the kicktags SetPatch had installed. FORCEUPDATE/S
    will install updates even though something has been installed
    previously already. SetPatch will wait for all volumes to be
    validated now before rebooting! The DosList will be checked
    once a second.
    Froze 43.15.
    SetPatch now has a WAITFORVALIDATE/S option which does what it
    says. This option is NOT default. BTW, the wait can be aborted
    by a mouseclick of >0.2s or CTRL-C on a Shell-Start.
    Froze 43.16.
    No more automatic wait for the validator. SetPatch will only
    wait (before a reboot and in general) if you specify
    WAITFORVALIDATE on the command line. Compatibility rulez.
    Froze 43.17.
    SetPatch will now print the ROM update modules it had
    installed if not invoked with QUIET.
    Froze 43.18.
    It also will wait 3s with additional messages before rebooting
    when reporting the modules only so that you can easily stop and
    check the output.
    Froze 43.19.
    The ROM update file format has changed! It is now more flexible
    in terms of selective updates and future extensions without yet
    another change of format being required then.
    Froze 43.20.
    Per request from H&P, SetPatch will now per default disable
    workbench.library and icon.library if a corresponding file can
    be found in LIBS:. This happens only *unless* the
    DISABLEROMMODULES option is used in any way. To not have any
    modules disabled, use the option with an empty string now.
    If you don't have replacements in LIBS:, nothing will be disabled!
    This is to keep OS3.1 users alive.
    Also, the version has been bumped to V44 now.
    Froze 44.1.
    Added last minute hack to SetPatch per H&P request. Pressing all of
    LSHIFT|CONTROL|LBUTTON at the same time during initial reboot
    will disable the "scsi.device" ROM update. It is probably unwise
    to put this info into the manual. It should be left to qualified
    support personnel to decide if this option helps or makes
    things worse depending on the user's configuration.
    Froze 44.2.
    The correct order of NSD patches is now internally kept, which
    should make the patch process pretty much foolproof. I also
    added a SKIPROMMODULES alias to match the docs that I haven't
    seen yet. The NSDPatch.cfg file got a few touchups, but I
    currently don't have new info to add there.
    Froze 44.3.
    Added olsen's BltMaskBitMapRastPort() patch for interleaved
    bitmaps. This required some tweaking of the patch and an enhancement
    to the SetPatch engine. Also, handling of 68040/68060 should match
    Enforcer better now. This is an experimental SetPatch.
    Froze 44.4.
    I turned off DOS requesters during the ROM-Update and OS 3.5
    checks to be more compatible to the old V40 SetPatch. If either
    DEVS: or LIBS: were not available, the machine would have put
    up a requester (which may not have beeen visible with Gfx boards!).
    SetPatch will also *not* disable the icon.library ROM module anymore
    if an icon.library V3x.y is found on disk.
    Froze 44.5.
    Disabled BlitMaskBitMapRastPort() patch for Boing Bag release.
    As you wish, Jochen.
    Froze 44.6.
    SetPatch will only install the ROM updates now if it has not been
    started before. One should also be able to abort the reboot
    with CTRL-C now during the ROM udpate install process.
    Froze 44.7.
    When printing the patch list, SetPatch will no longer try to
    print entries that were incorrectly removed.
    Froze 44.8.
    NSDPatch.cfg line parsing was broken since the beginning of
    time for hex numbers containing letters. This works now and
    other incorrect lines are also flagged and not silently ignored
    anymore.
    Froze 44.9.
    Is is now possible to use a new option in NSDPatch.cfg. The
    option is named "IDSTRING/K" and allows you to match a patch to
    the lib_IdString information of a Device. See the updated
    NSDPatch.cfg for more info. SetPatch code also passes STRICT
    checking of SAS/C now.
    Froze 44.10.
    The IDSTRING option handling had a logical error. In essence
    the same error applied to SANA2MAGIC/AVOIDFORBID. These rather magic
    options should be fixed now. SetPatch should now use correct
    Y2K compliant version info anywhere, including NSD patch functionality,
    which was/is not really user visible anywhere. Well, it's fixed now.
    Froze 44.11.
    I decided that adding a patch for the broken ramlib signal
    usage is worth the effort touching SetPatch again. The patch is
    hardcoded to be V40 ramlib specific. Handling of 040/060 should really
    match Enforcer better now.
    Froze 44.12.
    If the user does not do very bad things before calling
    SetPatch, stack sizes for CON:, RAW:, SER:, PAR:, PRT:, and
    RAM: should now be 4000.
    Froze 44.13.
    The NSDPatch AVOIDFORBID option should now be safe for devices that
    a) support AVOIDFORBID and b) can be expunged.
    Froze 44.14.
    utility/UMult64() will now return the result correctly on a
    plain 68000.
    Froze 44.15.
    Thomas Richter asked me to take out the wait before rebooting.
    I am not sure that this is a good idea, but I can't quite refute it.
    So let's try it. Also, SMult64 should now do the right thing on plain
    68000 machines.
    Froze 44.16.
    Copyright update requested by Juergen Haage.
    Froze 44.17.
    Starting with the ROM update file V44.27, SetPatch should be
    able to optionally place the kicktags in non MEMF_KICK memory
    *if* that memory survives a reset correctly. This is to avoid
    having the tags placed in Chip memory if you don't have
    decent autoconfiguring Fast RAM. You have to use the new option
    "AVOIDMEMFKICKFORPATCHES/S" to get this feature as SetPatch
    won't be able to determine reliably if your memory is good for
    this. If it is not, your system may crash after the reboot.
    SetPatch will also now checksum existing patches and Alert()
    you, if some patches got trashed during the reboot that were
    not yet vital for startup. If too much was trashed, you
    may not even get to that Alert(). Actually, the Alert()
    will only happen if you run SetPatch with the QUIET
    option. If not, you will get a message telling you which
    modules were trashed. Also, the mathieeesingbas patch should
    work now for plain 68000 kickstarts running with high end CPUs.
    Finally, the copyright should be correct once again.
    Froze 44.18.
    The VERSIONISNSD option inside NSDPatch.cfg will now check the
    exact ver[/rev]. Previously it did not work as expected.
    Also, starting with V44.19, a new patch option KICKSTARTROMONLY
    is available to limit patching on certain patch lines. The
    corresponding NSDPatch.cfg file has been updated.
    This should fix complaints on scsi.device patches.
    Dumping NSD patches should be a little more informative now.
    Froze 44.19.
    SetPatch should handle it gracefully now if it encounters
    a ROM update file that doesn't support the new style loader.
    The upgraded SetPatch didn't cope well with current ROM update
    files previously. It could get seriously confused. Integrated
    the ReleaseSemaphore() fix for Procure()d semaphores.
    Froze 44.20.
    SetPatch tries hard to fiddle with the caches on an 040/060
    only now if it finds the corresponding library being active.
    This also means that if someone has an 040/060 without an
    040/060 library named appropriately (e.g. an 060 with an 040
    lib that does 060 things), then SetPatch may not do the right
    thing anymore. Loading of 040/060 support code should behave
    slightly smarter now.
    Froze 44.21.
    SetPatch should now support exec.library updates ... and worse.
    Froze 44.22.
    Should set the RAM "Kickstart" revision now correctly.
    Froze 44.23.
    Due to an incorrect check, the DCACHE would not have been
    turned on on an 060. Handling of non autoconfiguring fast mem
    should be smarter now.
    Froze 44.24.
    The ROM update mechanism should deal better with ExecBase in
    chip or fast mem now. Previously, due to some register messups
    only, exec wasn't treated well. Also, the update mechanism
    should now longer trip over invalid pointers in ExecBase.
    There are more paranoia checks now before SetPatch plays with
    the pointers. Finally, ROM updates installed by SetPatch will
    always be checked when setpatch is run. You either get a
    recoverable Alert or a failure message, depending on the QUIET
    option, if something went wrong. If an Exec update is loaded,
    ColdCapture will be used unconditionally. This is intentional.
    I also made some preparations to allow possible future loading
    of one other very majik update. It is not required right now
    though. BTW, AVOIDMEMFKICKFORPATCHES/S is not a majik fix for
    everything. It is a hack to support non-autoconfig fast memory
    that still survives reboots. While SetPatch should be better
    now in handling various combinations of MEMF_KICK, MEMF_LOCAL,
    MEMF_FAST, and autoconfig and possibly even non autoconfig fast
    memory, I don't guarantee that it won't break on really brain
    damaged setups.
    Froze 44.26.
    More paranoia checks to the resident list. If something
    fishy is found, the resident list will be killed. Let me
    know if this breaks something else that is resident. Some
    alignment improvements which should also help debugging.
    Streamlined patch id method to be clearer.
    Froze 44.27.
    I truly broke 040/060 handling by messing with code that I
    didn't even need to touch. The right library should be loaded
    now for any 68k CPU.
    Froze 44.29.
    Starting with the AmigaOS ROM Update 44.38, a RAM Exec in
    AutoConfig(tm) fast mem should be correctly handled.
    AutoConfig(tm) board information should no longer be lost.
    Note that this ROM Update intentionally contains debug output
    which will appear on AutoConfig(tm) fast mem using machines.
    I will need the debug output to say anything more.
    Thanks to Thomas for identifying the exact cause of the "lost
    boards" problem. I should have thought of it myself but didn't.
    Leaving aside RAM exec issues (which do not play any role if
    "SKIPROMUPDATES exec.library" is used), there still seems to be
    another "unknown", introduced after SetPatch 44.17.
    Just a minor tweak this time should maybe help find that issue.
    Froze 44.30.
    Parsing of NSD command lines should better deal with unexpected
    whitespace in certain places. Stack usage should be reduced
    by about 256 bytes. No functional change beyond making the
    parser more tolerant.
    No longer tries to be too smart about an 060, i.e., it no
    longer makes invalid assumptions about AFF_68060. This should
    fix the 060 related hangups because the support code did not
    get loaded. I tried to accomodate Thomas some time ago but was
    waaaay too careful and messed up.
    Froze 44.31.
    The combination of SetPatch 44.32 and the ROM update 44.39
    should now do the right thing about exec in AutoConfig(tm)
    fast mem. Note that this release still contains *DEBUG* output
    over the serial port! I will need the output to say
    anything about any bugs for AutoConfig(tm) fast mem.
    This will probably not be the last iteration. *sigh*
    Froze 44.32.
    I made the reboot smarter for those who can't (don't want to) have
    a S-S that does not fiddle with the MMU or the VBR before SetPatch
    is called. *sigh*
    Froze 44.33.
    Reworked the mathieeesingbas patch completely to do the right
    thing and be compatible to P5 68060.libraries. Now the patch
    will only patch things if they have not been touched before.
    Also, a workaround is included for the broken way the P5
    library handles TaskOpenLib. Unfortunately, the public includes
    are wrong, so the P5 library does things wrong, but P5 is not
    to blame as they used the C= includes. It makes no sense
    whatsoever to change the includes. Fixing the libary to match
    the includes would be easier. It does not really matter to
    much now. Now, the FPU setup should be correct for all users of
    mathieeesingbas.library and P5 hardware.
    Froze 44.34.
    Fixed a problem in CPU identification that could have found an
    030 when an 040/060 was in the system. The ROM update 44.42
    no longer has debug output built in.
    Froze 44.35.
    Pure copyright update. No functional change.
    Froze 44.36.
