A yet smaller 'putbit' routine


(Yet smaller than the one in Hugi 25...)

The following should be pretty obvious. Call the 'init' with DS:DI pointing to the bitstream buffer, then call 'putbit' with a single bit in the CF (carry flag). Use the 'flush' to align the final bits in the byte.

 [DS:DI] --> bitstream buffer 
 CF --> the bit to write 
 D0 15      putbit: rcl byte ptr [di], 1 
 73 04              jnc short __ret 
 47                 inc di 
 C6 05 01    init:  mov byte ptr [di], 01h 
 C3         __ret:  ret 
 D0 25      flush:  shl byte ptr [di], 1 
 73 FC              jnc flush 
 C3                 ret 

That's all folks.