macro use_label
{
draw_label:
pusha
	xor	esi,esi
	mov	edx,[edi+8]
.check_next:
	mov	ah,[edx+esi]
	inc	esi
	test	ah,ah
	jz	@f
	jmp	.check_next
@@:
	mov	eax,4
	mov	ebx,[edi]
	mov	ecx,[edi+4]
	int	0x40
popa
ret
}

struc label left,top,color,text
{
.top: dw top ; +0
.left: dw left ; +2
.color: dd color; +4
.text: dd text	; +8
}

l_struc_size=12
macro draw_labels start,end
{
	mov	edi,start
	mov	ecx,((end-start)/l_struc_size)
@@:
	call	draw_label
	add	edi,l_struc_size
	loop	@r
}

macro labels_set_sys_color start,end,color_table
{
	mov	edi,start
	mov	ecx,((end-start)/l_struc_size)
	mov	esi,color_table
@@:
	push	dword [esi+32]
	pop	dword [edi+4]
	add	edi,l_struc_size
	loop	@r
}