.define Set
.sect .text
.sect .rom
.sect .data
.sect .bss
.sect .text

! This subroutine creates a set of n (n <= 256) bytes.
! In this set a certain bit, which number is in registerpair AX,
! is set. The rest is zero.


Set:
	stx ARTH	! save bitnumber (lowbyte)
	sta ARTH+1	! save bitnumber (highbyte)
	jsr Zer		! create n zerobytes
	lda ARTH
	and #0x07	! n mod 8 (bitnumber in byte)
	tax
	lda #1
	cpx #0
	beq 2f
    1:	asl a		! set bit (n mod 8)
	dex
	bne 1b
    2:	sta ARTH+2
	ldx #3
    1:	lsr ARTH+1	! shiftright n 3 times (= n div 8)
	ror ARTH	! this is the bytenumber
	dex
	bne 1b
	ldy ARTH	! load bytenumber
	lda SP+1
	ldx SP+2
	stx ADDR	! address of set (lowbyte)
	sta ADDR+1	! address of set (highbyte)
	lda ARTH+2	! get bit
	sta (ADDR),y	! store byte with bit on
	rts


