macro buttabnum a0,a1,a2,a3,a4
{
	test [flags],(1 shl 5)
	jnz .prg
	test [flags],(1 shl 3)
	jnz .a1
if a4
	test [flags],(1 shl 4)
	jnz .a4
endf
	test [flags],(1 shl 11)
	jnz .a2
	test [flags],(1 shl 12)
	jnz .a3
	test [flags],(1 shl 9)
	jnz .prg
	mov eax,a0
	jmp but_table.to_opcode
		.a1:	mov eax,a1
		jmp but_table.to_opcode
		.a2:	mov eax,a2
		jmp but_table.to_opcode
		.a3:	mov eax,a3
		jmp but_table.to_opcode
	.prg:
	test [flags],(1 shl 8)
	jz @f
	add [dop8],a0
	jmp but_table.dop8
    @@: test [flags],(1 shl 9)
	jz @f
	mov al,a0
	jmp but_table.dop9
    @@:	movzx eax,[schk]
	add eax,PMEM
	inc [schk]
	test [flags],(1 shl 3)
	jnz @f
	mov byte [eax],a0
	ret
    @@:	mov byte [eax],a1
	btr [flags],3
	ret
if a4
.a4:	mov eax,a4
	jmp but_table.to_opcode
endf	
}