//    This program 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 2 of the License, or
//    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, write to the Free Software
//    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
//

#include "jintypes.h"
#include "at_dis.h"

struct
{
	char	*instruct;
	int	length;
	int	branch;
	int	immed;
	int	write;
} instable[] =
{
	{ "BRK",				0, 0, 1, 0 },	//00
	{ "ORA\t(*,X)",	1, 0, 0, 0 },	//01
	{ "???",				0, 0, 1, 0 },	//02
	{ "???",				0, 0, 1, 0 },	//03
	{ "???",				0, 0, 1, 0 },	//04
	{ "ORA\t*",			1, 0, 0, 0 },	//05
	{ "ASL\t*",			1, 0, 0, 0 },	//06
	{ "???",				0, 0, 1, 0 },	//07
	{ "PHP",				0, 0, 1, 0 },	//08
	{ "ORA\t#*",		1, 0, 1, 0 },	//09
	{ "ASL",				0, 0, 1, 0 },	//0A
	{ "???",				0, 0, 1, 0 },	//0B
	{ "???",				0, 0, 1, 0 },	//0C
	{ "ORA\t*",			2, 0, 0, 0 },	//0D
	{ "ASL\t*",			2, 0, 0, 0 },	//0E
	{ "???",				0, 0, 1, 0 },	//0F
	{ "BPL\t$*",		1, 1, 1, 0 },	//10
	{ "ORA\t(*),Y",	1, 0, 0, 0 },	//11
	{ "???",				0, 0, 1, 0 },	//12
	{ "???",				0, 0, 1, 0 },	//13
	{ "???",				0, 0, 1, 0 },	//14
	{ "ORA\t*,X",		1, 0, 0, 0 },	//15
	{ "ASL\t*,X",		1, 0, 0, 0 },	//16
	{ "???",				0, 0, 1, 0 },	//17
	{ "CLC",				0, 0, 1, 0 },	//18
	{ "ORA\t*,Y",		2, 0, 0, 0 },	//19
	{ "???",				0, 0, 1, 0 },	//1A
	{ "???",				0, 0, 1, 0 },	//1B
	{ "???",				0, 0, 1, 0 },	//1C
	{ "ORA\t*,X",		2, 0, 0, 0 },	//1D
	{ "ASL\t*,X",		2, 0, 0, 0 },	//1E
	{ "???",				0, 0, 1, 0 },	//1F
	{ "JSR\t*",			2, 0, 0, 0 },	//20
	{ "AND\t(*,X)",	1, 0, 0, 0 },	//21
	{ "???",				0, 0, 1, 0 },	//22
	{ "???",				0, 0, 1, 0 },	//23
	{ "BIT\t*",			1, 0, 0, 0 },	//24
	{ "AND\t*",			1, 0, 0, 0 },	//25
	{ "ROL\t*",			1, 0, 0, 0 },	//26
	{ "???",				0, 0, 1, 0 },	//27
	{ "PLP",				0, 0, 1, 0 },	//28
	{ "AND\t#*",		1, 0, 1, 0 },	//29
	{ "ROL",				0, 0, 1, 0 },	//2A
	{ "???",				0, 0, 1, 0 },	//2B
	{ "BIT\t*",			2, 0, 0, 0 },	//2C
	{ "AND\t*",			2, 0, 0, 0 },	//2D
	{ "ROL\t*",			2, 0, 0, 0 },	//2E
	{ "???",				0, 0, 1, 0 },	//2F
	{ "BMI\t$*",		1, 1, 1, 0 },	//30
	{ "AND\t(*),Y",	1, 0, 0, 0 },	//31
	{ "???",				0, 0, 1, 0 },	//32
	{ "???",				0, 0, 1, 0 },	//33
	{ "???",				0, 0, 1, 0 },	//34
	{ "AND\t*,X",		1, 0, 0, 0 },	//35
	{ "ROL\t*,X",		1, 0, 0, 0 },	//36
	{ "???",				0, 0, 1, 0 },	//37
	{ "SEC",				0, 0, 1, 0 },	//38
	{ "AND\t*,Y",		2, 0, 0, 0 },	//39
	{ "???",				0, 0, 1, 0 },	//3A
	{ "???",				0, 0, 1, 0 },	//3B
	{ "???",				0, 0, 1, 0 },	//3C
	{ "AND\t*,X",		2, 0, 0, 0 },	//3D
	{ "ROL\t*,X",		2, 0, 0, 0 },	//3E
	{ "???",				0, 0, 1, 0 },	//3F
	{ "RTI",				0, 0, 1, 0 },	//40
	{ "EOR\t(*,X)",	1, 0, 0, 0 },	//41
	{ "???",				0, 0, 1, 0 },	//42
	{ "???",				0, 0, 1, 0 },	//43
	{ "???",				0, 0, 1, 0 },	//44
	{ "EOR\t*",			1, 0, 0, 0 },	//45
	{ "LSR\t*",			1, 0, 0, 0 },	//46
	{ "???",				0, 0, 1, 0 },	//47
	{ "PHA",				0, 0, 1, 0 },	//48
	{ "EOR\t#*",		1, 0, 1, 0 },	//49
	{ "LSR",				0, 0, 1, 0 },	//4A
	{ "???",				0, 0, 1, 0 },	//4B
	{ "JMP\t*",			2, 0, 0, 0 },	//4C
	{ "EOR\t*",			2, 0, 0, 0 },	//4D
	{ "LSR\t*",			2, 0, 0, 0 },	//4E
	{ "???",				0, 0, 1, 0 },	//4F
	{ "BVC\t$*",		1, 1, 1, 0 },	//50
	{ "EOR\t(*),Y",	1, 0, 0, 0 },	//51
	{ "???",				0, 0, 1, 0 },	//52
	{ "???",				0, 0, 1, 0 },	//53
	{ "???",				0, 0, 1, 0 },	//54
	{ "EOR\t*,X",		1, 0, 0, 0 },	//55
	{ "LSR\t*,X",		1, 0, 0, 0 },	//56
	{ "???",				0, 0, 1, 0 },	//57
	{ "CLI",				0, 0, 1, 0 },	//58
	{ "EOR\t*,Y",		2, 0, 0, 0 },	//59
	{ "???",				0, 0, 1, 0 },	//5A
	{ "???",				0, 0, 1, 0 },	//5B
	{ "???",				0, 0, 1, 0 },	//5C
	{ "EOR\t*,X",		2, 0, 0, 0 },	//5D
	{ "LSR\t*,X",		2, 0, 0, 0 },	//5E
	{ "???",				0, 0, 1, 0 },	//5F
	{ "RTS",				0, 0, 1, 0 },	//60
	{ "ADC\t(*,X)",	1, 0, 0, 0 },	//61
	{ "???",				0, 0, 1, 0 },	//62
	{ "???",				0, 0, 1, 0 },	//63
	{ "???",				0, 0, 1, 0 },	//64
	{ "ADC\t*",			1, 0, 0, 0 },	//65
	{ "ROR\t*",			1, 0, 0, 0 },	//66
	{ "???",				0, 0, 1, 0 },	//67
	{ "PLA",				0, 0, 1, 0 },	//68
	{ "ADC\t#*",		1, 0, 1, 0 },	//69
	{ "ROR",				0, 0, 1, 0 },	//6A
	{ "???",				0, 0, 1, 0 },	//6B
	{ "JMP\t(*)",		2, 0, 0, 0 },	//6C
	{ "ADC\t*",			2, 0, 0, 0 },	//6D
	{ "ROR\t*",			2, 0, 0, 0 },	//6E
	{ "???",				0, 0, 1, 0 },	//6F
	{ "BVS\t$*",		1, 1, 1, 0 },	//70
	{ "ADC\t(*),Y",	1, 0, 0, 0 },	//71
	{ "???",				0, 0, 1, 0 },	//72
	{ "???",				0, 0, 1, 0 },	//73
	{ "???",				0, 0, 1, 0 },	//74
	{ "ADC\t*,X",		1, 0, 0, 0 },	//75
	{ "ROR\t*,X",		1, 0, 0, 0 },	//76
	{ "???",				0, 0, 1, 0 },	//77
	{ "SEI",				0, 0, 1, 0 },	//78
	{ "ADC\t*,Y",		2, 0, 0, 0 },	//79
	{ "???",				0, 0, 1, 0 },	//7A
	{ "???",				0, 0, 1, 0 },	//7B
	{ "SKW",				1, 0, 1, 0 },	//7C
	{ "ADC\t*,X",		2, 0, 1, 0 },	//7D
	{ "ROR\t*,X",		2, 0, 1, 0 },	//7E
	{ "???",				0, 0, 1, 0 },	//7F
	{ "???",				0, 0, 1, 0 },	//80
	{ "STA\t(*,X)",	1, 0, 0, 1 },	//81
	{ "???",				0, 0, 1, 0 },	//82
	{ "???",				0, 0, 1, 0 },	//83
	{ "STY\t*",	  		1, 0, 0, 1 },	//84
	{ "STA\t*",			1, 0, 0, 1 },	//85
	{ "STX\t*",			1, 0, 0, 1 },	//86
	{ "???",				0, 0, 1, 0 },	//87
	{ "DEY",				0, 0, 1, 0 },	//88
	{ "???",				0, 0, 1, 0 },	//89
	{ "TXA",				0, 0, 1, 0 },	//8A
	{ "???",				0, 0, 1, 0 },	//8B
	{ "STY\t*",			2, 0, 0, 1 },	//8C
	{ "STA\t*",			2, 0, 0, 1 },	//8D
	{ "STX\t*",			2, 0, 0, 1 },	//8E
	{ "???",				0, 0, 1, 0 },	//8F
	{ "BCC\t$*",		1, 1, 1, 0 },	//90
	{ "STA\t(*),Y",	1, 0, 0, 1 },	//91
	{ "???",				0, 0, 1, 0 },	//92
	{ "???",				0, 0, 1, 0 },	//93
	{ "STY\t*,X",		1, 0, 0, 1 },	//94
	{ "STA\t*,X",		1, 0, 0, 1 },	//95
	{ "STX\t*,Y",		1, 0, 0, 1 },	//96
	{ "???",				0, 0, 1, 0 },	//97
	{ "TYA",				0, 0, 1, 0 },	//98
	{ "STA\t*,Y",		2, 0, 0, 1 },	//99
	{ "TXS",				0, 0, 1, 0 },	//9A
	{ "???",				0, 0, 1, 0 },	//9B
	{ "???",				0, 0, 1, 0 },	//9C
	{ "STA\t*,X",		2, 0, 0, 1 },	//9D
	{ "???",				0, 0, 1, 0 },	//9E
	{ "???",				0, 0, 1, 0 },	//9F
	{ "LDY\t#*",		1, 0, 1, 0 },	//A0
	{ "LDA\t(*,X)",	1, 0, 0, 0 },	//A1
	{ "LDX\t#*",		1, 0, 1, 0 },	//A2
	{ "???",				0, 0, 1, 0 },	//A3
	{ "LDY\t*",			1, 0, 0, 0 },	//A4
	{ "LDA\t*",			1, 0, 0, 0 },	//A5
	{ "LDX\t*",			1, 0, 0, 0 },	//A6
	{ "???",				0, 0, 1, 0 },	//A7
	{ "TAY",				0, 0, 1, 0 },	//A8
	{ "LDA\t#*",		1, 0, 1, 0 },	//A9
	{ "TAX",				0, 0, 1, 0 },	//AA
	{ "???",				0, 0, 1, 0 },	//AB
	{ "LDY\t*",			2, 0, 0, 0 },	//AC
	{ "LDA\t*",			2, 0, 0, 0 },	//AD
	{ "LDX\t*",			2, 0, 0, 0 },	//AE
	{ "???",				0, 0, 1, 0 },	//AF
	{ "BCS\t$*",		1, 1, 1, 0 },	//B0
	{ "LDA\t(*),Y",	1, 0, 0, 0 },	//B1
	{ "???",				0, 0, 1, 0 },	//B2
	{ "???",				0, 0, 1, 0 },	//B3
	{ "LDY\t*,X",		1, 0, 0, 0 },	//B4
	{ "LDA\t*,X",		1, 0, 0, 0 },	//B5
	{ "LDX\t*,Y",		1, 0, 0, 0 },	//B6
	{ "???",				0, 0, 1, 0 },	//B7
	{ "CLV",				0, 0, 1, 0 },	//B8
	{ "LDA\t*,Y",		2, 0, 0, 0 },	//B9
	{ "TSX",				0, 0, 1, 0 },	//BA
	{ "???",				0, 0, 1, 0 },	//BB
	{ "LDY\t*,X",		2, 0, 0, 0 },	//BC
	{ "LDA\t*,X",		2, 0, 0, 0 },	//BD
	{ "LDX\t*,Y",		2, 0, 0, 0 },	//BE
	{ "???",				0, 0, 1, 0 },	//BF
	{ "CPY\t#*",		1, 0, 1, 0 },	//C0
	{ "CMP\t(*,X)",	1, 0, 0, 0 },	//C1
	{ "???",				0, 0, 1, 0 },	//C2
	{ "???",				0, 0, 1, 0 },	//C3
	{ "CPY\t*",			1, 0, 0, 0 },	//C4
	{ "CMP\t*",			1, 0, 0, 0 },	//C5
	{ "DEC\t*",			1, 0, 0, 0 },	//C6
	{ "???",				0, 0, 1, 0 },	//C7
	{ "INY",				0, 0, 1, 0 },	//C8
	{ "CMP\t#*",		1, 0, 1, 0 },	//C9
	{ "DEX",				0, 0, 1, 0 },	//CA
	{ "???",				0, 0, 1, 0 },	//CB
	{ "CPY\t*",			2, 0, 0, 0 },	//CC
	{ "CMP\t*",			2, 0, 0, 0 },	//CD
	{ "DEC\t*",			2, 0, 0, 0 },	//CE
	{ "???",				0, 0, 1, 0 },	//CF
	{ "BNE\t$*",		1, 1, 1, 0 },	//D0
	{ "CMP\t(*),Y",	1, 0, 0, 0 },	//D1
	{ "???",				0, 0, 1, 0 },	//D2
	{ "???",				0, 0, 1, 0 },	//D3
	{ "???",				0, 0, 1, 0 },	//D4
	{ "CMP\t*,X",		1, 0, 0, 0 },	//D5
	{ "DEC\t*,X",		1, 0, 0, 0 },	//D6
	{ "???",				0, 0, 1, 0 },	//D7
	{ "CLD",				0, 0, 1, 0 },	//D8
	{ "CMP\t*,Y",		2, 0, 0, 0 },	//D9
	{ "???",				0, 0, 1, 0 },	//DA
	{ "???",				0, 0, 1, 0 },	//DB
	{ "???",				0, 0, 1, 0 },	//DC
	{ "CMP\t*,X",		2, 0, 0, 0 },	//DD
	{ "DEC\t*,X",		2, 0, 0, 0 },	//DE
	{ "???",				0, 0, 1, 0 },	//DF
	{ "CPX\t#*",		1, 0, 1, 0 },	//E0
	{ "SBC\t(*,X)",	1, 0, 0, 0 },	//E1
	{ "???",				0, 0, 1, 0 },	//E2
	{ "???",				0, 0, 1, 0 },	//E3
	{ "CPX\t*",			1, 0, 0, 0 },	//E4
	{ "SBC\t*",			1, 0, 0, 0 },	//E5
	{ "INC\t*",			1, 0, 0, 0 },	//E6
	{ "???",				0, 0, 1, 0 },	//E7
	{ "INX",				0, 0, 1, 0 },	//E8
	{ "SBC\t#*",		1, 0, 1, 0 },	//E9
	{ "NOP",				0, 0, 1, 0 },	//EA
	{ "???",				0, 0, 1, 0 },	//EB
	{ "CPX\t*",			2, 0, 0, 0 },	//EC
	{ "SBC\t*",			2, 0, 0, 0 },	//ED
	{ "INC\t*",			2, 0, 0, 0 },	//EE
	{ "???",				0, 0, 1, 0 },	//EF
	{ "BEQ\t$*",		1, 1, 1, 0 },	//F0
	{ "SBC\t(*),Y",	1, 0, 0, 0 },	//F1
	{ "???",				0, 0, 1, 0 },	//F2
	{ "???",				0, 0, 1, 0 },	//F3
	{ "???",				0, 0, 1, 0 },	//F4
	{ "SBC\t*,X",		1, 0, 0, 0 },	//F5
	{ "INC\t*,X",		1, 0, 0, 0 },	//F6
	{ "???",				0, 0, 1, 0 },	//F7
	{ "SED",				0, 0, 1, 0 },	//F8
	{ "SBC\t*,Y",		2, 0, 0, 0 },	//F9
	{ "???",				0, 0, 1, 0 },	//FA
	{ "???",				0, 0, 1, 0 },	//FB
	{ "???",				0, 0, 1, 0 },	//FC
	{ "SBC\t*,X",		2, 0, 0, 0 },	//FD
	{ "INC\t*,X",		2, 0, 0, 0 },	//FE
	{ "???",				0, 0, 1, 0 },	//FF
	{ "\0",				0, 0, 1, 0 }
};

typedef struct
{
	char* name;
	WORD addr;
} symtable_rec;

symtable_rec symtable[] = { 
	{ "NGFLAG",		0x0001 },			
	{ "CASINI",		0x0002 },			
	{ "CASINI+1",	0x0003 },			
	{ "RAMLO",		0x0004 },			
	{ "RAMLO+1",	0x0005 },			
	{ "TRAMSZ",		0x0006 },			
	{ "CMCMD",		0x0007 },			
	{ "WARMST",		0x0008 },			
	{ "BOOT",		0x0009 },			
	{ "DOSVEC",		0x000A },			
	{ "DOSVEC+1",	0x000B },			
	{ "DOSINI",		0x000C },			
	{ "DOSINI+1",	0x000D },			
	{ "APPMHI",		0x000E },			
	{ "APPMHI+1",	0x000F },			
	{ "POKMSK",		0x0010 },			
	{ "BRKKEY",		0x0011 },			
	{ "RTCLOK",		0x0012 },			
	{ "RTCLOK+1",	0x0013 },			
	{ "RTCLOK+2",	0x0014 },			
	{ "BUFADR",		0x0015 },			
	{ "BUFADR+1",	0x0016 },			
	{ "ICCOMT",		0x0017 },			
	{ "DSKFMS",		0x0018 },			
	{ "DSKFMS+1",	0x0019 },			
	{ "DSKUTL",		0x001A },			
	{ "DSKUTL+1",	0x001B },			
	{ "ABUFPT",		0x001C },			
	{ "ABUFPT+1",	0x001D },			
	{ "ABUFPT+2",	0x001E },			
	{ "ABUFPT+3",	0x001F },			
	{ "ICHIDZ",		0x0020 },			
	{ "ICDNOZ",		0x0021 },			
	{ "ICCOMZ",		0x0022 },			
	{ "ICSTAZ",		0x0023 },			
	{ "ICBALZ",		0x0024 },			
	{ "ICBAHZ",		0x0025 },			
	{ "ICPTLZ",		0x0026 },			
	{ "ICPTHZ",		0x0027 },			
	{ "ICBLLZ",		0x0028 },			
	{ "ICBLHZ",		0x0029 },			
	{ "ICAX1Z",		0x002A },			
	{ "ICAX2Z",		0x002B },			
	{ "ICAX3Z",		0x002C },			
	{ "ICAX4Z",		0x002D },			
	{ "ICAX5Z",		0x002E },			
	{ "ICAX6Z",		0x002F },			
	{ "STATUS",		0x0030 },			
	{ "CHKSUM",		0x0031 },			
	{ "BUFRLO",		0x0032 },			
	{ "BUFRHI",		0x0033 },			
	{ "BFENLO",		0x0034 },			
	{ "BFENHI",		0x0035 },			
	{ "LTEMP",		0x0036 },			
	{ "LTEMP+1",	0x0037 },			
	{ "BUFRFL",		0x0038 },			
	{ "RECVDN",		0x0039 },			
	{ "XMTDON",		0x003A },			
	{ "CHKSNT",		0x003B },			
	{ "NOCKSM",		0x003C },			
	{ "BPTR",		0x003D },			
	{ "FTYPE",		0x003E },			
	{ "FEOF",		0x003F },			
	{ "FREQ",		0x0040 },			
	{ "SOUNDR",		0x0041 },			
	{ "CRITIC",		0x0042 },			
	{ "FMSZPG",		0x0043 },			
	{ "FMSZPG+1",	0x0044 },			
	{ "FMSZPG+2",	0x0045 },			
	{ "FMSZPG+3",	0x0046 },			
	{ "FMSZPG+4",	0x0047 },			
	{ "FMSZPG+5",	0x0048 },			
	{ "FMSZPG+6",	0x0049 },			
	{ "ZCHAIN",		0x004A },			
	{ "ZCHAIN+1",	0x004B },			
	{ "DSTAT",		0x004C },			
	{ "ATRACT",		0x004D },			
	{ "DRKMSK",		0x004E },			
	{ "COLRSH",		0x004F },			
	{ "TEMP",		0x0050 },			
	{ "HOLD1",		0x0051 },			
	{ "LMARGN",		0x0052 },			
	{ "RMARGN",		0x0053 },			
	{ "ROWCRS",		0x0054 },			
	{ "COLCRS",		0x0055 },			
	{ "COLCRS+1",	0x0056 },			
	{ "DINDEX",		0x0057 },			
	{ "SAVMSC",		0x0058 },			
	{ "SAVMSC+1",	0x0059 },			
	{ "OLDROW",		0x005A },			
	{ "OLDCOL",		0x005B },			
	{ "OLDCOL+1",	0x005C },			
	{ "OLDCHR",		0x005D },			
	{ "OLDADR",		0x005E },			
	{ "OLDADR+1",	0x005F },			
	{ "FKDEF",		0x0060 },			
	{ "FKDEF+1",	0x0061 },			
	{ "PALNTS",		0x0062 },			
	{ "LOGCOL",		0x0063 },			
	{ "ADRESS",		0x0064 },			
	{ "ADRESS+1",	0x0065 },			
	{ "MLTTMP",		0x0066 },			
	{ "MLTTMP+1",	0x0067 },			
	{ "SAVADR",		0x0068 },			
	{ "SAVADR+1",	0x0069 },			
	{ "RAMTOP",		0x006A },			
	{ "BUFCNT",		0x006B },			
	{ "BUFSTR",		0x006C },			
	{ "BUFSTR+1",	0x006D },			
	{ "BITMSK",		0x006E },			
	{ "SHFAMT",		0x006F },			
	{ "ROWAC",		0x0070 },			
	{ "ROWAC+1",	0x0071 },			
	{ "COLAC",		0x0072 },			
	{ "COLAC+1",	0x0073 },			
	{ "ENDPT",		0x0074 },			
	{ "ENDPT+1",	0x0075 },			
	{ "DELTAR",		0x0076 },			
	{ "DELTAC",		0x0077 },			
	{ "DELTAC+1",	0x0078 },			
	{ "KEYDEF",		0x0079 },			
	{ "KEYDEF+1",	0x007A },			
	{ "SWPFLG",		0x007B },			
	{ "HOLDCH",		0x007C },			
	{ "INSDAT",		0x007D },			
	{ "COUNTR",		0x007E },			
	{ "COUNTR+1",	0x007F },			
	{ "LOMEM",		0x0080 },			
	{ "LOMEM+1",	0x0081 },			
	{ "VNTP",		0x0082 },			
	{ "VNTP+1",		0x0083 },			
	{ "VNTD",		0x0084 },			
	{ "VNTD+1",		0x0085 },			
	{ "VVTP",		0x0086 },			
	{ "VVTP+1",		0x0087 },			
	{ "STMTAB",		0x0088 },			
	{ "STMTAB+1",	0x0089 },			
	{ "STMCUR",		0x008A },			
	{ "STMCUR+1",	0x008B },			
	{ "STARP",		0x008C },			
	{ "STARP+1",	0x008D },			
	{ "RUNSTK",		0x008E },			
	{ "RUNSTK+1",	0x008F },			
	{ "TOPSTK",		0x0090 },			
	{ "TOPSTK+1",	0x0091 },			
	{ "MEOLFLG",	0x0092 },			
	{ "POKADR",		0x0095 },			
	{ "POKADR+1",	0x0096 },			
	{ "DATAD",		0x00B6 },			
	{ "DATALN",		0x00B7 },			
	{ "DATALN+1",	0x00B8 },			
	{ "STOPLN",		0x00BA },			
	{ "STOPLN+1",	0x00BB },			
	{ "SAVCUR",		0x00BE },			
	{ "IOCMD",		0x00C0 },			
	{ "IODVC",		0x00C1 },			
	{ "PROMPT",		0x00C2 },			
	{ "ERRSAVE",	0x00C3 },			
	{ "COLOUR",		0x00C8 },			
	{ "PTABW",		0x00C9 },			
	{ "LOADFLG",	0x00CA },			
	{ "FR0",			0x00D4 },			
	{ "FR0+1",		0x00D5 },			
	{ "FR0+2",		0x00D6 },			
	{ "FR0+3",		0x00D7 },			
	{ "FR0+4",		0x00D8 },			
	{ "FR0+5",		0x00D9 },			
	{ "FRE",			0x00DA },			
	{ "FRE+1",		0x00DB },			
	{ "FRE+2",		0x00DC },			
	{ "FRE+3",		0x00DD },			
	{ "FRE+4",		0x00DE },			
	{ "FRE+5",		0x00DF },			
	{ "FR1",			0x00E0 },			
	{ "FR1+1",		0x00E1 },			
	{ "FR1+2",		0x00E2 },			
	{ "FR1+3",		0x00E3 },			
	{ "FR1+4",		0x00E4 },			
	{ "FR1+5",		0x00E5 },			
	{ "FR2",			0x00E6 },			
	{ "FR2+1",		0x00E7 },			
	{ "FR2+2",		0x00E8 },			
	{ "FR2+3",		0x00E9 },			
	{ "FR2+4",		0x00EA },			
	{ "FR2+5",		0x00EB },			
	{ "FRX",			0x00EC },			
	{ "EEXP",		0x00ED },			
	{ "NSIGN",		0x00EE },			
	{ "ESIGN",		0x00EF },			
	{ "FCHRFLG",	0x00F0 },			
	{ "DIGRT",		0x00F1 },			
	{ "CIX",			0x00F2 },			
	{ "INBUFF",		0x00F3 },			
	{ "INBUFF+1",	0x00F4 },			
	{ "ZTEMP1",		0x00F5 },			
	{ "ZTEMP1+1",	0x00F6 },			
	{ "ZTEMP4",		0x00F7 },			
	{ "ZTEMP4+1",	0x00F8 },			
	{ "ZTEMP3",		0x00F9 },			
	{ "ZTEMP3+1",	0x00FA },			
	{ "RADFLG",		0x00FB },			
	{ "FLPTR",		0x00FC },			
	{ "FLPTR+1",	0x00FD },			
	{ "FPTR2",		0x00FE },			
	{ "FPTR2+1",	0x00FF },			

	{ "VDSLST",		0x0200 },			
	{ "VDSLST+1",	0x0201 },			
	{ "VPRCED",		0x0202 },			
	{ "VPRCED+1",	0x0203 },			
	{ "VINTER",		0x0204 },			
	{ "VINTER+1",	0x0205 },			
	{ "VBREAK",		0x0206 },			
	{ "VBREAK+1",	0x0207 },			
	{ "VKEYBD",		0x0208 },			
	{ "VKEYBD+1",	0x0209 },			
	{ "VSERIN",		0x020A },			
	{ "VSERIN+1",	0x020B },			
	{ "VSEROR",		0x020C },			
	{ "VSEROR+1",	0x020D },			
	{ "VSEROC",		0x020E },			
	{ "VSEROC+1",	0x020F },			
	{ "VTIMR1",		0x0210 },			
	{ "VTIMR1+1",	0x0211 },			
	{ "VTIMR2",		0x0212 },			
	{ "VTIMR2+1",	0x0213 },			
	{ "VTIMR4",		0x0214 },			
	{ "VTIMR4+1",	0x0215 },			
	{ "VIMIRQ",		0x0216 },			
	{ "VIMIRQ+1",	0x0217 },			
	{ "CDTMV1",		0x0218 },			
	{ "CDTMV1+1",	0x0219 },			
	{ "CDTMV2",		0x021A },			
	{ "CDTMV2+1",	0x021B },			
	{ "CDTMV3",		0x021C },			
	{ "CDTMV3+1",	0x021D },			
	{ "CDTMV4",		0x021E },			
	{ "CDTMV4+1",	0x021F },			
	{ "CDTMV5",		0x0220 },			
	{ "CDTMV5+1",	0x0221 },			
	{ "VVBLKI",		0x0222 },			
	{ "VVBLKI+1",	0x0223 },			
	{ "VVBLKD",		0x0224 },			
	{ "VVBLKD+1",	0x0225 },			
	{ "CDTMA1",		0x0226 },			
	{ "CDTMA1+1",	0x0227 },			
	{ "CDTMA2",		0x0228 },			
	{ "CDTMA2+1",	0x0229 },			
	{ "CDTMF3",		0x022A },			
	{ "SRTIMR",		0x022B },			
	{ "CDTMF4",		0x022C },			
	{ "INTEMP",		0x022D },			
	{ "CDTMF5",		0x022E },			
	{ "SDMCTL",		0x022F },			
	{ "SDLSTL",		0x0230 },			
	{ "SDLSTH",		0x0231 },			
	{ "SSKCTL",		0x0232 },			
	{ "SPARE",		0x0233 },			
	{ "LPENH",		0x0234 },			
	{ "LPENV",		0x0235 },			
	{ "BRKKY",		0x0236 },			
	{ "BRKKY+1",	0x0237 },			
	{ "VPIRQ",		0x0238 },			
	{ "VPIRQ+1",	0x0239 },			
	{ "CDEVIC",		0x023A },			
	{ "CCOMND",		0x023B },			
	{ "CAUX1",		0x023C },			
	{ "CAUX2",		0x023D },			
	{ "TMPSIO",		0x023E },			
	{ "ERRFLG",		0x023F },			
	{ "DFLAGS",		0x0240 },			
	{ "DBSECT",		0x0241 },			
	{ "BOOTAD",		0x0242 },			
	{ "BOOTAD+1",	0x0243 },			
	{ "COLDST",		0x0244 },			
	{ "RECLEN",		0x0245 },			
	{ "DSKTIM",		0x0246 },			
	{ "PDVMSK",		0x0247 },			
	{ "SHPDVS",		0x0248 },			
	{ "PDMSK",		0x0249 },			
	{ "RELADR",		0x024A },			
	{ "RELADR+1",	0x024B },			
	{ "PPTMPA",		0x024C },			
	{ "PPTMPX",		0x024D },			
	{ "CHSALT",		0x026B },			
	{ "VSFLAG",		0x026C },			
	{ "KEYDIS",		0x026D },			
	{ "FINE",		0x026E },			
	{ "GPRIOR",		0x026F },			
	{ "PADDL0",		0x0270 },			
	{ "PADDL1",		0x0271 },			
	{ "PADDL2",		0x0272 },			
	{ "PADDL3",		0x0273 },			
	{ "PADDL4",		0x0274 },			
	{ "PADDL5",		0x0275 },			
	{ "PADDL6",		0x0276 },			
	{ "PADDL7",		0x0277 },			
	{ "STICK0",		0x0278 },			
	{ "STICK1",		0x0279 },			
	{ "STICK2",		0x027A },			
	{ "STICK3",		0x027B },			
	{ "PTRIG0",		0x027C },			
	{ "PTRIG1",		0x027D },			
	{ "PTRIG2",		0x027E },			
	{ "PTRIG3",		0x027F },			
	{ "PTRIG4",		0x0280 },			
	{ "PTRIG5",		0x0281 },			
	{ "PTRIG6",		0x0282 },			
	{ "PTRIG7",		0x0283 },			
	{ "STRIG0",		0x0284 },			
	{ "STRIG1",		0x0285 },			
	{ "STRIG2",		0x0286 },			
	{ "STRIG3",		0x0287 },			
	{ "HIBYTE",		0x0288 },			
	{ "WMODE",		0x0289 },			
	{ "BLIM",		0x028A },			
	{ "IMASK",		0x028B },			
	{ "JVECK",		0x028C },			
	{ "NEWADR",		0x028E },			
	{ "TXTROW",		0x0290 },			
	{ "TXTCOL",		0x0291 },			
	{ "TXTCOL+1",	0x0292 },			
	{ "TINDEX",		0x0293 },			
	{ "TXTMSC",		0x0294 },			
	{ "TXTMSC+1",	0x0295 },			
	{ "TXTOLD",		0x0296 },			
	{ "TXTOLD+1",	0x0297 },			
	{ "TXTOLD+2",	0x0298 },			
	{ "TXTOLD+3",	0x0299 },			
	{ "TXTOLD+4",	0x029A },			
	{ "TXTOLD+5",	0x029B },			
	{ "CRETRY",		0x029C },			
	{ "HOLD3",		0x029D },			
	{ "SUBTMP",		0x029E },			
	{ "HOLD2",		0x029F },			
	{ "DMASK",		0x02A0 },			
	{ "TMPLBT",		0x02A1 },			
	{ "ESCFLG",		0x02A2 },			
	{ "TABMAP",		0x02A3 },			
	{ "TABMAP+1",	0x02A4 },			
	{ "TABMAP+2",	0x02A5 },			
	{ "TABMAP+3",	0x02A6 },			
	{ "TABMAP+4",	0x02A7 },			
	{ "TABMAP+5",	0x02A8 },			
	{ "TABMAP+6",	0x02A9 },			
	{ "TABMAP+7",	0x02AA },			
	{ "TABMAP+8",	0x02AB },			
	{ "TABMAP+9",	0x02AC },			
	{ "TABMAP+A",	0x02AD },			
	{ "TABMAP+B",	0x02AE },			
	{ "TABMAP+C",	0x02AF },			
	{ "TABMAP+D",	0x02B0 },			
	{ "TABMAP+E",	0x02B1 },			
	{ "LOGMAP",		0x02B2 },			
	{ "LOGMAP+1",	0x02B3 },			
	{ "LOGMAP+2",	0x02B4 },			
	{ "LOGMAP+3",	0x02B5 },			
	{ "INVFLG",		0x02B6 },			
	{ "FILFLG",		0x02B7 },			
	{ "TMPROW",		0x02B8 },			
	{ "TMPCOL",		0x02B9 },			
	{ "TMPCOL+1",	0x02BA },			
	{ "SCRFLG",		0x02BB },			
	{ "HOLD4",		0x02BC },			
	{ "DRETRY",		0x02BD },			
	{ "SHFLOC",		0x02BE },			
	{ "BOTSCR",		0x02BF },			
	{ "PCOLR0",		0x02C0 },			
	{ "PCOLR1",		0x02C1 },			
	{ "PCOLR2",		0x02C2 },			
	{ "PCOLR3",		0x02C3 },			
	{ "COLOR0",		0x02C4 },			
	{ "COLOR1",		0x02C5 },			
	{ "COLOR2",		0x02C6 },			
	{ "COLOR3",		0x02C7 },			
	{ "COLOR4",		0x02C8 },			
	{ "RUNADR",		0x02C9 },			
	{ "RUNADR+1",	0x02CA },			
	{ "HIUSED",		0x02CB },			
	{ "HIUSED+1",	0x02CC },			
	{ "ZHIUSE",		0x02CD },			
	{ "ZHIUSE+1",	0x02CE },			
	{ "GBYTEA",		0x02CF },			
	{ "GBYTEA+1",	0x02D0 },			
	{ "LOADAD",		0x02D1 },			
	{ "LOADAD+1",	0x02D2 },			
	{ "ZLOADA",		0x02D3 },			
	{ "ZLOADA+1",	0x02D4 },			
	{ "DSCTLN",		0x02D5 },			
	{ "DSCTLN+1",	0x02D6 },			
	{ "ACMISR",		0x02D7 },			
	{ "ACMISR+1",	0x02D8 },			
	{ "KRPDER",		0x02D9 },			
	{ "KEYREP",		0x02DA },			
	{ "NOCLIK",		0x02DB },			
	{ "HELPFG",		0x02DC },			
	{ "DMASAV",		0x02DD },			
	{ "PBPNT",		0x02DE },			
	{ "PBUFSZ",		0x02DF },			
	{ "RUNAD",		0x02E0 },			
	{ "RUNAD+1",	0x02E1 },			
	{ "INITAD",		0x02E2 },			
	{ "INITAD+1",	0x02E3 },			
	{ "RAMSIZ",		0x02E4 },			
	{ "MEMTOP",		0x02E5 },			
	{ "MEMTOP+1",	0x02E6 },			
	{ "MEMLO",		0x02E7 },			
	{ "MEMLO+1",	0x02E8 },			
	{ "HNDLOD",		0x02E9 },			
	{ "DVSTAT",		0x02EA },			
	{ "DVSTAT+1",	0x02EB },			
	{ "DVSTAT+2",	0x02EC },			
	{ "DVSTAT+3",	0x02ED },			
	{ "CBAUDL",		0x02EE },			
	{ "CBAUDH",		0x02EF },			
	{ "CRSINH",		0x02F0 },			
	{ "KEYDEL",		0x02F1 },			
	{ "CH1",			0x02F2 },			
	{ "CHACT",		0x02F3 },			
	{ "CHBAS",		0x02F4 },			
	{ "NEWROW",		0x02F5 },			
	{ "NEWCOL",		0x02F6 },			
	{ "NEWCOL+1",	0x02F7 },			
	{ "ROWINC",		0x02F8 },			
	{ "COLINC",		0x02F9 },			
	{ "CHAR",		0x02FA },			
	{ "ATACHR",		0x02FB },			
	{ "CH",			0x02FC },			
	{ "FILDAT",		0x02FD },			
	{ "DSPFLG",		0x02FE },			
	{ "SSFLAG",		0x02FF },			


	{ "DDEVIC",		0x0300 },			
	{ "DUNIT",		0x0301 },			
	{ "DCOMND",		0x0302 },			
	{ "DSTATS",		0x0303 },			
	{ "DBUFLO",		0x0304 },			
	{ "DBUFHI",		0x0305 },			
	{ "DTIMLO",		0x0306 },			
	{ "DUNUSE",		0x0307 },			
	{ "DBYTLO",		0x0308 },			
	{ "DBYTHI",		0x0309 },			
	{ "DAUX1",		0x030A },			
	{ "DAUX2",		0x030B },			
	{ "TIMER1",		0x030C },			
	{ "TIMER1+1",	0x030D },			
	{ "ADDCOR",		0x030E },			
	{ "CASFLG",		0x030F },			
	{ "TIMER2",		0x0310 },			
	{ "TIMER2+1",	0x0311 },			
	{ "TEMP1",		0x0312 },			
	{ "TEMP1+1",	0x0313 },			
	{ "TEMP2",		0x0314 },			
	{ "TEMP3",		0x0315 },			
	{ "SAVIO",		0x0316 },			
	{ "TIMFLG",		0x0317 },			
	{ "STACKP",		0x0318 },			
	{ "TSTAT",		0x0319 },			
	{ "HATABS",		0x031A },			/*HATABS 1-34*/
	{ "PUTBT1",		0x033D },			
	{ "PUTBT2",		0x033E },			
	{ "PUTBT3",		0x033F },			
	{ "B0-ICHID",	0x0340 },			
	{ "B0-ICDNO",	0x0341 },			
	{ "B0-ICCOM",	0x0342 },			
	{ "B0-ICSTA",	0x0343 },			
	{ "B0-ICBAL",	0x0344 },			
	{ "B0-ICBAH",	0x0345 },			
	{ "B0-ICPTL",	0x0346 },			
	{ "B0-ICPTH",	0x0347 },			
	{ "B0-ICBLL",	0x0348 },			
	{ "B0-ICBLH",	0x0349 },			
	{ "B0-ICAX1",	0x034A },			
	{ "B0-ICAX2",	0x034B },			
	{ "B0-ICAX3",	0x034C },			
	{ "B0-ICAX4",	0x034D },			
	{ "B0-ICAX5",	0x034E },			
	{ "B0-ICAX6",	0x034F },			
	{ "B1-ICHID",	0x0350 },			
	{ "B1-ICDNO",	0x0351 },			
	{ "B1-ICCOM",	0x0352 },			
	{ "B1-ICSTA",	0x0353 },			
	{ "B1-ICBAL",	0x0354 },			
	{ "B1-ICBAH",	0x0355 },			
	{ "B1-ICPTL",	0x0356 },			
	{ "B1-ICPTH",	0x0357 },			
	{ "B1-ICBLL",	0x0358 },			
	{ "B1-ICBLH",	0x0359 },			
	{ "B1-ICAX1",	0x035A },			
	{ "B1-ICAX2",	0x035B },			
	{ "B1-ICAX3",	0x035C },			
	{ "B1-ICAX4",	0x035D },			
	{ "B1-ICAX5",	0x035E },			
	{ "B1-ICAX6",	0x035F },			
	{ "B2-ICHID",	0x0360 },			
	{ "B2-ICDNO",	0x0361 },			
	{ "B2-ICCOM",	0x0362 },			
	{ "B2-ICSTA",	0x0363 },			
	{ "B2-ICBAL",	0x0364 },			
	{ "B2-ICBAH",	0x0365 },			
	{ "B2-ICPTL",	0x0366 },			
	{ "B2-ICPTH",	0x0367 },			
	{ "B2-ICBLL",	0x0368 },			
	{ "B2-ICBLH",	0x0369 },			
	{ "B2-ICAX1",	0x036A },			
	{ "B2-ICAX2",	0x036B },			
	{ "B2-ICAX3",	0x036C },			
	{ "B2-ICAX4",	0x036D },			
	{ "B2-ICAX5",	0x036E },			
	{ "B2-ICAX6",	0x036F },			
	{ "B3-ICHID",	0x0370 },			
	{ "B3-ICDNO",	0x0371 },			
	{ "B3-ICCOM",	0x0372 },			
	{ "B3-ICSTA",	0x0373 },			
	{ "B3-ICBAL",	0x0374 },			
	{ "B3-ICBAH",	0x0375 },			
	{ "B3-ICPTL",	0x0376 },			
	{ "B3-ICPTH",	0x0377 },			
	{ "B3-ICBLL",	0x0378 },			
	{ "B3-ICBLH",	0x0379 },			
	{ "B3-ICAX1",	0x037A },			
	{ "B3-ICAX2",	0x037B },			
	{ "B3-ICAX3",	0x037C },			
	{ "B3-ICAX4",	0x037D },			
	{ "B3-ICAX5",	0x037E },			
	{ "B3-ICAX6",	0x037F },			
	{ "B4-ICHID",	0x0380 },			
	{ "B4-ICDNO",	0x0381 },			
	{ "B4-ICCOM",	0x0382 },			
	{ "B4-ICSTA",	0x0383 },			
	{ "B4-ICBAL",	0x0384 },			
	{ "B4-ICBAH",	0x0385 },			
	{ "B4-ICPTL",	0x0386 },			
	{ "B4-ICPTH",	0x0387 },			
	{ "B4-ICBLL",	0x0388 },			
	{ "B4-ICBLH",	0x0389 },			
	{ "B4-ICAX1",	0x038A },			
	{ "B4-ICAX2",	0x038B },			
	{ "B4-ICAX3",	0x038C },			
	{ "B4-ICAX4",	0x038D },			
	{ "B4-ICAX5",	0x038E },			
	{ "B4-ICAX6",	0x038F },			
	{ "B5-ICHID",	0x0390 },			
	{ "B5-ICDNO",	0x0391 },			
	{ "B5-ICCOM",	0x0392 },			
	{ "B5-ICSTA",	0x0393 },			
	{ "B5-ICBAL",	0x0394 },			
	{ "B5-ICBAH",	0x0395 },			
	{ "B5-ICPTL",	0x0396 },			
	{ "B5-ICPTH",	0x0397 },			
	{ "B5-ICBLL",	0x0398 },			
	{ "B5-ICBLH",	0x0399 },			
	{ "B5-ICAX1",	0x039A },			
	{ "B5-ICAX2",	0x039B },			
	{ "B5-ICAX3",	0x039C },			
	{ "B5-ICAX4",	0x039D },			
	{ "B5-ICAX5",	0x039E },			
	{ "B5-ICAX6",	0x039F },			
	{ "B6-ICHID",	0x03A0 },			
	{ "B6-ICDNO",	0x03A1 },			
	{ "B6-ICCOM",	0x03A2 },			
	{ "B6-ICSTA",	0x03A3 },			
	{ "B6-ICBAL",	0x03A4 },			
	{ "B6-ICBAH",	0x03A5 },			
	{ "B6-ICPTL",	0x03A6 },			
	{ "B6-ICPTH",	0x03A7 },			
	{ "B6-ICBLL",	0x03A8 },			
	{ "B6-ICBLH",	0x03A9 },			
	{ "B6-ICAX1",	0x03AA },			
	{ "B6-ICAX2",	0x03AB },			
	{ "B6-ICAX3",	0x03AC },			
	{ "B6-ICAX4",	0x03AD },			
	{ "B6-ICAX5",	0x03AE },			
	{ "B6-ICAX6",	0x03AF },			
	{ "B7-ICHID",	0x03B0 },			
	{ "B7-ICDNO",	0x03B1 },			
	{ "B7-ICCOM",	0x03B2 },			
	{ "B7-ICSTA",	0x03B3 },			
	{ "B7-ICBAL",	0x03B4 },			
	{ "B7-ICBAH",	0x03B5 },			
	{ "B7-ICPTL",	0x03B6 },			
	{ "B7-ICPTH",	0x03B7 },			
	{ "B7-ICBLL",	0x03B8 },			
	{ "B7-ICBLH",	0x03B9 },			
	{ "B7-ICAX1",	0x03BA },			
	{ "B7-ICAX2",	0x03BB },			
	{ "B7-ICAX3",	0x03BC },			
	{ "B7-ICAX4",	0x03BD },			
	{ "B7-ICAX5",	0x03BE },			
	{ "B7-ICAX6",	0x03BF },			
	{ "PRNBUF",		0x03C0 },			/*PRNBUF 1-39 */
	{ "SUPERF",		0x03E8 },			
	{ "CKEY",		0x03E9 },			
	{ "CASSBT",		0x03EA },			
	{ "CARTCK",		0x03EB },			
	{ "DERRF",		0x03EC },			
	{ "ACMVAR",		0x03ED },			/*ACMVAR 1-10*/
	{ "BASICF",		0x03F8 },			
	{ "MINTLK",		0x03F9 },			
	{ "GINTLK",		0x03FA },			
	{ "CHLINK",		0x03FB },			
	{ "CHLINK+1",	0x03FC },			
	{ "CASBUF",		0x03FD },			
 
	{ "M0PF",		0xD000 },			
	{ "HPOSP0",		0xD000 },			
	{ "M1PF",		0xD001 },			
	{ "HPOSP1",		0xD001 },			
	{ "M2PF",		0xD002 },			
	{ "HPOSP2",		0xD002 },			
	{ "M3PF",		0xD003 },			
	{ "HPOSP3",		0xD003 },			
	{ "P0PF",		0xD004 },			
	{ "HPOSM0",		0xD004 },			
	{ "P1PF",		0xD005 },			
	{ "HPOSM1",		0xD005 },			
	{ "P2PF",		0xD006 },			
	{ "HPOSM2",		0xD006 },			
	{ "P3PF",		0xD007 },			
	{ "HPOSM3",		0xD007 },			
	{ "M0PL",		0xD008 },			
	{ "SIZEP0",		0xD008 },			
	{ "M1PL",		0xD009 },			
	{ "SIZEP1",		0xD009 },			
	{ "M2PL",		0xD00A },			
	{ "HPOSP2",		0xD00A },			
	{ "M3PL",		0xD00B },			
	{ "HPOSP3",		0xD00B },			
	{ "P0PL",		0xD00C },			
	{ "SIZEM",		0xD00C },			
	{ "P1PL",		0xD00D },			
	{ "GRAFP0",		0xD00D },			
	{ "P2PL",		0xD00E },			
	{ "GRAFP1",		0xD00E },			
	{ "P3PL",		0xD00F },			
	{ "GRAFP2",		0xD00F },			
	{ "TRIG0",		0xD010 },			
	{ "GRAFP3",		0xD010 },			
	{ "TRIG1",		0xD011 },			
	{ "GRAFM",		0xD011 },			
	{ "TRIG2",		0xD012 },			
	{ "COLPM0",		0xD012 },			
	{ "TRIG3",		0xD013 },			
	{ "COLPM1",		0xD013 },			
	{ "PAL",			0xD014 },			
	{ "COLPM2",		0xD014 },			
	{ "COLPM3",		0xD015 },			
	{ "COLPF0",		0xD016 },			
	{ "COLPF1",		0xD017 },			
	{ "COLPF2",		0xD018 },			
	{ "COLPF3",		0xD019 },			
	{ "COLBK",		0xD01A },			
	{ "PRIOR",		0xD01B },			
	{ "VDELAY",		0xD01C },			
	{ "GRACTL",		0xD01D },			
	{ "HITCLR",		0xD01E },			
	{ "CONSOL",		0xD01F },			
	
	{ "POT0",		0xD200 },			
	{ "AUDF1",		0xD200 },			
	{ "POT1",		0xD201 },			
	{ "AUDC1",		0xD201 },			
	{ "POT2",		0xD202 },			
	{ "AUDF2",		0xD202 },			
	{ "POT3",		0xD203 },			
	{ "AUDC2",		0xD203 },			
	{ "POT4",		0xD204 },			
	{ "AUDF3",		0xD204 },			
	{ "POT5",		0xD205 },			
	{ "AUDC3",		0xD205 },			
	{ "POT6",		0xD206 },			
	{ "AUDF4",		0xD206 },			
	{ "POT7",		0xD207 },			
	{ "AUDC4",		0xD207 },			
	{ "ALLPOT",		0xD208 },			
	{ "AUDCTL",		0xD208 },			
	{ "KBCODE",		0xD209 },			
	{ "STIMER",		0xD209 },			
	{ "RANDOM",		0xD20A },			
	{ "SKREST",		0xD20A },			
	{ "POTGO",		0xD20B },			
	{ "SERIN",		0xD20D },			
	{ "SEROUT",		0xD20D },			
	{ "IRQST",		0xD20E },			
	{ "IRQEN",		0xD20E },			
	{ "SKSTAT",		0xD20F },			
	{ "SKCTL",		0xD20F },			
	
	{ "PORTA",		0xD300 },			
	{ "PORTB",		0xD301 },			
	{ "PACTL",		0xD302 },			
	{ "PBCTL",		0xD303 },			
	
	{ "DMACTL",		0xD400 },			
	{ "CHACTL",		0xD401 },			
	{ "DLISTL",		0xD402 },			
	{ "DLISTH",		0xD403 },			
	{ "HSCROL",		0xD404 },			
	{ "VSCROL",		0xD405 },			
	{ "PMBASE",		0xD407 },			
	{ "CHBASE",		0xD409 },			
	{ "WSYNC",		0xD40A },			
	{ "VCOUNT",		0xD40B },			
	{ "PENH",		0xD40C },			
	{ "PENL",		0xD40D },			
	{ "NMIEN",		0xD40E },			
	{ "NMIST",		0xD40F },			
	{ "NMIRES",		0xD40F },			
	
	{ "AFP",			0xD800 },			
	{ "FASC",		0xD8E6 },			
	{ "IFP",			0xD9AA },			
	{ "FPI",			0xD9D2 },			
	{ "ZPRO",		0xDA44 },			
	{ "ZF1",			0xDA46 },			
	{ "FSUB",		0xDA60 },			
	{ "FADD",		0xDA66 },			
	{ "FMUL",		0xDADB },			
	{ "FDIV",		0xDB28 },			
	{ "PLYEVL",		0xDD40 },			
	{ "FLD0R",		0xDD89 },			
	{ "FLD0R",		0xDD8D },			
	{ "FLD1R",		0xDD98 },			
	{ "FLD1P",		0xDD9C },			
	{ "FST0R",		0xDDA7 },			
	{ "FST0P",		0xDDAB },			
	{ "FMOVE",		0xDDB6 },			
	{ "EXP",			0xDDC0 },			
	{ "EXP10",		0xDDCC },			
	{ "LOG",			0xDECD },			
	{ "LOG10",		0xDED1 },			
	
	{ "DSKINV",		0xE453 },			
	{ "CIOV",		0xE456 },			
	{ "SIOV",		0xE459 },			
	{ "SETVBV",		0xE45C },			
	{ "SYSVBV",		0xE45F },			
	{ "XITVBV",		0xE462 },			
	{ "SIOINV",		0xE465 },			
	{ "SENDEV",		0xE468 },			
	{ "INTINV",		0xE46B },			
	{ "CIOINV",		0xE46E },			
	{ "SELFSV",		0xE471 },			
	{ "WARMSV",		0xE474 },			
	{ "COLDSV",		0xE477 },			
	{ "RBLOKV",		0xE47A },			
	{ "CSOPIV",		0xE47D },			
	{ "PUPDIV",		0xE480 },			
	{ "SELFTSV",	0xE483 },			
	{ "PENTV",		0xE486 },			
	{ "PHUNLV",		0xE489 },			
	{ "PHINIV",		0xE48C },			
	{ "GPDVV",		0xE48F }
};

int symtable_size=sizeof(symtable)/sizeof(symtable_rec);


void OutputBlockDiss( BYTE* pbtBlock, WORD wOffset, WORD wEnd )
{
	WORD wPC_curr = 0;
	WORD wPC_end = wEnd - wOffset;
	WORD wInsLen = 0;
	WORD wInsCode = 0;
	BOOL bInsIncomplete = FALSE;

	while ( wPC_curr <= wPC_end )
	{
		wInsCode = pbtBlock[ wPC_curr ];
		wInsLen = instable[ wInsCode ].length;

		printf("%04X  ", wPC_curr + wOffset );

		if ( wPC_curr + wInsLen > wPC_end )
		{
			wInsLen = wPC_end - wPC_curr;
			bInsIncomplete = TRUE;
		}

		for ( int i = 0; i <= wInsLen; i++ )
		{
			printf("%02X ", pbtBlock[ wPC_curr + i ] );
		}

		for ( int i = 0; i < ( 3 - wInsLen ); i++ )
		{
			printf("   ");
		}

		char obuf[256];
		char *p;

		char* szSymbol = NULL;

		strcpy( obuf, instable[ wInsCode ].instruct );

		for (p = obuf; *p; p++)
		{
			if (*p == '*')
			{
				*p = '\0';
				p++;
				break;
			}
		}

		if ( !instable[ pbtBlock[ wPC_curr ] ].length )
		{
			printf( "%s\n", instable[pbtBlock[wPC_curr]].instruct );
		}
		else
		{
			if ( bInsIncomplete )
			{
				printf( "!!!\n" );
				break;
			}

	  		printf( "%s",obuf );

	  		if ( instable[wInsCode].branch )
			{
		  		int uPdata = (int) (signed char)pbtBlock[ wPC_curr + 1 ];
		  		printf( "%04X", wPC_curr + 2 + uPdata + wOffset );
	  		}
			else
			{
		  		if ( instable[wInsCode].length == 1 )
				{
					WORD wAddr = (BYTE)pbtBlock[ wPC_curr + 1 ];

					if ( !instable[ wInsCode ].immed )
						szSymbol = SymbolFind( wAddr, instable[ wInsCode ].write ? TRUE : FALSE );

					printf( "$%02X", wAddr );

		  		}
				else if ( instable[wInsCode].length == 2 )
				{
					WORD wAddr = (WORD) pbtBlock[ wPC_curr + 1 ] |
				 		(WORD)( pbtBlock[ wPC_curr + 2 ] << 8 );

					if ( !instable[ wInsCode ].immed )
						szSymbol = SymbolFind( wAddr, instable[ wInsCode ].write ? TRUE : FALSE );

					printf( "$%04X", wAddr );

		  		}
	  		}

			if ( szSymbol )
	  			printf("%s\t;%s\n", p, szSymbol );
			else
	  			printf("%s\n",p);
		}

		wPC_curr += ( wInsLen + 1 );
	}

}

char* SymbolFind( WORD addr, BOOL bWrite )
{
	int lo = 0;
	int mi = 0;
	int hi = symtable_size - 1;

	while ( lo < hi )
	{
		mi = ( lo + hi ) / 2;

		if ( symtable[ mi ].addr == addr )
		{
			break;
		}
		else
		{
			if ( symtable[ mi ].addr > addr )
				hi=mi;
			else
				lo=mi+1;
		}
	}

	if ( symtable[mi].addr == addr )
	{
		if ( mi>0 && symtable[mi-1].addr == addr )
		{
			mi--;
		}

		if ( bWrite )
		{
			if ( mi < symtable_size - 1 )
				if ( symtable[ mi + 1 ].addr == addr )
					mi++;
		}

	 	return symtable[ mi ].name;
	}

	else
		return NULL;
}