home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib35a.dsk / JANUARY.1989 / DBL.COL.MACRO.txt next >
Text File  |  2023-02-26  |  8KB  |  359 lines

  1.                        
  2.               Double Column Macro
  3.               by Sherman Paddock
  4.               Copyright (C) 1989
  5.               by MicroSPARC, Inc.
  6.               Concord, MA 01742
  7.  
  8. START
  9.  
  10. {010}
  11. E:<awp><
  12. Msg " Double Column Macro by Sherman Paddock"
  13. + " - Copyright (C) 1988 by MicroSPARC, Inc. " :
  14. oa-K : Input : Rtn : oa-D : Esc :
  15. Clear : R = 127 : $9 = "  " : {2 spaces}
  16. Zoom : E = Len $9 : D = Peek $10F1 : Insert :
  17.  
  18. {020}
  19. oa-1 :
  20. BEGIN : {find start of double-columning}
  21.      I = I + 1 : sa-B :
  22.      IfNot $1 = "Right" then
  23.         oa-Z : RPT : ElseOff :
  24. {030}
  25. I = L : B = B + 3 : K = K + 1 :
  26. $1 = Screen 24,I,3 :
  27.    W = Val $1 - 1 : W = W * 10 :
  28. $1 = Right $1,1 :
  29.    W = W + Val $1 : W = 72 - W :
  30.    E = E + W + W - 3 :
  31. If W < 17 then
  32.    $1 = 'RM may NOT be greater than 6.5' :
  33.    GoTo sa-C : ElseOff :
  34. If E > 137 then
  35.    E = 138 - Len $9 : E = E / 2 + 1 :
  36.    E = 72 - E :
  37.    W = E + 10 : W = W / 10 : E = E - W + 1 :
  38.    $1 = 'RM may be set to ' + Str$ W + "."
  39.         + Str$ E + ' thru 6.5 ONLY' :
  40.    GoTo sa-C : ElseOff :
  41. {040}
  42. oa-N >D.< Rtn : A = 0 : Posn C,L :
  43. If L > 2 then
  44.   {move non-double-column lines to clipboard}
  45.    sa-F : ElseOff :
  46. {050}
  47. oa-O >LM< Rtn >0< Rtn
  48.      >SM< Rtn >0< Rtn
  49.      >CI< Rtn >10< Rtn : Esc :
  50. {060}
  51. oa-9 : Posn C,J : J = J - 2 :
  52. oa-Z : oa-1 : oa-Z : I = 6 :
  53.  
  54. {070}
  55. BEGIN :
  56.      sa-1 :
  57.      IfNot L > J then
  58.         RPT : ElseOff :
  59.  
  60. { _ _ _ _ _ BEGIN DOUBLE-COLUMNING _ _ _ _ _ _}
  61.  
  62. {080}
  63. BEGIN :
  64.      up : $1 = Screen 42,24,4 :
  65.      If $1 = "Stic" then
  66.        {Clean off excess Returns}
  67.         oa-D : down : left :
  68.         Rtn : J = J - 1 :
  69.         RPT : ElseOff :
  70. down : oa-O >NP< Rtn
  71.      >SM< Rtn >254< Rtn : Esc :
  72.     {last line is now set to Marker 254}
  73. {090}
  74. oa-1 :
  75. If A = 1 then
  76.    oa-M >F< ElseOff :
  77. oa-F : right : right : Rtn >0< Rtn : Rtn : up :
  78.  
  79. {100} {zero the right & left margins}
  80. oa-O >RM< Rtn >0< Rtn
  81.      >LM< Rtn >0< Rtn
  82.      >SM< Rtn >0< Rtn
  83.      >CI< Rtn >17< Rtn
  84.      >SM< Rtn >1< Rtn : Esc :
  85.     {very first line is now set to Marker 1}
  86. {110}
  87. oa-Z : A = W - 2 : B = B + 1 :
  88.    I = K + 1 : J = J - 3 :
  89. If I > 10 then
  90.    I = 10 : ElseOff :
  91. sa-6 : oa-K : Rtn :
  92. {120}
  93. BEGIN :
  94.      sa-3 :
  95.      If J > 1 then
  96.         : down : oa-Z : down : I = 13 :
  97.         RPT : ElseOff :
  98. {130}
  99. oa-D : Rtn : down :
  100. oa-left : Posn M,L :
  101. If M > 1 then
  102.    down : oa-D : Rtn : up :
  103.    sa-8 : print $9 : left :
  104.    A = A + A : sa-D : oa-Spc :
  105.    right : If J = 0 then down : ElseOff :
  106. {140}
  107. oa-D : down :
  108. Rtn :
  109. oa-F : right : right :
  110.    Rtn >0< Rtn : Rtn : down :
  111. oa-D : up : up : up : Rtn :
  112.   {work settings are now deleted}
  113.  
  114. {150}
  115. oa-Z : oa-1 :
  116. $1 = "Double-Columning Complete" : GoTo sa-C>!
  117.  
  118. {_ _DETERMINE WHERE TO START DOUBLE-COLUMN _ _}
  119.  
  120. {160}
  121. B:<awp><
  122. BEGIN :
  123.      Posn C,L :
  124.      If L = I then
  125.         I = I + 1 : down : RPT : ElseOff :
  126. If I > L then
  127.    $1 = 'No Right-Margin MARKER has been set' :
  128.    oa-1 : GoTo sa-C : ElseOff :
  129. B = L - I + B + 1 : K = L - B : L = L + 1 :
  130. If L > 21 then
  131.    L = 21 : ElseOff :
  132. oa-Z : $1 = Screen 9,L,5 >!
  133.  
  134. {_ _PRINT ERROR OR ENDING MESSAGE AND QUIT _ _}
  135.  
  136. {170}
  137. C:<awp>< Bell : msg $1 + ' - Press any key' :
  138. Key : msg "" :
  139. If D = 1 then
  140.   {reset to overstrike mode}
  141.    oa-E : ctrl-x : ElseOff :
  142. Stop >!
  143.  
  144. {_ _ _ INSERT SELECTED NUMBER OF SPACES _ _ _ }
  145.  
  146. {180}
  147. D:<awp><
  148. BEGIN :
  149.      If M < A then
  150.         Spc : M = M + 1 : RPT >!
  151.  
  152. { _ _ _ _ MOVE TOP LINES TO CLIPBOARD _ _ _ _ }
  153.  
  154. {190}
  155. F:<awp>< up : oa-left : oa-M >T< A = 1 :
  156. BEGIN :
  157.      Posn C,L :
  158.      If L > 1 then
  159.         up : RPT : ElseOff :
  160. Rtn : down >!
  161.  
  162.  
  163. { _ _ _ _ _ _ BLOCK OFF ALL LINES _ _ _ _ _ _ }
  164.  
  165. {200}
  166. 1:<awp><
  167. BEGIN :
  168.      IfNot I = 21 then
  169.         I = I + 1 : ElseOff :
  170.      down : $1 = Screen 1,I,8 :
  171.      If $1 = "--------" then
  172.         sa-2 : ElseOff :
  173. V = PEEK $10F5 :
  174. If L < J then If V = 160 then
  175.   {in case of line of spaces}
  176.    oa-Spc : right : del :
  177.    oa-right : V = Peek $10F5 : oa-left :
  178.    IfNot V = 160 then
  179.       right : del : spc : left : ElseOff :
  180. {210}
  181. oa-left : Posn C,L :
  182. If C > W + 1 then
  183.    left : del : right : left : C = C - 1 :
  184. ElseOff :
  185. IfNot C = 1 then
  186.    left : C = C - 1 :
  187. Else : oa-Spc : C = C + 1 : ElseOff :
  188. V = Peek $10F5 :
  189.    IfNot V = 160 then
  190.       IfNot V =  R + 128 then
  191.          right : C = C + 1 : ElseOff :
  192. {220}
  193. BEGIN :
  194.      IfNot C = W Then
  195.         Spc : C = C + 1 : RPT : ElseOff :
  196. V = Peek $10F5 :
  197. IfNot V = R + 128 then
  198.    sa-K : ElseOff :
  199. oa-Right >!
  200.  
  201. { _ _ _ INSURE IT IS A PRINT STATEMENT _ _ _ _}
  202.  
  203. {225}
  204. 2:<awp>< oa-Z : $1 = Screen 1,I,8 : oa-Z :
  205.    IfNot $1 = "--------" then
  206.         {reset end of file}
  207.         up : Posn C,J : J = J - 2 :
  208.         If I = 21 then
  209.            I = I - 1 >!
  210.  
  211. { _ _ _ _ GET RID OF EXCESSIVE SPACES _ _ _ _ }
  212.  
  213. {230}
  214. K:<awp>< Rtn : down : up :
  215. BEGIN :
  216.      V = Peek $10F5 :
  217.      If V = 160 then
  218.         right : del : RPT :
  219.      Else : del >!
  220.  
  221. { _ _ _ _ DETERMINE LENGTH OF PAGES _ _ _ _ _ }
  222.  
  223. {240}
  224. 3:<awp>< P = 0 : L = 0 :
  225. BEGIN :
  226.      L = L + 1 : 
  227.      If I < 22 then
  228.         I = I + 1 : ElseOff :
  229.      $1 = Screen 33,I,11 :
  230.      IfNot $1 = "End of Page" then
  231.         down : RPT : ElseOff :
  232.      If L > J then
  233.        {calculate because of odd page}
  234.         P = L / 2 : L = L - P : ElseOff :
  235.      L = L - 1 :
  236.      If P = 0 then
  237.         P = L : L = 0 : down : RPT : ElseOff :
  238. {260}
  239. Q = 0 : down : oa-D : Esc : {erase page No.}
  240. If P < L then
  241.    Q = L - P : L = P : ElseOff :
  242. P = P + L :
  243. J = J - P :
  244. L = P / 2 : P = P - L :
  245. M = L + Q : {make length of both pages same}
  246.  
  247. {_ _ _ _ _ GET TO TOP OF SECOND PAGE _ _ _ _ _}
  248.  
  249. {270}
  250. BEGIN :
  251.      up : M = M - 1 :
  252.      IfNot M = 0 then
  253.        {find beginning of second page}
  254.         RPT : ElseOff :
  255. sa-6 : {clean off excess CR's on page brakes}
  256. oa-O >SM< Rtn >2< Rtn : Esc : {mark 2nd page}
  257. oa-Z :
  258. BEGIN :
  259.      sa-N :
  260.      If L > 0 then
  261.         RPT :
  262.      Else  oa-F : right : right :
  263.         Rtn >1< Rtn : Rtn : down : sa-6 :
  264.         oa-K : Rtn :
  265.         oa-F : {get to second page}
  266.         right : right : Rtn >1< Rtn : Rtn >!
  267.  
  268. { _ _ _ _ MOVE LINE UP TO FIRST PAGE _ _ _ _ _}
  269.  
  270. {280}
  271. N:<awp><
  272. oa-F : right : right : Rtn >2< Rtn :
  273.   Rtn : down :
  274. sa-8 : N = F : right : del :
  275. $1 = Screen M,13,1 : S = 0 :
  276. If $1 = Chr$ 32 then
  277.    left : oa-spc : S = 1 : ElseOff :
  278. {290}
  279. left : $2 = "" :
  280. oa-M >T< {move line to clip board}
  281. BEGIN : $2 = Screen M,13,1 + $2 :
  282.      left : M = M - 1 : {find start of line}
  283.      If M > 1 then
  284.         RPT : ElseOff :
  285. $2 = $9 + Screen M,13,1 + $2 :
  286. Rtn : right : del :
  287.   {line is now deleted}
  288. oa-F : right : right : Rtn
  289.      >1< Rtn : Rtn : {find top marker}
  290. oa-D : Rtn : down : oa-O >SM< Rtn >1< Rtn :
  291. Esc : up : up :
  292. sa-8 : right : L = L - 1 :
  293.  {print line and insert divider}
  294. If N > 0 then
  295.    {move from clipboard to keep Ctrl chrs}
  296.    N = 0 : oa-M >F< del : print $9 :
  297. Else : {print w/o Ctrl chrs}
  298.    left : print $2 :
  299.    If S = 1 then
  300.       del : oa-spc >!
  301.  
  302. { _ _ ERASE EXCESSIVE CR's ON PAGE BREAKS _ _ }
  303.  
  304. {300}
  305. 6:<awp><
  306. BEGIN :
  307.      $1 = Screen 42,24,4 :
  308.      If $1 = "Stic" then
  309.         oa-D : down : left : Rtn :
  310.         sa-U : RPT >!
  311.  
  312. {310}
  313. U:<awp><
  314. If J > 0 then
  315.   {there are still more pages left}
  316.    J = J - 1 :
  317. Else sa-V >!
  318.  
  319. {320}
  320. V:<awp><
  321. If L = P then
  322.   {columns one & two are equal}
  323.    L = L - 1 :
  324. Else P = P - 1 :
  325.     {cols 1 & 2 are not equal, so add line}
  326.      oa-O >SM< Rtn >10< Rtn : esc :
  327.      oa-F : right : right :
  328.        Rtn >254< Rtn : Rtn :
  329.      up : Rtn : del : M = 0 :
  330.      sa-D : oa-spc :
  331.      oa-F : right : right :
  332.        Rtn >10< Rtn : Rtn :
  333.      oa-D : Rtn >!
  334.  
  335. {_ _ _ _ ADD EXTRA SPACES IF CTRL CODE _ _ _ _}
  336.  
  337. {330}
  338. 8:<awp><
  339. M = 0 : C = 0 : F = 0 :
  340. BEGIN :
  341.      M = M + 1 : $1 = Screen 42,24,4 :
  342.      IfNot $1 = "Line" then
  343.         sa-Z :
  344.      Else V = Peek $10F5 :
  345.         If V = 255 then
  346.            F = 1 : ElseOff :
  347.      right :
  348.      If M < A then
  349.         RPT : ElseOff :
  350. BEGIN :
  351.      If C > 0 then
  352.         Spc : C = C - 1 : M = M + 1 : RPT >!
  353.  
  354. Z:<awp><
  355. IfNot $1 = "Stic" then
  356.    {increase line & mark for clipboard}
  357.    C = C + 1 : F = 1 :
  358. Else : right : del : spc : left >!
  359.