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