Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vaxc / double-int.mud
diff --git a/mim/development/mim/vaxc/double-int.mud b/mim/development/mim/vaxc/double-int.mud
new file mode 100644 (file)
index 0000000..6e9265c
--- /dev/null
@@ -0,0 +1,56 @@
+<PUT-DECL DFLOAT '<<PRIMTYPE UVECTOR> [2 FIX]>>
+
+<DEFINE DFLOAT (OPER "TUPLE" ARGS "AUX" (NARGS <LENGTH .ARGS>) RES)
+  #DECL ((OPER) ATOM (ARGS) <TUPLE <OR FLOAT DFLOAT> [REST DFLOAT]>)
+  <COND (<OR <==? .OPER ADD>
+            <==? .OPER MUL>
+            <==? .OPER SUB>
+            <==? .OPER DIV>>
+        <COND (<OR <L? .NARGS 2>
+                   <G? .NARGS 3>>
+               <ERROR WRONG-NUMBER-OF-ARGS!-ERRORS DOUBLE .OPER>)
+              (T
+               <COND (<==? .NARGS 2>
+                      <SET RES <2 .ARGS>>)
+                     (T
+                      <SET RES <3 .ARGS>>)>
+               <COND
+                (<==? .OPER ADD>
+                 <CALL DOUBLE ADD <1 .ARGS> <2 .ARGS> .RES>)
+                (<==? .OPER MUL>
+                 <CALL DOUBLE MUL <1 .ARGS> <2 .ARGS> .RES>)
+                (<==? .OPER SUB>
+                 <CALL DOUBLE SUB <1 .ARGS> <2 .ARGS> .RES>)
+                (<==? .OPER DIV>
+                 <CALL DOUBLE DIV <1 .ARGS> <2 .ARGS> .RES>)>
+               .RES)>)
+       (<OR <==? .OPER G?>
+            <==? .OPER =?>
+            <==? .OPER L?>>
+        <COND (<N==? .NARGS 2>
+               <ERROR WRONG-NUMBER-OF-ARGS!-ERRORS DOUBLE .OPER>)
+              (T
+               <COND
+                (<==? .OPER G?>
+                 <CALL DOUBLE G? <1 .ARGS> <2 .ARGS>>)
+                (<==? .OPER =?>
+                 <CALL DOUBLE =? <1 .ARGS> <2 .ARGS>>)
+                (<==? .OPER L?>
+                 <CALL DOUBLE L? <1 .ARGS> <2 .ARGS>>)>)>)
+       (<==? .OPER DOUBLE-TO-SINGLE>
+        <COND (<N==? .NARGS 1>
+               <ERROR WRONG-NUMBER-OF-ARGS!-ERRORS DOUBLE .OPER>)
+              (T
+               <CALL DOUBLE DOUBLE-TO-SINGLE <1 .ARGS>>)>)
+       (<==? .OPER SINGLE-TO-DOUBLE>
+        <COND (<OR <L? .NARGS 1>
+                   <G? .NARGS 2>>
+               <ERROR WRONG-NUMBER-OF-ARGS!-ERRORS DOUBLE .OPER>)
+              (T
+               <COND (<==? .NARGS 2>
+                      <CALL DOUBLE SINGLE-TO-DOUBLE <1 .ARGS>
+                            <SET RES <2 .ARGS>>>)
+                     (T
+                      <CALL DOUBLE SINGLE-TO-DOUBLE <1 .ARGS>
+                            <SET RES <IUVECTOR 2>>>)>
+               .RES)>)>>
\ No newline at end of file