ITS Muddle.
[pdp10-muddle.git] / MUDDLE / medpp.1
1 <PRINC "/MEDPP">
2 "File to convert a PPRINT with comments to a MEDPP."
3 "PPRINT MUST!!! be loaded FIRST!!!"
4
5 "Add the ATOMs needed for intercommunication with MEDDLE."
6 <BLOCK (<ROOT>)>
7 "Cursor arrangements."
8 MEDDLE_CURSOR
9 SPECBEF
10 SPECAFT
11 "Other."
12 PRINE
13 <ENDBLOCK>
14 \f"Now add and change things within PPRINT."
15 <BLOCK (<GET PP OBLIST> <ROOT>)>
16
17 MEDSW   ;"The existence of this atom in PP shows that MEDPP has been loaded."
18
19 <SET SPECBEF 0>
20 <SET SPECAFT 0>
21
22 <SETG PRINMED <FUNCTION ()      ;"Print the cursor and speed things up."
23         <PRINC .MEDDLE_CURSOR>
24         <SETG FORMS ,FASTFORMS>>>
25
26 <SETG COMPONENTS        ;"Print the components of a structure in a column" 
27       <FUNCTION (L "OPTIONAL" (OM <+ .M 1>) (STOP 0))
28         <SET L <REST .L 0>>             ;"So cursor point can be recognized."
29         <REPEAT ((N <LINPOS .OUTCHAN>) (M 0))
30                 <AND <EMPTY? <REST .L>> <SET M .OM>>
31                 <AND <==? .L .SPECBEF> <PRINMED>>
32                 <FORMS <1 .L>>
33                 <AND <==? .L .SPECAFT> <PRINMED>>
34                 <COMMENTS>
35                 <AND <OR <EMPTY? <SET L <REST .L>>> <==? .L .STOP>> <RETURN DONE>>
36                 <TERPRI>
37                 <INDENT-TO .N>>>>
38
39
40 <SETG ELEMENTS          ;"Print the components of a structure in a line."
41       <FUNCTION (L "OPTIONAL" (M <+ .M 1>) (STOP 0))
42         <COND (<EMPTY? .L>)
43               (ELSE
44                 <SET L <REST .L 0>>             ;"So cursor point can be recognized."
45                 <REPEAT ((N <LINPOS .OUTCHAN>) COM)
46                         <AND <==? .L .SPECBEF> <PRINMED>>
47                         <FORMS <1 .L>>
48                         <AND <==? .L .SPECAFT> <PRINMED>>
49                         <SET COM <COMMENTS>>
50                         <AND <OR <EMPTY? <SET L <REST .L>>> <==? .L .STOP>> <RETURN DONE>>
51                         <COND (.COM <TERPRI> <INDENT-TO .N>)>
52                         <PRINC !" >>)>>>
53
54 <SETG PRINE <FUNCTION (L "OPTIONAL" (OUTCHAN .OUTCHAN)
55                          "AUX" (M 0) (COMELE ,COMPONENTS))
56         <SPEEDSEL>
57         <COND   (<MONAD? .L>)
58                 (<==? <TYPE .L> STRING> <TERPRI> <PRINC .L> <TERPRI>)
59                 (<FLATSIZE .L <- <LINLNT .OUTCHAN> <LINPOS .OUTCHAN>>>
60                         <TERPRI> <ELEMENTS .L>)
61                 (ELSE <TERPRI><COMPONENTS .L>)>
62         ,NULL>> ;"The rubout atom is there."
63
64
65 <SETG NORMFORM <FUNCTION ("AUX" (PN <+ 1 <LINPOS .OUTCHAN>>))
66                         <PRINC "<" >
67                         <AND <==? <REST .L 0> .SPECBEF> <PRINMED>>
68                         <FORMS <1 .L>>
69                         <AND <==? .L .SPECAFT> <PRINMED>>
70                         <COND (<==? .COMELE ,ELEMENTS> <COMEND>)
71                               (<FORMAHEAD .L> <COMMENTS> <TERPRI> <INDENT-TO .PN>
72                                 <COND (<FLATSIZE <REST .L> <- <LINLNT .OUTCHAN>
73                                                                 <LINPOS .OUTCHAN>
74                                                                 .M 3>>
75                                                 <ELEMENTS <REST .L>>)
76                                       (T <COMPONENTS <REST .L>>)>)
77                               (T <COMEND>)>
78                         <PRINC ">">>>
79
80 <ENDBLOCK>
81 \f\f\f\ 3\f\ 3\ 3\ 3\ 3ð`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\að`Á\83\a