view lwdisasm/lwdisasm.h @ 408:2a94b2e64621

Started creation of lwdisasm
author lost@l-w.ca
date Mon, 02 Aug 2010 13:24:07 -0600
parents
children cba03436c720
line wrap: on
line source

/*
lwdisasm.h

Copyright © 2010 William Astle

This file is part of LWTOOLS.

LWTOOLS is free software: you can redistribute it and/or modify it under the
terms of the GNU General Public License as published by the Free Software
Foundation, either version 3 of the License, or (at your option) any later
version.

This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.

You should have received a copy of the GNU General Public License along with
this program. If not, see <http://www.gnu.org/licenses/>.
*/

#ifndef ____lwdisasm_h_seen____
#define ____lwdisasm_h_seen____

#include <stdint.h>

enum
{
	INPUT_RAW = 0,
	INPUT_DECB,
	INPUT_OBJ,
	INPUT_OS9
};

enum
{
	TARGET_6809 = 0,
	TARGET_6309
};

enum
{
	ADDR_DIR = 0,
	ADDR_EXT,
	ADDR_IND,
	ADDR_IMM8,
	ADDR_IMM16,
	ADDR_IMM32,
	ADDR_INH,
	ADDR_RTOR,
	ADDR_PSHPUL,
	ADDR_IMM8DIR,
	ADDR_IMM8IND,
	ADDR_IMM8EXT,
	ADDR_BITBIT,
	ADDR_REL8,
	ADDR_REL16,
	ADDR_PAGE1,
	ADDR_PAGE2,
	ADDR_TFMPP,
	ADDR_TFMMM,
	ADDR_TFMPC,
	ADDR_TFMCP
};

typedef struct disasmstate_s
{
	int input_type;
	int debug_level;
	char *output_file;
	char *input_file;
	int target;
	uint8_t *filedata;	// the file data
	long filelen;		// length of the file data
	int base;			// base address (raw)
	int entry;			// entry address
} disasmstate_t;



typedef struct instab_s
{
	char *op;			// mneumonic
	int addrmode;		// addressing mode
} instab_t;

extern instab_t page0_6809[];
extern instab_t page1_6809[];
extern instab_t page2_6809[];

extern instab_t page0_6309[];
extern instab_t page1_6309[];
extern instab_t page2_6309[];

#endif // ____lwdisasm_h_seen____