aboutsummaryrefslogtreecommitdiff
path: root/jindroush/lib/at_dis.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'jindroush/lib/at_dis.cpp')
-rw-r--r--jindroush/lib/at_dis.cpp1201
1 files changed, 1201 insertions, 0 deletions
diff --git a/jindroush/lib/at_dis.cpp b/jindroush/lib/at_dis.cpp
new file mode 100644
index 0000000..e799258
--- /dev/null
+++ b/jindroush/lib/at_dis.cpp
@@ -0,0 +1,1201 @@
+// 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;
+}
+
+
+