BOOTSCREEN ~~~~~~~~~~ Startup screen program for Amigas with Workbench Release 2.04 or higher. Copyright ©1994 by Joseph Luk. All rights reserved. ----------------------------------------------------------- MAIN DOCUMENTATION $VER: 2.2 (3/4/94) UNREGISTERED VERSION Introduction ~~~~~~~~~~~~ Some time ago, I downloaded a cute little utility called "BootPic" (no 'K' at the end). This addessed the fact that under OS 2.0 and greater, you are treated to a blank screen until the Workbench comes up -- very boring and annoying in that you can't confirm whether or not you're going through a normal boot sequence. Correcting the problem, "BootPic" displayed a mock "Windows" startup screen until the Workbench came up. The only problem was that this screen was hard-coded in the program, and the extra-tall PAL screen and incorrect version number couldn't be corrected. The author said that he would probably not add IFF support in the future. Enter BootScreen. My program is smaller, loads an IFF picture, and also supports AGA 24-bit palettes. Features ~~~~~~~~ * Highly user-friendly. Package provides Install scripts for operations beyond installation. Configuration is standardized and extremely easy to use. * Takes advantage of advanced hardware and software (full AGA support). * Highly efficient boot-time operation for maximum speed. * Maximum flexibility of monitor and screen mode selection. Requirements ~~~~~~~~~~~~ * Amiga with Workbench 2.04 (V37 intuition and graphics library) or better installed. Note that previous versions of BootScreen failed under 2.04; this was a bug and is now fixed. * Hard disk highly recommended. Running the program ~~~~~~~~~~~~~~~~~~~ Several extremely friendly install scripts are provided. They are for Commodore's standard Installer program, which comes on your system disks. You must have the Installer in one of the path directories (C: is the recommended location). The scripts provide extensive on-line help which I spent much time writing, and it would be to your advantage to read the help texts. For first-time installations, simply run the "Install" script. Don't worry about what will happen if you don't like the program, since the "Remove" script will quickly and easily get rid of all the things "Install" has set up. If you are upgrading from an older version of BootScreen, run the "Upgrade" script. It will remove old files so that you can perform the regular installation. The "Remove" script completely undoes all changes made by "Install", except by default it does not remove iff.library. I recommend that you keep this library installed anyway, since many programs use it. Go ahead and fire up the Install script! When you've got that done, the only noticable change in your system will be a new Preferences editor in the Prefs drawer: BootScreen. Editor Usage ~~~~~~~~~~~~ The BootScreen Preferences Editor supports the standard interface that all the other editors use. The one exception is that it does not currently support preset files, but the settings aren't very complex so there's little need for them. Most of the menu choices should be familiar to anyone who has used the standard system Preferences editors. To specify which picture you want to display at startup, either type the name in the string gadget, or click on the "GetFile" gadget to its left. That will bring up a standard system requester and allow you to select the picture. The other gadgets' functions are as follows: MONITOR Under Workbench 3.0 and above, many people use the "mode promotion" feature. This does not become active until midway through the startup, meaning at the beginning, screens will always be displayed in the default mode, NTSC in America and PAL in Europe. However, when mode promotion becomes active, screens that have not been specifically opened in NTSC or PAL get promoted. It is easy to see the effect this produces by selecting a DEFAULT monitor, saving, and re-booting. If you have mode promotion turned on, midway through the startup the screen will re-sync to the higher mode. You can avoid this by selecing the appropriate default monitor (NTSC or PAL). Then, your startup screen will not be promoted because it is actually requesting a specific monitor. I personally keep Monitor set on DEFAULT because I don't mind the re-syncing, and feel that the scan-doubled image looks a lot better. It's a personal preference, and I left the choice up to you. The Monitor setting has no noticable effect under Workbench 2.x, which does not support mode promotion. Position Effect ----------------------------------------------------------------------- DEFAULT System chooses best monitor. Can cause re-syncing if mode promotion is turned on. NTSC Program requests NTSC monitor. Will fail if unavailable. PAL Program requests PAL monitor. Will fail if unavailable. BYPASS Program requests whatever monitor the picture was saved with. This *can* allow you to use DblPAL, Super72, etc with your startup screen pictures. Read the technical article on "Alternate Modes and Early Monitor Loading" for more information. This setting is not recommended for normal use. CENTER PICTURE? This tells BootScreen to automatically center the picture on the display. It allows you to save file space and boot time by using brushes rather than full pictures for your startup screens. If BootScreen's centering is not to your liking, you can always disable it and center your graphic manually within your paint program. SAVE Sáves the current configuration. Note that the configuration is saved into the icon's ToolTypes. I figured that you've probably got a cluttered enough hard disk already, and another confiuration file is only going to be a pain. The only downside to the method of using the icon as a config file is that you must not delete the icon, and you cannot use the ToolTypes for your own stuff (e.g., "Icon by" texts or parenthesized comments). TEST Displays the picture. If screen centering is on, some of the Workbench may be shown in the back. This is normal; in actual use, the picture will be centered on its own background. Click in the picture to finish viewing. CANCEL Quits without saving changes. That's all you need to know to use BootScreen! Once again, please note that BootScreen 2.2 is now ShareWare, and you are required by law to send in a donation of at least $5 if you use the program beyond the one-month trial period. I'm not trying to make money off you, I'm trying to recoup the expenses of coding up this project. And I'm trying to meet minor expenses; I'm a high school student who stayed up a little later each night after homework to work on this project. Cheap groveling: please reward me for my efforts. The remainder of this document will be devoted to technical articles about how the BootScreen system works, and what changes you are and are not allowed to make. Trust me, you can live a happy, full life without reading it. :> The Files ~~~~~~~~~ There is a large array of programs in this archive, most of which are custom-coded for the Install scripts. Only three programs actually comprise the BootScreen system: bin/c/BootScreen Main BootScreen program. This what is loaded at boot-time and displays the picture. bin/c/BootScreenClose This is the so-called "close daemon" which performs the task of closing down the startup screen when it is no longer needed. bin/Prefs/BootScreen Preferences editor. Why So Many? ~~~~~~~~~~~~ This is the question that's probably burning in your mind: "Why the heck is he using a 'close daemon'?" I could easily compile BootScreen to automatically stay resident until it needs to close its screen, but I didn't. Why? The main reason is that I wanted to fully optimize your boot time. If I used the method of staying resident (equivalent to the old way BootScreen was run, with RUN >NIL:), the program would immediately quit and the startup-sequence would continue onto the next command. That sounds great, but there is a problem. While BootScreen is loading its IFF picture, the startup-sequence would be loading the next command. This simultaneous tug-of-war for the disk drive causes DOS to shuffle the head back and forth supplying the startup-sequence and BootScreen with little bits of the files they want at a time. As a consequence, most of the time is simply wasted with the head moving from place to place, rather than reading data. Not only that, it really causes unncessecary wear and tear on your hard disk head servos. Enter the solution. Instead of returning control to the startup-sequence immediately, BootScreen loads the IFF picture, then it launches a seperate program responsible for closing the screen. Only after that is finished, does it allow the startup-sequence to continue. The speed gains may be negligible for small pictures, but if you try displaying a HAM8 picture you'll immediately see the advantage -- as well as hear it; hard disk heads make noise when they seek! The only real disadvantage with this setup is that you've got an extra program on your hard disk. I believe this is not a problem, but you must remember never to run the BootScreenClose daemon yourself. At the current time, its only function is to get a lock on the frontmost screen, and wait until it is shoved to the back, at which time it closes it. Needless to say, this can cause disastrous results if you try it on your Workbench screen. BootScreen will automatically run the close daemon on its own, so you will never have to (and should never) touch it. Ideally, I'd like to make the close daemon internal to BootScreen, so that the danger of accidental execution won't exist. However, I tried for several agonizing weeks to get my program to spawn a new task and then quit, without having its cleanup code deallocate the task. There's probably some way to do it, and I'd appreciate any hints anyone can give me in that direction (here's a hint from me, cback.o is not a solution). Mode Selection ~~~~~~~~~~~~~~ As mentioned before, the only monitor available when you boot up is your default montor, NTSC for American machines and PAL for European ones. This means that trying to open a screen at boot-time that is for another monitor, such as Super72 or DblNTSC, will always fail. To avoid this problem, BootScreen automatically thows away the upper 16 bits of the picture's DisplayID -- the monitor specification, and replaces it with NTSC, PAL, or nothing, depending on your selection of the MONITOR gadget. Please note that BootScreen does not add monitors to the system or mess with the scan rates; selecting NTSC on a PAL system or PAL on an NTSC system will only cause the display to fail (unless you had already loaded a PAL monitor driver, of course). I mentioned this just so you'll understand why sometimes your pictures come out distorted or in the wrong resolution. Saving the pictures in NTSC or PAL will help ensure that the resolution that they're displayed in at boot time will be the same as the one they're saved in. Alternate Modes and Early Monitor Loading ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Note: This procedure will only work under Workbench 2.1 or greater. 2.04 uses script files to load its monitors, a radically different approach from what is given here. This will be mainly useful for owners of AGA/3.0 systems anyway. Under normal use, BootScreen is restricted to NTSC or PAL monitors because those are the only ones available at the early time that BootScreen is usually run. However, it is possible to load a "monitor" (the software file that resides in DEVS:Monitors -- the driver) earlier than normal, allowing BootScreen to use exotic modes. To facilitate this I have included the "BYPASS" option as of version 2.2; its function will be covered in detail shortly. The key to loading monitors early lies in understanding that the "monitor" driver is actually an executable program. This means you can run them from a CLI, a script file, or even your startup-sequence. All you need to do in order to load a monitor "before its time" is issue a command such as this one, before the BootScreen line in your startup-sequence: RUN >NIL: DEVS:Monitors/DblNTSC This will load the monitor, and its modes will be available for programs to use. There is a very important disadvantage to doing this, which you should understand before proceeding. Under Workbench 3.1 (this also applies to Workbench 3.0 users who have installed the Commodore 3.1 [A1942] kit available from Aminet), Overscan preferences allows you to center the screen on the display using the arrows. By loading a monitor early, before IPrefs, you invalidate that feature. If the default centering is fine for you anyway, then you have nothing to worry about; else, you might want to consider using the FreeWare utility MonEd to edit your monitor drivers. Then screen centering will be determined by the drivers themselves, rather than IPrefs. Theoretically this should solve your problems (you must also make sure to reset Overscan preferences when you're done); however, I have not tried the procedure. If you would still like to try out those exotic modes, all you need to do is insert the appropriate monitor command before the BootScreen line, then choose the "BYPASS" monitor option in BootScreen Preferences. "BYPASS" will cause BootScreen to request the monitor ID contained in the picture (as opposed to DEFAULT, where BootScreen discards the ID). That means if you save the picture out of DPaint in a DblNTSC mode, for example, you'll get a DblNTSC boot screen, provided you have loaded DblNTSC monitor driver first. Same applies for DblPAL, Super72, etc. Sometimes it's not always convenient to edit your IFF files and such just to change the monitor. I'm planning a utility that will easily allow you to edit the monitor IDs contained in your pictures; this will probably be provided in the registered package (no guarantees, however -- this depends on how much schoolwork I get over the next couple of weeks). Just another incentive to register. ;> The Install Procedure ~~~~~~~~~~~~~~~~~~~~~ Wouldn't it be nice if all programs had three Install scripts for Install, Remove (UnInstall), and Upgrade? Anyway, I wrote several programs which handle the task of kneading s:startup-sequence for various purposes. I'm sure they could be more easily written in ARexx, so if anyone's interested, let me know! Here's basically what the Install script does. If you choose to do the installation yourself, you will need to duplicate these operations. * Copy bin/c/BootScreen to C: * Copy bin/c/BootScreenClose to C: * Copy SampleScreens to SYS:Prefs/Presets ALL * Copy bin/Prefs/BootScreen to SYS:Prefs * Install proper icon for Preferences Editor (MagicWB, STD, etc) * Edit s:startup-sequence. It searches for a line that is not a comment and contains the string "SetPatch", and appends after that: ; BootScreen ©1994 by Joseph Luk BootScreen Of all of these operations, probably the only one you will ever have to mess with is the startup-sequence modification. If you have things like multiple-startup pickers that should come before BootScreen, or a non-standard startup where the SetPatch line may not be present, you can move the BootScreen command elsewhere in the script. Make sure to retain the comment, as other scripts depend on that to locate the modification. If the Install script could not find a line in your startup-sequence that had SetPatch in it, it will add the BootScreen modification at the end of the file. Obviously this is not acceptable, and you should move the lines to a proper location. What are you doing with a startup-sequence that doesn't have SetPatch?? Final Words ~~~~~~~~~~~ I hate to keep banging you over the head with this, but this is my first ShareWare release and I'd like for it to be a rewarding experience.. Contacting Me ~~~~~~~~~~~~~ I love getting mail! You don't have to be a registered user to report bugs or send a postcard! :> Joseph Luk Internet: jluk@ctp.org GEnie: J.LUK S-mail: P.O. Box 884401, San Francisco, CA 94188-4401 U.S.A. REGISTRATION ~~~~~~~~~~~~ When you register, you will receive a disk containing the latest version of BootScreen, and it will be a personalized version just for you. Also on the disk will be as many sample pictures as will fit, and perhaps a utility or two that might be relevant to BootScreen. The registration levels are as follows: $5 Basic registration. This is a small amount of money!!! This covers the registered version of the disk and U.S. postage ONLY. For International orders, add $5 U.S. to any order. $10 Uprgade registration. Will get you upgrade notices in the mail for one year and significant discounts on upgrades. Will also get you my personal approval as well as notices for other products by myself. :> $11+ If you choose to send additional cash or other gifts (even a postcard will be cherished), we can arrange specific rewards. I might even consider that 020 version. :> To register, fill out the following form and mail it to me, along with a check or money order made out for the amount you wish to donate. BOOTSCREEN 2.2 REGISTRATION Date _________________ Full name ________________________________________________________________ Address __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ Telephone # ______________________ E-mail address(es) _______________________________________________________ _______________________________________________________ Registration Amount ________ Check if International postage required [ ] + $5.00 Total Amount Sent ________ -- Mail to: Joseph Luk P.O. Box 884401 San Francisco, CA 94188-4401 U.S.A. Your disk will be mailed within four weeks. You may check with me via e-mail as to the status of your order, if you so choose. THANK YOU!!!!