Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / mim / mimlib / umc-defs.mud
1 ; "VERSION FOR USER CODE"
2
3 ; "Definitions of macros to access slots in mudchans, for use by READ
4    and PRINT.  Assume that third arg is literally either true or false--
5    EVALed at compile time.  Similarly, if second arg is T, it is assumed
6    to not be there."
7
8 <BLOCK (<ROOT>)>
9
10 <IFSYS ("TOPS20"
11         <FLOAD "PS:<TAA.IO-DEFS>CHANNEL-DEFS.MUD">)
12        ("UNIX"
13         <FLOAD "~MIM/SRC/CHANNEL-DEFS.MUD">)>
14
15 <DEFMAC CHANNEL-SLOT ('STR 'CHR CHK? OFFS)
16   <COND (<NOT .CHK?>
17          <FORM BIND ((SU <FORM CHANNEL-USER .STR>))
18            #DECL ((SU) MUD-CHAN)
19            <COND (<==? .CHR T>
20                   <FORM .OFFS '.SU>)
21                  (<FORM .OFFS '.SU .CHR>)>>)
22         (T
23          <FORM COND (<FORM CHANNEL-BLESS .STR>
24                      <EXPAND <FORM CHANNEL-SLOT .STR .CHR <> .OFFS>>)>)>>
25
26 <DEFMAC M-HLEN ('STR "OPTIONAL" ('CHR T) (CHK? <>))
27   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-HLEN>>>
28
29 <DEFMAC M-HPOS ('STR "OPTIONAL" ('CHR T) (CHK? <>))
30   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-HPOS>>>
31
32 <DEFMAC M-VLEN ('STR "OPTIONAL" ('CHR T) (CHK? <>))
33   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-VLEN>>>
34
35 <DEFMAC M-VPOS ('STR "OPTIONAL" ('CHR T) (CHK? <>))
36   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-VPOS>>>
37
38 <DEFMAC M-ORAD ('STR "OPTIONAL" ('CHR T) (CHK? <>))
39   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-ORAD>>>
40
41 <DEFMAC M-IRAD ('STR "OPTIONAL" ('CHR T) (CHK? <>))
42   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-IRAD>>>
43
44 <DEFMAC M-INTR ('STR "OPTIONAL" ('CHR T) (CHK? <>))
45   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-INTR>>>
46
47 <DEFMAC M-FFRM ('STR "OPTIONAL" ('CHR T) (CHK? <>))
48   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-FFRM>>>
49
50 <DEFMAC M-NCHR ('STR "OPTIONAL" ('CHR T) (CHK? <>))
51   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-NCHR>>>
52
53 <DEFMAC M-BIT ('STR 'WHICH "OPTIONAL" ('NEW-FROB 0) (CHK? <>))
54   <COND (<NOT .CHK?>
55          <FORM BIND ((SU <FORM CHANNEL-USER .STR>))
56            #DECL ((SU) MUD-CHAN)
57            <COND (<TYPE? .NEW-FROB FIX>
58                   <FORM NOT <FORM 0? <FORM ANDB .WHICH <FORM MC-BITS
59                                                              '.SU>>>>)
60                  (.NEW-FROB
61                   <FORM MC-BITS '.SU
62                         <FORM ORB <FORM MC-BITS '.SU> .WHICH>>)
63                  (T
64                   <FORM MC-BITS '.SU <FORM ANDB <FORM MC-BITS '.SU>
65                                           <FORM XORB .WHICH <ANDB>>>>)>>)
66         (T
67          <FORM COND (<FORM CHANNEL-BLESS .STR>
68                      <EXPAND <FORM M-BIT .STR .WHICH .NEW-FROB <>>>)>)>>
69
70 <DEFMAC ON-TTY? ('STR)
71   <EXPAND <FORM M-BIT .STR ,BIT-INTELLIGENT 0 <>>>>
72
73 <ENDBLOCK>