Part 3: Secrets of Geneva - by Al Fasoldt
18 July, 2019 by
Part 3: Secrets of Geneva - by Al Fasoldt
| No comments yet


1. You don't need a mouse to use menus

Do yourself a favor. Find someone who knows how to use Microsoft Windows (it can't be THAT hard to find a Windows user, even for Atarians) and ask that person to run it for a while without using the mouse. (A tip: If the Windows user says something on the order of "Huh? Of course you need a mouse," find another Windows user, and pray for the day that the Gatesian Rays that come out of PCs will be better shielded.) In just two or three minutes, you should be able to see how easily anyone can navigate through Windows just by using keyboard equivalents.


Guess what? Your favorite Atari operating environment does the same thing. I am NOT referring to the little dialog-box enhancements that show up under certain characters on the screen; Geneva does that, too, but that's not what I am talking about. I'm telling you that Geneva turns any properly written GEM menu bar into a menu that works solely off the keyboard.


But it doesn't do it by default. Unlike Windows, which is always ready to trip up your two-fingered typing style if you accidentally hit a menu hotkey, Geneva leaves it all up to you. If you do nothing to change things, you get a mouse menu; if you press a single key combination, you get a hotkey menu.


That key combination is Alt-Spacebar. If you've tried it, you know that as soon as you press Alt-Spacebar the Desk menu drops down. You probably thought that was a Neat Thing -- and you may have thought that was all it did.


No way. That Desk menu is just the start of something grand. Do it again, but this time look closely at all the other menu items. Each one will have an underline, usually below the first or second letter of the menu item. You can cause any of those menu items to drop their menus down by holding down the Alt key and pressing the underlined key. If you just want to browse through all the available menus, use the arrow keys; each time you press the right arrow key once, for example, the next menu will drop down.


We're not through. Once a menu has dropped down, you'll see that its own menu items also have underlines. They work the same way. You just hold down the Alt key and press the letter (or number) that is underlined in the menu.


It should be obvious that this has a couple of advantages. Anyone who is distracted by having to reach for the mouse while writing on a word processor, for example, should find Geneva's hotkey mode a joy to use -- especially if the application itself does not have keyboard equivalents for all its menu items. But a hidden advantage only shows up for those who use a macro utility (a program that performs keypresses and mouse clicks). A utility such as this cannot handle mouse movements as well as it deals with keypresses, for a number of reasons. (Mouse movements in a macro recording usually won't play back properly if you are not running the same resolution, for example.) Since Geneva is able to substitute keyboard hotkeys for mouse actions, you'll be able to create all sorts of powerful macros that duplicate anything you can do to a set of menus with the mouse. (I'll have more to say on macros later.)

2. You have a batch-file language right at your fingertips.

It's been said that there are only two kinds of computer users -- those who know about and use batch files, and those who haven't got a clue. Batch files are lines of commands that are executed, one after the other, and they're widely used in the MS-DOS world. (But even MS-DOS PC owners often have no idea what a batch file does or how to use one, as I am often reminded by the questions readers send in to be answered in my newspaper columns.)


So why am I mentioning this in an article about Geneva? Look again, friend; Geneva uses a batch file just like MS-DOS does every time it starts up. It's called GEM.CNF. You may have thought of GEM.CNF as some sort of scene-setter for Geneva, a list of little things it should know when it starts up, and in a way you'd be right. GEM.CNF does supply vital information to Geneva, such as the location of desk accessories, the filename extensions of executable programs and the name of the desktop shell, to list only three items.


But GEM.CNF's power goes far beyond that, because it's not merely a list; it's a batch file that Geneva executes, line by line, whenever it comes to a "run" command. (The "run" command actually comes in two flavors, "run" and "runsleep," but both do the same thing -- run a program.) You can use the "run" command in a more-or-less standard way, telling Geneva to execute Program A first, then Program B, then Program C. If Programs A, B and C are multitasking applications, they will all be running at the same time when Geneva is finished booting up.


Big deal. You could do the same thing under later TOS versions by sticking those programs into the AUTO folder, right?


But suppose each of those programs was a single-tasking application (with flags in Geneva's Task Manager set to single-tasking)? What happens then? Geneva allows only one single-tasking application to be active at any time (which is, of course, the definition of single-tasking, after all), so something amazing takes place: Geneva runs Program A, then halts execution of the rest of the GEM.CNF commands. As long as Program A, a single-tasking application, is running, Geneva will not execute any other programs listed in "run" commands in GEM.CNF.


This means that you can work with Program A for as long as you want. Then, when you finally exit Program A, Geneva immediately runs Program B. Geneva then suspends execution of GEM.CNF's "run" commands again, waiting for you to finish with Program B. When you have finally exited from Program B, it launches Program C.


Anyone who has written complicated batch files for MS-DOS will know right away that Geneva's simple batch facility lacks a couple of important features. One that would add greatly to Geneva's power is a "goto" function, which would be paired with a labeling method. Lines with "run" commands would be prefaced with labels, and a "goto" at some point in GEM.CNF would force Geneva to jump directly to a "run" command that is located somewhere else in the file. (This facility would require some sort of if-then-else decision making ability, also.)


But you can achieve the same effect by stacking "run" commands in GEM.CNF. All you need to do is list the single-tasking programs in separate "run" lines, in the order you want them executed, listing the same program more than once if necessary. In other words, if you always want your Atari to boot up with Aladdin (the software that handles calls to GEnie), and then always want it to run Flash so you can call a BBS, and then always want it to rerun Aladdin so you can send off your replies, just list those programs in A, B, C order in "run" commands in GEM.CNF.


Keep in mind that this method is not limited to a series of single-tasking programs. Multitasking programs that are inserted in "run" statements will be launched all at once, and then will be put to sleep when Geneva encounters a single-tasking program in a "run" statement. You'll find that this works well except for the danger of fragmenting memory; you're usually better off if you run the single-tasking programs first.

3. You don't need to keep desk accessories active.

Some of the best and worst features of the Atari ST, TT and Falcon computers center on desk accessories. They contribute an immense power to the Atari because they are always available whenever you are running a GEM-based application, or when you are using the desktop. They are also multitasking, able to do something in the background while your main program is doing something else. (Few desk accessories take much advantage of this feature, however.)


But they have some conspicuous drawbacks. Under the standard TOS system, once a desk accessory is loaded and running, it can't be unloaded, and this means it takes up memory no matter what. Also, if you boot up without a certain desk accessory and then discover you need it, you have to reboot to get it to load (or else you have to use a desk-accessory manager such as MultiDesk Deluxe). And, of course, the TOS system limits the number of desk accessories that can be open at one time; only six are allowed, even if one of them is MultiDesk. MultiDesk appears as a single desk accessory to the operating system, but allows you to launch any other desk accessory one at a time from within MultiDesk. This is ideal in many situations, but the point to remember is that only one desk accessory within MultiDesk can be opened at a time.


Under Geneva, desk accessories behave much differently. Most Geneva users know this well, and make good use of Geneva's removal of the desk-accessory limit. But too much of a good thing can be just as harmful as too little, especially when it comes to memory limitations. Running 12 desk accessories instead of six can knock a big chunk of available RAM out of your system in one quick bootup. What I am about to suggest is a way to use any accessory without the RAM penalty.


The answer, in many cases, is to treat desk accessories as transient programs. This is not a foolproof approach, and it requires a bit of care. But it could be ideal for those who don't ordinarily have enough memory in their Ataris to run a full complement of desk accessories while running their regular programs. You do this by booting up with only the desk accessories you know you will need during the entire computing session. Candidates for desk accessories in this category might include corner clocks, a networking accessory, a text editor and so on. Then, when you need to use an accessory that is not loaded, run it from the Geneva Manager menu, from the Task Manager's menu or from a multitasking shell. When you are finished with that accessory, delete it from memory.


This has a big drawback if it is not done properly. When you load a desk accessory while any other program is running, that accessory takes up the first position in RAM that is large enough to contain it. Usually, if the desk accessory is loaded early in a session, that spot in RAM is merely the top of the heap, so to speak. But if memory is fragmented -- divided up into chunks that are not next to each other -- the accessory will be placed into the first chunk big enough to hold it. If it loads on top of everything else, and (just as importantly) if the main programs that are running do not grab any extra memory from RAM while the desk accessory is open, you should be able to get back all the memory it took up when you kill off the desk accessory. (The easiest way to kill a desk accessory is to do a Control-click on its entry in the Desk menu, but there are other ways, described in the manual.)


If the desk accessory you loaded has been placed into a fragment of RAM, you actually may be better off. If it is indeed small, this fragment will not be available to standard-size applications no matter what, so you may be able to use this pigeon hole in RAM as a place to stick other desk accessories, one by one, after you kill off the first one. There are many reasons why this may not work, however, and rather than get into the technical side of this, I'll merely point out that the succeeding desk accessories must not take up any more RAM than the size of the fragment used by the first desk accessory, and they must not allocate any extra memory for buffers and the like. The only way to find out how well this technique works is to try it.


You will find that some desk accessories behave impeccably when you kill them. Atari's own XCONTROL.ACC is an example. When you terminate XCONTROL, it cooperates with Geneva, closes itself up, and leaves not a trace behind. Others, however, are less kind; Geneva is able to terminate them, but will warn you that problems could be caused if the desk accessory has hooked itself into system vectors. These are the computer equivalents of grab handles that accessories and programs sometimes use for their own purposes. You can't know beforehand if killing a desk accessory will cause a problem (often it will not, but you can't predict these things), so you MUST always save your work in other applications before terminating an uncooperative desk accessory.


The issue of handling desk accessories in a limited-memory Atari seems more complicated than it actually is. Here are some guidelines:


  • Desk accessories that you want to have available all the time should be loaded at bootup.

  • Desk accessories that you need for only one task can be run when you want to use them.

  • If you intend to terminate a desk accessory, try to do it before running any application or any other desk accessory.

4. Sleep is good for you and your computer.

Geneva is able to put any application or desk accessory to sleep. This can occur either manually or automatically. You put an application to sleep manually by any of the methods listed in the manual. Geneva puts a single-tasking application to sleep automatically whenever you run a multitasking application, and puts all multitasking applications to sleep whenever you run a single-tasking application.


So far, so good. The concept of a sleeping application is so intuitive that it needs little explanation. When an application or accessory is asleep, it's not doing anything, but it's ready to pop out of bed in an instant. (Unlike humans, Atari software needs no wake-up period when Geneva's stern taskmaster is in charge.)


But there's more to this concept than meets the pillow. There are many reasons you should consider putting all applications or accessories to sleep when you are not using them.


Sleeping programs:

  • Are cut off from the central processor, freeing up the CPU so that the task at hand runs faster.

  • Immediately disappear from the screen. This means they take up no space in your precious screen real estate.

  • Can't interfere with such system functions as the keyclick status, the audio level and the color palette.

  • Always return to the same spot you left them when you reawaken them.

Of course, you should not put an application or desk accessory to sleep if you need its services. Putting a desktop clock to sleep will remove it from the screen and won't give you a display of the time, for example. (But, to the clock, time itself isn't being suspended, as you'll see when you reawaken the clock; it will still show the right time.) Putting an accessory such as LittleNet to sleep will cut off one Atari's access to the other through LittleNet's networking services. Putting the Extensible Control Panel (XCONTROL) to sleep should not cause a problem, since Control Panel Extensions (CPXes) usually are not active in memory. (Even so-called resident CPXes aren't doing anything in memory, in most cases.)


The second benefit, clearing the screen quickly, can be put to good use when running NeoDesk. Rather than reducing screen clutter by manually closing NeoDesk's file and folder windows before you run a multitasking application, you can sweep NeoDesk's display away instantly by putting it to sleep; waking it up restores all the windows. If you are running an application from within NeoDesk, you obviously cannot put NeoDesk to sleep and then have NeoDesk launch the program. But a simple technique will let you launch an application from NeoDesk and then put NeoDesk to sleep, to clear away its windows and icons.


Before I explain this, keep in mind that you won't need to clear away NeoDesk's windows and icons if the application you are running fills the screen; in such cases, NeoDesk's own display isn't visible anyway. But many applications (when run in multitasking mode) merely replace NeoDesk's main GEM menu bar with their own, leaving the previous display on the screen along with their own windows. The technique to quickly shut down all of NeoDesk's windows and make all its icons disappear is very simple: First, click on part of the visible NeoDesk desktop to make it the foreground application. Then press the hotkey that puts the foreground application to sleep. Then click on the window for the application you just launched to bring it back to the foreground. (Note that it may have come back to the foreground anyway.)


Of course, once an application is asleep, you need a fast way of popping it back to life. You can do this with NeoDesk or any other application easily, as we shall see next.

5. Flags are for hotkeys, too.

In the Flags menu of Geneva's Task Manager, you can set more than a dozen parameters for every application and desk accessory. But you can also assign the hotkey that brings the application or accessory to the foreground, or opens it if it is a desk accessory.


But there is one more thing this hotkey does. It's not obvious until you use it. It wakes up a sleeping application. This means that every application you run can have at least two important hotkeys -- one that puts it to sleep and one that wakes it up. The put-to-sleep hotkey is a universal one, but the hotkey that wakes up an application must be assigned to each program and accessory through the Task Manager. The benefit, of course, is that this same hotkey pulls a non-sleeping application or accessory to the foreground, also.


Assign these hotkeys carefully. Avoid using key combinations that another application needs to use, such as Alt-S and Control-S (commonly used as a Save command in many programs). Control-Alt-Shift combinations are often safe to use, and they can be easy to remember if they are employed with function keys.


Here's a hot tip: Consider using the keypad number keys as hotkeys. Geneva uses these itself as hotkeys in window operations, but always with modifier keys. (Geneva never assigns a hotkey to an unmodified keyboard key in its default setup.) But you can blithely assign at least three of these keys safely, if you follow the guidelines here.


The trick is to make sure that all applications and accessories that require these keys -- which means calculators, in nearly every case -- have the keys listed as reserved keys in the "keyboard settings" dialog of their "Execution flags" main dialog. My keys of choice are actually five keys on the keypad -- the open parenthesis, the close parenthesis, the 7 key, the 8 key and the 9 key. The two parentheses keys are nearly always safe because they aren't used in typical math operations (and when they are, you can always use Shift-8 and Shift-9 instead). The three other keys are needed in desk accessory or application calculators, of course, so you'll need to assign those three keys as "Reserved" in the Flags for the calculators you normally use. (Reserved keys are passed through to the program, instead of being acted on by Geneva.)


Note that both MaxiFile and the Little Green Selector can be configured to use the keypad keys for keyboard shortcuts. In MaxiFile, you can turn off the keypad shortcuts by deselecting the "GUIDES" button in the configuration dialog. LGS has a similar configuration facility. If you want to use the keypad shortcuts with MaxiFile and LGS, avoid assigning them as hotkeys in Geneva, or make sure they are combined with one or more modifier keys.


The advantage of using the two parenthesis keys and the 7, 8 and 9 keys as hotkeys without an Alt, Control or Shift modifier key is that you can press them with one hand. (If you have a pianist's finger spread, you may be able to press the right Shift key with your thumb while pressing one of the keypad keys with a finger, but the Alt and Control keys are in two-hand territory without a doubt.)


Another hot tip: Use only the number keys on the keypad as your hotkeys, in eight levels. This will let you assign 80 different hotkeys, without needing to use any keys from the regular part of the keyboard. I won't list all the possible combinations, but here are eight to get you started:

   Keypad 1
   Alt-Kp 1
   Shift-Kp 1
   Control-Kp 1
   Alt-Shift-Kp 1
   Control-Shift-Kp 1
   Control-Alt-Kp 1
   Alt-Control-Shift-Kp 1

A common misconception about Geneva's hotkeys is that they launch applications. They don't. The application must be running first; the hotkey brings it to the foreground and wakes it up if necessary. Another misconception is that they work only with regular programs. In fact, they work with desk accessories, too. Geneva's ability to pop open a desk accessory when you press a hotkey is a considerable asset.

6. Use NeoDesk. Don't use NeoDesk. Use TeraDesk. Use HotWire. Don't use them.

We all know by now that the built-in desktop that comes with your Atari won't appear when you are running Geneva. It just plain can't. So in order to have a desktop sitting there in front of you, you need to run NeoDesk. Right?


No, that's wrong. You can run TeraDesk instead of NeoDesk. Or you can run a different kind of desktop, one that is actually a file launcher and not a graphical interface, such as HotWire. The fact that you don't need to run NeoDesk has been touched on already, but it's one of those myths that refuses to die. Let's sort this out.


First, Geneva is what provides multitasking. NeoDesk doesn't, nor do the other desktops. Second, Geneva's multitasking can't be turned off.


These two facts bring us to a couple of conclusions:

  • The desktop either supports Geneva's multitasking or it doesn't.

  • No matter what desktop you are running, you can still do multitasking.

Let's look at them more closely.

Desktops are shells. They are programs that can launch other programs. Any desktop that runs under Geneva can do this. Repeat: Any desktop that runs under Geneva will let you launch your favorite programs. The difference between NeoDesk and the other desktops is simply this:


NeoDesk will let you launch a program and then launch another one while the first one is running. The other desktops will let you launch a program and then launch another one after the first one has stopped running. (This is how single-tasking desktops have always worked.)


In other words, if you run, say, TeraDesk under Geneva, it will act just like it has always acted. You'll be able to run your word processor, and, when you have exited the word processor, you'll be able to run another program. TeraDesk won't be doing any multitasking.


But Geneva will. This is the point that gets lost. Geneva is multitasking all the time, even when TeraDesk (or any other single-tasking desktop) is running. That means you can go to the Desk menu, select the Geneva Manager or the Task Manager, and launch another application through Geneva while TeraDesk is running. This process may work more reliably if you set the desktop's flags to single-tasking, so that Geneva is forced to put that desktop (and any applications is has spawned) to sleep when you run another program. While that other program is running, you can switch back to TeraDesk through the Task Manager (or through the Desk menu or by a hotkey) and Geneva will either put that second application to sleep (if the desktop is set to single-tasking) or will run the two of them at the same time.


Note that all desktops except NeoDesk never expect to be running at the same time as other applications, so they may not behave properly unless they are set to single tasking, as I mentioned above. The only way to find out is to experiment.


But do you need to use a desktop at all? NeoDesk is ideally suited to Geneva, but you can recover 150 kilobytes or more of memory and speed up operations slightly if you run without NeoDesk. Obviously, launching applications is a simple matter; you merely use the Task Manager's file-launching menu or switch to the Geneva Manager and use its menu. (They do the same thing, and there is no advantage of using one over the other.) Even basic file operations are simple to do without a desktop, because the Geneva item selector lets you rename, copy, move, delete and find files and folders. You can also create folders and check on the free space of any of your disks.


Hot tip: Geneva's item selector can have up to 10 preset paths defined under its "PATHS" dialog. Make good use of them by defining them (and making sure you save them with the Task Manager's settings) so that you can use the shortcut method of switching paths -- by pressing a function key. You do not need to open the "PATHS" dialog to access this feature; just press the appropriate function key as soon as the item selector opens. If you regularly move or copy files to a set location, save that path in one of the function-key slots and merely press that function key after clicking on the "Move" button in the "TOOLS" dialog. (Of course, you don't even need to do any clicking. Pressing Alt-T will open the "TOOLS" dialog without the need for the mouse.)


If you have favorite desk accessories that supply most of the functions of a desktop (disk formatters, file-management utilities and so on), you should assign hotkeys to those accessories so that they can be called up with a keypress.


Another hot tip: The CodeHead macro utility, CodeKeys, works exceptionally well with Geneva, and is perfect for automating Geneva's 's outside the scope of this article), but if I were going to endorse anything outside of Geneva and NeoDesk, I'd put motherhood, apple pie and CodeKeys at the top of the list -- and not necessarily in that order.)

7. It's better to switch than fight.

If you're like me, the first thing you did when you set up Geneva was to run as many programs as possible, arranging their windows as small as you could on the screen so you could squeeze 'em all in. Now THAT's multitasking, folks!


It's impressive enough on the screen, but it's not a very effective way to work with your Atari. Multitasking doesn't mean doing many things at once; it means being able to do many things at once, whenever necessary. There's a big difference.


When you are working with your word processor, you are probably not doing anything else. (Writing is hard enough on its own; I ought to know.) When you are extracting files from a ZIP file or an LZH archive, that's what you want to do at that time, and chances are you aren't doing anything else at the computer. I know of only one task that I regularly do on my Atari while simultaneously doing something else, and that's downloading files. Occasionally, I play MOD files while working, and sometimes I do image processing in the background. But for most of my sessions at the keyboard, the computer is doing only one or two things at a time.


What this means is that I use Geneva more for its task-switching capabilities than its multitasking abilities. If this is the way you generally use your Atari, too, you can make things easier by setting many of your applications to single-tasking status. Geneva will put all other applications to sleep when you run a single-tasking program, clearing the screen and speeding up operations within that application.


Watch out for problems with telecommunications programs (not accessories) that are online when you switch to a single-tasking application. Geneva cuts off all its access to the modem when a program is put to sleep. You may be able to switch to a single-tasking application safely for a few seconds, but longer timeouts will almost certainly cause the modem at the other end to let go of the line. You can prevent this from happening and still safely single-task any application if you use a desk-accessory telecommunications program. Even when Geneva puts all applications but the foreground one to sleep, desk accessories are not affected.

8. You don't need to scroll the desk menu.

When Geneva broke the six-desk-accessory limit, Atari users were at last able to run as many DAs as they wanted. To accommodate Atari's oldest type of display, Gribnif added code to Geneva that kept the Desk menu from getting too long for the screen. Once the Desk menu has more than a certain number of items -- both accessories and running programs -- it turns into a scrolling list. The length of the scrolling list is perfect for an ST medium-resolution screen, but those with ST high-resolution displays and everyone who owns a TT or Falcon could make good use of a longer list, one that would extend, if necessary, right to the bottom of the screen.


That is just what you can get if you load the Submenu CPX into the Extensible Control Panel (XCONTROL). The "Length" setting in the Submenu CPX extends the length of the Desk menu (and the Applications menu, which is what Geneva calls the Desk menu when it is torn off). A setting of 150 should work fine.


Control Panel Extensions are usually freeware, and are available from GEnie and other online services as well as many bulletin boards.

9. C'mon baby, let's Undo the Twist

Under Geneva, you never have to twist 'n' twirl to click one of the buttons in a dialog box. All GEM applications and desk accessories that are written to follow normal programming rules will show dialog and alert buttons that can be activated from the keyboard. Keyboard equivalents are assigned two different ways -- through Alt-key equivalents, shown as underlines, and through the first three function keys. The function-key method is easier to use, since it always follows the same pattern; F1 is always the first button, F2 is always the second and F3 is always the third, if there are three choices.


An even handier shortcut is Geneva's method of checking dialog boxes, alert boxes and similar menus for the word "Cancel" or its equivalent. Pressing the Undo key will always activate the "Cancel" button in properly written GEM applications. (This feature of Geneva also works in many non-standard applications, too.) This means that the big Undo key at last takes on the role it should have had from the start, to cancel the dialog box that is active on the screen. From this point of view alone, Geneva makes a significant advance for Atari users.

10. You're a character! Put it there, pal.

Sometimes you find pearls where you'd least expect them. Among all the adjunct features of Geneva is a utility that is surely little more than a gift of the programmer. It has nothing to do with multitasking or interface improvements, and could have been left out of Geneva; no one would have missed it yet. And yet this feature, the ASCII Table, is one of those precious stones that shine on their own. Its action is simplicity itself: Click on any character, and that character will appear in the foreground application.


What is not obvious is that the ASCII Table will insert any character into text-entry lines of dialog boxes and other such items as well as into a word processor. It's easy to tell if the application itself will accept the character you choose; if you see it appear, it's usable. (Note, however, that you may not be able to use the entire character set in such things as filenames.)


Unlike other GEM windows, the one the ASCII Table uses is supposed to be accessed when untopped -- that is, when another window is in the foreground. Geneva sends the character you choose to the topped window, so if the ASCII Table itself is the top window, it ends up trying to send the character to itself, which it obviously can't do.

Sign in to leave a comment