macro use_label { draw_label: pusha xor esi,esi mov edx,[edi+8] .check_next: mov ah,[edx+esi] inc esi test ah,ah jnz .check_next mcall SF_DRAW_TEXT,[edi],[edi+4] 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 }