;setbit.asm
;external procedure which sets a bit on in a byte
;
; procedure setbit ( var x : char; bit : integer );
;		extern;
; bit# in range 0..7
;
;entry code
	db 95,6,0	;int vmcode
	db 92		;lpn vmcode
	db 0		;mode vmcode
;on entry  bc=wtos  de=wb  hl=wbase
;
;get bit# in b_reg,  addr(x) in hl,  x into c_reg
setbit	xchg		;hl=wb
	dcx h! dcx h! dcx h! dcx h
	mov b,m		;bit#
	dcx h! mov d,m! dcx h! mov e,m ;addr(x)
	xchg		;hl=addr(x)
	mov c,m		;c=x
;create mask
	inr b		;incr loop count
	mvi a,1
loop	rrc
	dcr b
	jnz loop
;a=mask  c=byte
	ora c
	mov m,a		;store byte
	ret
;
	end
