8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RLnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!) >dMԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@LMOVE11402KA' MACROS# COPY.ME$33FASTCOPY.SYSTEM)VNZ [*LAUNCHER.SYSTEMG,b$ b1 PRODOSW#Bb  SETTINGSy$ c SYSUTIL.SYSTEM{c% c% UTIL.0~Qc, c, UTIL.1;yc c UTIL.2 c. c. MACROSu#' #' '-SEG.AX.SOURCE 2~ ,CONFIGDBLINK$\|ռ')OAW.MAKER3 T%-DB.LINK.NOTES;&xY *CONFIG.DBLP |[6/WP.WINDOW.MACRO_3/%%-BOTH.APPLES.Ld_sY*DATE.RESETj{[6)DB.WIDTHSoM /R-MACRO.SAMPLES }O*AW5.MACROSy!d3 /NOCLOCK.BLANKERU_~[6BO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===*AO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===Nif O = $40 : rtn >!lay 1 endif : :if:kword $cc8 :labels .seg.axstart:!!:!: 154 esc :,poke $10f2, 1 :poke $336, K(1) :-poke $11ac, $1b : endmacro endif:hilight 0,R,C(1),R;if K = 9 and C < 56 C = C + 26 R = 7 rpt endif:6if K = 9 and C = 56 C = 4 R = 7 rpt endif:Dif K =10 and C = 4 and R = L(1) C = 30 R = 7 rpt endif :Eif K =10 and C = 30 and R = L(2) C = 56 R = 7 rpt endif :Cif K =10 and C = 56 and R = L(3) C = 4 R = 7 rpt endif:Cif K =11 and C = 4 and R = 7 C = 56 R = L(3) rpt endif:Bif K =11 and C = 30 and R = 7 C = 4 R =L(1) rpt endif:Eif K =11 and C = 56 and R = 7 C = 30 R = L(2) rpt endif :%if K =10 R = R + 1 endif:'if K =11 R = R - 1 endif :8if $0 = "No files" and K =13 bell rpt endif:=if K =13 display 0 poke $11c6, $60 oa-q Z = 200 :$find go poke $11c6,$4c :+ poke $10f2,1 poke $336, K(1) :+poke $11ac, $1b endmacro endif: rpt >! E:t< begin :x = peek $b5 :/if x = 208 : first left exit endif:last down : rpt : rtn : oa-q oa-c :oa-1 : first :begin :'cell : $0 = .zapchar $0, 9:$$0 = .stripchar $0,32,1:oa-Y print $0 :!oa-rtn X = peek $b5 :%if X = 208 exit endif: rpt :oa-1 oa-o KI>tm1bm0rm0lm3.5pl4T< rtn rtn : display 0 oa-q print F(1): go poke $11ac,$1b : >! z: 3 endmacro endif:/if Z = 3 : oa-m >t< poke $b802,$60?keyto 13 : poke $b802,$4c : if Z = 0 esc endmacro endif:>if Z = 13 rtn $1 = "Press" if $1 = screen 1,42,5 bell :endmacro endif:,if Z = 1 oa-1 endif :display 0 oa-q :Cif Z < 3 D = peekword $7c62 : Y = peekword $7c64 : go else :"oa-c:oa-1:display 1 endif :K = peek $10f1 :insert : begin :find : X = .eof : posn R,R ,if R = X or R > X and Z(1) < 3 :poke $10f1, K : | :5pokeword $7c62,D pokeword $7c64, Y :esc :endmacro else :<if R = X or R > X oa-9 up oa-del :display 0 : oa-q print C : rtn:;oa-M display 1>f< poke $10f1, K endmacro endif:B = peek $b5 :"if B > 207 rpt endif :1A = $7b01 + B : L = peek A :oa-rtn : -F(1) = peek $7b02 :N = peek $b5 :-if B < 208 and N = 208 rpt endif:'if N < 208 up find oa-del :7ifnot L = $20 or F(1) = $20 spc endif: rpt >! W:C< poke $b802, $60 :keyto 13 : if Z = 0 esc exit endif :rtn >C< keyto 13 : display 0 rtn :oa-q go exit rpt:poke $b802, $4c >!,: 0 or t > 0 bell endmacro endif:poke $10f2, 0 :"q(1) = peek #filestatus : 0if q(1) = 0 or q(1) = 8 q(1) = 5 : endif:E$1 = .choose "New,Changed,New,Saved,Unchanged,Changed",q(1) :?$2 = ". -C To Change Status, -R to Remove the file." :t = peek $c6b :=if t = 3 $3 = .choose "238,160,238,232,212,160",q(1) :+v = val $3 : poke #curschar,v endif:;.writestr 0,23, "File status: " + $1 + $2 + chr$ 1 :poke $b802, $60 :k = key :poke $b802, $4c :*if k = 209 or K < 195 : exit endif:7if k = 210 poke $10f2,1 if q(1) < 4 or q(1) = 6 ,K(1) = peek $10b1 : print chr$ K(1) :4e = peek $362 : if e > 0 bell endmacro endif::if k = 210 oa-Q esc>4 $4 exit endif:if z = 1 Z = 0 : endif :)poke #filestatus, Z : endif :rpt :)display 0 oa-q go poke $10f2,1 >!: 0 exit endif :Ebell .say "Place " + $1 + " in a drive and press Return":3k = peek $c000 : if k = 27 exit endif :#rpt : if K = 27 exit endif:$2 = .peekstr $c56 : if q(1) = 2 or q(1) = 6 :C.askyn "This file is changed. Revert to last saved anyway": if Z = 1 exit endif:Jif q(1) = 0 or q(1) = 4 $0 = "z" + left $2,14 : else $0 = $2 endif:($3 = $1 + "/" + $0 : .online $3 :?if Z = 0 bell .say $0 + " not found. " + $5 :exit endif:5.setdisk $1 : display 0 poke #filestatus, 0 :Hoa-q esc>4< rtn rtn : rtn oa-rtn print $0 : rtn : E = peek $362 :if E = $4c E = 0 endif:Jif E > 0 $4 = .hex E :bell display 1 .say "Disk error $" + $4 + $5:exit endif:*.pokestr $2, $c56 : oa-q go exit :rpt : poke $11ac, $1b >!>:! // empty macro to get anX in the cacheMRL Quick column W: 67 K = K - 32: { convert lower to upper case }endif:Oif K = 21 Tab: goto sa-W: { make right arrow act like tab to move}Oendif:  { right one category, then loop back }Lif K = 8 oa-Tab: goto sa-W: { make left arrow act like oa-tab }Nendif : { left one category, then loop back }%if K = #'C' exit :Bendif: { if C was pressed exit the loop }Nbell: { if we get to here wrong key was pressed ring bell and rpt} rpt:msg "" :$1= chr$ 10 + O'Enter New Width - Then Return ( Max. 78 ) Current = ' + str$ W + ' :' + chr$ 11 :insert oa-e : V = .getvalue $1,1,78,W :insert :'if V = $ffff: |: display 1 esc :'poke $11ac, $1b endmacro: endif:poke A, V + 1: :| : display 1 : esc :OMpoke #filestatus, 2 :goto sa-W >! Set filestatus to changed, loop back and start over.:! // oa-left to remove all%S: 0 or t > 0 endmacro : endif:.K(1) = peek $10b1 : // smart save key 7if K(1) = $93 K(2) = $d3 else: K(2) = $93 endif:X = peek #filestatus :)if X = 0 or X = 8 X = 5 : endif:B$2 = .choose "New,Changed,New,Saved,Unchanged,Changed",X :0$3 = "This file is " + $2 + ". Save to" :-L = peekword $ff9d : R = peek $ff1d : .peekvar $ff70,A(3),8,2 :call sa-} in "seg.um":+pokeword $ff9d, L : poke $ff1d, R : .pokevar $ff70,A(3),8,2 :$1 = "" :1ifnot $2 = "New" $1 = "|FilePath" endif :1.menubar $3,"Current Disk|QuickPath"+ $1 :B Y = Z: if Y = 0 or Y > peek $b94c restscr endmacro : endif: O = peek $c061: if Y = 1 and O < 128:* print chr$ K(2) : endmacro : endif:3if Y = 3 print chr$ K(1) : endmacro endif :% Q = Peek #openfile oa-Q oa-P : if Y = 2: oa-P endif: begin:poke $b802,$60:k = key:poke $b802,$4c:Cif K = 27 or K = 155 oa-q print q rtn endmacro : endif:1ifnot K = 13 print chr$ K: rpt endif:*if Y = 2 and K = 13 rtn endif:J = peek $e86:if J = $40 rtnrpt endif:if Y = 1: n = peek $8c:/ifnot n = peek $ef2 rtn exit endif:X = peek $ca6 :#if X > 0 $1 = "" endif:if Y = 1:1$2 = .getstring "Directory? ",$1,48:+if Z < 2 or Z > 48 or $2 = "" :exit : endif:#if Y = 1:.setdisk $2 :exit :rpt endif:2 oa-q print q : rtn print chr$ K(2) >! T:!AO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===rpt >!Place your Appleworks STARTUP disk in a drilabels.ConfigDBLINK\ba-l Launch SEG.UM\sa-M Data Base Config. Menustart C:! ]: 0 poke $336, 0: endif:oa-q esc:6.writestr 66, 13, %L% : .writestr 13, 7, %NCO%:E$1 = "":.writestr 13,7, $1 :.writestr 13, 13, $1:6$1 = &V& + %IF% : $1 = $1 + $1 + $1 +$1 + $1 : $1 = left $1, 13:.writestr 13,8, $1 :.writestr 66, 8, $1 :=.writestr 255, 9, "DB LINK Configuration Macros U4.3":<.writestr 255, 11, "Copyright 1991-93 Steve Beville":.spacebar :' display 0 oa-q display 1 esc :D = peek $1024: begin:.deskcount 1 : if Z > 0 exit endif:oa-q tab : D(1) = peek $1024 : if D(1) = D bell :A.say "There are no data base files on any Desktop" : $ poke $10e6,0 stop endif: rpt : esc :%.qmenu "Choose a Data Base",1:8if Z = 0 or Z > 12 poke $10e6, 0 poke $336, I : endmacro endif: goto sa-M >!M:!|:! _: 3 display 0 esc display 1 esc : exit endif :.ongoto z, "*pL": rpt :&poke $336, I : poke $10e6, 0 >! *: 3 goto sa-* endif: $41 = "- Press Any Key ":F = peek #dbfields - 1: )if F > 18 N = 18 else N = F endif:C.getnames 1, 1, F : .List 26,0,24,N,1,F,"Select a category":S = Z :)if Z = 0 or Z > F goto sa-* endif:$L = len $(S) : A = asc $(S) :*if Y = #'R' or Y = #'r' goto sa-R : endif:Oif A = 42 and L > 1 bell .say "This Category is Already Marked " + $41 :goto sa-_ : endif:if L < 20 exit : endif:if L > 19 bell :5.askyn "Category name is too long, rename it":T = Z :if T = 2 goto sa-N : endif:,if T = 1 or T = 0 or T > 2 goto sa-* endif: rpt:$(S) = "*" + $(S) :.setnames S, S,1:(sa-C : poke $c6c, 2 :goto sa-_ >! R: 1 .say %P% + "This Category isn't Marked "+ $41:goto sa-_ : endif:L = L - 1 :$(S) = right $(S), L :.setnames S,S,1 : poke $c6c, 2 :sa-C :goto sa-_ >! N:! P: 2 goto sa-_ :endif:C(1) = peek #dbfields :R(1) = peekword $b4 :Q = peek $c54:oa-q oa-F rtn :#J = peek $2f83 : // esc key.if J = 27 $9 = "Escape":endif:$if J = 174 $9= "-." : endif:/.writestr 33, 0, "Link a File" + %A%: . .writestr 68, 0,$9 + ": Cancel" + %A%:d = peek $362 : "if d > 0 bell oa-q print Q:O = peek $e86 - 115 :print chr$ O :NL.writestr 0, 23, "Disk Error, Check the Current Disk or Path" + %A% : wait 15000 :goto sa-_ : endif: begin:5.writestr 255, 0, " LINK A FILE " + %A%:3.writestr 65, 0, $9 + ": Cancel" + %A%:poke $b802, $60:K = key :poke $b802, $4c :-if K = peek $2f83 oa-q print Q : O = peek $e86 - $73:&print chr$ O : goto sa-_ :endif:7X(1) = peek $21c1 : x = .andbits x(1), 15 : :+if K = 13 and X = 5 rtn : rpt :endif:(if K = 13 and X > 3 bell :msgxy 255, 22:Omsg ' This is not an AppleWorks file - Press Any Key ':wait 15000 :(msgxy 0, 128 : msg "" :rpt :endif:Lif K = peek $2f82: $1 = .peekstr $2152 M = .substring "/",$1,2 :if M = 0 bell rpt :endif:if K = 13 exit :endif:print chr$ K : rpt:'$0 = .peekstr $2152 : //get path@$0 = $0 + "/" + .peekstr $21b1 :// add slash and filenameoa-q print Q : O = peek $e86 - 115 :+print chr$ O :last .setcat 0,0,$0 :first |:esc :goto sa-_ >! K: 176 and k < 186 print chr$ K : endif:6if K = 10 or K = 11 K = K + $80 :print chr$ K : endif:posn K(1), R : if R = 0 >N< bell : rpt :endif :if K = 13 endmacro: endif:rpt >!:!@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===if X = 222 then oa-y oa-y first endif :OMThis macro by Randy Brandt prepares an OA-W Word Processor file for use with LJthe current Data Base by creating a label entry in the Word Processor for MKevery record in a specific category. When2456789 the macro is done, you may enter PNWord Processor text which will be accessible from the Data Base when the OA-W command is used.NLYou must have fewer than 12 files on the desktop before starting, and there @can't be a WP file whose name is the DB file preceded by "H.".Here's how the macro works:H1. When you press SA-W, you're prompted for the Data Base file to use.MK2. The current layout is stored as a report format, and you're prompted to Cuse OA-D to delete all categories but one, and then press Return.H3. The file is copied to the clipboard (just one category per record).84. The WP file is created and the clipboard pasted in.75. Marker 150 is inserted before each category entry./6. The original Data Base layout is restored.=7. You're returned to the WP file to enter data as desired.start.W:22Current 13 then L = 13 : endif Y = 0 : $1 = "" : begin2Y = Y + 1 : if Y > L then exit endif :7B = C + Y : X = peek B : $1 = $1 + chr$ X : rpt :+ $1 = "H." + $1 : { define WP file name } oa-1 oa-c>t3xf< { get records }0 oa-o print "sm" : rtn : print "150" : rtn esc< zoom oa-z up oa-c>tf $40 then rpt endif :if L > 2 then rpt endif6 oa-Z : oa-Q : print Q : rtn oa-L>25y!----- T:!AO====<<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O====<<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===-Lly select one the way you would any TimeOut applicDB LINK 4.43$Copyright 1988-93 by Steve BevilleRequirements============%Appleworks 4.0, UltraMacros 4.3About DB LINK=============NLDB LINK came about as a:<=>?@ABCDEFGHIJKLMNn attempt to overcome one of the shortcomings of FDthe AppleWorks data base. Programs such as PFS File and Q&A (Q&A is IGMS-Dos) are capable of having multiple page data base records in which LJfields can be several pages long. This allows you to have short fields to IGsearch and sort by and longer fields that can contain several pages of KIdetailed information. Unfortunately these programs don't have a multiple FDrecords layout ( without printing a report ) or the ability to have IGmultiple files active in RAM or Appleworks' ability to easily transfer CAinformation to other files, not to mention ease of use, Timeout, KIUltraMacros, etc. My goal was to have different data base RECORDS linked KIto different files, to enable me to have information in the data base to JHsearch and sort by and information of a more detailed nature in another LJfile that could quickly be called up and viewed, information that was too HFlong to fit in an Appleworks data base. The linked file can be a word /processor, spreadsheet, or another data base.TERMS=====KILinking Data Base - The data base which contains the information you IGwish to find in the other file. This is the data base you configure to work with DB LINK.FDLinked File - The AppleWorks file that is specified in the last KIcategory. It can be another database, a spreadsheet, or a word processor KIfile. This is the file DB LINK searches for on the desktop or loads from disk for you.MKMarked Category - The category which contains an asterisk ("*") as the LJfirst character in the file name. This category must contain at least two DBcharacters in the file name, "*" and another. Many people, myself ECincluded, like to name extra categories "*", that's why the marked -category must have at least two categories. COMMANDS ======== -L Launch defaults (SEG.UM).PN-S If you can only remember one command, this is the one to remember. In the KILinking Data Base, -S reads the information to Search for in the linked JHfile, WHAT TO FIND, from the category that contains an "*" as the first LJcharacter in the category name. If no marked category is found, you'll be LJgiven the option to continue anyway. This will allow you to switch to the IGlinked file without finding any information contained in the file. The JHmarked category must have at least two characters in the category name. DBNext DB LINK reads the complete pathname of the file to find this JHinformation in from the last category, determined by the order in which GEthe categories were defined, WHERE TO FIND IT. If the specified file KIisn't found on the current Desktop, Triple Desktop is searched, provided JHyou have Triple Desktop. If the file isn't found on the desktop it will KIbe loaded from disk. If the desktop is full, DB LINK switches to another ECdesktop and adds the file there. If all desktops are full, DB LINK LJreturns to the linking data base file and displays " all the desktops are FDfull". If the volume or file can't be found, DB LINK returns to the HFLinking Data Base File and tells you as much. In the linked file, -S IGwill return you to the linking data base, even if they're on different desktops.PN-T works similarly to -S. However you must first execute -S in the Linking FDData Base before using -T. After you find the linked file, you can JHtoggle back and forth with -S or -T. If you move around in the linked ECfile, using -T will take you back to where you left off, from the LJlinking data base. -S will take you back to the information contained in JHthe marked category, from the linking data base. To preserve the cursor GEposition in the linked file, use -T, ONCE THE CORRECT FILE HAS BEEN KIFOUND. If for some reason the information is not found, DB LINK stops at 2the beginning of the linked file, no harm done. IG-E Emergency macro to turn the display on if something bombs with the display off.@You may use -Esc to display the list of available macros.CHANGES FROM VERSION 3.1========================LJThis version of DB LINK works with the display off. Some people don't JHlike to see all the screens flashing by, so in this version all you see is one file or the other.MKThe information to find is now determined by which category is marked. KIThis will allow you to use DB LINK with many data base files without the JHneed to alter the program code or redo your files. The last category in JHthe record holds the COMPLETE PATHNAME of the file in which to find the GEinformation. This version work with subdirectories. You can have the EClinked files all over your hard disk, or any kind of disk for that IGmatter, in as many different subdirectories as you want. DB LINK works LJcorrectly even if you have a custom record layout installed in the single KIrecord layout. As written, DB LINK finds information in another AW file, KIbut you could do something else once the correct file is found, update a JHdata base or spreadsheet or whatever you can think up. You can set up a IGdata base as an index of files and use DB LINK to find and load a file for you.=An expanded memory is recommended for use with DB LINK.KIDB LINK contains routines to try and prevent you from loading a file HFthat exceeds the amount of available memory. If the size of a file on JHdisk exceeds or is equal to the amount of free memory, DB LINK will not GEload the file. Unfortunately it isn't possible to calculate how much LJdesktop memory a file will use. It varies depending on the type of memory LJcard and the amount of memory installed. AppleWorks does not check to see JHif there's enough memory available before attempting to load a file. By KIthe time the program discovers there isn't enough memory, it has already EC"bumped" portions of the AppleWorks program from memory to make it LJavailable for desktop use. Although DB LINK will try and prevent this, it FDmay not always succeed. In any case, if a file is too big you'll be IGreturned to the Linking Data Base and an "Insufficient Memory" message will be displayed.LJAlthough DB LINK was designed to link individual data base records to JHother AppleWorks files, you can link an entire data base to one file if FDyou want. Just enter the pathname in the last category of the first KIrecord then use the ditto command to enter that pathname in all records. JHSet the standard value for the last category for that pathname. Any new GErecords that are entered will automatically be linked to the correct file. Filenames =========NLDB LINK uses Ultra's exact match feature so there is no longer a Gproblem with one filename name appearing at the beginning of another.USING DB.LINK=============OMDB LINK reads the information contained in the Marked Category and looks B@for that information in the Linked File. It will find the first HFoccurrence of that information in the Linked File. If the information FDappears more than once in the Linked File, and you want to find the JHsecond or third occurrence, you'll need to make that information unique KIin someway. You can add an underline character, "_", before and/or after FDthe information, use numbers, symbols or whatever you can think up. KIWhatever you do to the information in the Linked File to make it unique, LJyou must also do to the information in the Marked Category. See the entry ,on Zachary Taylor in the sample data base.CONFIGURATION MACROS====================OMTo.ConfigDBLINK will automatically configure your data base to work with KIDB LINK. This is a menu driven program. Choose an item from the menu and follow the prompts.LJ1.Add/Remove a Marker. This option will automatically add or remove the KI"*" in front of the category name. If you choose to add a marker and the KIcategory name is 20 characters long, the maximum length, you'll be given CAthe option of renaming the category. If you choose to rename the GEcategory, type in a new name when prompted. Don't enter the "*", the .program will add that for you automatically.NL2.Link to a file on disk. This option will enter the complete pathname of KIthe file you select from an AppleWorks file listing. When presented with LJthe file list, use RETURN to view the contents of a subdirectory, use TAB LJor oa-TAB to change to a different drive. Highlight the file you want the LJrecord linked to then press RETURN. The linked file must be an AppleWorks LJAWP, ADB, or ASP file. It you select some other type of file an error msg IGwill be displayed. The complete ProDOS pathname will be entered in the last category. D3.Launch Seg.UM. This option will restore the default macro set.LJ4.Quit. This option will allow you to quit but leaves the configuration macros active.-Llaunch Ultra.system.G-M will display the configuration menu from within a data base file.NLAdd the data base "Presidents" to the desktop then select DB LINK 4.43 from PNthe TimeOut Menu. Choose a record within the Linking Data Base then press -S to call up the linked file.AO=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===Nrpt >!Place your Appleworks STARTUP disk in a drilabels.ConfigDBLINKstart C:! ]: 0 poke $336, 0: endifOQRSTUVWXYZ[\]:oa-q esc:6.writestr 66, 13, %L% : .writestr 13, 7, %NCO%:E$1 = "":.writestr 13,7, $1 :.writestr 13, 13, $1:6$1 = &V& + %IF% : $1 = $1 + $1 + $1 +$1 + $1 : $1 = left $1, 13:.writestr 13,8, $1 :.writestr 66, 8, $1 :=.writestr 255, 9, "DB LINK Configuration Macros U4.3":<.writestr 255, 11, "Copyright 1991-93 Steve Beville":.spacebar :' display 0 oa-q display 1 esc :D = peek $1024: begin:.deskcount 1 : if Z > 0 exit endif:oa-q tab esc : D(1) = peek $1024 : if D(1) = D bell :A.say "There are no data base files on any Desktop" : $ poke $10e6,0 stop endif: rpt :&.qmenu "Choose a Data Base",1: 8if Z = 0 or Z > 12 poke $10e6, 0 poke $336, I : stop endif:goto sa-M >!M:!|:! _: 3 display 0 esc display 1 esc : exit endif :.ongoto z, "*pL": rpt :&poke $336, I : poke $10e6, 0 >! *: 3 goto sa-* endif: $41 = "- Press Any Key ":F = peek #dbfields - 1: )if F > 18 N = 18 else N = F endif:C.getnames 1, 1, F : .List 26,0,24,N,1,F,"Select a category":S = Z :)if Z = 0 or Z > F goto sa-* endif:$L = len $(S) : A = asc $(S) :*if Y = #'R' or Y = #'r' goto sa-R : endif:Oif A = 42 and L > 1 bell .say "This Category is Already Marked " + $41 :goto sa-_ : endif:if L < 20 exit : endif:if L > 19 bell :5.askyn "Category name is too long, rename it":T = Z :if T = 2 goto sa-N : endif:,if T = 1 or T = 0 or T > 2 goto sa-* endif: rpt:$(S) = "*" + $(S) :.setnames S, S,1:(sa-C : poke $c6c, 2 :goto sa-_ >! R: 1 .say %P% + "This Category isn't Marked "+ $41:goto sa-_ : endif:L = L - 1 :$(S) = right $(S), L :.setnames S,S,1 : poke $c6c, 2 :sa-C :goto sa-_ >! N:! P: 2 goto sa-_ :endif:C(1) = peek #dbfields :R(1) = peekword $b4 :Q = peek $c54:oa-q oa-F rtn :#J = peek $230f : // esc key.if J = 27 $9 = "Escape":endif:$if J = 174 $9= "-." : endif:/.writestr 33, 0, "Link a File" + %A%: . .writestr 68, 0,$9 + ": Cancel" + %A%:d = peek $362 : "if d > 0 bell oa-q print Q:O = peek $e86 - 115 :print chr$ O :NL.writestr 0, 23, "Disk Error, Check the Current Disk or Path" + %A% : wait 15000 :goto sa-_ : endif: begin:5.writestr 255, 0, " LINK A FILE " + %A%:3.writestr 65, 0, $9 + ": Cancel" + %A%:poke $b802, $60:K = key :poke $b802, $4c :$if K = 27 oa-q print Q : O = peek $e86 - $73:&print chr$ O : goto sa-_ :endif:7X(1) = peek $21c1 : x = .andbits x(1), 15 : :+if K = 13 and X = 5 rtn : rpt :endif:(if K = 13 and X > 3 bell :msgxy 255, 22:Omsg ' This is not an AppleWorks file - Press Any Key ':wait 15000 :(msgxy 0, 128 : msg "" :rpt :endif:Lif K = peek $230e: $1 = .peekstr $2152 M = .substring "/",$1,2 :if M = 0 bell rpt :endif:if K = 13 exit :endif:print chr$ K : rpt:'$0 = .peekstr $2152 : //get path@$0 = $0 + "/" + .peekstr $21b1 :// add slash and filenameoa-q print Q : O = peek $e86 - 115 :+print chr$ O :last .setcat 0,0,$0 :first |:esc :goto sa-_ >! K: 176 and k < 186 print chr$ K : endif:6if K = 10 or K = 11 K = K + $80 :print chr$ K : endif:posn K(1), R : if R = 0 >N< bell : rpt :endif :if K = 13 endmacro: endif:rpt >!:!D@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===2:! return "2" the fiNLThese SA-J macros are used with the Data Base OA-W command. While viewing a LJWord Processor file with OA-W, press SA-J to jump to the same spot in the MKactual file. Do any editing you wish, and ^`abthen press SA-J to return to the LJData Base file. If you're not yet in the OA-W segment, the macro is smart #enough to enter the OA-W for you.LJPlace the cursor on a category and press SA-J to jump to OA-W, then press MKSA-J again to jump to that spot in the Word Processor, and press SA-J once "more to return to the Data Base.start;-- start by trying to make sure we're in the OA-W segment/-- if not, maybe the user wants to do an OA-WDJ: with no arrow9oa-1 : pokeword $7B80,A : oa-Q : display #on rtn>!-- return to Data Base file'J:!R@CUO=====<==========================================================================@O=====<=========================================================================rpt >!Place your Appleworks STARTUP disk in a driNLIf you want to distribute applications for use by those who have the player 'only version of UltraMacros, read on.MKThis file contains information on restoring the default macro set, SEG.UM. PNcefghStrings 96 through 99 contain the name and address information entered by the OMuser when AppleWorks was initially booted. The NAME.ADDRESS variable file is PNonly loaded when AppleWorks is booted. That information is then stored on the KIdesktop and retrieved whenever "SEG.UM" is relaunched. You can use these MKvariables in your applications without causing any problems in the default macro set.MKWhen a Mac2Menu application or Task File is finished, pass the name of the NLMac2Menu application or Task File to SEG.UM in $95. This way users who make MKMac2Menu applications memory resident won't pay a memory penalty by having NLthe Mac2Menu application memory resident and in the cache at the same time. FDIt also has the added benefit of preventing these applications from PNaccumulating in the cache. If you don't want your macros uncached, don't pass the name in $95. KIInsert the following macro in your application to restore SEG.UM without OMreloading the NAME.ADDRESS variable file and to remove your application from the cache.:!JH//You can't use $95 = .peekstr $ef00. That address is in aux memory and MK//.peekstr won't work. If you don't want your application removed from the //cache use ::!`@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===Nrpt >!Place your Appleworks STARTUP disk in a drilabels .Date.Reset\ba-L Launch Default Macros\sa-R Reset Datestart:! R: 0 esc else go endif:?M(1) = peek #month: D(1) = peek #day Y(1) = peek #year :insert oa-e :9Y = .getvalue "Enter the Year 84-99: ",84,99,Y(1):if Y = $ffff exit endif:8M = .getvalue "Enter the Month 1-12: ",1,12,M(1): if M = $ffff exit endif:=$1 = .choose "31,28,31,30,31,30,31,31,30,31,30,31",M :D(2) = val $1 :Hif Y = 84 or Y = 88 or Y = 92 or Y = 96 if M = 2 D(2) = 29 endif:GD = .getvalue "Enter the Day 1-" + str$ D(2) + ": ",1,D(2),D(1):if D = $ffff exit endif:GProDOSformat= Y * 16 + M * 32 + D : // convert to ProDOS format  Apokeword $bf90, P exit rpt insert .macronames goto sa-R >!tAO=====<===<====<====<=========<=====<====<====<====<====<====<====<====<====<===@O=====<===<====<====<=========<=====<====<====<====<====<====<====<====<====<===Nrpt >!eturn " :r Appleworks STARTUP disk in a dri Introduction------------OMThis DB Widths TAPL program creates a table report with each category set to LJthe width of the widest corresponding category entry in the file. It then NLuses thnpqrstuvwxyz{|}~at Widths report to change the screen layout so all data can be seen OMin multiple record layout. Amazingly enough, the entire program is just over I400 bytes long, thanks to the power of dot commands and for-next loops.KWritten by Randy Brandt, inspired by a Gary Hayman macro from the 1980's. Handy Tip ---------OMInsert a statement at any point to see what's going on. You can then KIcheck the variables, press OA-V to examine the screen, and finally press )Escape to continue on with the program.Dot Commands Used------------------.getrec//used to grab the DB info2.qmenu//used to display DB files only8.therm//used to show the program's progress4.titlebox//used to make things look better<.writestr//used to display some messages on screen Da Program ----------labels:.DB.Widths //the program name.// titles for the SA-Esc .macronames command<\ba-LLaunch Default Macros//standard ba-L:\sa-WAdjust Data Base Widths//startup key9// define some labels to make our program more readableB#ItemNum=peek $8c//current menu item numberK// this address is the report width table, even with DoubleData installedI#WidthTable=$7513//db report horiz widths table -18#CatCount=C(9)//some variables#DoAll=D(9)#Records=R(9)#Widest=W(8)E#makeWidths =sa-x//second macro in the programK// free macro table space if macro set is short enough, which this one isD#MyTable=$FD00//space to store some information@// we're actually ready to start our TAPL program code at lastL//________________________________________________________________________start:!,w: 0 : exit endif:oa-q tab :D(1) = peek $1024 : if D(1) = D bell D.say "There are no data base files on any Desktop " esc :goto sa-b endif:rpt : esc:4if Z = 0 or Z > 12 goto sa-b else ?.qmenu "Choose a Data Base",1//choose a DB file:if z = 0 or z > 12 esc //user hit Escape,goto sa-b endif: zoom :R = peek #dbrpts : A#CatCount = peek #dbfields//use all categoriesL#Records = peekword #dbrecs//how many records in the file?ACategory = 1//start at beginningH// draw a box in the middle of the screen so that we have a placeD// to put our thermometer without clearing the entire screen,&// just because it looks cooler9.titlebox 18,9,40,5,1,"Scanning category widths" :if R = 30 bell 8.writestr 23,12,"This file contains 30 reports.":5.writestr 23,13,"You must remove a report in":5.writestr 23,14,"order to execute DB Widths.":>.spacebar display 0 oa-q display 1 go goto sa-b endif:D.therm 22,13,0,#Records//draw thermometerD.writestr 30,12,"Checking record"//put up some text>// Since we have to track up to 60 categories, it would be a@// hassle to use variables. Instead we'll just make a table in@// memory at the end of the macro space, since this is a short?// macro. Each byte will hold the length of the longest entry"// for the category in question.5// initialize our length table to 2, the DB minimumfor J = 1 to #CatCount :EAdr = #MyTable + J//calculate next addressJpoke Adr,2//any less would freak AW outnext J :D// Now we start our for-next loops, which consist of an outer loopH// using variable I to go through all records, and an inner loop usingF// variable J that goes through all categories in each record. TheseF// loops can get a lot of work done. For example, if we have a 5,000G// record file with 20 categories, the code inside of the J loop willI// be executed 10,000 times. Why I and J? Because when I took a FortranG// programming class in high school using cards that we filled out byL// hand with pencils, loops used I, J or K. That's the only computer class // I've ever had, so it stuck.Gfor I = 1 to #Records//scan through all recordsA.writestr 46,12,str$ i//show record number>.getrec Cat,I,1,#CatCount//grab one or all=for J = 1 to #CatCount //loop through cat stringsBAdr = #MyTable + J//calc table positionE #Widest = peek Adr//what's current widest?BLength = 1 + len $(J)//check string lengthAif L > #Widest then//is this one wider?Cpoke Adr,L : endif// if so, update tableBnext J//check next categoryA.therm 0,0,I,#Records//update thermometer@next I //check next record&// make sure no widths report existsDdisplay #off//kill the display to cut flicker<oa-p//go to DB reports module@// if the menu bar is on 2, we don't have any reports yet@z = #ItemNum//see if we have some reportsIif z = 2 then goto #makeWidths endif//make the first report:print "5"//choose Erase a format=//numbered menus have to be visible for find to work:display #on//just a bit of flickerArtn//report list for erase option;$0 = "Widths" : find//see if "Widths" exists5display #off//lights out again@if z = 1 then rtn print "y"//kill old Widths reportDelse esc endif// or exit if it's not thereAgoto #makeWidths>!//in any case, keep goingH<#makeWidths>:Widths!//cursor moves down b:!@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===I vote for the v3.0-only solution!>!7786 * 256 + peek MKThis file was converted from the version which came on the Ultra 3.x disk. JHMost of the macros worked as is, but a few minor changes were made. The )ampersand and varset stuff was deleted.startN[:!&]:!NLa:! only page 1 of the 80-column screen is active, (so you get characters two spaces apart9b:!Lc:! ^T to printerJ-- call this from a file to load the first file on the current data disk9-- the extra oa-q makes sure the proper screen is drawnCd:!.-- here's how and are used%e:! :!Af:! clear screen and display a 3message, then reset msg parameters back to normal=h:!Nj: 3 and $0 = "test" then msg "true" : else msg "false">!IL:! why waste space with default macros elsewhere?OM--- poke the ASCII value of the desired default key into #waitkey; after the NLwait, peek #waitkey to get that value or the user keystroke if they aborted the wait.8w:!t:!{ set default back }0--- display all MouseText characters available2:! msg &@ABC etc would be easier, of course!Cy:t! move current line to the clipboardAO=========<<====<====<====<====<==<=<===<=====<====<====<====<====<====<====<===@O=========<<====<====<====<====<==<=<===<=====<====<====<====<====<====<====<===N Disk filerrent ile with today's date to printer 1lumn MKThis file contains a list of the default macro set contained in SEG.UM and NLSEG.AX on the AppleWorks 5.0 disk. These macros are automatically installed NLwhen AppleWorks is booted with UltraMacros activated. Both files SEG.UM and LJSEG.AX must be on your AppleWorks Startup disk. "Inits manager activated" ?must be set to "Yes", in order to use the default macro set. LJMacro programmers should read the file "Both.Apples.L" for information on "restoring the default macro set. Definitions============:ba both apple keys. option and apple keys on the IIGS./sa solid apple key. option key on the IIGS.>sa~ solid apple and control key. option-control on the IIGS/sa-A press solid apple and letter "A" or "a".;The first two macros execute automatically when required. Aba-] Start up macro executed when AppleWorks 5.0 is booted.?ba-[ Executed whenever default macro set is reinstalled .OMsa-A Add Files. This macro allows you to add a new file from the Current F DDisk, a predefined QuickPath, or to create a new file from scratch. G Eoa-rtn on "Current Disk" or oa-C will take you to the Change Current C ADisk menu. oa-rtn on "Word Processor" or oa-W will create a word A ?processor file with left and right margins set to 0. oa-rtn on < :"Spreadsheet" or oa-S will create a spreadsheet file with ; 9recalculation frequency set to manual. Changes desktops C Aautomatically when creating a new file if the current desktop is  full.KIsa-B Begin a memo in the word processor. Uses the name, address, and , organization enter by the user at startup.GEsa-CChange the case of the current word in the word processor.  Mousetext is ignored.KIsa-F Find text and clear the previous word in the word processor and data base.5sa-IIndent 3 characters in the word processor.JHsa-HPrint Name, organization (if defined), and address in the word processor.Gsa-KCalculate page breaks and find a page in the word processor.1sa-NPrint your name in the word processor.*sa-OIndent 0 in the word processor.LJsa-PCopy or Move a paragraph to the clipboard. Moving a paragraph to B @the clipboard "deletes" the text from the document. Restore the G Eparagraph with sa-U for "undo". Copying or Moving additional data to 9 the clipboard will overwrite any data on the clipboard.Csa-PPrint a spreadsheet file with today's date to printer 1.Asa-PPrint a data base file with today's date to printer 1.5sa-QSwitch to next file "down" on the desktop.3sa~-QSwitch to next file "up" on the desktop.LJsa-RRename the current data base category while in REVIEW/ADD/CHANGE  mode.NLsa-~RRevert to the last saved version of a file. For saved or unchanged G Efiles, the backup file with "z" inserted before the filename will be F Dloaded. With changed files, you have the option of loading the last G Esaved version or terminating the macro. Answer "No" at the prompt to E Cabort the macro. With new files and new files that have been saved B @but not loaded from disk, an error message is displayed and the  macro stops.KIsa-SSave the current file to disk. oa-rtn on "Current Disk" or oa-C D Bwill take you to the "CHANGE CURRENT DISK" menu. Filepath option G Esaves the file to the path it was loaded from provided the Auto save E Ckey and the smart save key are the same. If AppleWorks is patched D Bto use oa-S as the auto save, it must also be patched to use oa-S 2 for smart save for this macro to work correctly.MKsa-TTotal a column of numbers in data base without printing a report. E CWorks with record selection rules active. $'s and ,'s are filtered E Cout by the macro. Displays the total with 2 decimal places. If the F Dcategory contains anything but numbers, the dollar sign, commas, or G Ethe minus sign, "Unable to understand..." will be displayed. Press a E Ckey to clear this message. "Dot cmd error" will also be displayed.  Press any key to continue.OMsa-UUndo last "delete" in the word processor. All word processor macros D Bin this set don't actually delete data from the file. The data is F Dmoved to the clipboard and can be reinserted in the file using this E Ccommand. The data will remain on the word processor clipboard only 9 until the next Copy or Move to the clipboard operation.:sa-VChange a formula to a value in the spreadsheet.LJsa-ZRemoves carriage returns in the word processor. Carriage returns 1 that indicate blank lines will not be removed. 4sa--Solid-apple dash. Insert subscript codes.$ba-SInsert superscript codes.KIsa-Solid-apple and the spacebar. Insert a space even if strikeover  cursor is active.sa~-BBoldface a word.sa~-CClose a letter.sa~-DMake a paragraph.'sa~-FFind next forced page break.*sa-tabSet tab at the cursor position./sa~-LList all files on the current drive.*sa~-O Delete the next printer option.OMsa~-S Filestatus. Change the filestatus of a file. Remove a file from the D Bdesktop. New files will be saved to the current disk before being E Cremoved. To throw out a new file, change the status to "Unchanged"  then removed.2sa-1Leave one file and go to the main menu.FDsa-2Works with sa-1. Returns to previous file from anywhere in AppleWorks.%ba-LLaunch a cached Task File.OMba-URemove a Task File from the cache. This is useful to free memory if B @needed. To select all files for removal, use open-apple and the A ?right arrow key. For maximum performance "SEG.UM" and "SEG.AX" + should be left in the cache at all times.NLsa-WQuick column for the data base. Enter a number to reset the column 4 width of a category in the Multiple Record Layout.HFba-QQuickerPath. Change the current Path to one of the pathnames D Bdefined in Standard Settings without accessing the Change Current E CDisk menu. It can be used at the "Add Files" file listing but not F Dfrom any other file listing. QuickerPath updates the path displayed E Cin upper left corner of the screen but not the path displayed as a F Dmenu item for the current disk, if accessed from the Change Current F DDisk filecard. AppleWorks will always use the path displayed in the E Cupper left corner. QuickerPath can not be accessed from a listing 8 of subdirectories at the Change Current Disk filecard.MKba-TTripleMenu displays a list of files on all three desktops. Use up ? and down arrows and tab to navigate. Return to select a file.KIsa-JWhile viewing a Word Processor file with oa-W in the data base, A ?press sa-J to jump to the same spot in the actual file. Do any C Aediting you wish, and then press ba-J to return to the Data Base B @file. If you're not yet in the oa-W segment, the macro is smart # enough to enter the oa-W for you.Nsa-JReturn to data base from the word processor. Works with sa-J above.LJsa-EAddress a standard #10 envelope. Prints to printer number 1. The G Eprinter should be online and selected. The envelope should be loaded ) with the top edge under the paper bail.<sa-MSet left and right margins in the word processor.=sa-RToggle recalculation frequency in the spreadsheet.2sa-WChange column widths in the spreadsheetFsa-/ Swap with character to right to correct transposed letters.Csa-\ Swap with word to the right to correct transposed words.NLsa-del Solid-apple and the delete key. Delete Menu in the word processor. D BNothing is actually deleted, it's moved to the clipboard. Restore the "deleted" data with sa-U.NLba-del Both-apples and the delete key. Moves to Delete a file from disk. + Return to current desktop file with sa-2.OMsa-rightJumps the cursor right to the next category in single record layout % at the CHANGE RECORD LAYOUT screen.NLsa-leftJumps the cursor left to the next category in single record layout % at the CHANGE RECORD LAYOUT screen.Mpy text (includrbl@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===Nrpt >!eturn " :r Appleworks STARTUP disk in a drilabels.Screen.Blanker\ba-l Launch default macros\sa-B Blank screenstart:! B: 154 restscr goto ba-L endif:.spacebar:=poke $10f2,0 : c = peek #curschar :poke #curschar,32 :.cls 0 : begin:poke $b802,$60:k = key :poke $b802, $4c :?if S = 1 and k = $80 exit else if S = 0 exit endif: rpt :restscr :5poke $10f2,1 :poke #curschar, c : goto ba-l >!'DB.LINK Y'DUP.ZAP f[6-SEG.UM.SOURCE7}0 -SEG.NA.SOURCE [5.ULTRA.COMMANDS}G$.DB.LINK.SOURCE [5.INSTALLDESKJET%~b/ENTER.KEY.PATCHG}g6-KEYPAD.TOGGLE~f).CHANGETEXTTYPE }}/ /CASE.MACROS.ALTs}1 +ALT.STARTUP@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===rpt >!eturn " :r Appleworks STARTUP disk in a drilabels.DB.LINK.4.43\sa-S Find a linked File\sa-T Toggle between Files\sa-E Emergency Display On\ba-L Launch default macrosstartMKS: 1 OMand $61 = left $(I, 1 F(1) = I : I = F : endif : next I : if F(1) = 0 bell : LJ.AskYN "No Marked Category. Continue Anyway" : if Z = 1 or Z = 0 or Z > 2 OMstop : endif : if F(1) > 0 $2 = .GetCat F(1), 0 : : else : $2 = "" : endif : MK$3 = .GetCat F, 0 : : Y = asc $3 : $10 = "/" : $10 = right $3, 1 : L(1) = OMasc $10 : ifnot Y = 47 bell : bell : bell : .Say "This Record Is Not Linked PNTo Another File " : stop : endif : A = len $3 : B = A - 1 : begin : $4 = mid PN$3, B, 1 : ifnot $4 = "/" B = B - 1 : rpt endif : L = A - B : if L = A - 1 or NLL(1) = 47 bell : bell : .Say "Last Category Does Not Contain a Legal ProDOS MKPathname " : stop : endif : F = A - B : P = B - 1 : $4 = left $3, P : $3 = OMright $3, F : $0 = $3 : .WriteStr 0, 23, "Please wait..." + %A% : display 0 MK: oa-Q Z = 200 : find : if Z = 1 rtn else : sa-Z : endif : T = peek 3179 : NLoa-1 oa-F if T = 1>ATA peekword 37410 PNor F > peek 37409 G = 1 : endif : if T = 1 and A = 47 esc esc pokeword 37413, #G : endif : oa-Q display 1 : go>!PN:!+S:!MKT:!KIZ: 0 exit : endif : if Z = 0 sa-T : bell : .Say OM'Place ' + $4 + ' in a Drive and press return' : K = peek 49152 : if K = 27 OMstop : else : rpt endif : $5 = $4 + "/" + $3 : .Online $5 : if Z = 0 sa-T PN: bell : .Say $3 + ' not found at ' + $4 : stop : endif : .SetDisk $4 : $0 = $3 : sa-D>! E:!LJX: 0 display 1 : .Say " Getting error trying to read " + $3 : stop>!OMD: I sa-T : bell : bell : bell : .Say $6 MK: stop : endif : right rtn H = peekword 4051 : if H = 0 display 1 : sa-T : (bell : bell : bell : .Say $6 : stop>!MK:!Mpy text (includrb@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===Nrpt >!Place your Appleworks STARTUP disk in a drilabels.DuplicateZapper\ba-L Launch Default Macros\sa-] "DuplicateZapper"\sa-Z Zap duplicate recordsstart:!]: 0 : exit endif:oa-q tab : D(1) = peek $1024 : if D(1) = D bell D.say "There are no data base files on any Desktop" esc :-.macronames goto sa-] stop endif:rpt : endif :,.qmenu "Choose a Data Base", 1 :HFif Z = 0 or Z > 12 .macronames goto sa-] stop else goto sa-Z >! Z:! E:!CO=====<====<====<====<====<====<==<=<===<=====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<==<=<===<=====<====<====<====<====<====<====<===N.putblock 0,$bd00,l,1 : pokeword $a90, z : >! + 1PNThis is the macro source file for SEG.UM, the default macros available to you NLupon bootup with AppleWorks 5. It has more than 700 bytes available for you OMto add your own macros by recording or entering them in this file. Use Debug 1to see which macro names haven't yet been used.OMAlthough it will work, you shouldn't use the Ultra Compiler to decompile the PNmacros into a file for recompiling. If you want to record a macro and add it, PNdecompile into another file, then use the clipboard to copy your new macro to IGthe end of this file. That way you keep the formatted source and macro Htitles. Decompiling macro programs when you have the source is uncool.NLIf you feel the default set is too complex, make a simple set of macros and LJreplace it. That's the beauty of having a full set of macro tools at your disposal.labels\sa-A Add Files\sa-B Begin a memo in AWP\sa-C Change case of word\sa-E Address an envelope\sa-F Find text \sa-H Print Name & Address AWP\sa-I Indent 3 chars\sa-J ADB jump to Window file\sa-J AWP return to ADB\sa-K Calculate page breaks\sa-M Set AWP margins\sa-N Print your name in AWP\sa-O Indent 0\sa-P Copy or Move paragraph\sa-P Print ASP or ADB \sa-Q Switch to next file down!\sa-R Rename data base category#\sa-R AWP Replace printer option#\sa-R ASP Toggle recalc frequency\sa-S Save file\sa-T ADB column totals \sa-U Undo last macro "delete"\sa-V Formula to value \sa-W Change col. width in ASP\sa-W ADB MRL Quick Column\sa-Z Remove carriage returns\sa-- Subscript\sa-/ Swap character to right\sa-\ Swap word to right\sa-del AWP delete menu\sa-1 Return to Main Menu\sa-2 Return to previous file\ba-L Launch cached Task\ba-S Superscript\ba-T Triple Menu\ba-U Remove file from cache\ba-Q QuickerPath\ba-del Delete from disk .seg.umstart:5< rtn : NLmsg ' You must activate Inits and reboot to use UltraMacros ' : stop : Cendif goto ba-[>! get to Main Menu if auto-startup active,6even if 5.25" drive and no clock: 0 exit endif:msg ' Please Wait ' :begin :$1 = .awpath : $Z = len $1 : Z = Z - 1 :$1 = left $1,Z :.online $1 : if Z = 0 sa-_ :rpt endif:if P(1) > 0 exit endif:"$1 = $1 + "/NAME.ADDRESS" :.loadvar $1, 190 :!if Z = 0 goto ba-# endif :sa-! : exit : rpt :.uncache $95 : sa-% : Jmsg ' Default Macros Successfully Installed - Press any key ':.wait 9000 : msg "" : poke $11ac, $1b >! _:!(}:! %:! Add Files: A: 5 and S = 1 restscr endif :&if Z = 0 or Z > 5 stop : endif:MO = peek $c061 :// oa-rtn on Current or oa-C goes to change disk .if Z > 2 exit: endif: oa-q oa-a :4if Z = 1 and O > 127 : down : rtn stop endif:.if Z = 1 rtn else down rtn oa-P endif : STOP : rpt :// marker onlydisplay 0 : begin:!C = peek #filecount :"if C < 12 exit endif:oa-q tab : rpt :display 1 :Type = Z - 2 :if T = 2 insert oa-e :CC =.GetValue "How many categories would you like? ",1,60,60:insert :>if C > 60 and S = 1 restscr endif if C > 60 stop endif:.newfile "New",T :Fif T = 1 and O > 127 display 0 oa-o>lm0rm0 127 poke $7f84, 77 endif oa-N oa-Y >!Begin a letter:B:Date:From:To:!Change case of word C: 3 stop endif:pokeword $ef1e,$bb :right oa-left :x = 160 :if Z = 3 :begin :x = peek $10f5 :%if x > 160 uc exit endif:if x < 160 right :rpt endif:+if Z = 1 pokeword $ef1e, $ba endif :begin :x = peek $10f5 :!ifnot x = 160 sa-0 :rpt endif oa-right >!GF:T!find text, clear previous wordBF:!find text, clear previous;I:IN3! indent 3 charactersPrint Name, Address:PNH:!IK:P! calculate page breaks; find a page9N:!print Name1O:IN0! indent 06Copy or Move paragraph to clipboard - undo with sa-u P: peek $b953 stop endif:$1 = .choose $1,Z :K = $80 + asc $1 :begin :(first : up : R= peek #wpwa :J= peek $B5 :,if J= 208 exit else if R < 128 :;rpt : endif : down : first : print chr$ K + chr$ 84:begin :$first : R = peek #wpwa :if R < 128 down :rpt else last rtn >!.Print ss file with today's date to printer 10P:A!PNP:11! print data base report #1 with today's dateGQ:! switch to next file on desktop:! R: 20 or $2 = "" stop else .setnames 0,2,1 :| esc poke #filestatus,2 >!PR:O!replace printer option Revert to last saved versionJ:!=S:!=T:!CU:F! undo last Ultra 4.0 delete"V:!WX<Z:!)--------------------------------------- More macrosD-:-B-E! insert subscript codesK:+B+E! insert superscript codes)---------------------------------------insert a space:! insert a space, even if strikeover cursor)---------------------------------------Control-Character MacrosA:! boldface wordE:Sincerely,! close a letter::! make a paragraphI:ONP! find next forced page break (NP)L:l! set tab at cursor position (tab is ctrl-I)E:! list all files on the current drive::! delete next ^,:!K1:! leave "1" file; go to main menuB2:! return "2" the file we leftRemove files from cache:!Launch a cached task file: Count exit endif :-launch $(Z) : >! launch selected file.>W:! QuickerPathA:! TipleMenuA:!oa-w data base macroDJ:!// go is with no arrow"-- return to Data Base file 'J:!-- Address an envelopeE:!Set Left or Right Margins M:2 stop endif:Z(1) = Z :$2 = .choose $2,Z :1$1 = " 0.0, 0.5, 1.0, 1.5, 2.0, 2.5, 3.0":.menubar2 $2,$1,44:$if Z = 0 or Z > 7 stop endif:$1 = .choose $1, Z : display 0: 9oa-O print chr$ asc $2 :>M< rtn print right $1,3: rtn display 1: esc >!!Toggle Recalculation frequency: R:!Change column widths:W:!Swap with character to right:+/:W!Swap with word to right:M\:W!Delete menu:: 6 stop endif:8if z = 1 right oa-left oa-M>TTTTTT!Delete file from disk:5:6!IJumps the cursor right to next category in single record layout screen.: 77 stop endif:4C = peek $10f5 : ifnot C = K right rpt endif:%if k = 160 K = 186 rpt endif :if K = 186 K = 160 :begin :  C = peek $10f5 :! ifnot C = K left rpt elseright >!IJumps the cursor right to next category in single record layout screen.:!: 0 :*call sa-ctrl-Z in "seg.na" :endif :sa-_ rpt >! !:( .pokestr $(s), a : a = a + peek a + 1 s = s + 1 ) 4 :4.putblock 0,$bd00,l,1 : pokeword $a90, z : >!O# %-+o*=>#o  ~Crb@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<====<====<====<====<====<====<====<====<====<====<====<====<====<====<===NZip/Postal Code bbreviation TUP disk in the drive and labels .SEG.NAStart:!:!A:!R@O=====<=====<===<====<====<====<====<====<====<====<====<====<====<====<====<===@O=====<=====<===<====<====<====<====<====<====<====<====<====<====<====<====<===N?=UltraMacros offers many keyboard commands, some of which are IGdocumented below. For full documentation, contact Quality Computers to %order the full UltraMacros package.Tokens------OAopen-apple1SAsolid-apple (Option on the IIgs)7$0string zero (a temporary storage area) Commands --------9OA-; sets the cursor character to lower case9OA-: sets the cursor character to upper case GEOA-- reads the current SS cell, WP line, or DB category  into string zero ($0)AOA-0 prompts user to enter text for defining $0.<SA-'  enters the date as:September 29, 19932SA-" enters the date as: 09/29/931SA-=