OpenScreen Version 1 Created by Ray Lambert in 1990 Overview. OpenScreen is a utility program which allows you to create additional Workbench-compatible screens. You may use OpenScreen to create nearly any type of screen possible using combinations of command line options, and then (using the accompanying program CLIanywhere) open CLIs on it, load an extra copy of Workbench, etc. You may create as many screens as you like, providing that your system has the memory to accomodate them. Combinations of OpenScreen and CLIanywhere can even be utilized from your Startup-Sequence to produce the same set of extra screens every time you boot. Usage. OpenScreen does not run from Workbench (with an icon) however it can be run in just about any other way (directly from the CLI, in scripts, etc.). OpenScreen defaults to creating an exact duplicate of your Workbench screen, however you can change almost all attributes of the screen it creates by using the correct command line options. Below is a list of the command line options (switches) that OpenScreen understands. (Remember, OpenScreen starts with the definition of your Workbench screen, and the following switches _modify_ that definition). All switches are introduced with the dash ('-') character, which is followed by a single, _case_sensitive_ letter which identifies the option. In many cases the option letter must then be directly followed by a parameter with no intervening spaces. The parameter is either numeric or string data. In the following list, a dollar sign ('$') denotes string data (a name for example) and a hash sign ('#') denotes numeric data. If neither of these characters are present no parameter is required for the option (any extra text will be ignored). If a parameter must contain space characters (for example, your screen title), the whole switch must be enclosed in double quotes. For example, if you wanted to name your screen, "My Screen", you would use the following switch on the command line (WITH the quotes): "-tMy Screen" List of switches: -t$ define screen Title text -w# define screen Width -h# define screen Height -d# define screen Depth -c#,#,... set screen Colors (see below for detailed description) -e# set screen initial top Edge -1# set screen pen 1 (DetailPen) -2# set screen pen 2 (BlockPen) -H turn HIRES on -L turn HIRES off (Lowres) -I turn Interlace on -N turn interlace off (No interlace) -B open this screen Behind all others All numeric data is in decimal EXCEPT the "-c" (set screen Colors) option, which requires numeric data in HEXADECIMAL format. A 'hex' screen color value consists of three characters as such: "RGB", where "R" is the color's RED component, "G" is GREEN and "B" is BLUE. Each color component can have a value of 0 through 15. In hexadecimal notation, the numerals 0 through 9 are equal to 0 through 9, and the letters A through F are equal to 10 through 15. (Leading zeros may be left off). To define a color whose components are: RED=5, GREEN=14, and BULE=9, you would use the value: 5E9. The "-c" option takes a list of color values, each seperated by a comma. The first value in the list is for color 0, the second for color 1, etc. Any value may be omitted and the cooresponding Workbench default will be substituted. For example, if you wanted to duplicate your Workbench screen, and only change color 2 (so you can easily distinguish the two screens at a glance) you could use the following switch: -c,,5E9, This would cause your default Workbench color values for colors 0, 1 and 3 to be used, and color 2 would become 5E9. Some people may be able to create colors directly using this method, however some will not. To help you in determining the proper values for your desired colors, you may use the program called "palette" which is found on your Workbench distribution diskette in the "Tools" directory. This program is a standard palette editor that allows you to change the palette on your Workbench screen and others. This program has two special features which make it particularily useful. The first is that it displays the hexadecimal value of the color it is currently editing in its window, allowing you to experiment with colors and then get their values to feed to OpenScreen. The second helpful feature is that "palette" always opens itself on the topmost screen in the system, allowing you to edit that screens colors. Thus, you can easily edit your new screen's colors using "palette" even _after_ you've created the screen. The only drawback to editing your colors in this manner is that you would have to edit those colors _everytime_ you create the screen with OpenScreen. This makes the color option in OpenScreen quite useful. If you forget these switches you can get help by typing: SetScreen ? Warnings. OpenScreen actually does something that, under normal circumstances, is considered quite nasty. It opens a new custom screen, sets its screen type to WBENCHSCREEN, and the EXITS, leaving the new screen stranded! Normally if a program did this it would be grounds to have the programmer lynched! However, in this case, the whole purpose is to provide a new screen which acts as an extra Workbench screen -- this makes it okay. There is no need for a program to sit around in memory to manage the screen, because Intuition does that for us! So rather than use unneccessary resources, OpenScreen terminates itself after creation of the new screen is complete. The only drawback to this approach is that the screen CANNOT be closed by normal means. I'm not sure how neccessary this would be anyway because Workbench screens are usually meant to be permanent. Those of you who use utilities such as "GOMF" or "Xoper" can remove the screens that OpenScreen creates using those utilities -- otherwise, there is no way to remove them. Also, if you specify a title for your new screen, OpenScreen allocates memory for that title which never gets free'd. Although this is only a small amount of memory, the practice is not normally considered to be 'okay'. (BTW, please note that under normal circumstances I NEVER do nasty things like this! _Really_, I don't!) Legal stuff. OpenScreen is public domain and is part of the CLIanywhere package and I would very much like the whole package to be kept together as one if it is distributed anywhere. Get to know me! If you have any questions, suggestions, flames, propositions, etc., I can be reached at the following places: People/Link: Analog*Kid (log on often) BIX: AnalogKid (log on sparsely) U.S. Snail: Ray Lambert PO Box 1253 Westport, Massachusetts 02790 Phone: (508) 677-9217