3 <COND (<NOT <GASSIGNED? M$$R-BHWD>> <SETG M$$R-BHWD 18>)>
5 <COND (<GASSIGNED? PUTBITS>
6 <SETG OPUTBITS ,PUTBITS>
7 <SETG OGETBITS ,GETBITS>
10 <DEFMAC BITS ('WID "OPTIONAL" ('SHFT 0))
11 <FORM CHTYPE <FORM ORB .SHFT <FORM LSH .WID ,M$$R-BHWD>> BITS>>
13 <DEFMAC GETBITS ('FROM 'BTS "AUX" RB FV)
14 <COND (<SET RB <HACK-BITS .BTS>>
15 <COND (<AND <SET FV <CONST? .FROM>>
18 <FGETBITS .FV <1 .RB> <2 .RB>>)
22 <FORM ANDB .FROM <XORB <LSH -1 <1 .RB>> -1>>)
23 (<FORM FGETBITS .FROM <1 .RB> <2 .RB>>)>)
25 <FORM BIND ((MSK <FORM LSH -1 <FORM - ',M$$R-BHWD>>)
26 (RB .BTS) (SHFT <FORM ANDB '.RB '.MSK>)
27 (WID <FORM ANDB <FORM LSH '.RB <FORM - ',M$$R-BHWD>>
29 <FORM FGETBITS .FROM '.WID '.SHFT>>)>>
31 <DEFMAC PUTBITS ('TO 'BTS "OPTIONAL" ('FROM 0) "AUX" RB FV TV)
32 <COND (<SET RB <HACK-BITS .BTS>>
33 <COND (<AND <SET FV <CONST? .FROM>>
37 <FPUTBITS .TV <1 .RB> <2 .RB> .FV>)
43 <FORM ANDB .TO <LSH -1 <1 .RB>>>)
44 (<FORM FPUTBITS .TO <1 .RB> <2 .RB> .FROM>)>)
46 <FORM BIND ((MSK <FORM LSH -1 <FORM - ',M$$R-BHWD>>)
47 (RB .BTS) (SHFT <FORM ANDB '.RB '.MSK>)
48 (WID <FORM ANDB <FORM LSH '.RB <FORM - ',M$$R-BHWD>>
50 <FORM FPUTBITS .TO '.WID '.SHFT .FROM>>)>>
53 <COND (<MEMQ <PRIMTYPE .FROB> '[WORD FIX]>
55 (<AND <TYPE? .FROB GVAL>
56 <MANIFEST? <CHTYPE .FROB ATOM>>>
58 (<AND <TYPE? .FROB FORM>
59 <==? <LENGTH .FROB> 2>
61 <TYPE? <2 .FROB> ATOM>
62 <MANIFEST? <2 .FROB>>>
65 <DEFINE HACK-BITS (BTS "AUX" WID SHIFT MSK HWD NV)
66 <COND (<SET NV <CONST? .BTS>>
67 <COND (<==? <PRIMTYPE 1> FIX>
70 <SET MSK <LSH -1 <- .HWD>>>
71 <SET SHIFT <CHTYPE <ANDB .NV .MSK> FIX>>
72 <SET WID <CHTYPE <ANDB <LSH .NV <- .HWD>> .MSK> FIX>>
74 (<AND <TYPE? .BTS FORM>
75 <NOT <LENGTH? .BTS 1>>
77 (<2 .BTS> <COND (<LENGTH? .BTS 2> 0)
80 <DEFINE FGETBITS (FROM WID SHIFT "AUX" (MSK <XORB <LSH -1 .WID> -1>))
81 <CHTYPE <ANDB <LSH .FROM <- .SHIFT>> .MSK> FIX>>
83 <DEFINE FPUTBITS (TO WID SHIFT FROM "AUX" (MSK <LSH -1 .WID>))
84 <CHTYPE <ORB <LSH <ANDB .FROM <XORB .MSK -1>> .SHIFT>
85 <ANDB .TO <ROT .MSK .SHIFT>>>