{ [MARKOV.REC]
[compile a Markov rule set into a REC program]
[format: (antecedent, consequent)]
[or (antecedent, consequent).]
[Harold V. McIntosh, 5 December 1980]
[Harold V. McIntosh, 22 February 1981]
[A Markov algorithm is an attempt by the Russian mathematician
A. A. Markov to make a rigorous algorithmic process out of the
production schemes of E. L. Post. In a Post production, one is
required to exhibit a sequence of transformation steps, or to
prove that no such sequence can be found. This is a process
which may depend upon a considerable amount of ingenuity, or
involve non-constructive reasoning, which is unsatisfactory
from the algorithmic point of view.]
[A Markov algorithm consists of a sequence of pairs - antecedents
and consequents - which constitute transformation rules. They are
to be tried in the strict priority of the order in which they are
listed, and each is marked according to whether the process is to
be repeated again from the beginning or to be terminated forthwith.
If no rule applies, the process also stops. Thus a quite definite
sequence of events is described, with which to effect a calculation.]
[Markov Algorithms can be modelled in REC with especial ease just
because they were taken as the model for REC's workspace and its
associated operators and predicates.]
[Markov's own book, which spells out his scheme in minute detail,
is still the best source to consult for a description of these
algorithms. Paralleling the development of the theory of Turing
machines, his treatment culminates in the enunciation of a Universal
algorithm.
A. A. Markov
The Theory of Algorithms
Academy of Sciences of the USSR
Moscow 1954 Leningrad
(also - NTIS-TT60-S1085
Israeli Program for Scientific Translations
Jerusalem, Israel, 1954.)]
[30$ - input FCB]
[31$ - output FCB]
[display w/cursor] (248%I26%TLJZqt248%FD;;) D
[erase cursors] (J(248%FD:JZ;);) E
[zero file control block] ($m33cmpw0%(f:;)wnnS;) F
[create input, output FCB's] ('5C'H12wA' 'Ew;B
[generate file names] 9aQpG'REC'|m (Z3b' 'E'MKV';Q;)|m w
[open input file] n30$rS 30@f
[open output file] n31$rS 31@g31@e
;) G
[close file] (
[clear wkspace, inp file] @p:L@y:(@p:0=;e26%(f:;)@p;;)
[close fil.REC] 31$r16k
;) H
[initialize] (J@Wj@!;@!;) I
[insert text as read] (@D@$@::;) J
[WS up to cursor to disk] (jJ<(@p:L;)Zz>;) P
[read, place in workspace] (@$@::;) R
[15-line window] (AB(10%EA:;)qL
15(d(10%FA;L(26%Fj;Z;)):;)Y<;<) W
[open file or create it] (@h$r15K(255=22K;;)LL;) e
[open file or report absence] (@h$r15K(255='new file 'T;;)LL;) f
[delete file if present] (@h$r19k;) g
[CP/M's DMA address] ('80'H26k;) h
[write one record] (@Ej((26%EZD0;128(a);))qL26k31$r21kD'.'TL;) p
[Markov subroutines] ("{
[cr,lf] (2573TL;)&
[read phrase] (R13%='';T08%(=2080[sp,bs]TL)(@J|;L@J;);)J
[sign-on line] ('[[]]'TL@&'Initial Axiom:'TL@&@JI;:)R
[write workspace] (JZqt;)W
[final statement] (@&'Production:'TL@&JZqt;)X
"I;) s
[Markov rule] ('('FD39%I
','FD39%I'FD'I39%I')'FD
('.'ED';';':';)39%I'I'II
;;) t
[Markov preface] ("(@R(@&@WRL"I2573I;) u
[Markov postscript] (";;)@X;;)}"I;) v
[compile a MARKOV file] (Jj
[change file extension] ('.MKV]'FD'.REC]'Iz;;)
[find display message] ('[['F']]'UQD;'';)
[look for code gap] ('('Ej;2573Ez2573Ez2573Ez2573Ej2bD;A:;)
[insert preface; to disk] 's'TL@s<'[[]]'FDIZ>@uz@P
[compile each function] ('t'TL@tz@P'('Fj:;)
[insert postscript] 'u'TL@vz@P
;) w
[append a record] (128(e)L;qL26k30$r20K0=L;DLL@h) y
[back to line feed] (10%Ez;B:j;)0
[bracket a line] (@010%V;Z;)1
[back to preceding line] (@0BB@0;;)2
[cr,lf] (2573TL;)&
[read w/error correction] (RT08%=127%;13%=2573;26%(=);)$
[clear screen] (26%TL;)!
[erase on ro, insert others] (127%=z(B;;)D;I;):
[form next window] (Zz>@W@!;)>
[cancel line] (24%TL;)^
( 'd' [delete] = (ABD;;);
'i' [insert] = @J@!;
'j' [beginning] = Jj;
'x' [exchange] = (ABD;;)RTI;
'z' [to end] = Z;
127%[delete] = @1D@!;
124%[ver bar: next] = (10%FA;J>(10%FA;;)@Wz@!;;);
13% [carr ret] = @0;
96% [prime: up line] = (BA@2;J>@2@Wj@!;;);
95% [undrscore: back] = (Bj;;);
'n' [next record] = >(@p;L;)(@y;;)J(@W;;);
'p' [write 1 record] = >(@p;L;)J(@W;;);
'y' [read 1 record] = >(@y;'eof:'TL;)J(@W;;);
' ' [advance] = (A;;);
'>' [next window] = (@>j;>@I;);
'<' [beg window] = >@I;
'.' [refresh screen] = @!;
's' = @s;
't' = @t;
'u' = @u;
'v' = @v;
)?
[main program] (
[create FCB's, open file] 30@F 31@F @G
[sign-on] 'markov.rec> 'TL
[automatic compilation] ('5C'H12wAqt@&3b' 'E(w(@y:;)@w@H;);w);
[wait, initialize, loop] RTL @I (@DR
[exit at once] ';'=@!;
[close, exit] 'e'=>@H;
[read menu] @?:
[ignore unknown] L:);)}
[end]