/* Copyright (C) 2001 Michael Leonhard
 * Mike Leonhard
 * mike at tamale dot net
 * http://tamale.net/
 */

#include <assert.h>
#include <stdlib.h>
#include "sebae.h"
#include "build.h"

int main( int argc, char *argv[] ) {
	struct SebaeVM *vm;
	int ret;
	
	/* check command line */
        if( argc != 3 ) return usage();

	/* new VM */
	vm = Sebae_VM_New( 0, 0 );
	
	/* no VM */
	if( vm == NULL ) {
		printf( "VM creation failed\n" );
		return 1;
		}
	
	/* load assembly file */
	ret = Sebae_Assembly_LoadFile( vm, argv[1] );
	
	/* load failed */
	if( ret == -1 ) return Sebae_PrintError( vm );

	/* write bytecode file */
	ret = Sebae_Bytecode_WriteFile( vm, argv[2] );
	
	/* write failed */
	if( ret == -1 ) return Sebae_PrintError( vm );

	/* clean up */
	ret = Sebae_VM_Destroy( vm );

	/* error in clean up */
	if( ret == -1 ) return Sebae_PrintError( vm );

	return 0;
        }

int usage() {
	printf( "Sebae Assembler version %s build %d, %s\n", VERSION, BUILDNUM, BUILDDATE );
	printf( "Mike Leonhard, mike at tamale dot net, http://tamale.net/\n\n" );
	printf( "usage: sa in.sa out.seb\n" );
	return 1;
        }
