Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / 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 <L-FLOAD "CHANNEL-DEFS.MUD">
11
12 <DEFMAC CHANNEL-SLOT ('STR 'CHR CHK? OFFS)
13   <COND (<NOT .CHK?>
14          <FORM BIND ((SU <FORM CHANNEL-USER .STR>))
15            #DECL ((SU) MUD-CHAN)
16            <COND (<==? .CHR T>
17                   <FORM .OFFS '.SU>)
18                  (<FORM .OFFS '.SU .CHR>)>>)
19         (T
20          <FORM COND (<FORM CHANNEL-BLESS .STR>
21                      <EXPAND <FORM CHANNEL-SLOT .STR .CHR <> .OFFS>>)>)>>
22
23 <DEFMAC M-HLEN ('STR "OPTIONAL" ('CHR T) (CHK? <>))
24   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-HLEN>>>
25
26 <DEFMAC M-HPOS ('STR "OPTIONAL" ('CHR T) (CHK? <>))
27   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-HPOS>>>
28
29 <DEFMAC M-VLEN ('STR "OPTIONAL" ('CHR T) (CHK? <>))
30   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-VLEN>>>
31
32 <DEFMAC M-VPOS ('STR "OPTIONAL" ('CHR T) (CHK? <>))
33   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-VPOS>>>
34
35 <DEFMAC M-ORAD ('STR "OPTIONAL" ('CHR T) (CHK? <>))
36   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-ORAD>>>
37
38 <DEFMAC M-IRAD ('STR "OPTIONAL" ('CHR T) (CHK? <>))
39   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-IRAD>>>
40
41 <DEFMAC M-INTR ('STR "OPTIONAL" ('CHR T) (CHK? <>))
42   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-INTR>>>
43
44 <DEFMAC M-FFRM ('STR "OPTIONAL" ('CHR T) (CHK? <>))
45   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-FFRM>>>
46
47 <DEFMAC M-NCHR ('STR "OPTIONAL" ('CHR T) (CHK? <>))
48   <EXPAND <FORM CHANNEL-SLOT .STR .CHR .CHK? ,MC-NCHR>>>
49
50 <DEFMAC M-BIT ('STR 'WHICH "OPTIONAL" ('NEW 0) (CHK? <>))
51   <COND (<NOT .CHK?>
52          <FORM BIND ((SU <FORM CHANNEL-USER .STR>))
53            #DECL ((SU) MUD-CHAN)
54            <COND (<TYPE? .NEW FIX>
55                   <FORM NOT <FORM 0? <FORM ANDB .WHICH <FORM MC-BITS
56                                                              '.SU>>>>)
57                  (.NEW
58                   <FORM MC-BITS '.SU
59                         <FORM ORB <FORM MC-BITS '.SU> .WHICH>>)
60                  (T
61                   <FORM MC-BITS '.SU <FORM ANDB <FORM MC-BITS '.SU>
62                                           <FORM XORB .WHICH <ANDB>>>>)>>)
63         (T
64          <FORM COND (<FORM CHANNEL-BLESS .STR>
65                      <EXPAND <FORM M-BIT .STR .WHICH .NEW <>>>)>)>>
66
67 <DEFMAC ON-TTY? ('STR)
68   <EXPAND <FORM M-BIT .STR ,BIT-INTELLIGENT 0 <>>>>
69
70 <ENDBLOCK>