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

#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 bytecode file */
	ret = Sebae_Bytecode_LoadFile( vm, argv[1] );
	
	/* load failed */
	if( ret == -1 ) return Sebae_PrintError( vm );

	/* write assembly file */
	ret = Sebae_Assembly_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 Disassembler version %s build %d, %s\n", VERSION, BUILDNUM, BUILDDATE );
	printf( "Mike Leonhard, mike at tamale dot net, http://tamale.net/\n\n" );
	printf( "usage: sd in.seb out.sa\n" );
	return 1;
        }
