Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vaxc / addr.mud
1
2 "These macros generate the codes for basic VAX addressing modes and
3  include some of the hairier cases."
4
5 <DEFMAC MA-REG ('AC)
6         <FORM CHTYPE <FORM LSH <FORM ORB ',AM-REG <FORM AC-NUMBER .AC>> 24>
7               EFF-ADDR>>
8
9 <DEFMAC MA-LIT ('VAL)
10         <FORM CHTYPE <FORM LSH <FORM ANDB .VAL *77*> 24> EFF-ADDR>>
11
12 <DEFMAC MA-INDX ('AC) 
13         <FORM CHTYPE
14               <FORM LSH <FORM ORB ',AM-INX <FORM AC-NUMBER .AC>> 24>
15               EFF-ADDR>>
16
17 <DEFMAC MA-REGD ('AC)
18         <FORM CHTYPE <FORM LSH <FORM ORB ',AM-REGD <FORM AC-NUMBER .AC>> 24>
19               EFF-ADDR>>
20
21 <DEFMAC MA-ADEC ('AC)
22         <FORM CHTYPE <FORM LSH <FORM ORB ',AM-ADEC <FORM AC-NUMBER .AC>> 24>
23               EFF-ADDR>>
24
25 <DEFMAC MA-AINC ('AC)
26         <FORM CHTYPE <FORM LSH <FORM ORB ',AM-AINC <FORM AC-NUMBER .AC>> 24>
27               EFF-ADDR>>
28
29 <DEFMAC MA-AINCD ('AC)
30         <FORM CHTYPE <FORM LSH <FORM ORB ',AM-AINCD <FORM AC-NUMBER .AC>> 24>
31               EFF-ADDR>>
32
33 <DEFMAC MA-BD ('AC 'DISP)
34         <FORM CHTYPE <FORM LSH
35                            <FORM ORB <FORM LSH <FORM ORB ',AM-BD
36                                                      <FORM AC-NUMBER .AC>> 8>
37                                  <FORM ANDB .DISP *377*>>
38                            16>
39               EFF-ADDR>>
40
41 <DEFMAC MA-BDD ('AC 'DISP)
42         <FORM CHTYPE <FORM LSH <FORM ORB <FORM LSH <FORM ORB ',AM-BDD
43                                                <FORM AC-NUMBER .AC>> 8>
44                            <FORM ANDB .DISP *377*>> 16> EFF-ADDR>>
45
46 <DEFMAC MA-WD ('AC 'DISP) 
47         <FORM CHTYPE
48               <FORM ORB
49                     <FORM LSH <FORM ORB ',AM-WD <FORM AC-NUMBER .AC>> 24>
50                     <FORM ANDB
51                           <COND (<TYPE? .DISP FIX WORD CHARACTER>
52                                  <ORB <LSH .DISP 16>
53                                       <ANDB .DISP *177400*>>)
54                                 (ELSE
55                                  <FORM PROG
56                                        ((V .DISP))
57                                        <FORM ORB
58                                              <FORM LSH '.V 16>
59                                              <FORM ANDB
60                                                    '.V
61                                                    *177400*>>>)>
62                           *77777400*>>
63               EFF-ADDR>>
64
65 <DEFMAC MA-WDD ('AC 'DISP)
66         <FORM CHTYPE <FORM ORB <FORM LSH <FORM ORB ',AM-WDD
67                                                <FORM AC-NUMBER .AC>> 24>
68                            <FORM LSH <FORM ANDB .DISP *377*> 16>
69                            <FORM ANDB .DISP
70                                  *177400*>> EFF-ADDR>>
71
72 <DEFMAC MA-LD ('AC 'DISP)
73         <FORM CHTYPE (<FORM CHTYPE
74                             <FORM LSH
75                                   <FORM ORB ',AM-LD <FORM AC-NUMBER .AC>> 24>
76                             EFF-ADDR>
77                       <FORM CHTYPE <FORM LREV .DISP> EFF-ADDR>) LADDR>>
78
79 <DEFMAC MA-LDD ('AC 'DISP)
80         <FORM CHTYPE (<FORM CHTYPE
81                             <FORM LSH
82                                   <FORM ORB ',AM-LDD <FORM AC-NUMBER .AC>> 24>
83                             EFF-ADDR>
84                       <FORM CHTYPE <FORM LREV .DISP> EFF-ADDR>) LADDR>>
85
86 <DEFMAC MA-BYTE-IMM ('VAL) 
87         <FORM CHTYPE
88               <FORM ORB
89                     <FORM MA-AINC ',AC-PC>
90                     <FORM LSH <FORM ANDB .VAL 255> 16>>
91               EFF-ADDR>>
92
93 <DEFMAC MA-WORD-IMM ('VAL) 
94         <FORM CHTYPE
95               <FORM ORB
96                     <FORM MA-AINC ',AC-PC>
97                     <FORM ANDB
98                           <COND (<TYPE? .VAL FIX WORD CHARACTER>
99                                  <ORB <LSH <ANDB .VAL 255> 16>
100                                       <ANDB .VAL 65280>>)
101                                 (ELSE
102                                  <FORM PROG
103                                        ((V .VAL))
104                                        <FORM ORB
105                                              <FORM LSH <FORM ANDB '.V 255> 16>
106                                              <FORM ANDB '.V 65280>>>)>
107                           *77777400*>>
108               EFF-ADDR>>
109
110 <DEFMAC MA-LONG-IMM ('VAL) 
111         <FORM CHTYPE
112               (<FORM CHTYPE <FORM MA-AINC ',AC-PC> EFF-ADDR>
113                <FORM CHTYPE <FORM LREV .VAL> EFF-ADDR>)
114               LADDR>>
115
116 <DEFINE MA-IMM (VAL)
117         #DECL ((VAL) <PRIMTYPE FIX>)
118         <SET VAL <CHTYPE .VAL FIX>>
119         <COND (<AND <G=? .VAL 0><L=? .VAL *77*>>
120                <MA-LIT .VAL>)
121               (ELSE
122                <COND (<==? .VAL <CHTYPE <MIN> FIX>>
123                       <SET VAL *17777777777*>)
124                      (<==? .VAL <CHTYPE <MAX> FIX>>
125                       <SET VAL *20000000001*>)>
126                <MA-LONG-IMM .VAL>)>>
127
128 <DEFINE LREV (VAL) 
129         <CHTYPE <ORB <LSH <ANDB .VAL 255> 24>
130                      <LSH <ANDB .VAL 65280> 8>
131                      <LSH <ANDB .VAL 16711680> -8>
132                      <LSH <ANDB .VAL *37700000000*> -24>>
133                 FIX>>
134
135 <DEFINE MA-DISP (AC VAL "AUX" (AVAL <ABS .VAL>))
136         #DECL ((VAL AVAL) FIX)
137         <COND (<0? .VAL> <MA-REGD .AC>)
138               (<L=? .AVAL *177*> <MA-BD .AC .VAL>)
139               (<L=? .AVAL *77777*> <MA-WD .AC .VAL>)
140               (ELSE <MA-LD .AC .VAL>)>> 
141
142 <DEFINE MA-DEF-DISP (AC VAL "AUX" (AVAL <ABS .VAL>))
143         #DECL ((VAL AVAL) FIX)
144         <COND (<L=? .AVAL *177*> <MA-BDD .AC .VAL>)
145               (<L=? .AVAL *77777*> <MA-WDD .AC .VAL>)
146               (ELSE <MA-LDD .AC .VAL>)>> 
147
148 <DEFMAC MA-ABS ('ABS)
149         <FORM CHTYPE
150               (<FORM CHTYPE <FORM MA-AINCD ',AC-PC> EFF-ADDR>
151                <FORM CHTYPE <FORM LREV .ABS> EFF-ADDR>)
152               LADDR>>