💾 Archived View for gemini.spam.works › mirrors › textfiles › apple › DOCUMENTATION › to.ultramacro captured on 2020-10-31 at 20:52:36.
-=-=-=-=-=-=-
+----------------------------------------------------------+ | | | TimeOut UltraMacros | | | | by Beagle Brothers | | | | | | | | Documentation typed by: | | | | Chapter 1 Some Other Guy | | Chapter 2 Some Other Guy & Sects Fiend | | Chapter 3 Sects Fiend | | Chapter 4 Sects Fiend & Some Other Guy | | | | Sects Fiend | | Sends Thanks to: | | | | Shiftr Shiftr, Captain Sensible, Robin Hood | | | | | | Some Other Guy | | Sends Thanks to: | | | | Beowulf and the Strata Crackers gang | | | +----------------------------------------------------------+ Page numbers are not provided for obvious reasons. The table of contents is provided so you can see what is in each of the 5 files and where things are in relation to each other. Contents -------- Chapter 1 Welcome to TimeOut UltraMacros So What's a Macro? Special Features of UltraMacros New AppleWorks Commands Bug Extermination Mousing Around Chapter 2 Installation TimeOut Compatibility Installing TimeOut The TimeOut Menu Location of TimeOut Applications Location of AppleWorks Reinstalling TimeOut Installing UltraMacros Copying Applications to the TimeOut Applications disk Starting up AppleWorks with TimeOut Accessing TimeOut Applications Memory usage Control Reset Patch Chapter 3 UltraMacros Tutorial Using the New UltraMacros Commands Recording Your Own Macros Creating Custom Macros Built-In Macros Creating a Macro File Creating your Very Own UltraMacro HERE TO THE END IS IN FILES CHAPTER 4 Chapter 4 UltraMacros Reference The Anatomy of a Macro Tokens Local and Global Macros Calling other Macros Reserved Macros <sa-del> SOLID-APPLE-DELETE <ahead> SOLID-APPLE-. <back> SOLID-APPLE-, <date> SOLID-APPLE-' <date2> SOLID-APPLE-" <time> SOLID-APPLE-= <time24> SOLID-APPLE-+ <find> SOLID-APPLE-RETURN <findpo> SOLID-APPLE-^ <print> SOLID-APPLE-P New Open-Apple Commands no token OPEN-APPLE-X "sa-del" OPEN-APPLE-DELETE "getstr" OPEN-APPLE-O <oa-ctrl-@> OPEN-APPLE-CONTROL-@ <uc> OPEN-APPLE-: <lc> OPEN-APPLE-; <insert> OPEN-APPLE-! <zoom> OPEN-APPLE-@ <read> OPEN-APPLE-^ <disk> OPEN-APPLE-& <path> OPEN-APPLE-* <cell> OPEN-APPLE-- <store> OPEN-APPLE-< <recall> OPEN-APPLE-> <inc> OPEN-APPLE-CONTROL-W <dec> OPEN-APPLE-CONTROL-A <bell> OPEN-APPLE-CONTROL-G <nosleep> OPEN-APPLE-CONTROL-N <clear> OPEN-APPLE-CONTROL-X Special UltraMacros Tokens <input> <id#> <ifkey> <key> <begin> <rpt> <stop> Special UltraMacros Tokens with Parameters Defining Numeric Variables Defining String Variables Parameters <chr$ NUM> <getstr NUM> <goto MACRO> <hilight NUM EXP,NUM EXP,NUM EXP,NUM EXP> <left STRING VSR,NUM> <len STRING VAR> <msg STRING> <onerr OPTION> <posn VAR,VAR> <pr# NUM EXP> <print> <rem STRING> <right STRING VAR,NUM> <screen NUM EXP,NUM EXP,NUM EXP> <str$ VAR NAME> <val STRING VAR> <wait NUM EXP> <wake MACRO at NUM EXP:NUM EXP> If-Then-Else Logic <if> <ifnot> <then> <else> <elseoff> For Experienced 6502 Programmers Only <call> <poke> <peek> Macro Compiler Compile a New Set of Macros Macro Compiler Errors Display Current Macro Set Macro Options 1. Launch a New Task 2. Create a Task File 3. Save Macro Table as Default Set 4. Deactivate Macros 5. Reactivate Single Stepping 6. Version 7. Other Activities Other Activities 1. Set Cursor Blink 2. Set Mouse Button Response 3. Set Mouse Response 4. Deactivate the Mouse 5. Reactivate Key Lock 6. Reactivate Screen Preserver 7. Set Screen Preserver Delay Data Converter Allowing Control-@ Mouse Control Linking Files Startup Menus Task Files The Special Case of Macro Zero A Macro Explained TimeOut MacroTools Changes from Super MacroWorks Macro Token List Appendix TimeOut Utilities Using the Utilities Configure Load to Memory Dump from Memory Change Memory Status Change Name Sort Menu Key Chart Help! Customer Support Information WELCOME TO TIMEOUT ULTRAMACROS ------------------------------ TimeOut UltraMacros is a powerful addition to the TimeOut family of AppleWorks enhancements, adding macro capability and numerous new commands that can be used with any AppleWorks or UltraMacros application. Because UltraMacros is compatible with all other TimeOut packages, it is a solid foundation to build on. So What's a Macro? ------------------ A macro is a single keystroke that does the work of many keystrokes. An AppleWorks macro is a SOLID-APPLE key command; you simply hold down the SOLID-APPLE key while pressing another key and a predefined sequence of keystrokes is performed. For example, you can set up a macro like SOLID-APPLE-N that types your name and address, or use SOLID-APPLE-I to indent a paragraph three spaces (one keystroke instead of the usual seven). Macros save you a lot of typing and a lot of time. Also, with fewer keystrokes, the fewer chances of making errors. NOTE: The SOLID-APPLE key on the Apple //e and //c has been replaced by the OPTION key on the //gs. If you have a //gs, think OPTION whenever the manual mentions SOLID-APPLE. The //gs numeric keypad does not add extra keys for macro users. ENTER is the same as RETURN, CLEAR is CONTROL-X, and the other keys are simply duplicates of their main keyboard equivalents. Remember that macros are SOLID-APPLE commands, The AppleWorks OPEN-APPLE commands perform the same commands as before. UltraMacros is a very flexible package. A wide variety of built-in macros are provided on the UltraMacros disk. They can be used "as-is" or changed to suit your own needs. You can also design completely new macros once you get more familiar with UltraMacros. Novices and experts alike will appreciate the many new OPEN-APPLE commands which are also included. Special Features of UltraMacros -------------------------------- In addition to macros, UltraMacros provides other features that make your life at the keyboard easier and more productive. These include new AppleWorks commands, an AppleWorks bug fix, and mouse control. New AppleWorks Commands ----------------------- UltraMacros adds new OPEN-APPLE and SOLID-APPLE commands that save you time and effort. For example, you can press SOLID-APPLE-= at any time to enter the current time (if you have a clock). Read about the new commands starting on page 16 (Chapter 3). A complete list of new commands starts on page 31 (Chapter 4). Bug Extermination ----------------- AppleWorks has a bug that doesn't allow you to enter CONTROL-@ for printer or interface definitions. See page 72 (Chapter 4), for details on solving this problem. Mousing Around -------------- UltraMacros allows you to use a mouse to scroll rapidly through AppleWorks and to make menu selections. See page 72 (Chapter 4) for details. Note: This manual assumes that you are familiar with AppleWorks and the AppleWorks method of doing things (e.g. selecting menu options, etc.). If you're not, then refer to the appropriate sections of your AppleWorks manuals. -END- Chapter.1 Chapter 2 INSTALLATION This chapter tells you how to install TimeOut and add the UltraMacros commands to your AppleWorks Startup disk. Before you can use macros and the new commands, you must update a copy of your AppleWorks Startup disk. (Note: the floppy disk version of AppleWorks uses two disks: a STARTUP disk and a PROGRAM disk. If you are running AppleWorks from a hard disk, 3.5" disk or RAM disk, there is only one disk.) You actually need to make two modifications to AppleWorks; TimeOut must be added so that you can use the TimeOut applications on the UltraMacros disk, and then a file, called ULTRA.SYSTEM, must be added to your AppleWorks STARTUP disk. This is the actual macro program. TimeOut UltraMacros is provided on both 5.25" and 3.5" disks. Before using your TimeOut UltraMacros disk, please take a moment to make a backup copy of the disk you will be using. Since the disks are not copy protected, you may use any standard disk copier or Beagle Brothers' TimeOut FileMaster. Be sure to write protect your original disk so you don't accidentally overwrite it. Please do this now. All of the sample AppleWorks files (macros) are on side 2 of the 5 1/4" disk. Read "Path Notes" for information about the PathFinder demo. Beagle Bros' software isn't copy protected. That makes it easier for you to use and easier to make backup copies. Please support us in our commitment to supply friendly, easy-to-use software by not giving away copies to your friends. TIMEOUT COMPATIBILITY --------------------- TimeOut is compatible with AppleWorks versions 2.0 and later. If you have an earlier version, contact your dealer about getting an update from Apple. You must also have the USA version. TimeOut does not work with foreign language versions of AppleWorks. TimeOut is compatible with most enhancements to AppleWorks including Applied Engineering's desktop expander and Checkmate's desktop expander. UltraMacros is not compatible with Pinpoint, Super MacroWorks or AutoWorks. INSTALLING TIMEOUT ------------------ Once your backup copy has been made, boot your TimeOut UltraMacros disk by placing it in your boot drive and turning your computer off and back on or by pressing Control-Open-Apple-Reset. Then press "T" for install TimeOut. Soon the title screen will appear. The menu contains three options. 1. Update AppleWorks 2. Read NOTES 3. Quit Select READ NOTES. This will inform you of any changes to TimeOut UltraMacros that have been made since this instruction manual was printed. After you read the NOTES, you will return to the TimeOut startup screen. This time select Update AppleWorks. THE TIMEOUT MENU ---------------- You must now specify whether or not you would like TimeOut to sort the list of TimeOut applications in the TimeOut menu. The names will be sorted alphabetically if you specify Yes. Otherwise, they will appear in the same order as they do in the disk catalog. By specifying No, you decide the order of the names in the TimeOut menu by placing them on your TimeOut applications disk in the order you want. LOCATIONS OF TIMEOUT APPLICATIONS --------------------------------- The next step is to indicate where TimeOut should look for the TimeOut applications. If you can't fit all of your TimeOut applications on a single 5 1/4-inch floppy disk, you can now have multiple application disks. All of the application disks must have the same name (for example: /TIMEOUT). When you are installing TimeOut on your AppleWorks disk, specify YES when asked if you need more than one TimeOut Application disk. When you start up AppleWorks, insert each TimeOut Application disk, specifying YES when asked "Read another TimeOut Application disk?" Specify NO when the last TimeOut Application disk has been read. Be sure to insert the correct TimeOut Application disk when you select the application from the TimeOut menu. All of the TimeOut applications must be placed on the same disk, or any ProDOS disk device. (See Copying Applications to the TimeOut Application disk several pages ahead of this point.) The choices you have are: 1. AppleWorks STARTUP disk 2. Slot and Drive 3. ProDOS directory Be sure to insert the correct TimeOut Application disk when you select the application from the TimeOut menu. The simplest approach is to place the TimeOut Applications on your AppleWorks STARTUP disk. By doing that, you never have to search for a separate TimeOut Applications disk. If you have a hard disk or 3.5" disk, you can place them in the same directory or subdirectory with your AppleWorks STARTUP program (APLWORKS.SYSTEM). If you have more than one disk drive, you may want to dedicate one drive to your TimeOut Applications. You may specify either Slot and Drive or ProDOS directory to indicate where the TimeOut applications disk will be. For more information on ProDOS directories, see the section in your AppleWorks manual called ProDOS, "prefix for filenames". LOCATIONS OF APPLEWORKS ----------------------- The next step is to indicate where your AppleWorks STARTUP program is so TimeOut can be installed, You may specify either Slot & Drive or ProDOS directory. After indicating the location of AppleWorks, press a key and your AppleWorks STARTUP program will be updated with TimeOut. REINSTALLING TIMEOUT -------------------- After you have already installed TimeOut, if you need to change the applications disk location or the order of the menu, you can reinstall TimeOut by following the same steps for initial installation, This will only work if you have not installed any other AppleWorks enhancement programs since you installed TimeOut. If you have, then you may need to completely reconfigure AppleWorks. INSTALLING ULTRAMACROS ---------------------- If you're already using Super MacroWorks, you may wish to read about the changes on UltraMacros (Chapter 4) before continuing with this installation. 1. Make sure you have a copy of your AppleWorks STARTUP disk which has already been modified with TimeOut. If you're using a desktop expander, install it before installing UltraMacros. Make sure that your AppleWorks disk is functional with all other modifications installed before attempting to add UltraMacros. 2. Boot the UltraMacros disk and press U for "Install UltraMacros." The macro program (ULTRA.SYSTEM) will be installed into memory. 3. Remove the UltraMacros disk from the main disk drive, insert the AppleWorks STARTUP disk and press RETURN. 4. The UltraMacros installation program will attempt to modify your AppleWorks STARTUP disk. If it can't find it, it will prompt you to enter the pathname where AppleWorks can be found. You probably won't have AppleWorks in a subdirectory unless you understand subdirectories and pathnames already. In any case, complete pathname information can be found in manuals such as the ProDOS User's Manual. A pathname ALWAYS begins with a "/" followed by the disk name. Any subdirectories following the disk name are preceded by a "/" as well. 5. Your AppleWorks STARTUP disk will be updated with UltraMacros' macros and new commands. A message will appear on the screen when the updating is complete. 6. Press RETURN; the built-in macros and commands supplied with the UltraMacros disk are now ready for use. COPYING APPLICATIONS TO THE TIMEOUT APPLICATION DISK ---------------------------------------------------- If you are using other TimeOut applications, you will need to copy the applications of the UltraMacros disk to your TimeOut applications disk. Otherwise, you can use the UltraMacros disk as your TimeOut applications disk. Copy the following files: TO.MACRO.OPT TO.CLIPBOARD TO.UTILITIES TO.COMPILER Note: You may not need to copy the file TO.UTILITIES or TO.CLIPBOARD if they're already on your TimeOut application disk. If you do not have a file copy program, or you are not familiar with the one you have, there is a new method of easily copying your TimeOut files to your TimeOut Application disk. After installing TimeOut on your AppleWorks disk, the installation program will present a menu allowing you to do this. Select "Copy files to TimeOut Application disk" and then specify the location of your TimeOut Application disk. All of the TimeOut files will then be copied. STARTING UP APPLEWORKS WITH TIMEOUT. ------------------------------------ When you start up AppleWorks with TimeOut installed, you should see the TimeOut title screen before you reach the AppleWorks main menu. TimeOut will scan your TimeOut applications disk looking for TimeOut applications. Note: If you receive a message indicating that TimeOut is getting errors trying to load the TimeOut applications, it means that TimeOut is unable to find the applications. At this point you must insert your applications disk if you have not already done so. If you have inserted your applications disk and are still getting errors, you either do not have any applications on the disk or your disk has been damaged. You will need to create a new applications disk. If you do not see a TimeOut title screen, you have not installed TimeOut correctly. Go back and start over. As TimeOut identifies each TimeOut application, they are listed on the screen. An asterisk ("*") before the application name indicates that it is memory-based. You may press Escape at any time to cancel loading memory-based applications. Note: If you use a program selector such as the Apple Desktop you must select ULTRA.SYSTEM instead of APLWORKS.SYSTEM. The APLWORKS.SYSTEM file has been renamed to APLWORKS.SYS so that booting ProDOS will automatically start ULTRA.SYSTEM. If you select APLWORKS.SYS, you will run normal AppleWorks without any macros. ACCESSING TIMEOUT APPLICATIONS ------------------------------ While you are using AppleWorks, you may call up the TimeOut menu at any time by pressing Open Apple-Escape. A menu similar to the following will appear (you may have fewer or more applications than this): ________________________ | | | TimeOut Menu | |______________________| | | | 1. FileMaster | | 2. Graph | | 3. QuickSpell | | 4. SideSpread | | 5. SuperFonts | | 6. Macro Options | | 7. Utilities | |______________________| Use the up and down arrow keys or type a number to select an application, then press Return (press Escape if you don't want to make a selection). If your applications are not memory-based, be sure your TimeOut applications disk is in the drive when you press Return. Otherwise, you will be prompted to insert your TimeOut application disk. MEMORY USAGE ------------ You will notice with TimeOut installed that you have slightly less desktop memory for your AppleWorks documents. TimeOut itself takes up some of the memory. Memory-resident TimeOut applications also take up desktop memory. If you are short on desktop memory, reconfigure your applications so they are disk-based. However, for maximum speed, make your TimeOut applications memory-based or run them from a RAM disk. Note: UltraMacros is always in memory. However, it resides in a special place that doesn't take up any desktop memory. CONTROL-RESET PATCH ------------------- When you install TimeOut on your AppleWorks Startup disk, TimeOut makes a patch to AppleWorks so that Control-Reset will take you to the Main Menu instead of the machine language monitor. -END- Chapter 2 CHAPTER 3 ULTRAMACROS TUTORIAL -------------------- This section introduces you to some of the new commands included with UltraMacros. It assumes that you've already booted AppleWorks and are in a Word Processor file (UltraMacros works everywhere in AppleWorks, but the Word Processor is a good place to test things). USING THE NEW ULTRAMACROS COMMANDS ---------------------------------- UltraMacros adds several new SOLID-APPLE and OPEN-APPLE commands to AppleWorks. Try these for starters: 1] Press SOLID-APPLE-'. The date set when AppleWorks was started up will be displayed in the format: September 27, 1987. If an error beep happens instead, UltraMacros is not installed. 2] Now place the cursor on the first letter of the date that you entered step1 and press OPEN-APPLE-;. The letter will be changed to lower case For example, "September 27, 1987" would now be "september 27. 1987". 3] Press OPEN-APPLE-:. The next letter will be switched to upper case. Get the picture? You can change the case of any letter with the colon/semi-colon key. If you hold down OPEN-APPLE and press the key normally, the letter becomes lower case; if you also hold down the shift key, the letters become upper case. The cursor is always changed to overstrike mode so that extra letters aren't inserted. 4] Place the cursor in the middle of a word and press OPEN-APPLE-DELETE or SOLID-APPLE-DELETE. The character under the cursor will be gobbled, but the cursor will remain at the same spot. This command actually executes two normal AppleWorks keystrokes- a RIGHT-ARROW followed by DELETE. These new OPEN-APPLE commands can be used anywhere that AppleWorks prompts you for input. For example, the OPEN-APPLE-DELETE command can be used to change a file name after you press OPEN-APPLE-N. Or you can press SOLID-APPLE-' to enter the date when the Data Base asks you to "Type report date" when you're printing a file. Recording Your Own Macros ------------------------- This section tells you how to record your keystrokes so that they can be played back later with one keypress. It assumes that you've already booted AppleWorks and are currently in a Word Processor file. 1] Press OPEN-APPLE-X. The title at the top of the screen changes to RECORD A MACRO. If it doesn't, you didn't install UltraMacros right. 2] The prompt at the bottom tells you to "Select macro key:". Press the "T" key to record a "Test" macro. SOLID-APPLE-T will be used to activate this macro later. The bottom right side of the screen will show "Recording T" and the cursor will stop blinking. 3] You are now in record mode and whatever you type (mouse moves are included) will be memorized. Type your name and press RETURN. 4] Now press CONTROL-@ to end the macro definition. (On IIgs's and some other II's you don't have to press the shift key; on some you do). The cursor will start blinking and the bottom right side of the screen will show "Done macro T". 5] You've just recorded you first macro! To use it, hold down the SOLID-APPLE key and press T. Your name is typed much faster than it was entered, unless you're an incredible typist. This macro can now be used anywhere that AppleWorks expects keyboard input: in a file, naming a file, etc. 6] Now press OPEN-APPLE-X and press T again. This message appears on the bottom line: "Replace global macro T?" Because you already have a macro "T" in your macro set, UltraMacros lets you decide if you want to destroy the original macro. This is a safeguard to avoid accidentally erasing a macro. 7] Press Y to replace your "T" macro. You can now record the new macro. This time, press OPEN-APPLE-1 first. The cursor jumped to the beginning of the file. Any OPEN-APPLE command can be recorded as part of the macro. 8] Now press RETURN followed by the UP-ARROW and enter your name on the top line of the file. Press CONTROL-@ to end the macro. 9] Press OPEN-APPLE-9 to jump to the end of the file, and then press SOLID-APPLE-T to try out the modified macro "T". It will jump to the top of the file, insert a line, and enter your name. You can press OPEN-APPLE-X to start recording macros from virtually anywhere in AppleWorks or in a TimeOut application. You may not press OPEN-APPLE-X when the TimeOut OPEN-APPLE-Escape menu is visible on the screen, or when you're in the middle of an OPEN-APPLE-O getstring command. The command will be ignored. However, you may start a macro within AppleWorks and then press OPEN-APPLE-ESCAPE or OPEN-APPLE-O as part of the macro. Most key can be recorded as macros. Look down farther for a list of reserved macros. Keep in mind that there is no difference between upper and lower case macro names, and that all "named" keys such as RETURN and TAB have CONTROL-key equivalents (e.g. TAB is actually CONTROL-I). Press OPEN-APPLE-X to enter record mode. Press OPEN-APPLE-T. The Recording T message will appear. Enter something and press CONTROL-@ to end the macro. Press SOLID-APPLE-T. Your name is entered as defined above. Press BOTH-APPLE-T. The thing you just entered appears. All keys can have both SOLID-APPLE and BOTH-APPLE definitions. Macros that are reserved SOLID-APPLE commands, such as SOLID-APPLE-RETURN, can be defined as BOTH-APPLE macros. The UltraMacros sample includes BOTH-APPLE definitions for the named keys such as TAB, ESCAPE, etc. Of course, they can easily be changed. It's a good idea to use BOTH-APPLE macros for potentially dangerous macros (like quit AppleWorks without saving files) that you don't want to execute accidentally. You can record a macro for anywhere from 2 to 4,000 or so keystrokes, depending on how many macro keystrokes are already in memory. If the macro table is full, the Done macro message will appear as soon as you press the new macro key, unless you're replacing an existing macro. Then you'll be able to enter as many keystrokes as the original macro contained. The only exception is macro 0(zero). You can always enter up to 80 keystrokes, but it also automatically stops recording at 80 keystrokes. Any macros recorded using OPEN-APPLE-X are lost when you exit AppleWorks. There are two ways to make the macros permanent. One way is to use the Macro Options third option "Save macro table as default set". This save all active macros "as-is". The next section explains how to edit existing macros and then make them permanent. Creating Custom Macros ====================== This section tells you how to create custom macros by editing a macro file, compiling the changed macros, and then saving them on disk. Built-In Macros --------------- The built in macros are those macros which are part of ULTRA.SYSTEM and are available whenever you start AppleWorks. These macros (except for a few reserved macros) can be changed at any time to anything you wish. 1] Boot AppleWorks and insert the UltraMacros disk. 2] Add the Word Processor file Macros Ultra to the Desktop from the UltraMacros disk and print it for a handy reference. These are the sample macros included with ULTRA.SYSTEM. All of them are available for use if you've added UltraMacros to your AppleWorks disk. 3] Examine the printout while reading the descriptions of how macros are made. You can modify this file to create your own custom macros. Modifying existing macros is a good way to learn about writing your own macros. Creating a Macro File --------------------- A macro file is any AppleWorks Word Processor file which contains macro definitions. You can create a custom macro file by adding an existing macro file to the Desktop and changing the definitions, or by using the Macro Compiler's Display current macro set option to list the current macros into a file. There's nothing magical about the macro definitions in the Word Processor. They must be complied into true macro codes to be used by UltraMacros. Creating your very own UltraMacro --------------------------------- Here's a step-by-step look at creating your first custom macro definition and making it a permanent part of AppleWorks. 1] Start up your UltraMacros version of AppleWorks. 2] Insert the UltraMacros disk and add the file Macros Ultra to the desktop. Use OPEN-APPLE-N to change it name to Macros Mine. Macro file names don't have to start with "Macros"; it just makes it easier to find them that way. 3] Go back to the AppleWorks Main Menu and then make a new Word Processor file called TEST. 4] Press SOLID-APPLE-B to see a sample "begin a memo" macro. 5] Press SOLID-APPLE-N to see the author's daughter's name. 6] Now press OPEN-APPLE-Q and return to the Macros Ultra file. 7] Use the OPEN-APPLE-F command to find "Heather". You should see the following macro definition: N:<awp>Heather Brandt! name of a little "Lassie" lover 8] Change Heather Brandt to your name. Ignore the <awp> for now. Just make sure that your name is immediately after <awp> and is followed by a "!". You could cheat and use OPEN-APPLE-R to replace it, but that won't teach you anything. 9] Now use the OPEN-APPLE-F command to find "B:<awp". You should see the following macro definition: B:<awp><rtn><rtn> Date: <date><rtn><rtn><rtn> From: <sa-n><rtn> JEM SOFTWARE<rtn> P.O. Box 20920<rtn> El Cajon, CA 92021<rtn><rtn><rtn><rtn> To: ! begin a memo The first line contains special bracketed codes call tokens. Each <rtn> represents a carriage return. The second line also contains <date>. This token will always print the date which was set when AppleWorks was first started. The third line contains <sa-n>. This is the same as pressing SOLID-APPLE-N; that's why the macro printed the name given in macro-N. Switch back to the TEST files and look at what the macro did until you can see the relationship between the macro definition and the result. 10] Replace the sample address between the From: and To: lines with your own address. Start each line in the same column as the "J" in JEM and end with a <rtn>. 11] Now press OPEN-APPLE-ESC and select Macro Compiler. 12] Press RETURN to select Compile a new set of macros. 13] Press RETURN to select No for the Pause each line? prompt. 14] Press RETURN to select Beginning for the Compile from? prompt. 15] The compiler will then scan the entire file, converting the text and tokens into UltraMacros' codes. 16] Press OPEN-APPLE-Q and select the TEST file. 17] Press SOLID-APPLE-B to see the memo macro with your name included within it. Now press SOLID-APPLE-N to see just your name. 18] If the macros don't work the way you think they should, go back and examine the definition again, comparing it to the samples in steps 7 and 9. 19] Now press OPEN-APPLE-ESC and select Macro Options. 20] If your AppleWorks Startup disk is not in a drive, remove your Program disk and insert the Startup disk. 21] Select Save current macros as default set. 22] Press RETURN to select No for Activate auto-startup macro? 23] The ULTRA.SYSTEM file will be updated with the new macro definitions. Re-insert your AppleWorks program disk if necessary and press RETURN to return to AppleWorks. 24] Save your "Macros Mine" file and exit AppleWorks. 25] Now restart AppleWorks and make a new Word Processor file. 26] Press SOLID-APPLE-B. Voila! Your new definition is in effect along with all of the other Macros Ultra sample macros. 27] Press SOLID-APPLE-B again, but this time tap the ESC key immediately afterward. The macro is halted before it finishes. You can press ESC to stop any run-away macros. -END- Chapter 3 CHAPTER 4 ULTRAMACROS REFERENCE --------------------- This chapter explains in excruciating detail the capabilities of UltraMacros. In fact, it's everything you ever wanted to know about macros - but were afraid to ask. (No it is not, however, this is all Beagle is offering at this time. stay tuned to the board of your choice.) THE ANATOMY OF A MACRO ---------------------- Before you can start creating macros, you need to understand how a macro s built. The "syntax' of a command is the set of rules governing the organization and usage of that command. In an English sentence, "He here is" would be improper syntax because "is" should precede "here". In a like manner, macro commands must be organized in such a way that UltraMacros can understand what you want to have accomplished. TOKENS ------ Take a look at the macros in the Macros Ultra file (the macros come after the word START and before the word END). Each macro is made up of a series of normal characters and special tokens. A token is a code word enclosed in brackets that represents a special keystroke or macro command. For example, the token <rtn> represents the RETURN key, and the token <left> represents the LEFT-ARROW key. The macro compiler converts these readable tokens into the equivalent invisible command codes within the macro. Here's a macro a few lines into the Macros Ultra file: C:<awp><oa-O>CN<rtn><esc>! center text Each macro begins with a character or token that represents the key used with SOLID-APPLE to activate the macro. In this example, the character "C" indicate that this macro is executed by pressing SOLID-APPLE-C. Next comes a colon, followed by a token that designates where the macro will work; this macro is for the Word Processor. Next come the keystrokes and tokens that actually make up the macro. In this example there are five keystrokes: OPEN-APPLE-O, C, N, RETURN, and ESCAPE. An exclamation mark signals the end of the macro definition. Any text after the "!" is ignored. In this example the words "center text" describe what the macro does. They are not considered part of the macro. Here are some of the tokens that you can use to create macros: <del> DELETE key <esc> ESCAPE key <rtn> RETURN key <tab> TAB key <left> LEFT-ARROW key <right> RIGHT-ARROW key <up> UP-ARROW key <down> DOWN-ARROW key <spc> SPACE BAR key The tokens for OPEN-APPLE, SOLID-APPLE, BOTH-APPLE and CONTROL commands use the abbreviations oa, sa, ba, and ctrl followed by a hyphen and the appropriate key. Here are some examples: <oa-1> OPEN-APPLE-1 <sa-B> SOLID-APPLE-B <ba-right> BOTH-APPLE-RIGHT-ARROW <sa-ctrl-C> SOLID-APPLE-CONTROL-C UltraMacros adds a number of unchangeable OPEN-APPLE and SOLID-APPLE commands to AppleWorks (See the "Reserved Macros" heading). Tokens may be entered in upper or lower case, but no spaces are allowed between the letters making up the token. For example, <rtn>, <RTN>, and <Rtn> are all valid tokens for the RETURN key, but <rtn> is not valid. Multiple consecutive tokens can be used without brackets around each individual token. Just separate the tokens with spaces and/or colons. For example, two UP-ARROW commands followed by a LEFT-ARROW can be represented as <up><up><left>, <up up left>, <up : up : left>, or <up><up left>. The compiler also allows you to include comments between the <brackets>. Comments are surrounded by curly {braces}. The previous example could include a comment like this: <up : up : {this text gets ignored by the compiler} left> The macro compiler will ignore the curly braces and everything between them. No macro table space is wasted by using comments. The previous sample will compile into three bytes two UP-ARROW codes and one LEFT-ARROW code. Do NOT use token <> brackets inside of the {} comment brackets. This is legal: a:<all { comment } stop>! but this isn't: a:<all { --> see? }>! Note: If the curly braces are not between token brackets, they will be treated as normal text. LOCAL AND GLOBAL MACROS ----------------------- Each macro must be classified as either local or global. A global macro is one that works anywhere. A local macro is one that works only within a specific application. In a macro definition, the token just after the colon indicates whether the macro is local or global: <all> ALL applications (global) <awp> AppleWorks Word Processor <adb> AppleWorks Data Base <asp> AppleWorks Spreadsheet <ato> A TimeOut application only You can't have more than one global macro with the same name (the second one will never be used), but you can give the same name to several local macros as long as they are in different applications. The order in which macro definitions appear in a file is important. When you select a macro, UltraMacros starts at the beginning of the macro table and searches for the first macro with the specified name. When a match is found, the application definition is checked. 1] If the macro is type <all>, it is executed regardless of where you are within AppleWorks or TimeOut. 2] If the macro is type <ato>, it is executed only if you are currently in a TimeOut application. 3] If the macro is an AppleWorks application type, UltraMacros checks to see if you're in the specified application. If so, the macro is executed; if not, it keeps searching. From this you can see that if multiple macros are created with the same name, the local AppleWorks macros should be first, followed by the TimeOut macros, followed by the global macros. TimeOut is part of AppleWorks, so you don't have to use <ato> in macros which are designed for TimeOut; <ato> just makes sure that the macros will not run outside of a TimeOut application. Note: BOTH-APPLE macros are not considered the same as SOLID-APPLE macros even if they use the same key. A key such as "A" could conceivably have eight completely different definitions; a BOTH-APPLE and SOLID-APPLE command for <awp>, <adb>, <asp> and <ato>. Recorder macros (those defined using OPEN-APPLE-X) are global by default. If you want to make a recorded macro local, list the macros into a file and use AppleWorks to change the <all> token to a local token. Then recompile the macro set. CALLING OTHER MACROS -------------------- One macro can call another macro in two different ways: y:<all><sa-left oa-M>T<down left rtn>! delete a line 9:<awp : oa-9 : up : goto sa-y>! delete the last line in a file In the first example, SOLID-APPLE-Y calls macro SOLID-APPLE-LEFT to move the cursor to the left column; UltraMacros then returns to SOLID-APPLE-Y and the current line is moved to the clipboard. In the second example, SOLID-APPLE-9 uses the <goto> command to send control to macro SOLID-APPLE-Y. UltraMacros never returns to SOLID-APPLE-9 because <goto> is a "one-way" command. Users with BAsic programming experience can think of the first example as a GOSUB and the second as a GOTO (how fitting). Just remember that using a macro NAME will continue the current macro when the called macro is finished, and that using GOTO means that the macro will never come back. "Macro nesting" occurs when a macro calls a macro which calls a macro... UltraMacros has to remember where to back up to when the current level is finished. The limit is 18 levels. A macro which calls itself will also execute 18 times and then stop. 1:<all>*<sa-1>! print 18 asterisks To execute a procedure more often, use <begin> and <rpt> along with variables (they are explained later). <ba-1>:<all : A = 120 :begin : print "*": A = A - 1: if A > 0 then rpt>! print 120 asterisks CAUTION: When you're about to delete a macro from a file, make sure the macro isn't needed by another macro in the file. Use the OPEN-APPLE-F command to search for references to the macro. For example, if you plan to delete macro F, search for "sa-f". RESERVED MACROS --------------- The special macros listed below cannot be re-recorded, changed or deleted; you must use them "as is". You can use these macros at any time (unless otherwise noted): directly from the keyboard (press the appropriate key along with SOLID-APPLE), while recording a macro (press the appropriate key along with SOLID-APPLE), or in a macro definition (use the appropriate token). Macros SOLID-APPLE-CONTROL-@ and SOLID-APPLE-^ are also reserved. They don't do anything, at least not that you'd care about. You are allowed to use the BOTH-APPLE equivalents of these two macros, however. ___________________________________________________________________________ <sa-del> SOLID-APPLE-DELETE Deletes the character under the cursor. ___________________________________________________________________________ <ahead> SOLID-APPLE-. Finds the first blank space to the right of the cursor position. This macro works wherever AppleWorks allows you to edit characters, including Word Processor files, Data Base categories, at Find prompts, and when AppleWorks prompts you to enter names. ___________________________________________________________________________ <back> SOLID-APPLE-, Finds the first blank space to the left of the cursor position. ___________________________________________________________________________ <date> SOLID-APPLE-' Displays the date in this format: September 29, 1987 (handy for dating letters or Data Base and Spreadsheet reports). ___________________________________________________________________________ <date2> SOLID-APPLE-" Displays the date in this format: 09/29/87 (handy for dating transactions in the Spreadsheet). ___________________________________________________________________________ <time> SOLID-APPLE-= Displays the time in this format: 6:50 pm. If you don't have a clock, the time will always be 12:00 am. NOTE: If you have a //gs and 12:00 am is always given for the time, you'll need to copy the ProDOS file from the UltraMacros disk to your AppleWorks startup disk. ___________________________________________________________________________ <time24> SOLID-APPLE-+ Take a guess. ___________________________________________________________________________ <find> SOLID-APPLE-RETURN In the Word Processor: Moves the cursor to the next carriage return marker. This command only works when the "Type entry..." message is visible at the bottom of the screen. At any numbered inverse bar menu or file list: Searches for the text stored in macro 0 (zero) and leaves the cursor at that item. If the text is not found, the macro will stop completely or go into a continuous loop. If you're at a file list and want to find a file in a hurry, press OPEN-APPLE-0 to define macro 0 with the name and then press SOLID-APPLE-RETURN to find the file. From within a macro, you can use this command to automatically load files by name. This command also works with the OPEN-APPLE-Q Desktop Index and the OPEN-APPLE-ESC TimeOut menu. Macros can find desktop files by name, or start TimeOut applications by name. Define macro 0 ahead of time; you can not use OPEN-APPLE-0 while the OPEN-APPLE-ESC TimeOut menu is on the screen. Use the ability to search a menu to find printers by name when you aren't sure what order they'll be in. NOTE: The <find> command only uses the first 15 characters in Macro 0 ($0). NOTE: <find> can be used with <store> and <recall> to link files. The <find> command now works differently with menus. If the item is not found, the current macro will be ended. If the macro containing <find> was called from another macro, the calling macro will continue. This means that any macros containing <find> (if they will be called from other macros) should end with a <stop>. This way the calling macro is only executed if the item is not found, and can therefore be used for error-trapping. A macro could search for a file, and if unsuccessful, it could then change to another disk and search it. Before you only had one shot at it. See the CONTROL-P phone macro in Macros Ultra for an example. ___________________________________________________________________________ <findpo> SOLID-APPLE-^ In the Word Processor only: Moves the cursor to the next caret. The caret may be a printer options caret or a text caret which is part of the document. This macro only works when the "Type entry or ..." message is visible at the bottom of the screen. This macro is easier to use for locating printer options in a file than the OPEN-APPLE-F command, which requires you to know which option you're searching for (and its two-letter code). <findpo> simply searches for the next caret in the file regardless of what it represents. A macro can use the <screen> command to check what kind of option was found by <findpo>. For example, this macro finds the next superscript or subscript code, but ignores all other printer codes or carets: <ctrl-s>:<awp><findpo : $8 = screen 42,24,4 : if $8 = "Subs" then stop else if $8 = "Supe" then stop else rpt>! ___________________________________________________________________________ <print> BOTH-APPLE-CONTROL-P The print token is for use within macros only. ___________________________________________________________________________ ___________________________________________________________________________ NEW OPEN-APPLE COMMANDS ----------------------- The following commands can be used directly from the keyboard as well as from within macros. If you're recording a macro. press the appropriate key along with OPEN-APPLE. To use the command in a macro definition, use the token. ___________________________________________________________________________ no token OPEN-APPLE-X Begin recording a macro. This command must be used from the keyboard only; it can't be used within a macro. ___________________________________________________________________________ "sa-del" OPEN-APPLE-DELETE Deletes the character the cursor is on. This command is identical to SOLID-APPLE-DELETE. NOTE: When recording a macro, you must use SOLID-APPLE-DELETE. ___________________________________________________________________________ "getstr" OPEN-APPLE-0 (zero) Presents a ">" prompt on the bottom line of the screen, allowing up to 60 characters to be entered for defining macro 0. This command is used from the keyboard only. Do not use it while recording a macro. ___________________________________________________________________________ <oa-ctrl-@> OPEN-APPLE-CONTROL-@ Sends a CONTROL-@ to AppleWorks. Use this while recording or defining a macro. If you just use CONTROL-@ the macro will stop at that point. CONTROL-@ is used only for printer and interface definitions. NOTE: Make sure you used the bug fixer in the main menu of UltraMacros before you use this. ___________________________________________________________________________ <uc> OPEN-APPLE-: Changes the character at the cursor to upper case. ___________________________________________________________________________ <lc> OPEN-APPLE-; Changes the character at the cursor to lower case. ___________________________________________________________________________ <insert> OPEN-APPLE-! Turns on the insert cursor. To turn on the overstrike cursor, use this command followed by an OPEN-APPLE-E command. ___________________________________________________________________________ <zoom> OPEN-APPLE-@ Forces zoom OUT. Follow this command with OPEN-APPLE-Z to zoom in. ___________________________________________________________________________ <read> OPEN-APPLE-^ From the keyboard, OPEN-APPLE-^ will read the character at the current cursor position into macro 0. You can use the arrow keys to move the cursor to a new position before reading another character. While recording a macro, OPEN-APPLE-^ will read the character at the current cursor position into the macro being recorded (the character will become text in the macro definition). In a macro definition, successive <read>'s add to macro 0. If you want each <read> to reset macro 0, put the <read> in another macro and call that macro: a:<all sa-b : if $0 = "." then left else rpt>! go to end of sentence b:<all read>! A better way to do the same thing would be to read the cursor character directly: c:<all X = peek $10F5 : ifnot X = 174 then right rpt>! go to end of sentence <cell> can also read the current Word Processor line. It has some problems in the spreadsheet. See macro <ba--> in Macros Ultra for a macro that reads the exact screen contents of a cell. ___________________________________________________________________________ <disk> OPEN-APPLE-& Reads the current volume name or subdirectory pathname into macro 0. This command can only be used when a list of files is being displayed. A brief flash at the top left of the screen indicates that the command was executed. ___________________________________________________________________________ <path> OPEN-APPLE-* Reads the current volume name or subdirectory name and the currently highlighted file name into macro 0. This command can only be used when a list of files is being displayed. A brief flash at the top left of the screen indicates that the command was executed. ___________________________________________________________________________ <cell> OPEN-APPLE-- Reads the contents of the current Spreadsheet cell, Data Base category, or the current Word Processor line into macro 0. Move the cursor to the cell and use the command. A brief flash at the top left of the screen indicates that the command was executed. The current layout and display setting do not affect <cell>. In the spreadsheet it uses the literal values or label as displayed on the cell indicator line, and in the Data Base it uses the full category entry as shown in the single-record layout. From within a macro, use <cell> as part of any string definition like this: c:<asp : $3 = cell : down : print $3>! copy a cell ___________________________________________________________________________ <store> OPEN-APPLE-< Stores the current contents of macro 0, up to 15 characters, in a special unused area of a word processor, spreadsheet, or data base file. The name being stored is displayed at the bottom right of the screen. This command is designed for linking files, but it may be used for any other purpose you think of. <store> and <recall> also work with the Data Base. ___________________________________________________________________________ <recall> OPEN-APPLE-> Sets macro 0 equal to the text stored by the <store> command. <store> would be rather useless if the information couldn't be recalled. <store> and <recall> also work with the Data Base. ___________________________________________________________________________ <inc> OPEN-APPLE-CONTROL-W Increments the character at the current cursor position. For example, "a" becomes "b". It follows the ASCII numbers. ___________________________________________________________________________ <dec> OPEN-APPLE-CONTROL-A Opposite of <inc>; decrements the character at the current cursor position. ___________________________________________________________________________ <bell> OPEN-APPLE-CONTROL-G Sounds the AppleWorks error bell once. It's handy for getting someone's attention. ___________________________________________________________________________ <nosleep> OPEN-APPLE-CONTROL-N Cancels the currently defined "sleeping" macro, if any. See the description of <wake> for more information. ___________________________________________________________________________ <clear> OPEN-APPLE-CONTROL-X Clears all numeric variables to 0 and all string variables to no definition. A brief flash at the top left of the screen indicates that the command was executed. //gs users can press OPEN-APPLE-CLEAR. ___________________________________________________________________________ Macros SOLID-APPLE-CONTROL-@ and SOLID-APPLE-^ are also reserved. They don't do anything, at least not that you'd care about. You are allowed to use the BOTH-APPLE equivalents of these two macros, however. Special UltraMacros Tokens -------------------------- The following tokens are for use within macro definitions only. None of them are keyboard commands, and they can not be recorded using the OPEN-APPLE-X command. They are used as is (i.e. they require no parameters). <input> ------- Allows you to enter text or OPEN-APPLE commands until RETURN is pressed (the RETURN is not passed on to AppleWorks). To exit this command without pressing RETURN, enter CONTROL-@. The macro will be aborted. <id> ---- Return the unique id number of the current TimeOut application. If TimeOut is not active, a zero will be returned. This token can't be used by itself; it must be part of a variable definition or other numeric expression. a:<all : A = id# : $1 = "This TimeOut application is #" + str$ A : msg $1>! Determine the TimeOut application number. a<ato: a = id#:if a=7 then msg 'FileMaster' stop else if a = 8 then msg 'Macro Compiler' stop>! Act differently for each. <ifkey> ------- Checks to see if a specific key has been pressed (exact matches only) and if so continues. This is not part of the if-then-else logic. a:<all :sa-b rpt>! b:<a;; " ifkey rtn then print "Return was pressed:>! or b:<all : ifkey>A<then print "A was pressed">! <key> ----- Pauses until a key is pressed. The keypress is NOT passed along to AppleWorks. When used by itself, key is simply a pause function. In an equation, key returns the value of the key pressed. For example: a:<all : A = key : if a < 128 then print A>! If the user presses RETURN, A will be 13, and if the user holds down OPEN-APPLE while pressing the key, 128 will be added to the key value. This example will only print the keystroke if OPEN-APPLE is not pressed. <begin> ------- This does nothing unless used with <rpt>. It marks the restarting point for repeating part of a macro instead of repeating the entire macro. <rpt> ----- Repeats part or all of the current macro by searching backwards from the <rpt> token until a <begin> is found, or until the beginning of the macro is reached. No commands after <rpt> will ever be executed (unless they're part of an IF-THEN-ELSE statement). A conditional command must be used to exit the macro or it will run continuously. For example: g:<all : bell : rpt>! could drive you crazy; press Escape to exit. h<all : print "This part executes once" : begin : bell : rpt>! Prints a message and then beeps like crazy. NOTE: Due to a rather obscure unfixable problem, you are not allowed to use some literal numbers between a begin/rpt sequence. Well, you can use them, but the macro won't work right. The numbers are 17, and 37121 through 37375 inclusive. If you must use these numbers, use a variable to represent them inside of any begin/rpt sequences. (In fact, why not *always* use a variable so there is no chance of forgetting these rather unremarkable numbers, and getting bitten?) <stop> ------ Stops all macro activity immediately. Use it to stop a nested macro from returning to the calling macro, or to get out or a <rpt> situation. For example, go back to the <findpo> sample. Special UltraMacros Tokens with Parameters ------------------------------------------- The next group of tokens require additional parameters. Most parameters involve variables, so a description of UltraMacros' variables is next. The token definitions are continued following the variable section. Defining Numeric Variables -------------------------- Numeric variables may be defined many different ways. You must be careful that you don't accidentally redefine a variable if another macro expects to use that variable later. We suggest leaving variables U, V, W, X, Y, and Z as "throw away" variables. Assume that they can be redefined indiscriminately by any and all macros. We also suggest reserving variable Q for recording the number of a file you leave via the OPEN-APPLE-Q (get the connection?) and that you will want to return to later. Start up AppleWorks and insert the UltraMacros disk. Add the file Macros Ultra to the Desktop and examine the variable usage in it. See macros SOLID-APPLE-1 and SOLID-APPLE-2 for examples of using variable Q. Here is a chart showing the various ways to define numeric variables and use them in conditional macros. condition var operator operand ----------------------------------------- X variable if A > 7 decimal number (define) through = $10 hexadecimal number ifnot Z < key keyboard input len $1 length of a string val $2 value of a string peek value at an address id# TimeOut application # Remember those crazy mix and match animal cards when you were a kid? This is the same idea, except that a variable can only be defined using the "equals" operator. Otherwise you can pick any item out of each category and use them together in a macro. Any number of operands can be chained together using the four basic math operators (+ - / *). No parentheses are allowed. The equations are strictly evaluated left to right with no other precedence. Defining String Variables ------------------------- String variables may be defined in many different ways. Literal strings may be surrounded by single or double quotation marks: a:<all : $8 = "This is a literal string"">! a:<all : $9 = 'This example has "quotation marks" in it'>! Strings may be defined as the current date or time in these four formats: a:<all $0 = date: $1 = date2: $2 = time: $3 = time24>! Strings may be defined as the current Spreadsheet cell or Data Base category: (Manual update a page or so previous said that <cell> would read the current Word Processor line. I think this implies that it would work here also.) a:<all : $8 = cell>! A portion of the screen may be used to define a string (see the description of the <screen> a few pages hence. <getstr> must be followed by a space. You can't use A:<all : $3 = getstr,15>! (When used in the Data Base, always follow <getstr> with a <rtn> i.e. <all : $3 = getstr 15 : rtn>. See the file "Linking Samples".) a:<all: $3 = getstr 15>! See the description of <getstr> three pages hence for more information. Finally, a string may be defined exactly like another string. In this example, $7 is made identical to $2: a:<all $7 = $2>! Here is a chart showing the various ways to define string variables and use them in conditional macros: condition str operator operand ----------------------------------------- "text" A literal string $2 Another string variable if $0 > date,date2 (define) through = time,time24 ifnot $9 < getstr Keyboard input cell db category, ss cell, or wp line screen 80 col text screen chr$ ASCII value of a variable str String equivalent of a var left Left portion of a string right Right portion of a string Any number of operands can be chained together using concatenation (+). No parentheses are allowed. The equations are strictly evaluated left to right with no other precedence. Any characters beyond 80 are ignored. Parameters ---------- Here are some of the possible parameters for UltraMacros tokens: MACRO A macro name such as SA-B or BA-CTRL-D NUM (number) A literal decimal number from 0 to 65535 A literal hexadecimal number from $0 to $FFFF A variable name from A to Z (the value of the variable is used) NUM VAR A variable name from A to Z (the value of the variable is used) NUM2 A NUM (see above) A <key> token A <peek> token A <len> token A <val> token A <id#> token NUM EXP (Numeric Expression) A NUM (see above) A NUM (see above) if the compiler gives an error, NUM2 is unavailable for This particular command definition A NUM or NUM2 equation; NUM's must be connected by +, -, /, or *; the equation is evaluated from left to right. No other precedence is used. The range of values is 0 to 65535 and the numbers "wrap around" if the range is exceeded. For example. 0 - 1 = 65535 and 65534 + 3 = 1. Because only integer numbers are allowed, division will only return the quotient. STRING A literal string surrounded by quotes STRING VAR a string name from $0 to $9 (The way to remember all this is to keep firmly in mind that NUM variables are contained in alphabetic variables named A through Z and strings are contained in numeric variables named $0 through $9. Makes sense to me, how about you?) STRING EXP (string expression) a STRING (see above) a <chr{body}gt; token a <str{body}gt; token a <date> token a <date2> token a <time> token a <time24> token a <cell> token a <screen> token a <getstr> token a STRING expression; STRING EXP's must be connected by "+" only; the equation is evaluated from left to right until the maximum length of 80 characters is reached. ___________________________________________________________________________ <chr$ NUM> ---------- Prints the ASCII value of a variable. See the Key Chart for a complete list. For example, the following macro will print the number 1: a:<all : X = 49 : print chr$ X>! As you can see on the chart, 49 is the code for an upper case 1. If X was equal to 177 (49 + 128), an OPEN-APPLE-1 command would be executed. This command is handy for sending special codes to your printer along with the <pr#> token. ___________________________________________________________________________ <getstr NUM> ------------ presents a ">" on the bottom line of the screen, allowing up to 60 characters to be entered. (This is similar to OPEN-APPLE-0.) a:<all : $1 = getstr 8 : print $1>! read in 8 characters and print them ___________________________________________________________________________ <asc STRING> A new token has been added to UltraMacros. <asc> is used to convert a string character to its ASCII equivalent as shown on the Key Chart. Only the first character of a string is used. This command complements the <chr{body}gt; token. x:<all $0 = "Test" : print asc $0>! prints "84" x:<all $0 = "z" : x = asc $0 + 2: print x>! prints "124" Add <asc> to the token list on page 81, and see the sample <asc> macros in Macros Ultra. <goto MACRO> ------------ Sends control to the specified macro name, If goto is not used, the second macro will return to the original macro and continue there. It will behave like a gosub. Goto just jumps to the named macro and keeps on going. No nesting occurs when goto is used. a:<all : sa-b : print "The end">! b:<all : if A = 4 then goto sa-c else rtn>! c:<all : print $4>! Pressing SOLID-APPLE-C will start this macro example. Control passes to SOLID-APPLE-B. If A is not equal to 4, the macro jumps to SOLID-APPLE-C where string $4 is printed. Because we used a goto, control does not return to SOLID-APPLE-B, but rather goes back to SOLID-APPLE-A and "The end" is printed. ___________________________________________________________________________ <highlight NUM EXP, NUM EXP, NUM EXP, NUM EXP> ----------------------------------------------- Allows you to invert any portion of the AppleWorks screen. This sample will invert the entire screen: h:<all : highlight 1,1,80,24>! The first parameter is the left column (1-80) The second parameter is the top row (1-24) The third parameter is the right column (1-80) The fourth parameter is the bottom row (1-24) If the first parameter is 0, the specified rows will have all highlighting cancelled (the text will be changed to normal). The right column value is ignored if the left column is zero. ___________________________________________________________________________ <left STRING VAR,NUM> --------------------- Extracts the leftmost numbers of characters specified from a string. a:<all : "Beagle Bros" : $2 = left $1,6 : print $2>! Prints Beagle (Only the first six characters.) ___________________________________________________________________________ <len STRING VAR> ---------------- Returns the length of the specified string as part of a variable equation. For example: a:<all : A = len $0 : B= len $1 : if A > B then print "$0 is longer">! ___________________________________________________________________________ <msg STRING> ------------ This command prints a message on the screen immediately below the current data window (i.e. on the dash "-----" or underline "_____" dividing line). The command syntax is identical to <print?>. Messages are displayed in inverse text unless the message string is surrounded by double quotation marks: m:<all : msg "Normal Text" : key {display normal text; wait for key press} msg 'Inverse message' : key {Display inverse text; wait for key press} $9 = date + ""+ time: msg $9:key {Display date & time; wait for key press} msg "">! do sample messages, then erase all messages. Whenever a message is displayed, the remainder of the line is filled with the second to last character that was already on that line (i.e. the character above the "p" in A-? for help). This automatically erases the vestiges of previous longer messages. As the example shows, a null message erases the entire line. The msg token must be followed by a colon. The second msg will result in a compiler error, but the first msg is legal: a:<ato : a = id# : if a = 7 then msg ' FileMaster ' : stop else if a = 8 then msg ' Macro Compiler ' stop>! act differently for each application ___________________________________________________________________________ <onerr OPTION> -------------- Allows you some control over what happens if an error occurs. An error is defined as a keystroke that causes AppleWorks or a TimeOut application to ring the error bell. Normally a macro continues on without regard to the error (the error bell is silenced as well). There are three onerr options: 1.<all : onerr stop>! Stop the current macro after an error. If the macro was called from another macro, control returns to the calling macro. This does not shut down all macros; only the current macro is ended. 2:<all : onerr off>! Revert to normal; ignore all errors. Resets the onerr status to normal, so macros ignore the errors, for better or worse. 3:<all : onerr goto sa-h>! On any error, execute the named macro and the return to calling macro where the error occurred. The onerr status is always reset to normal when a sequence of macros is done executing. ___________________________________________________________________________ <posn VAR,VAR> -------------- Assigns the current cursor position to the two variables following the token. The AppleWorks application affects the command like this: First Variable Second Variable _____________________________________________________ Word Processor column line Data Base category record Spreadsheet column row If the cursor is not in one of these three application, both variables will be set to zero. <posn> is compatible with TimeOut applications that use the AppleWorks application. For example, TimeOut Graph works in the Spreadsheet, so <posn> can be used with it. Start up AppleWorks and add the file Macros Ultra from the UltraMacros disk to the Desktop. Examine the cursor-positioning macros for examples of <posn> usage. ___________________________________________________________________________ <pr# NUM EXP> ------------- determines where the <print> command sends its information. <pr# 0> sends all <print> characters to AppleWorks. This is the normal state of affairs. <pr# 1> sends the characters to the first printer in your AppleWorks printer list. Because AppleWorks' limit is 3 printers, the <pr#> limit is also 3. You must use <pr# 0> to reset the <print> command when you're done. Start AppleWorks and add the file Macros Special from the UltraMacros disk to the Desktop. Examine it for sample <pr#> usage. The <pr#> command definitely works with the modem and printer ports on the //gs. It may not work with all other interface cards. Experiment, but don't be surprised if you have problems on other machines. I have no idea why. ___________________________________________________________________________ <print> ------- Print has the most variations of any single UltraMacros command. The compiler will be happy to point out any errors you might make, but studying this section will make you much less error-prone. Printing Text ------------- Like Applesoft, <print> allows a literal text string to be printed. You may use either double or single quotes around the text. The limit is 70 characters of text at a time. a:<all :print "Literal text <rtn>">! Prints "Literal text <rtn>" The <rtn> is NOT converted to an actual RETURN. a:<all : print '"double" quotes inside "single" quotes'>! will print as "double" quotes inside "single" quotes Printing Numeric Variables -------------------------- Print can be used to display the value of any numeric variable. For example, if variable Q holds the desktop number of a specific file, this macro sequence would return you to that file: 2:<all : oa-q : print Q : rtn>! A text string may precede the variable like this: a:<all : print :Variable A is now " A>! When printing numeric variables, a "$" immediately after the print statement will cause the variable's hexadecimal value to be displayed in either two or four characters. a:<all : A = 8 : print$ "Hex A = $" A>! will print "Hex A = $08" a:<all : X = 61453 : print$ X>! will print "F00D" Numeric variables can also be printed as characters rather than numbers, The <chr{body}gt; token converts the numeric value to the equivalent key command. See the Key Chart for a complete list. Here's a sample. a:<all : X = 185 : Y = 41 : print chr$ x : print chr$ y>! The Key Chart shows us that 185 is an OPEN-APPLE-9 and that $41 is an upper case "A". This sample will hump to the end of the file and then print an "A". Printing Strings ---------------- The ten string variables may be printed by themselves only. No other options may be used when printing strings. These strings may contain text or command keystrokes. To define a string with commands instead of text, just define macro 0 (zero), the same as $0, and then use a macro like this: a:<all : $2 = $0 : print $2>! execute macro 0 (zero) Because macro 0 (zero) and $0 are the same thing, a:<all : print $0>! is exactly the same as a:<all : sa-0>! NOTE: ALL PRINT STATEMENTS MUST BE FOLLOWED BY A COLON ":" or ">". Other tokens can be followed by spaces and then another token, but <print> is an exception. ___________________________________________________________________________ <rem STRING> This command allows you to embed a remark in the middle of a macro. The remark does not get used in the macro. The command syntax is identical to <print>. Just surround the remark with single or double quotation marks. The difference between using <rem> as opposed to just adding a comment after the "!" mark or by using the curly braces {...} is that <rem>'s are preserved when the macro is assembled, so they are still present when you use the Macro Compiler to list the current macros into a Word Processor file. We prefer to use the curly braces to make sure we keep our Word Processor source files handy, but it's your option. Here's a macro from the Macros Ultra file that deletes from the cursor to the end of the file. Actually, it moves the data to the clipboard so that it can be undone. It's a simple example, but it does illustrate how to use <rem>'s: Z:<all : oa-M>T<rem "Move to the clipboard" : oa-9 : rtn : rem "jump to the end and do it": left>! zap to the end of the file. Comments and <rem> make it easier to follow the logic of a macro, especially if you want to change a macro you wrote last month or last year. ___________________________________________________________________________ <right STRING VAR,NUM> Extracts the rightmost number of characters specified from a string. a:<all : $1 = "Beagle Bros" : $2 = right $1,4 : print $2>! prints Bros ___________________________________________________________________________ <screen NUM EXP,NUM EXP,NUM EXP> Read any part of the AppleWorks screen into a string variable. It is used like this: s:<all : $1 = screen 7,1,15>! Read current file name from top line. The first parameter is the left column (1,80) The second parameter is the line (1-24) The third parameter is the length (1-80) <screen> treats all characters as normal text, regardless of how they appear on the screen; it can't be used to tell if something was highlighted. (That is good news. If there is the slightest chance the cursor is within the range of the read performed by <screen> you should first switch to the overstrike cursor (oa-E> or you will have an underscore as part of the string variable. See sa-SPACE in Ultra Macros for method of properly restoring the insert or overstrike cursor.) ___________________________________________________________________________ <str$ VAR NAME> Converts a numeric variable to a decimal character string. It must be used as part of an equation. Here are some examples: x:<all : A = 4: $3 = " A = " + str$ A + "": print $3>! prints "A = 4" y:<all : B = $FF : $1 = str$ B : print $1>! prints "255" because 255 is the decimal equivalent of the decimal $FF used to define B. This command is handy for including variables in a message: a:<ato : I = if# : $1 = "TimeOut ID#" + str$ I : msg $1>! show id# ___________________________________________________________________________ <val STRING VAR> <val> is the opposite of <str{body}gt;. It converts a string variable to a numeric value and must also be used as part of an equation. If the specified string starts with a non-numeric character, the value will always be zero. If the first character is a number, it will (and all other numbers following immediately after it) will be converted to a numeric value. Here are some examples: a:<all : $3 = "test4" A = val $3> A will = 0 a:<all : $2 = "48612" : X = val $2> X will = 48612 a:<all : $8 = "280Zx" ; V = val $8> V = 280 a:<all : $0 = "14.88" : B = val $0> B = 14 ___________________________________________________________________________ <wait NUM EXP> Delays a macro for a set amount of time, or until a key is pressed. The actual delay will vary depending on your computer. Experiment to find the approximate delay needed for a second or a minute on your computer. Here's a macro you can use to calculate delay values: D:<all : msg "Enter a delay value: : $0 = getstr,5 : D = val $0 : bell : wait D : bell : rpt>! Test wait One suggested use for the <wait> command is to allow a user to browse through a large document without having to touch the keyboard: b:<awp : D = 400 : wait D : down : rpt>! Adjust D as desired. ___________________________________________________________________________ <wake MACRO at NUM EXP:NUM EXP> Puts a macro to "sleep" and wakes it at a designated 24-hour time. After a <wake> command has been issued, you can work normally, using macros and any UltraMacros commands as always. When the clock's time matches the sleeping macro's, it springs to life. Use it to set alarms, automatically save a file every few minutes, or everything down at 5:00! The following example will start macro "A" at noon. then when macro "A" wakes up, it will set macro "C" to wake up at 5:00PM a:<all : wake sa-b at 12:00>! b:<all : bell : bell : bell : msg "It's lunch time!" : wake sa-c at 17:00>! c:<all : bell : bell : bell : msg ' Quitting time'>!! Only one macro can be "sleeping" at a time, but as shown in the previous example, each macro that "wakes up" can put another macro to sleep. The time must be given in 24-hour format (0:00 to 23:59)); variables may be used: x:<all : M = 50 : h = 7 : goto sa-s>! s:<all : oa-s : M = M + 10: if M = 60 then M = 0 : H = H + 1 : elseoff wake sa-s at H:M>! When SOLID-APPLE-X is pressed, the hour and minute variables are set. The current file is saved and macro S is set to wake up at 8:00AM. It will then save the current file every 10 minutes until the <nosleep> command is used. Note: Of course, this command won't be too useful if you don't have a clock in your Apple. ___________________________________________________________________________ If-Then-Else Logic ------------------ One of UltraMacros' best features is its true conditional capability utilizing if-then-else logic. Other macro programs may allow a conditional "if" or two based on keyboard input, but UltraMacros allows a full range of conditional commands using the numeric and string variables. Five tokens are involved with conditional logic: if, ifnot, then, else, elseoff. ___________________________________________________________________________ <if> The key to all conditional macros, <if> is always followed by a numeric string variable: a:<all : if A which is followed by an operator (greater than >, less than <. or equals +) a:<all : if A = which is followed by the expression to be evaluated a:<all : if A = 5 If the statement is true, the macro continues normally. If the statement is not true, the macro ends (unless an <else> is present later in the macro). a:<all : if A = 5 goto sa-5>! If A is not 5 the macro stops here ___________________________________________________________________________ <ifnot> Same as <if>, except that the statement must be false for the macro to continue normally. a:<all : ifnot A = 5 goto sa-5>! If A *is* 5, then the macro stops here. all numeric conditionals must start with any valid numeric expression such as: a:<all : if A = C + 4 then print A : else stop>! All string conditionals must start with one of these six formats: if $0 = or ifnot $3 = if $1 > or ifnot $4 > if $2 < or ifnot $5 < The equation is completed with a string expression, which could be another string variable name, a literal text string, or one of the legal string definition tokens (date, date2, time, time24, screen): a:<all : if $0 = "literal: then print $0>! t:<all : ifnot $6 > time then goto sa-t>! 2:<all : if $2 < screen 1,7,15 then stop>! 8:<all : ifnot $8 = $9 then print "They're not the same.">! ___________________________________________________________________________ <then> Does absolutely nothing but take up one byte of space. It's used to make macro if-then logic more readable: a:<all : if A > 4 then C = 3>! this looks better than: a:<all : if A > 4 C = 3>! ___________________________________________________________________________ <else> This part of if-then-else logic reverses the true-false condition of the logic. If the statement is true, then execute the first part, else execute the second part. There is no limit to the number of <else's> in one macro. Whenever an <else> is encountered during a macro, the macro skips ahead to the next <else> or to the end of the macro, whichever is found first. It can be used during debugging to keep part of a macro from executing so a different part can be properly tested: a:<all : print " A " : else print "one" : else print "two">! test part 2 This macro will always print "A two". Later the macro could become: a:<all : print "A " : print "one" : else print "two">! test part one only Now the macro will always print "A one". When finished, the macro could be: a:<all : print "A " : if A = 1 then print "one" : else print "two">! There is no direct connection between if and else, so they can be used independently, although they make a good team. Here's a sample: a:<all : if A = 5 then print "five" : else print "Not five">! This does just what you'd expect. If variable A is equal to 5, the word "five" is printed. If variable A is not equal to 5, the words "not five" are printed. ___________________________________________________________________________ <elseoff> --------- Does nothing unless used with else (See above). Its purpose is to cancel the conditional status of a macro and cause any commands following the <elseoff> to be executed regardless of any preceding <if> condition. For example, if a conditional macro is supposed to print a phrase at the end, regardless of what other text is printed, you'd do this: a:<all : if A = 5 then print "A is five" : else print " A is not five" : elseoff print " at this time.">! If a is five it would print "A is five at this time," and if a is not five, it would print "A is not five at this time." If the <elseoff> is removed, the macro will print either "A is five" or "A is not five at this time." ___________________________________________________________________________ For Experienced 6502 Programmers Only ------------------------------------- The following three UltraMacros tokens are very specialized and shouldn't be used unless you understand exactly what you want them to do. The were included because we thought there might still be a few hackers out there who like to deal directly with their Apples. Besides that, we can always use them to write pretty powerful macros ourselves. See the file Macros Special on the UltraMacros disk for some examples. CORRECTION TO THE ABOVE: Macros Special is not on the UltraMacros disk. It will be on the first TimeOut disk containing sample macros. ___________________________________________________________________________ <call> The call token is used to run machine language subroutines. It simply does a JSR to the address specified. It's up to you to make sure that the address is valid and that the routine will return to the macro via an RTS with all bank switches set properly. A good place to poke in machine language subroutines is the AppleWorks temporary work buffer from $800 to $9FF. CAUTION: The buffer is destroyed by AppleWorks disk access and by a few UltraMacros commands. Be careful! When a macro is operating, the alternate zero page one is active, as well as the second bank of $D000 memory. Page of the 80 column display is active. If you change any of these, they MUST be restored before your routine returns control to UltraMacros or AppleWorks will surely die. The call command is a bonus feature and must be used carefully by experts only. Know what you are doing before you do this! ___________________________________________________________________________ <poke> Poke is a handy, albeit dangerous, command. Use it to build machine language subroutines for use with <call>. It can also be used to directly change some flags within AppleWorks. For example, the <insert> token forces the insert cursor on. To force the overstrike cursor on, you can use this: O:<all : poke $10F1,1>! Force overstrike cursor active. The insert cursor continues to blink until another key pressed, and then you see the cursor is changed. To make it instantly change, add an invalid key like this: O:<all : poke $10F1,1 :ctrl-x>! Force overstrike active and make it immediately obvious. We aren't authorized to provide a list of AppleWorks addresses. You'll have to explore on your own. Some information is available from bulletin board systems. Last time we heard, AppleWorks author Bob Lissnor had an AppleWorks board somewhere in Nevada with a lot of handy information. Sorry we can't provide a phone number. (WE CAN! Try (702) 831-1722. Be Nice if you call. How many developers provide a modem line for you to call in and learn and/or voice your concerns about their program?) ___________________________________________________________________________ <peek> Peek returns the value found at the specified address. This example from the Macros Ultra file uses <peek> to determine the current file number: 1:<all : q = peek $C54 : oa-q esc>! Leave "1" file; go to main menu. 2:<all : oa-q print q : rtn>! Return "2" the file we left. ___________________________________________________________________________ ___________________________________________________________________________ Macro Compiler -------------- This application allows you to compile new macros. It scans a Word Processor document containing macro definitions and converts them into a form usable by TimeOut UltraMacros. It can also display the current macro set by listing the active macro definitions into a Word Processor file. If you've been following the manual sequentially, you've already used the Compiler to include your name in the default macro set. In any case, add a Word Processor macros file to the Desktop and press OPEN-APPLE-ESCAPE. Select "Macro Compiler". You will see two options. Compile a New Set of macros --------------------------- 1. Press RETURN to compile a new set of macro definitions. 2. A "Pause each line?" prompt appears. If you press Y for yes, you will "single-step" through the compiling process and will be asked to press a key to continue after each line is processed. If you choose N for No, the compiler will race along and won't stop until an error occurs or until compiling is completed. 3. A "Compile from:" prompt appears. You may choose to compile from the very beginning of the file or from whatever line the cursor was on when you pressed OPEN-APPLE-ESCAPE to call up TimeOut. If you press "B" to compile from the beginning, the compiler will scan the file until it finds the word "START" on a line by itself. It then will start compiling with the next line. 4. Each Word Processor line will flash on the screen as it is scanned for tokens and text data. The current macro name will be displayed, and a running count of the total bytes used will also be shown. 5. If the file is compiled without error, a message will indicate the success and you will be prompted to press a key to return to the file. 6. If an error occurs, the compiler will attempt to give you as much information as possible. When you press a key and return to the Word Processor the cursor will be on or near the error. ___________________________________________________________________________ Macro Compiler Errors --------------------- There are several errors which stop the compiler. Macros up to the error are usable, but no macros following the error line are compiled. When you press a key after reading the error message, you will be returned to the file with the cursor on or near the error. No errors --------- The compiler recognized the entire macro file as a valid macro set. That doesn't mean that the macros don't contain potential execution errors. It does mean that all command tokens were used properly. No Start Found -------------- The compiler couldn't find the word "START" in the file. The word "START" must be on a line by itself, immediately preceded and followed by carriage returns (no spaces). This message can't occur if you select "Compile from cursor". Reserved Macro Name ------------------- An attempt was made to define a reserved macro (see page 31). Remember that the named keys such as RETURN and TAB have control key equivalents. Incorrect application name -------------------------- A valid local/global designation couldn't be found. Valid tokens are <all>, <awp>, <adb>, <asp>, and <ato>. Every macro must start with the macro name, followed by a colon ":" followed by the application name. (They are not kidding about the colon. If you don't include it, your macro will probably be ignored and not compiled with NO error messages. See how long THAT takes you to find the first time!) Table full ---------- The entire macro table was used up. This refers to the actual macro bytes generated and is not referring to the size of the Word Processor file. The only solution is to create multiple macro files from the one large one or to remove enough macro definitions so the compiled macros will fit into the table space. Since the default macros that come with the disk only use half of the table you can probably rest easy tonight. Syntax error ------------ The catch-all error message. Anything the compiler doesn't recognize is a syntax error. This is usually a misspelled token name. Not enough parameters --------------------- The UltraMacros' token being compiled requires one or more additional parameters. See "Special UltraMacros Tokens with parameters" for a description of all tokens which use additional parameters. Too many parameters ------------------- The UltraMacros' token being compiled requires at least one fewer parameter. See "Special UltraMacros Tokens with parameters" for a description of all tokens which use additional parameters. Logic error ----------- The macro definition was illogical. You might not think so, but guess who's the boss? Remember that UltraMacros us very strict and limited in its string and numeric variable usage. String too long --------------- A sequence of text characters used in a string definition exceeds the character limit. END found in line ----------------- The compiler was stopped by an END command, not by an error. All macros up to the END line are usable. Stopped by an ESCape -------------------- You pressed the ESCAPE key during compiling to halt the process. All macros already compiled are usable. Display current macro set ------------------------- This option will list all of the current macros into a Word Processor file. The listing can then be modified and recompiled as desired. The primary purpose of this option is to display recorded macros. 1. Add an AppleWorks Word Processor file to the Desktop. It can be an existing file, or a new one. 2. Press OPEN-APPLE-ESCAPE to call up the TimeOut menu. Select "macro compiler" from the menu. 3. Select "Display current macro set". 4. The current set of macros will be added to the file in token format. This file can then be changed and recompiled as desired. Macro Options ------------- The Macro Options TimeOut application contains UltraMacros' user-definable options. From within AppleWorks, press OPEN-APPLE-ESCAPE and select "Macro Options" to get this menu: 1. Launch a new Task 2. Create a Task File 3. Save macro table as default set 4. Deactivate macros 5. Reactivate single-stepping 6. Version 7. Other Activities The first two options on this menu deal with Task files. Look beyond explanation of 1-7 of the options menu followed by 1-7 of the Other Activities menu. ___________________________________________________________________________ 1. Launch a new Task --------------------- When selected, this option reads the AppleWorks disk and looks for Task files. The names are shown on the screen. Press ESCAPE to return to the "Macro Options" menu, or select the Task you want to launch. 2. Create a Task file ---------------------- This option takes whatever macros are currently active in AppleWorks and saves them as a Task file on your AppleWorks STARTUP disk. First you are prompted to enter a name for the new Task file. Enter a legal ProDOS name (you know, 1 to 15 characters beginning with a letter and containing only letters, periods, and numbers). If the AppleWorks startup disk is not found, you will be prompted to insert it. At this time you can press ESCAPE to cancel, or you can insert the STARTUP disk and press Return. When the Macros have been updated, put the previous disk back in the drive. 3. Save macro table as default set ---------------------------------- This option takes whatever macros are currently active in AppleWorks and saves them into the file "ULTRA.SYSTEM" on your AppleWorks STARTUP disk. These macros will be then be available whenever you start AppleWorks. No compiling will be necessary. Before the macros are saved you are asked if you want to activate the auto startup macro. If you choose "Yes", the first macro in the macro set will be automatically run each time AppleWorks is started. If the "ULTRA.SYSTEM" file is not found, you will be prompted to insert your AppleWorks STARTUP disk. At this time you can press ESCAPE to cancel, or you can insert the STARTUP disk and press RETURN. When the macros have been updated, put the previous disk back in the drive. 4. Deactivate macros -------------------- This option completely disconnects UltraMacros from AppleWorks. Choose this option if you wish to print using the Applied Engineering print buffer. After deactivating, the menu will appear as "4. Reactivate macros". 5. Reactivate single-stepping ----------------------------- This option turns on "single-step" mode, which is useful for debugging complex macros. The menu will change to "5. Deactivate single-stepping". When a macro sends a character to AppleWorks, this option forces a pause before each character actually gets to AppleWorks; the character is sent only after you press a key. If you press ESCAPE the macro will stop, but single-step mode will remain active. Select "Deactivate single-stepping" to return to normal speed. 6. Version ---------- This option shows the current version of the UltraMacros package. You will need to know this number if you ever contact Beagle Bros about UltraMacros. 7. Other Activities -------------------- Choose this to display the following menu: 1. Set cursor blink 2. Set mouse button response 3. Set mouse response 4. Deactivate the mouse 5. Reactivate key-lock 6. Reactivate screen preserver 7. Set screen preserver delay ___________________________________________________________________________ Other Activities ---------------- The options on this menu allow you to make changes to how UltraMacros functions. When you exit this menu by pressing ESCAPE, you will be asked if you want to save any changes to you AppleWorks STARTUP disk. If your answer is "yes", the current settings will be in effect every time you start AppleWorks. 1. Set cursor blink ------------------- Choose this option to adjust the speed at which AppleWorks' cursor flashes. The current setting is displayed and you're prompted to enter a new value. Enter numbers from 1-255 where 1 is the fastest and 255 is the slowest. 2. Set mouse button response ----------------------------- choose this option to adjust how long the mouse button delays after it is used to select menu options. If you find yourself jumping several menu steps at time when you press the mouse button, you should increase the delay. The current setting is displayed and you're prompted to enter a new value. Enter a number from 1-255 where 1 is the shortest delay available and 255 is the longest. ___________________________________________________________________________ 3. Set mouse response --------------------- Choose this option to adjust how far the mouse has to travel horizontally or vertically before the cursor moves. The current horizontal setting is displayed and you're prompted to enter a new value. Enter a number from 1-255 where 1 is the most responsive and 255 is the least responsive. Press ESCAPE when desired number is entered. The current vertical setting is displayed and the same procedure is used to change it. Apple //gs users can also use the Control Panel Options to change the high speed mouse option to "yes" or "no". 4. Deactivate the mouse ----------------------- This option makes UltraMacros ignore your mouse card. It is useful for //c users who don't have a mouse. They do have mouse cards built in, and the cards sometimes give false readings as though a mouse was being moved. If you experience sporadic random cursor moves on any kind of Apple ][, give this option a try. Select the option; the menu will now be redisplayed as "4. Reactivate the mouse". Options 1 and 2 will now give "Mouse not found" if selected. 5. Reactivate Key-Lock ---------------------- Key-Lock is a special feature designed primarily for physically disabled AppleWorks users who have a difficult time pressing the OPEN-APPLE or SOLID-APPLE keys in combination with other keys. This option makes the OPEN-APPLE and SOLID-APPLE keys "lock on" until another key is pressed. Here's how it works. First, select the option. Because Key-Lock is not activated, the menu option will now be redisplayed as "5. Deactivate Key-Lock". Press ESC a few times to get back to AppleWorks. Get in a word processor document and press OPEN-APPLE. An inverse "O" appears in the bottom right corner of the screen. The cursor stops blinking and UltraMacros waits until you press another key. If you press OPEN-APPLE again, the command will be cancelled and the normal cursor will appear. If you press another key, such 1, the OPEN-APPLE version of the key will be entered in AppleWorks. In this case, the cursor will jump to the top of the document. Now press OPEN-APPLE again followed by 9 and you'll jump to the end. To execute a macro, press the SOLID-APPLE key. An inverse "S" will appear. As before, you can press OPEN-APPLE to cancel, or another key to execute a command. To start a "BA" macro. press the OPEN-APPLE key followed by the SOLID-APPLE key. The inverse "O" will change to a "B" and the desired macro key can be pressed. 6. Reactivate screen preserver ------------------------------ The screen preserver will automatically blank your screen if there has been no key press or mouse move for a specified amount of time. This avoids monitor "burn-in" (i.e. scorching of the phosphors on the monitor screen). Here's how to use it. First, select the option. Because the preserver is now activated, the menu option will now be redisplayed as "6. Deactivate screen preserver". Now, sit and wait a few seconds. The screen will blank out, but don't despair. Just press a key to restore it. The screen preserver is tied to the blinking cursor; if an inverse bar menu such as OPEN-APPLE-C "Copy Text?" is active, the screen will never be blanked. The screen preserver is also ignored while the TimeOut OPEN-APPLE-ESCAPE menu is on the screen. It does work within TimeOut applications, though. 7. Set screen preserver delay ----------------------------- Choose this option to adjust how long the screen preserver waits before it blanks the screen. The delay is based on the number of cursor blinks, so you cursor blink directly affects it. The current setting is displayed and you're prompted to enter a new value. Enter a number from 1-255 where 1 is the shortest delay and 255 is the longest. ___________________________________________________________________________ Data Converter -------------- The TimeOut Data Converter allows you to quickly and easily transfer data between spreadsheet and data base files. To transfer data from a spreadsheet to a Data Base file, use the OPEN-APPLE-C command to copy some Spreadsheet rows to the clipboard. Press OPEN-APPLE-ESCAPE and select "Data Converter" from the TimeOut menu. The data on the clipboard will instantly be converted into Data Base data. Create a new Data Base file or load one in from disk. Place the cursor where you would like to insert the Spreadsheet data, press OPEN-APPLE-C and select "From the Clipboard". Each Spreadsheet row will now be inserted into your Data Base file. Each column from the Spreadsheet will become a Data Base category. To transfer from a Data Base file to a Spreadsheet file, copy from the Data Base file to the clipboard, call up the TimeOut menu, select "Data Converter", and copy from the clipboard to the Spreadsheet file. Each category from the Data Base will become a Spreadsheet column. If you're using the AE expander, use UTILITIES to configure Data Converter. ___________________________________________________________________________ Allowing Control-@ ------------------- AppleWorks 2.0 contains a bug which prevents users from entering a CONTROL-@ in a printer interface definition. Here's a fix: 1. Boot the UltraMacros disk and press "F" for "Fix AppleWorks Bug 2. The CONTROL-@ patch program is run. Follow instructions. Note: Use OPEN-APPLE-CONTROL-@ to enter the CONTROL-@ code while recording a macro. If you press CONTROL-@ the macro will stop. Likewise, a macro definition must use OPEN-APPLE-CONTROL-@ or it will stop. ___________________________________________________________________________ Mouse Control ------------- Once UltraMacros has been installed on your AppleWorks disk, you can use an Apple mouse to speed scrolling and menu selections. Here's how: Move the mouse to position the cursor just like using the arrow keys. Hold down the OPEN-APPLE key to move the cursor farther and faster within a file. Press the mouse button to do one of the following: (a) Select an option from any AppleWorks or TimeOut menu (the same as pressing the RETURN key). (b) Scroll quickly through an AppleWorks file (the direction, up or down, is the same as the last vertical mouse movement. You can adjust mouse sensitivity or deactivate the mouse using the Macro Options TimeOut application. See previous discussions for details. Unless you specify otherwise, the mouse is always active (if you have one). If you have a //e with a mouse interface card but no mouse is plugged in, you must deactivate the mouse; otherwise you will probably be faced with an out of control cursor that jumps wildly when you least suspect it. This can also happen on a //c that doesn't have a mouse plugged in. Mouse Tip: The mouse is especially handy for creating Data Base single record layouts. Just hold down the OPEN-APPLE key and use the mouse to drag categories into position. ___________________________________________________________________________ Linking Files -------------- You can use the <store> and <recall> commands to link AppleWorks files together. Linking allows you to do things like print an unlimited number of files with one keypress, or have a custom set of macros loaded automatically with any Spreadsheet file. The <store> command saves the first 15 characters of macro 0 (zero), generally a name, in an unused area or a Word Processor or Spreadsheet file. The <recall> command puts the name back in macro 0 (zero). Start up AppleWorks and insert the UltraMacros disk. Add the Word Processor file "Linking Samples" to the Desktop and study it for some sample linking macros and ideas. ___________________________________________________________________________ Startup Menus -------------- UltraMacros allows you to create handy menus which allow you choose what you want AppleWorks to do next. You can use Task files (see next section), or create menus within AppleWorks files. Start up AppleWorks and insert the UltraMacros disk. Add the word processor file "Macros Startup" to the Desktop and study it for a sample menu macro set. ___________________________________________________________________________ Task Files ---------- Task files are precompiled sets of macros that have been saved on the AppleWorks startup disk as system files. They are called "Task" files because they allow you to quickly and easily execute a specific task. New tasks can be launched in several ways: 1. From within AppleWorks by using the TimeOut Macro Options application 2. From outside AppleWorks by using a program selector such as Apple Desktop, MouseDesk, Alan Bird's program Selector, ProSel, ECP or Squirt. 3. From outside of AppleWorks by typing -TASK.NAME from Basic with the AppleWorks STARTUP disk in the current drive. To see a sample task file, start up AppleWorks and insert the UltraMacros disk. Add the Word Processor file "Task Sample" to the desktop. When a task is launched from outside of AppleWorks, it first loads ULTRA.SYSTEM, which in turn loads AppleWorks. The first macro in the set of macros is then executed. The first macro from "Task Sample" looks like this: ]:<all :rtn : rtn : sa-1>! get to main menu and run second macro. The macro enters the two RETURN keystrokes needed to get past the AppleWorks copyright message and accept the current date. It then jumps to the next macro in the set. Note: See "Task Sample" for replacement first macros if you don't have a clock or if you need to pause to remove the AppleWorks STARTUP disk and insert the PROGRAM disk. The second macro should actually begin the task. This is the macro that's executed when the task is launched from within AppleWorks. The sample second macro looks like this: 1:<all : oa-q esc rtn down down rtn rtn>Rename Me<rtn>! It uses the standard <oa-q esc> sequence to jump to the AppleWorks Main Menu. This is a good technique to make sure your macros work the same no matter where you are when the SOLID-APPLE is pressed. The macro then executes the necessary keystrokes to add a new Word Processor file to the Desktop called "Rename Me"> This example is simple, but it illustrates the potential of Task files. Here are some possible Task file uses: 1. Add a specific group of files to the AppleWorks Desktop 2. Copy a 3.5" disk to a RAM disk using TimeOut FileMaster. 3. Load a Spreadsheet file and graph it TimeOut Graph. 4. Load a Word Processor file and print it with TimeOut SuperFonts. 5. Any complex and repetitive task, such as printing out a weekly report using Data base or Spreadsheet Data. It's a good idea to create a "Default Macros" task file first and save it on your AppleWorks STARTUP disk. Then when a task is completed, you can quickly get back to your default st of macros. In fact, a Task File can even do that automatically after it's completed its task. NOTE: Programmers interested in licensing a special type of Task File for use on disks they sell should read the file "Programmer tasks" on the UltraMacros disk. ___________________________________________________________________________ The special Case of Macro 0 (Zero) ---------------------------------- Macro 0 (zero) is a unique macro because it's used by many special UltraMacros commands. Use macro 0 (zero) only for very temporary macros, because it can be redefined quite easily before you know it. Here's a list of ways that macro 0 (zero) can be redefined: 1. Press OPEN-APPLE-X to record up to 80 characters; the keystrokes are passed on to AppleWorks as they are entered. 2. Press OPEN-APPLE-O to enter up to 60 characters; the keystrokes are not passed on to AppleWorks. 3. Press OPEN-APPLE-^ to read the character under the cursor into macro 0 (zero). 4. Press OPEN-APPLE-& to read the current disk name into macro 0 (zero). 5. Press OPEN-APPLE-* to read the current path into macro 0 (zero). 6. Press OPEN-APPLE-- to read the current Data Base category or Spreadsheet cell into macro 0 (zero). 7. Press OPEN-APPLE-> to recall the STORE'd name file into macro 0 (zero). 8. It can be redefined from within a macro using <$0 = ...> Once macro 0 (zero) has been defined, the keystrokes may be sent to AppleWorks by pressing SOLID-APPLE-0. A handy example is copying a Data Base category and pasting it into the Word Processor, into the Spreadsheet, or into another Data Base category. 1. Press OPEN-APPLE-- while in the Data Base. The current category is read into macro 0 (zero). 2. Move to the new location in the Data Base or anywhere else. 3. Press SOLID-APPLE-0 (zero) and the category is duplicated. The contents of macro 0 (zero) are also used by the SOLID-APPLE-RETURN <find> command to determine what it looks for. If you have a lot of files on a disk, try this: 1. Go to the "Add Files" menu. 2. Press OPEN-APPLE-0. You will be prompted with a >. 3. Enter the file name you wish to find and press RETURN. 4. Press SOLID-APPLE-RETURN. The cursor will jump to the specified name or stop at the end of the file list if it couldn't find a match. 5. Press RETURN to load the file. Examine the Spreadsheet file called "Macro 0 Memo" on the UltraMacros disk for a handy chart showing the possible macro 0 (zero) uses. ___________________________________________________________________________ A Macro Explained ----------------- Here's some information about a handy macro that uses just a few of UltraMacros powerful commands. Hopefully it will give you a better understanding of how UltraMacros commands can be utilized. 1. Start AppleWorks and insert the UltraMacros disk in a drive. 2. Add the Data Base files "Addresses" and "Phone Calls" to the Desktop, along with the "Macros Ultra" Word Processing file. 3. Select "Macros Ultra" and use OPEN-APPLE-F to find Phone Calls. 4. You'll see a detailed macro description. Examine it briefly. 5. Switch to the "Addresses" file and put the cursor on a name. Press SOLID-APPLE-CONTROL-P. In an instant you'll see a screen something like this: |-------------------------------------------------------------------------| |File: Phone Calls REVIEW/ADD/CHANGE Escape: Main Menu | | | |Selection: All Records | | | |Record 2 of 2 | |=========================================================================| | | |Date: Aug 19 87 | |Name Bryan Ross | |Number: (111) 222-3333 | |Time St: 5:35 PM | |Time End: - | |Comment: - | | | | | | | | | | | | | |--------------------------------------------------------------------------| |Type entry or use @ commands | |==========================================================================| All you need to do is press SOLID-APPLE-= when the conversation is over (to enter the time), and you've got a detailed record of the call. How did the macro do it? Examine it step-by-step. The curly {braces} allow you to embed comments between the <token brackets>. These comments are not stored in the macro table, so they don't waste any space. Nowhere does it tell you that you have to compile the macro file before using it. You should know that, but we're reminding you here anyway. ___________________________________________________________________________ TimeOut MacroTools ------------------ MacroTools is a TimeOut disk fill of sample macros, TimeOut tips, special TimeOut applications, and a surprise or two. UltraMacros beginners will appreciate the powerful ready-to-use macros and instructional macro tips. Veteran macro maniacs will love the programming ideas and samples on the disk. They'll especially like "Debug", a TimeOut application that displays all kinds of useful macro table information that only a macro programmer could enjoy. It even allows variables to be examined and modified! Check the "NOTES" file on the UltraMacros disk for more information about MacroTools. TimeOut MacroTools will be released during the first quarter of 1988. ___________________________________________________________________________ Changes from Super MacroWorks ----------------------------- Here is a brief summary of changes for users converting from Super MacroWorks to UltraMacros. Several obvious differences relate to TimeOut. all compiling, saving of compiled macros, macro listing, changing mouse options, etc., is done using the TimeOut applications. The resulting saving of memory space allows the actual UltraMacros program (ULTRA.SYSTEM) to be more powerful. The following new tokens have been added to UltraMacros: ato, begin, call, cell, clear, else, elseoff, getstr, goto, highlight, id#, left$, nosleep, onerr, peek, poke, posn, print, pr#, rem, right, right$, screen, then, time24, val, wait, wake A significant improvement in an existing command is the new ability of <find> to search any numbered highlighted bar menu. It works with the OPEN-APPLE-Q Desktop Index, the OPEN-APPLE-ESCAPE TimeOut menu and with any normal menu such as the list of printers you're given before printing a file. The following tokens are not available. They are unnecessary because their functions can be duplicated with existing commands. end?. menu, resume, swap, OPEN-APPLE-#, OPEN-APPLE-$, :print, compile, save0, load0, 0=, if0, var=, incvar, decvar, varnot, var The "var" commands have been replaced with a full set of 26 numeric variables. The other commands cam be replaced with the new UltraMacros commands as described in the file "Macros From SMW" on the UltraMacros disk. The ability to automatically download a Power Print font at startup time was dropped. NOTE: You may leave Super MacroWorks on the AppleWorks STARTUP disk. The UltraMacros installation program will rename SUPER.SYSTEM to SUPER.SYSOLD. To use UltraMacros, you can then boot your AppleWorks STARTUP disk, choose "ULTRA.SYSTEM" with a program selector, or type "-ULTRA.SYSTEM" from Basic. To use Super MacroWorks, type "-SUPER.SYSOLD" from Applesoft BASIC or choose "SUPER.SYSOLD" with a program selector. ___________________________________________________________________________ Macro Token List ---------------- Here's a complete alphabetical listing of all UltraMacros tokens, along with a short description. Token Summary ------------------------------------------------------------------------ adb AppleWorks' Data Base application code ahead Find next space all Any of AppleWorks' three application types asc Convert string character to its ASCII equivalent as shown on the Key Chart. Only the first character of a string is used. asp AppleWorks' Spreadsheet application code. ato TimeOut application code awp AppleWorks' Word Processor application code ba- Both Apple i.e. OPEN-APPLE and SOLID-APPLE are pushed together back Find previous space begin Start of repeatable section (see rpt) bell Sound the AppleWorks error bell call Execute a machine language subroutine cell Read current cell, category, or WP line to macro 0 (zero) chr$ Return ASCII equivalent of a numeric variable clear Set all numeric and string variables to 0 ctrl- Control key date Display date in this format: November 26, 1987 date2 Display date in this format: 11/26/87 dec Decrement the cursor character del Delete key disk Read disk name to macro 0 (zero) down Down arrow key else Reverses conditional status of a macro elseoff Return to macro being unconditional esc Escape key find Find a name or carriage RETURN findpo Find a printer option getstr Define a string from the keyboard goto Jump to specified macro highlight Invert specified screen portion id# Returns TimeOut application number if Execute macro if condition is true ifkey Checks if specified key was pressed ifnot Execute macro if condition is not true inc Increment cursor character input Accept keystrokes until RETURN is pressed insert Force the insert cursor on key Wait for keypress and return its value lc Force cursor character to lower case left Left-arrow key left$ Return left part of string len Return length of a string msg Display message on screen nosleep Cancel sleeping macro oa- OPEN-APPLE key onerr Set error handler conditions path Read disk and file name to macro 0 (zero) peek Return value of memory address poke Store data in a memory address posn Returns cursor position print Print variables pr# Send print output to screen or printer read Read character under cursor to macro recall Recall stored text to macro 0 (zero) rem Remark within a macro right Right arrow key right$ Returns the right part of a string rpt Repeat the current macro rtn Return key sa- SOLID-APPLE key screen Read screen portion into macro 0 (zero) spc Space bar key stop Unconditionally stop all macro activity store Store macro 0 (zero) in a awp or asp file str$ Return the string equivalent of a numeric variable tab TAB key then Filler token, does nothing but look pretty time Display time in this format: 7:28 PM time24 Display time in this format: 19:28 up Up arrow key uc Force cursor character to upper case val Return numeric value of a string wait Wait until keypress or time is up wake at Set sleeping macro zoom Force zoom out ___________________________________________________________________________ TIMEOUT UTILITIES Using the Utilities ------------------- To use the TimeOut Utilities, make sure that the file TO.UTILITIES has been copied to your TimeOut applications disk. Start up AppleWorks and press OPEN-APPLE-ESCAPE to call up the TimeOut menu. Select "Utilities" and you will see the following screen: TimeOut applications utility options 1. Configure 2. Load to memory 3. Dump from memory 4. Change memory status 5. Change name 6. Sort menu ___________________________________________________________________________ Configure --------- The "Configure" option allows you to set new defaults for your TimeOut applications. Configurable options might include printer type, default font, location of files needed by the application, etc. Not all TimeOut applications have configurable options. To configure an application, select "Configure" from the Utilities menu. Then select the application you want to configure. You will see a menu indicating what options may be configured for that particular application. You should see the current value for each option in brackets [...]. Select an option that you would like to change. Enter or select the new value for that option. Make sure that the TimeOut applications disk is in a drive so that the application can be updated with the new value. The next time you use the application, it will use the new value you have supplied. After you are finished updating configurable options, press ESCAPE to return to the Utilities menu. Load to Memory -------------- TimeOut applications are either disk resident or memory resident. If an application was configured as disk resident when you started up AppleWorks, you can load it into memory using the "Load to Memory" option. Just select the option from the Utilities menu and select which application you would like to load. Dump from Memory ---------------- If you receive a message from AppleWorks indicating that it was unable to complete an option because of insufficient Desktop memory, you may need to dump one or more TimeOut applications that are memory resident. Select "Dump from memory" from the Utilities menu and select which application you would like to dump. Notice that the amount of free memory indicated in the lower right hand portion of the screen increases with each application you dump. Applications that are dumped are returned to disk resident status for the remainder of the AppleWorks session. Change memory status -------------------- This option allows you to indicate whether a TimeOut application is disk or memory resident. Note that this only indicates how the application will be treated when you start up AppleWorks. To load an application into memory or to return it to the disk for the current AppleWorks session, you will need to use the "Load to memory" option or the "Dump from memory" option. Change name ----------- This option allows you to change the name of the application as it appears in the TimeOut menu. The Beagle Brothers staff carefully selects a good name for each application. However, you have the flexibility of renaming it if you wish. If the new name you enter is longer than the old name, the name change will not be reflected in the TimeOut menu until the next time you start up AppleWorks. Sort Menu --------- When you apply TimeOut to your AppleWorks STARTUP disk, you are given the option of indicating whether or not you want the TimeOut menu automatically sorted by application name. If you choose not to have the menu sorted, you can still sort it after starting up AppleWorks by selecting "Sort menu" from the Utilities menu. ___________________________________________________________________________ Key Chart --------- The Key Chart has 128 possible character codes, with each one having a low and a high value. The high value is 128 greater than the low value. In AppleWorks, the high value represents an OPEN-APPLE command, and the low value represents normal text. These numbers bore most people, but they're vital for understanding how <asc>, <chr{body}gt; and <key> work. A viewpoint from Some Other Guy ------------------------------- My friend, the cat, states that those keystrokes shown for 0 through 31 are input conventions that have no force of law in the RS232-c world. By that he means that we talk of control-M as if it *must* be the RETURN key and control-U as if it must be the right arrow. The fact is that RS232-c does not state that at all. Control-M is "cr" (which is turned by UNIX systems into line feed {cntrl-J which is "nl" i.e. new line}. Is your head starting to hurt? Mine is. Finally, control-U is really "nak" not the right arrow at all. It is *convention* that says these keys and those control codes are associated. Don't fret, Apple abides by those conventions - as do most/all terminal makers. The point of all this is to teach you that you cannot believe *everything* you read, no matter what bird brain is the author. Low High Low High Low High Low High ----------------------------------------------------------------------------- 0 ctrl-@ 128 32 spc 160 64 @ 192 96 ` 224 1 ctrl-A 129 33 ! 161 65 A 193 97 a 225 2 ctrl-B 130 34 " 162 66 B 194 98 b 226 3 ctrl-C 131 35 # 163 67 C 195 99 c 227 4 ctrl-D 132 36 $ 164 68 D 196 100 d 228 5 ctrl-E 133 37 % 165 69 E 197 101 e 229 6 ctrl-F 134 38 & 166 70 F 198 102 f 230 7 ctrl-G 135 39 ' 167 71 G 199 103 g 231 left 8 ctrl-H 136 40 ( 168 72 H 200 104 h 232 tab 9 ctrl-I 137 41 ) 169 73 I 201 105 i 233 down 10 ctrl-J 138 42 * 170 74 J 202 106 j 234 up 11 ctrl-K 139 43 + 171 75 K 203 107 k 235 12 ctrl-L 140 44 , 172 76 L 204 108 l 236 rtn 13 ctrl-M 141 45 173 77 M 205 109 m 237 14 ctrl-N 142 46 . 174 78 N 206 110 n 238 15 ctrl-O 143 47 / 175 79 O 207 111 o 239 16 ctrl-P 144 48 0 176 80 P 208 112 p 240 17 ctrl-Q 145 49 1 177 81 Q 209 113 q 241 18 ctrl-R 146 50 2 178 82 R 210 114 r 242 19 ctrl-S 147 51 3 179 83 S 211 115 s 243 20 ctrl-T 148 52 4 180 84 T 212 116 t 244 right 21 ctrl-U 149 53 5 181 85 U 213 117 u 245 22 ctrl-V 150 54 6 182 86 V 214 118 v 246 23 ctrl-W 151 55 7 183 87 W 215 119 w 247 24 ctrl-X 152 56 8 184 88 X 216 120 x 248 25 ctrl-Y 153 57 9 185 89 Y 217 121 y 249 26 ctrl-Z 154 58 : 186 90 Z 218 122 z 250 esc 27 [ 155 59 ; 187 91 [ 219 123 { 251 28 \ 156 60 < 188 92 \ 220 124 | 252 29 ] 157 61 = 189 93 ] 221 125 } 253 30 ^ 158 62 > 190 94 ^ 222 126 ~ 254 31 _ 159 63 ? 191 95 _ 223 127 del 255 ___________________________________________________________________________ Macro Programming Problems Please examine all sample macro files on this disk. Use the OPEN-APPLE-F command to search for samples of a specific command. We don't have the time to teach you how to use the macro commands; you'll have to learn from the examples and the manual. There will be more information given with the sample macros on a TimeOut disk which should be released in early 1988. If you're having trouble with your own custom macros, exhaust every possibility before writing. To have me (Randy Brandt) examine your macros for what might be an UltraMacros problem, send them on a disk to my attention along with a description of the problem and your hardware/software setup. Please remember that debugging macros are almost last on my priority list (just before taking out the trash), but you might catch me on a good day. There are a few features which are unclear or not mentioned in the manual: 1. String variables can be referenced indirectly by using a numeric variable to specify the string to use: a:<all $0 = "ZERO" : $1 = "ONE" : A = 0 : print $(A) : A = A + 1 : print " " + $(A)>! prints ZERO ONE b:<all B = 3 : $(B) = screen 1,1,6 + "TEST" : print $(B)>! 2. String tokens requiring one parameter can not use equations. The following macro would be illegal because "getstr 3 + 2" should be "getstr 5" or some other single parameter. a:<all msg "< " + getstr 3 + 2 + screen 1,1,9 + " >">! Parameters for strictly numeric tokens can be equations: a:<all highlight 9, L, len $(A) + 10, L>! from "Macros Menu" Macros Manual Load the file "Macros Manual" from the UltraMacros disk. It contains many of sample macros described in the manual, as well as a few bonuses. Customer Support Information ---------------------------- If you have questions or problems, you can contact the Beagle Brothers Technical Support Staff for expert assistance. Before calling, check the instruction manual to see if it contains the information you need. Write down a complete description of the problem, the version number of the software, and the names and version numbers of any other AppleWorks enhancement programs you're using. If you have a modem, you may also receive Tech Support on our 24-hour Customer Support System. The system provides an electronic mail and conferencing system, along with the latest information about product updates and changes. Technical Support: (619) 452-5502 8AM to 5PM, weekdays (Pacific time) Modem Technical support: (619) 452-5565 24 hours, everyday Or, you can write to: Beagle Bros, Inc. 6215 Ferris Square, Suite 100 San Diego, CA 92121 -END- Chapter 4 & END OF ULTRAMACROS DOCS