Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / mimlib / binary.mud
diff --git a/mim/development/mim/vax/mimlib/binary.mud b/mim/development/mim/vax/mimlib/binary.mud
new file mode 100644 (file)
index 0000000..2e83a71
--- /dev/null
@@ -0,0 +1,22 @@
+<PACKAGE "BINARY">
+
+<RENTRY BINARY>
+
+<DEFINE BINARY (X)
+   #DECL ((X) <OR FIX STRING> (OUTCHAN) CHANNEL)
+   <COND (<TYPE? .X FIX>
+         <REPEAT ((D *20000000000*) (B <ISTRING 32>))
+            #DECL ((D) FIX (B) STRING)
+            <COND (<0? <ANDB .D .X>> <PUT .B 1 !\0>)
+                  (T <PUT .B 1 !\1>)>
+            <COND (<0? <SET D <LSH .D -1>>> <RETURN <TOP .B>>)
+                  (T <SET B <REST .B>>)>>)
+        (<AND <TYPE? .X STRING> <L=? <LENGTH .X> 32>>
+         <REPEAT ((D 0) (P <+ <LENGTH .X> 1>) (M 1))
+            #DECL ((D P M) FIX)
+            <COND (<0? <SET P <- .P 1>>> <RETURN <CHTYPE .D WORD>>)
+                  (<==? <NTH .X .P> !\1> <SET D <+ .M .D>>)
+                  (<N==? <NTH .X .P> !\0> <ERROR BAD-STRING!-ERRORS BINARY>)>
+            <SET M <LSH .M 1>>>)>>
+
+<ENDPACKAGE>