/*
 * function form of linea bindings
 *	++jrb
 */

#define __NO_INLINE__
#include <linea.h>

void linea0() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA000; 
		movl    a0,%0;	
		movl    a1,%1;	
		movl    a2,%2"						
	: "=g"(__aline), "=g"(__fonts), "=g"(__funcs)     /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void linea1() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA001" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

int linea2() 							
{									
	short retvalue;							
	__asm__ volatile						
	("
		.word   0xA002;  
 		movew	d0,%0"   
	: "=g"(retvalue)				  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
	return (int)retvalue;							
}

void linea3() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA003" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void linea4() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA004" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void linea5() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA005" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void linea6() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA006" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void linea7(BBPB *P) 							
{									
	    								
	__asm__ volatile						
	("
		movml	d2/a2/a6, sp@-;
 		movl	%0,a6;  
		.word   0xA007;
		movml	sp@+, d2/a2/a6"
	: 						  /* outputs */	
	: "r"(P)					  /* inputs  */	
	: "d0", "d1", "a0", "a1"	  	/* clobbered regs */	\
	);								
}

void linea8() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA008" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void linea9() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA009" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void lineaa() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA00A" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void lineab() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA00B" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void lineac(void *P) 							
{									
	    								
	__asm__ volatile						
	("
 		movl	%0,a2;  
		.word   0xA00C" 
	: 						  /* outputs */	
	: "r"(P)					  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2", "a6" /* clobbered regs */	
	);								
}

void __linead(int x, int y,  SFORM * sd, void *ss)
{									
	    								
	__asm__ volatile						
	("
 		movw	%0,d0;  
 		movw	%1,d1;  
 		movl	%2,a0;  
 		movl	%3,a2;  
		.word   0xA00D" 
	: 						  /* outputs */	
	: "r"((short)x), "r"((short)y), "r"(sd), "r"(ss)  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2", "a6" /* clobbered regs */	
	);								
}

void lineae() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA00E" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}

void lineaf() 							
{									
	    								
	__asm__ volatile						
	("
		.word   0xA00F" 
	: 						  /* outputs */	
	: 						  /* inputs  */	
	: "d0", "d1", "d2", "a0", "a1", "a2"       /* clobbered regs */	
	);								
}
