home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Nibble Magazine
/
nib35a.dsk
/
JANUARY.1989
/
DBL.COL.MACRO.txt
next >
Wrap
Text File
|
2023-02-26
|
8KB
|
359 lines
Double Column Macro
by Sherman Paddock
Copyright (C) 1989
by MicroSPARC, Inc.
Concord, MA 01742
START
{010}
E:<awp><
Msg " Double Column Macro by Sherman Paddock"
+ " - Copyright (C) 1988 by MicroSPARC, Inc. " :
oa-K : Input : Rtn : oa-D : Esc :
Clear : R = 127 : $9 = " " : {2 spaces}
Zoom : E = Len $9 : D = Peek $10F1 : Insert :
{020}
oa-1 :
BEGIN : {find start of double-columning}
I = I + 1 : sa-B :
IfNot $1 = "Right" then
oa-Z : RPT : ElseOff :
{030}
I = L : B = B + 3 : K = K + 1 :
$1 = Screen 24,I,3 :
W = Val $1 - 1 : W = W * 10 :
$1 = Right $1,1 :
W = W + Val $1 : W = 72 - W :
E = E + W + W - 3 :
If W < 17 then
$1 = 'RM may NOT be greater than 6.5' :
GoTo sa-C : ElseOff :
If E > 137 then
E = 138 - Len $9 : E = E / 2 + 1 :
E = 72 - E :
W = E + 10 : W = W / 10 : E = E - W + 1 :
$1 = 'RM may be set to ' + Str$ W + "."
+ Str$ E + ' thru 6.5 ONLY' :
GoTo sa-C : ElseOff :
{040}
oa-N >D.< Rtn : A = 0 : Posn C,L :
If L > 2 then
{move non-double-column lines to clipboard}
sa-F : ElseOff :
{050}
oa-O >LM< Rtn >0< Rtn
>SM< Rtn >0< Rtn
>CI< Rtn >10< Rtn : Esc :
{060}
oa-9 : Posn C,J : J = J - 2 :
oa-Z : oa-1 : oa-Z : I = 6 :
{070}
BEGIN :
sa-1 :
IfNot L > J then
RPT : ElseOff :
{ _ _ _ _ _ BEGIN DOUBLE-COLUMNING _ _ _ _ _ _}
{080}
BEGIN :
up : $1 = Screen 42,24,4 :
If $1 = "Stic" then
{Clean off excess Returns}
oa-D : down : left :
Rtn : J = J - 1 :
RPT : ElseOff :
down : oa-O >NP< Rtn
>SM< Rtn >254< Rtn : Esc :
{last line is now set to Marker 254}
{090}
oa-1 :
If A = 1 then
oa-M >F< ElseOff :
oa-F : right : right : Rtn >0< Rtn : Rtn : up :
{100} {zero the right & left margins}
oa-O >RM< Rtn >0< Rtn
>LM< Rtn >0< Rtn
>SM< Rtn >0< Rtn
>CI< Rtn >17< Rtn
>SM< Rtn >1< Rtn : Esc :
{very first line is now set to Marker 1}
{110}
oa-Z : A = W - 2 : B = B + 1 :
I = K + 1 : J = J - 3 :
If I > 10 then
I = 10 : ElseOff :
sa-6 : oa-K : Rtn :
{120}
BEGIN :
sa-3 :
If J > 1 then
: down : oa-Z : down : I = 13 :
RPT : ElseOff :
{130}
oa-D : Rtn : down :
oa-left : Posn M,L :
If M > 1 then
down : oa-D : Rtn : up :
sa-8 : print $9 : left :
A = A + A : sa-D : oa-Spc :
right : If J = 0 then down : ElseOff :
{140}
oa-D : down :
Rtn :
oa-F : right : right :
Rtn >0< Rtn : Rtn : down :
oa-D : up : up : up : Rtn :
{work settings are now deleted}
{150}
oa-Z : oa-1 :
$1 = "Double-Columning Complete" : GoTo sa-C>!
{_ _DETERMINE WHERE TO START DOUBLE-COLUMN _ _}
{160}
B:<awp><
BEGIN :
Posn C,L :
If L = I then
I = I + 1 : down : RPT : ElseOff :
If I > L then
$1 = 'No Right-Margin MARKER has been set' :
oa-1 : GoTo sa-C : ElseOff :
B = L - I + B + 1 : K = L - B : L = L + 1 :
If L > 21 then
L = 21 : ElseOff :
oa-Z : $1 = Screen 9,L,5 >!
{_ _PRINT ERROR OR ENDING MESSAGE AND QUIT _ _}
{170}
C:<awp>< Bell : msg $1 + ' - Press any key' :
Key : msg "" :
If D = 1 then
{reset to overstrike mode}
oa-E : ctrl-x : ElseOff :
Stop >!
{_ _ _ INSERT SELECTED NUMBER OF SPACES _ _ _ }
{180}
D:<awp><
BEGIN :
If M < A then
Spc : M = M + 1 : RPT >!
{ _ _ _ _ MOVE TOP LINES TO CLIPBOARD _ _ _ _ }
{190}
F:<awp>< up : oa-left : oa-M >T< A = 1 :
BEGIN :
Posn C,L :
If L > 1 then
up : RPT : ElseOff :
Rtn : down >!
{ _ _ _ _ _ _ BLOCK OFF ALL LINES _ _ _ _ _ _ }
{200}
1:<awp><
BEGIN :
IfNot I = 21 then
I = I + 1 : ElseOff :
down : $1 = Screen 1,I,8 :
If $1 = "--------" then
sa-2 : ElseOff :
V = PEEK $10F5 :
If L < J then If V = 160 then
{in case of line of spaces}
oa-Spc : right : del :
oa-right : V = Peek $10F5 : oa-left :
IfNot V = 160 then
right : del : spc : left : ElseOff :
{210}
oa-left : Posn C,L :
If C > W + 1 then
left : del : right : left : C = C - 1 :
ElseOff :
IfNot C = 1 then
left : C = C - 1 :
Else : oa-Spc : C = C + 1 : ElseOff :
V = Peek $10F5 :
IfNot V = 160 then
IfNot V = R + 128 then
right : C = C + 1 : ElseOff :
{220}
BEGIN :
IfNot C = W Then
Spc : C = C + 1 : RPT : ElseOff :
V = Peek $10F5 :
IfNot V = R + 128 then
sa-K : ElseOff :
oa-Right >!
{ _ _ _ INSURE IT IS A PRINT STATEMENT _ _ _ _}
{225}
2:<awp>< oa-Z : $1 = Screen 1,I,8 : oa-Z :
IfNot $1 = "--------" then
{reset end of file}
up : Posn C,J : J = J - 2 :
If I = 21 then
I = I - 1 >!
{ _ _ _ _ GET RID OF EXCESSIVE SPACES _ _ _ _ }
{230}
K:<awp>< Rtn : down : up :
BEGIN :
V = Peek $10F5 :
If V = 160 then
right : del : RPT :
Else : del >!
{ _ _ _ _ DETERMINE LENGTH OF PAGES _ _ _ _ _ }
{240}
3:<awp>< P = 0 : L = 0 :
BEGIN :
L = L + 1 :
If I < 22 then
I = I + 1 : ElseOff :
$1 = Screen 33,I,11 :
IfNot $1 = "End of Page" then
down : RPT : ElseOff :
If L > J then
{calculate because of odd page}
P = L / 2 : L = L - P : ElseOff :
L = L - 1 :
If P = 0 then
P = L : L = 0 : down : RPT : ElseOff :
{260}
Q = 0 : down : oa-D : Esc : {erase page No.}
If P < L then
Q = L - P : L = P : ElseOff :
P = P + L :
J = J - P :
L = P / 2 : P = P - L :
M = L + Q : {make length of both pages same}
{_ _ _ _ _ GET TO TOP OF SECOND PAGE _ _ _ _ _}
{270}
BEGIN :
up : M = M - 1 :
IfNot M = 0 then
{find beginning of second page}
RPT : ElseOff :
sa-6 : {clean off excess CR's on page brakes}
oa-O >SM< Rtn >2< Rtn : Esc : {mark 2nd page}
oa-Z :
BEGIN :
sa-N :
If L > 0 then
RPT :
Else oa-F : right : right :
Rtn >1< Rtn : Rtn : down : sa-6 :
oa-K : Rtn :
oa-F : {get to second page}
right : right : Rtn >1< Rtn : Rtn >!
{ _ _ _ _ MOVE LINE UP TO FIRST PAGE _ _ _ _ _}
{280}
N:<awp><
oa-F : right : right : Rtn >2< Rtn :
Rtn : down :
sa-8 : N = F : right : del :
$1 = Screen M,13,1 : S = 0 :
If $1 = Chr$ 32 then
left : oa-spc : S = 1 : ElseOff :
{290}
left : $2 = "" :
oa-M >T< {move line to clip board}
BEGIN : $2 = Screen M,13,1 + $2 :
left : M = M - 1 : {find start of line}
If M > 1 then
RPT : ElseOff :
$2 = $9 + Screen M,13,1 + $2 :
Rtn : right : del :
{line is now deleted}
oa-F : right : right : Rtn
>1< Rtn : Rtn : {find top marker}
oa-D : Rtn : down : oa-O >SM< Rtn >1< Rtn :
Esc : up : up :
sa-8 : right : L = L - 1 :
{print line and insert divider}
If N > 0 then
{move from clipboard to keep Ctrl chrs}
N = 0 : oa-M >F< del : print $9 :
Else : {print w/o Ctrl chrs}
left : print $2 :
If S = 1 then
del : oa-spc >!
{ _ _ ERASE EXCESSIVE CR's ON PAGE BREAKS _ _ }
{300}
6:<awp><
BEGIN :
$1 = Screen 42,24,4 :
If $1 = "Stic" then
oa-D : down : left : Rtn :
sa-U : RPT >!
{310}
U:<awp><
If J > 0 then
{there are still more pages left}
J = J - 1 :
Else sa-V >!
{320}
V:<awp><
If L = P then
{columns one & two are equal}
L = L - 1 :
Else P = P - 1 :
{cols 1 & 2 are not equal, so add line}
oa-O >SM< Rtn >10< Rtn : esc :
oa-F : right : right :
Rtn >254< Rtn : Rtn :
up : Rtn : del : M = 0 :
sa-D : oa-spc :
oa-F : right : right :
Rtn >10< Rtn : Rtn :
oa-D : Rtn >!
{_ _ _ _ ADD EXTRA SPACES IF CTRL CODE _ _ _ _}
{330}
8:<awp><
M = 0 : C = 0 : F = 0 :
BEGIN :
M = M + 1 : $1 = Screen 42,24,4 :
IfNot $1 = "Line" then
sa-Z :
Else V = Peek $10F5 :
If V = 255 then
F = 1 : ElseOff :
right :
If M < A then
RPT : ElseOff :
BEGIN :
If C > 0 then
Spc : C = C - 1 : M = M + 1 : RPT >!
Z:<awp><
IfNot $1 = "Stic" then
{increase line & mark for clipboard}
C = C + 1 : F = 1 :
Else : right : del : spc : left >!