Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / 20c / double.mud
diff --git a/mim/development/mim/20c/double.mud b/mim/development/mim/20c/double.mud
new file mode 100644 (file)
index 0000000..a501ceb
--- /dev/null
@@ -0,0 +1,31 @@
+<OP-20 DFAD *110*>
+<OP-20 DFSB *111*>
+<OP-20 DFMP *112*>
+<OP-20 DFDV *113*>
+
+<DEFINE DOUBLE!-MIMOC (L "AUX" (OP <1 .L>) (A1 <2 .L>) (A2 <3 .L>)
+                              (VV <4 .L>) (VAL <6 .L>) AC INS
+                              (RFALSE <GENLBL "DBL">))
+       #DECL ((L) LIST (OP) <OR <FORM ATOM ATOM> ATOM>)
+       <COND (<TYPE? .OP FORM> <SET OP <2 .OP>>)>
+       <UPDATE-ACS>
+       <COND (<SET AC <IN-AC? .A1 VALUE>>
+              <OCEMIT DMOVE O1* (.AC)>)
+             (ELSE
+              <OCEMIT DMOVE O1* @ !<OBJ-VAL .A1>>)>
+       <SET INS <COND (<==? .OP +> DFAD)
+                      (<==? .OP -> DFSB)
+                      (<==? .OP *> DFMP)
+                      (ELSE DFDV)>>
+       <COND (<SET AC <IN-AC? .A2 VALUE>> <OCEMIT .INS O1* (.AC)>)
+             (ELSE <OCEMIT .INS O1* @ !<OBJ-VAL .A2>>)>
+       <OCEMIT JFCL A1* <XJUMP .RFALSE>>
+       <COND (<AND <==? .A2 .VV> .AC>
+              <OCEMIT DMOVEM O1* (.AC)>)
+             (ELSE <OCEMIT DMOVEM O1* @ !<OBJ-VAL .VV>>)>
+       <OCEMIT MOVSI A1* <TYPE-CODE FIX>>
+       <OCEMIT CAIA O* O*>
+       <LABEL .RFALSE>
+       <OCEMIT MOVSI A1* <TYPE-CODE FALSE>>
+       <OCEMIT MOVEI A2* 0>
+       <PUSHJ-VAL .VAL>>