home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib37a.dsk / AUGUST.1989 / UltraSolutions.txt < prev   
Text File  |  2023-02-26  |  12KB  |  348 lines

  1. start
  2.  
  3. -----------------
  4. ULTRA SOLUTIONS
  5. By Mark A. Heath
  6. Copyright(c) 1989
  7. MindCraft Publ. Corp.
  8. Concord, Ma 01742
  9.  
  10.  
  11. Block Operations:
  12.  
  13. -----------------
  14.  
  15. <ba-down>:<awp : msg ' Select SUBscript text and press RETURN ' : C = 5 :
  16.  ba-Ctrl-\>!                      Select Subscript text
  17.  
  18. <ba-up>:<awp : msg ' Select SUPERscript text and press RETURN ' : C = 4 :
  19.  ba-Ctrl-\>!                      Select Superscript text
  20.  
  21. <ba-B>:<awp : msg ' Select the text to be BOLDFACED and press RETURN ' :
  22.  C = 3 : ba-Ctrl-\>!              Select boldface text
  23.  
  24. <ba-C>:<awp : msg ' Select the text to be CENTERED and press RETURN ' :
  25.  C = 1 : ba-Ctrl-\>!              Select Centered text
  26.  
  27. <ba-G>:<awp : msg ' Select GROUP and press RETURN ' : C = 2 :
  28.  ba-Ctrl-\>!                      Select Group of text
  29.  
  30. <ba-U>:<awp : msg ' Select the text to be UNDERLINED and press RETURN ' :
  31.  C = 6 : ba-Ctrl-\>!              Select underlined text
  32.  
  33. -----------
  34.  
  35. <ba-Ctrl-\>:<awp :  { Vars used : B,C,K,L,R,T,X,Y }
  36.  
  37.              posn L,T :            { Save original cursor position }
  38.  
  39.              oa-C : print "T" :    { Use the 'Copy' function to select text }
  40.  
  41.              begin : K = key : if K = 27 then esc msg '' : stop :
  42.  
  43.                                    { End macro if ESC is pressed }
  44.  
  45.              else if K = 13 then
  46.  
  47.                    posn R,B        { Get final cursor position }
  48.  
  49.                    esc ba-Ctrl-] :  { Set R,B,T,L correctly }
  50.  
  51.              else print chr$ K : rpt :  { Wait until user hits C/R or ESC }
  52.  
  53.              elseoff : begin :    { Move cursor to bottom line of selection }
  54.                     posn X,Y :
  55.                     if Y > B then up rpt : else
  56.                     if Y < B then down rpt : else
  57.  
  58.              begin :           { Move cursor to rightmost col. of selection }
  59.                     posn X,Y :
  60.                     if X < R then right rpt : else
  61.                     if X > R then left rpt : else
  62.  
  63.              ba-Ctrl-_ :{ Perform appropriate action at bottom of selection }
  64.  
  65.              begin :                 { Move cursor to top line of seleciton }
  66.                     posn X,Y :
  67.                     if Y > T then up rpt : else
  68.  
  69.              begin :            { Move cursor to leftmost col. of selection }
  70.                     posn X,Y :
  71.                     if X > L then left rpt : else
  72.                     if X < L then right rpt : else
  73.  
  74.              C = C + 20 : ba-Ctrl-_>! Perform appropriate action at top
  75.  
  76.       Select block, perform operation #C.  Used by ba-down ba-up ba-b
  77.          ba-c ba-g ba-u
  78.  
  79. -----------
  80.  
  81. <ba-Ctrl-]>:<awp :  { Vars used: A,B,L,R,T }
  82.  
  83.              if T > B then    { Switch T & B, R & L }
  84.  
  85.                     A = T : T = B : B = A : A = L : L = R : R = A :
  86.  
  87.              else if T = B then  { Do we need to switch L & R }
  88.  
  89.                     if L > R then A = L : L = R : R = A>!
  90.  
  91.        Reset T,B,L,R if necessary, used by ba-Ctrl-\
  92.  
  93. -----------
  94.  
  95. <ba-Ctrl-_>:<awp :  { Vars used : C }
  96.  
  97.            if C =  1 then down  oa-O print "UJ" : rtn esc : elseoff
  98.            if C = 21 then       oa-O print "CN" : rtn esc : elseoff
  99.            if C =  2 then down  oa-O print "GE" : rtn esc : elseoff
  100.            if C = 22 then       oa-O print "GB" : rtn esc : elseoff
  101.            if C =  3 then right oa-O print "BE" : rtn esc : elseoff
  102.            if C = 23 then       oa-O print "BB" : rtn esc : elseoff
  103.            if C =  4 then right oa-O print "+E" : rtn esc : elseoff
  104.            if C = 24 then       oa-O print "+B" : rtn esc : elseoff
  105.            if C =  5 then right oa-O print "-E" : rtn esc : elseoff
  106.            if C = 25 then       oa-O print "-B" : rtn esc : elseoff
  107.            if C =  6 then right oa-O print "UE" : rtn esc : elseoff
  108.            if C = 26 then       oa-O print "UB" : rtn esc>!
  109.                         Perform operation #C, used by ba-Ctrl-\
  110.  
  111. ---------------------
  112.  
  113. Page Numbers:  (sa-#)
  114.  
  115. ---------------------
  116.  
  117. #:<awp :  { Vars Used: K }
  118.  
  119.        insert : msg 'This macro will remove page headers, footers and
  120.  margins.  Continue? Y/N ' :
  121.  
  122.        K = key : if K > 94 then K = K - 32 : elseoff :
  123.                { Get a key, convert it to uppercase if necessary }
  124.  
  125.        if K = 89 then
  126.  
  127.            sa-M :        { Set Marker #254 (save initial position }
  128.  
  129.            zoom oa-Z oa-1
  130.  
  131.            ba-ctrl-W  :  { Remove headers, footers, top & bottom mgns }
  132.  
  133.            oa-1 oa-O print "TM" : rtn print ".5" : rtn print "BM" : rtn
  134.            print ".5" : rtn esc    { Set top and bottom margins }
  135.  
  136.            ba-ctrl-V : ba-ctrl-X  { Prompt for page numbers }
  137.  
  138.        else : msg '' : zoom>!  Insert Page Numbers
  139.  
  140. -----------
  141.  
  142. <ba-ctrl-R>:<awp :
  143.  
  144.            oa-1 sa-K print "1" : rtn rtn up oa-O print "HE" : rtn esc rtn up
  145.                     { Make a blank header for all but the first page }
  146.  
  147.            ba-ctrl-Z :   { Put page number in the blank line }
  148.  
  149.            sa-K print "2" : rtn rtn up oa-O print "FO" : rtn esc rtn up
  150.            ctrl-L ctrl-L>!    { Make a blank footer }
  151.  
  152.                      Other pages: top   Used by sa-#
  153.  
  154. ------------
  155.  
  156. <ba-ctrl-S>:<awp :
  157.  
  158.            oa-1 sa-K print "1" : rtn rtn up oa-O print "HE" : rtn esc rtn up
  159.            ctrl-L ctrl-L      { Make a blank header }
  160.  
  161.            sa-K print "2" : rtn rtn up oa-O print "FO" : rtn esc rtn up
  162.                               { Make a blank footer }
  163.  
  164.            ba-ctrl-Z>!   { Put page number in the blank footer }
  165.  
  166.               Other pages: bottom   Used by sa-#
  167.  
  168. ------------
  169.  
  170. <ba-ctrl-T>:<awp :
  171.  
  172.            oa-1 sa-K print "1" : rtn rtn up oa-O print "HE" : rtn esc rtn up
  173.            ctrl-L ctrl-L      { Make a blank footer for the top }
  174.  
  175.            sa-K print "2" : rtn rtn up oa-O print "FO" : rtn esc rtn up
  176.            ctrl-L ctrl-L>!    { Make a blank footer for the bottom }
  177.  
  178.               Other pages: None.  Used by sa-#
  179.  
  180. ------------
  181.  
  182. <ba-ctrl-V>:<awp :  { Vars used : $1 }
  183.  
  184.            oa-1 down down oa-O print "HE" : rtn esc rtn up ctrl-L ctrl-L
  185.                     { Make a blank Header for the first page }
  186.  
  187.            rtn oa-O print "FO" : rtn esc
  188.                     { Make a blank footer for the first page }
  189.  
  190.            msg 'Page Nos.: 1st page:  B)ottom  N)one' :
  191.  
  192.            K = key : if K > 94 then K = K - 32 : elseoff :
  193.                     { Get uppercase key }
  194.  
  195.            if K = 27 then goto ba-ctrl-X : { ESC pressed, exit }
  196.  
  197.            else if K = 66 then ba-ctrl-Z :   { Do Left/Center/Right }
  198.  
  199.            else : ctrl-L ctrl-L : { make footer blank }
  200.  
  201.            elseoff : sa-K print "2" : rtn $1 = "Not found" :
  202.            if $1 = screen 1, 24, len $1 then  { No more pages, quit }
  203.               spc oa-1 zoom : stop :
  204.  
  205.            else : rtn msg 'Other Pages:  T)op  B)ottom  N)one' :
  206.            K = key : if K > 94 then K = K - 32 : elseoff :
  207.                     { Get uppercase Key }
  208.  
  209.            if K = 27 then goto ba-ctrl-X : { ESC pressed, exit }
  210.            else if K = 84 then ba-ctrl-R : stop : else : { Top }
  211.            if K = 66 then ba-ctrl-S : stop : else : { Bottom }
  212.            ba-ctrl-T>!                              { None }
  213.               Prompt for page numbers.  Used by sa-#
  214.  
  215. ------------
  216.  
  217. <ba-ctrl-W>:<awp :  { Vars Used: $1 }
  218.  
  219.            $1 = "Not found" : oa-1 begin :
  220.                 oa-F print "OHE" : rtn         { Find a header }
  221.  
  222.                 if $1 = screen 1, 24, len $1 then spc  { not found }
  223.                 else : rtn oa-D down sa-right : rtn rpt : elseoff :
  224.                          { Header found, delete it }
  225.  
  226.            oa-1 begin :
  227.  
  228.                 oa-F print "OFO" : rtn         { Find a footer }
  229.  
  230.                 if $1 = screen 1, 24, len $1 then spc  { not found }
  231.                 else : rtn oa-D down sa-right : rtn rpt : elseoff :
  232.                          { Footer found, delete it }
  233.  
  234.            oa-1 begin :
  235.  
  236.                 oa-F print "OTM" : rtn         { Find a top margin }
  237.  
  238.                 if $1 = screen 1, 24, len $1 then spc  { not found }
  239.                 else : rtn oa-D rtn rpt : elseoff :
  240.                          { Top margin found, delete it }
  241.  
  242.           oa-1 begin :
  243.  
  244.                 oa-F print "OBM" : rtn         { Find a bottom margin }
  245.  
  246.                 if $1 = screen 1, 24, len $1 then spc  { not found }
  247.                 else : rtn oa-D rtn rpt : elseoff>!
  248.  
  249.               Removes headers, footers, bottom margins, and top margins.
  250.               Used by sa-#
  251.  
  252. ------------
  253.  
  254. <ba-ctrl-X>:<awp : sa-G : print "N" : oa-D : rtn : msg '' : stop>!
  255.  
  256.               Go back to original spot and stop macro
  257.  
  258. ------------
  259.  
  260. <ba-ctrl-Z>:<awp :
  261.  
  262.            msg ' L)eft  C)enter  R)ight ' :
  263.            K = key : if K > 94 then K = K - 32 : elseoff :
  264.                     { Get uppercase key }
  265.  
  266.            if K = 27 then goto ba-ctrl-X : { ESC pressed, exit }
  267.  
  268.            else if K = 76 then oa-O print "PP" : rtn esc else :
  269.                     { Page number: Left }
  270.  
  271.            if K = 67 then up oa-O print "CN" : rtn esc down oa-O print "PP" :
  272.               rtn esc down oa-O print "UJ" : rtn esc : up sa-right : else :
  273.                     { Page number: Centered }
  274.  
  275.            if K = 82 then ba-right : left left left oa-O print "PP" :
  276.               rtn esc>!
  277.                     { Page number: Right }
  278.  
  279.               Do Left/Center/Right for all pages.  Used by sa-#
  280.  
  281. <left>:<awp><oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab
  282.  oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab oa-tab
  283.  oa-tab>!                          Go to left margin   (Used by sa-right) 
  284.  
  285. <right>:<awp><sa-left : down left>!     Go to end of line  (Used by sa-#)
  286.  
  287. <ba-right>:<awp><tab tab tab tab tab tab tab tab tab tab tab tab tab tab tab
  288.  tab tab tab tab tab>!             Go to right margin
  289.  
  290. K:<awp><oa-K rtn oa-F>P!           Calculate page numbers and find page
  291.                                    (Used by sa-#)
  292.  
  293.  
  294. ------------------------
  295.  
  296. Make Title Page:  (sa-T)
  297.  
  298. ------------------------
  299.  
  300. T:<awp :       { Vars Used : A }
  301.  
  302.       zoom : oa-Z insert : oa-1    { Initialize cursor state at top of text }
  303.  
  304.       oa-O print "PN" : rtn print "1" : rtn esc up oa-1
  305.       oa-O print "LM" : rtn print "1" : rtn print "RM" : rtn print "1" : rtn
  306.       print "TM" : rtn print "0" : rtn print "BM" : rtn print "2" : rtn
  307.       print "CI" : rtn print "10" : rtn print "UJ" : rtn print "LI" : rtn
  308.       print "6" : rtn print "SS" : rtn print "NP" : rtn esc oa-1
  309.                { Insert default page settings at the beginning of text }
  310.  
  311.       A = 0 : begin :        { Put 33 blank lines at the beginning }
  312.             rtn A = A + 1 :
  313.             if A < 33 then rpt : else :
  314.  
  315.       oa-O print "CN" : rtn esc sa-M : oa-O print "UJ" : rtn esc
  316.                { Insert 'Centered', 'Marker 254', and 'Unjustified codes }
  317.  
  318.       A = 0 : begin :         { Insert 32 blank lines }
  319.             rtn A = A + 1 :
  320.             if A < 32 then rpt : else :
  321.  
  322.       oa-1 oa-O print "TM" : rtn print "0" : rtn print "BM" : rtn
  323.             print "0" : rtn esc
  324.                     { Set top and bottom margins (of first page) to 0 }
  325.  
  326.       A = 0 : oa-E
  327.       msg 'Enter only an asterisk (*) to quit' : begin :
  328.  
  329.             sa-G : rtn rtn up input :   { Get a line of input }
  330.  
  331.             left K = peek 4341 :
  332.             if K = 170 then      { '*' was entered, end the macro }
  333.  msg 'Do not use the insert cursor in the title page area. Press a key... ' :
  334.                 key : msg '' : oa-D rtn stop :
  335.  
  336.       else : if A = 0 then    { Delete a blank line from bottom half }
  337.  
  338.               oa-1 down down down oa-D rtn A = 1 : rpt :
  339.  
  340.       else : A = 0 : down down down oa-D rtn oa-1 { Delete a line for top }
  341.  
  342.       rpt>!                            Make a title page
  343.  
  344. G:<awp><oa-F>M254<rtn>!            Goto marker 254 (set with sa-M)
  345.                                    (Used by sa-T and sa-#)
  346.  
  347. M:<awp><oa-O>SM<rtn>254<rtn esc>!  Set marker 254  (Used by sa-T and sa-#)
  348.