diff options
author | B. Watson <urchlay@slackware.uk> | 2024-05-16 01:43:09 -0400 |
---|---|---|
committer | B. Watson <urchlay@slackware.uk> | 2024-05-16 01:43:09 -0400 |
commit | a4cc3ad3504d634e379369862c9f9fd8eed379f3 (patch) | |
tree | 7b6f55c352a4ca62dddaa1b4a6854799111d2d2f /jindroush/lib/at_dis.cpp | |
parent | b33c25d1363110e6e4a714530f460b0ff951f56b (diff) | |
download | bw-atari8-tools-a4cc3ad3504d634e379369862c9f9fd8eed379f3.tar.gz |
Add Jindrich Kubec's tools.
Diffstat (limited to 'jindroush/lib/at_dis.cpp')
-rw-r--r-- | jindroush/lib/at_dis.cpp | 1201 |
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; +} + + + |