Machine-Independent MDL for TOPS-20 and VAX.
[pdp10-muddle.git] / mim / development / mim / vax / mimlib / binary.mud
1 <PACKAGE "BINARY">
2
3 <RENTRY BINARY>
4
5 <DEFINE BINARY (X)
6    #DECL ((X) <OR FIX STRING> (OUTCHAN) CHANNEL)
7    <COND (<TYPE? .X FIX>
8           <REPEAT ((D *20000000000*) (B <ISTRING 32>))
9              #DECL ((D) FIX (B) STRING)
10              <COND (<0? <ANDB .D .X>> <PUT .B 1 !\0>)
11                    (T <PUT .B 1 !\1>)>
12              <COND (<0? <SET D <LSH .D -1>>> <RETURN <TOP .B>>)
13                    (T <SET B <REST .B>>)>>)
14          (<AND <TYPE? .X STRING> <L=? <LENGTH .X> 32>>
15           <REPEAT ((D 0) (P <+ <LENGTH .X> 1>) (M 1))
16              #DECL ((D P M) FIX)
17              <COND (<0? <SET P <- .P 1>>> <RETURN <CHTYPE .D WORD>>)
18                    (<==? <NTH .X .P> !\1> <SET D <+ .M .D>>)
19                    (<N==? <NTH .X .P> !\0> <ERROR BAD-STRING!-ERRORS BINARY>)>
20              <SET M <LSH .M 1>>>)>>
21
22 <ENDPACKAGE>