diff options
author | mazzoo <mazzoo@8d8ab74c-27aa-4a3d-9bde-523a2bc1f624> | 2009-02-14 21:01:30 +0000 |
---|---|---|
committer | mazzoo <mazzoo@8d8ab74c-27aa-4a3d-9bde-523a2bc1f624> | 2009-02-14 21:01:30 +0000 |
commit | bf83516eb002b35042c08f48e8c2c83b133b8064 (patch) | |
tree | d533ee0d97078831b378c26da33b9694e0c050c6 | |
parent | 8311d7bb7b0651dc8ece41b49198605db435a5cc (diff) |
dump_dip: add a Sitel SC144xx DIP Disassembler
git-svn-id: https://dedected.org/svn/trunk@75 8d8ab74c-27aa-4a3d-9bde-523a2bc1f624
-rw-r--r-- | com-on-air_cs-linux/dip_opcodes.txt | 136 | ||||
-rw-r--r-- | com-on-air_cs-linux/tools/Makefile | 2 | ||||
-rw-r--r-- | com-on-air_cs-linux/tools/dump_dip.c | 321 | ||||
-rw-r--r-- | com-on-air_cs-linux/tools/dump_dip.h | 225 |
4 files changed, 683 insertions, 1 deletions
diff --git a/com-on-air_cs-linux/dip_opcodes.txt b/com-on-air_cs-linux/dip_opcodes.txt new file mode 100644 index 0000000..70b49f0 --- /dev/null +++ b/com-on-air_cs-linux/dip_opcodes.txt @@ -0,0 +1,136 @@ +//---- +// DIP codes, partially explained +//---- + +BR label : branch to label +JMP label : jump to subroutine label +JMP1 label : jump to subroutine label if true (whatever) +RTN : return from subroutine +WNT x : wait x slots +WT x : wait x dect-clocks +U_INT0 : raise interrupt 0 +U_INT1 : raise interrupt 1 +U_INT2 : raise interrupt 2 +U_INT3 : raise interrupt 3 +U_PSC +U_VINT +P_EN : enable portbits +P_LDH x : set selected portbits to high +P_LDL x : set selected portbits to low +P_LD x : load portbit ??? +P_SC +M_WR : start transfer over microwire-output +M_RST : stop transfer over microwire-output +M_INI0 +M_INI1 +MEN1N : set microwire enable 1 low +MEN1 : set microwire enable 1 high +MEN2N : set microwire enable 2 low +MEN2 : set microwire enable 2 high +MEN3N : set microwire enable 3 low +MEN3 : set microwire enable 3 high +RFEN : enable clk output +RFDIS : disable clk output +D_ON : enable xor with DSC +D_OFF : disable xor with DSC +D_LDK : Load DSC Key +D_PREP : DSC Prepare +D_WRS : writes internal DSC state +D_LDS : load DSC state +D_RST : DSC Reset +BK_C : set upper address nibble +LD_PTR +BK_A +A_RST +A_LDR +A_LDW +A_MUTE : ADPCM mute +A_MTOFF : ADPCM mute off +BK_A1 +A_RST1 +A_LDR1 +A_LDW1 +A_MUTE1 : ADPCM1 mute +A_MTOFF1 : ADPCM1 mute off +B_RST : reset rx stuff +B_XOFF : disable B field CRC +B_XON : enable B field CRC +SLOTZERO : wait until in slot zero (partly understood) + + +//---- +// missing / unknown mnemonics +//---- + +WNTM1 +WNTP1 + +B_ST2 +B_XT +B_BTFU +UNLCK +B_SR +B_XR +EN_SL_ADJ +B_BRFU +B_RINV +B_RON + + +B_ST +B_AT +B_RC +B_BT +B_BTFP +B_AT2 +B_WRS +B_AR +B_BR +B_BRFP +B_AR2 + +WSC + +RCK_INT +RCK_EXT +B_WB_OFF +B_WB_ON +CLK1 +CLK3 +U_CK8 +U_CK4 +U_CK2 +U_CK1 + +A_RCV0 +A_RCV36 +A_RCV30 +A_RCV24 +A_RCV18 +A_RCV12 +A_RCV6 +A_RCV33 +A_RCV27 +A_RCV21 +A_RCV15 +A_RCV9 +A_RCV3 + +M_RD + +M_WRS + +A_STOFF +A_ALAW +A_DT +A_NORM +A_LIN +A_STON +A_DT1 + +A_STRN +C_ON +C_OFF + +C_LD + diff --git a/com-on-air_cs-linux/tools/Makefile b/com-on-air_cs-linux/tools/Makefile index deab733..7695a90 100644 --- a/com-on-air_cs-linux/tools/Makefile +++ b/com-on-air_cs-linux/tools/Makefile @@ -1,5 +1,5 @@ CFLAGS=-Wall -O2 -I.. -PROGS=coa_syncsniff pcap2cchan dump_eeprom +PROGS=coa_syncsniff pcap2cchan dump_eeprom dump_dip PCAP_PROGS=pcapstein dect_cli all:$(PROGS) $(PCAP_PROGS) diff --git a/com-on-air_cs-linux/tools/dump_dip.c b/com-on-air_cs-linux/tools/dump_dip.c new file mode 100644 index 0000000..189b791 --- /dev/null +++ b/com-on-air_cs-linux/tools/dump_dip.c @@ -0,0 +1,321 @@ +/* + * dump_dip - simple disassembler for sc144xx DIP codes + * + * usage: dump_dip [options] <files> + * options: + * -b byteswap + * + * example: + * dump_dip ../WinCD/install/M* > win_cd_dip.asm + * + * authors: + * (c) 2009 Matthias Wenzel - dect /at/ mazzoo /dot/ de + * + * license: + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + */ + +#include <stdio.h> +#include <stdint.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> +#include <unistd.h> +#include <sys/types.h> +#include <sys/stat.h> +#include <sys/mman.h> +#include <fcntl.h> + +#include "dump_dip.h" + + +uint32_t current_CPUs; +int files_done = 0; + +int opt_byteswap = 0; + +#define OP_CODE_SIZE 2 /* 16 bit DIP opcodes */ +#define THRESHOLD 50 /* min number of sequential opcodes before dumping */ +#define MAX_LABELS 4096 + + +struct op_code * get_op_code(uint8_t c) +{ + struct op_code * ret = NULL; + struct op_code * p = dip_op_code; + + while (p->mnemonic) + { + if (p->code == c) + return p; + p++; + } + + return ret; +} + +void dump_fw(uint8_t * fw, int fwsz) +{ + int i, j; + struct op_code * op; + + int nlabel=0; /* total number of labels in a FW */ + uint8_t label[MAX_LABELS]; + + /* first run: collect labels */ + for (i=0; i<fwsz; i+=2) + { + op = get_op_code(fw[i]); + if (!op) + { + printf("; !!! internal ERROR :(\n"); + exit(1); + } + if (op->param_type == PARAM_LABEL) + label[nlabel++] = fw[i+1]; + if (nlabel == MAX_LABELS) + { + printf("; !!! MAX_LABELS reached.\n"); + printf("; !!! aborting current firmware\n"); + return; + } + } + + /* second run: emit .asm code with labels */ + for (i=0; i<fwsz; i+=2) + { + op = get_op_code(fw[i]); + if (!op) + { + printf("; !!! internal ERROR :(\n"); + exit(1); + } + + /* see if we need to label the address */ + for (j=0; j<nlabel; j++){ + if (i/2 == label[j]) + { + printf("label_%2.2x:\n", label[j]); + goto label_done; + } + } +label_done: + + printf("\t%s", op->mnemonic); + switch (op->param_type) + { + case PARAM_NONE: + break; + case PARAM_LABEL: + printf("\tlabel_%2.2x", fw[i+1]); + break; + case PARAM_HEX: + printf("\t0x%2.2x", fw[i+1]); + break; + case PARAM_DEC: + printf("\t %3.1d", fw[i+1]); + break; + default: + printf("; !!! internal ERROR :(\n"); + exit(1); + } + printf("\n"); + current_CPUs &= op->cpu; + } +} + +void handle_mmap(uint8_t * map, int size, char * fname, int fcount) +{ + uint8_t * p = map; + int op_count = 0; + int rest = size; + + struct op_code * op; + uint8_t * pstart; + int FW_count = 0; + + while (rest>0) + { + pstart = p; + while( (op = get_op_code(*p)) ) + { + p += OP_CODE_SIZE; + op_count++; + } + + if (op_count > THRESHOLD) + { + current_CPUs = + M_14400 | + M_14401 | + M_14402 | + M_14404 | + M_14405 | + M_14420 | + M_14421 | + M_14422 | + M_14424; + printf("; ----------------------------------------\n"); + printf("; firmware_%d_%d offset %d size %d bytes\n; file %s\n", + fcount, + FW_count, + pstart - map, + op_count * OP_CODE_SIZE, + fname); + printf("; ----------------------------------------\n"); + printf("\n"); + + dump_fw(pstart, op_count * OP_CODE_SIZE); + + printf("\n"); + printf("; the above firmware is supported by the following CPUs:\n"); + int i=0; + while (current_CPUs) + { + printf("; %s\n", cpu_name[i++]); + current_CPUs>>=1; + } + printf("\n"); + printf("\n"); + + FW_count++; + } + + pstart += op_count * OP_CODE_SIZE; + + rest -= op_count * OP_CODE_SIZE; + rest --; + p++; + + op_count = 0; + } + +} + +void handle_file(char * fn) +{ + int ret; + ret = open(fn, O_RDONLY); + if (ret < 0) + { + printf("; !!! couldn't open(\"%s\"): %s\n", + fn, + strerror(errno)); + exit(1); + } + + int f = ret; + + ret = lseek(f, 0, SEEK_END); + if (ret < 0) + { + printf("; !!! couldn't lseek(SEEK_END): %s\n", + strerror(errno)); + exit(1); + } + + int fsz = ret; + + uint8_t * pf = NULL; + pf = mmap(NULL, fsz, PROT_READ, MAP_PRIVATE, f, 0); + if (pf == (void *) -1) + { +#if 0 + /* most commonly directories */ + printf("!!! couldn't mmap(%s): %s\n", + fn, + strerror(errno)); +#endif + }else{ + uint8_t * map; + if (opt_byteswap){ + map = malloc(fsz); + if (!map) + { + printf("; !!! ERROR: couln't malloc()\n"); + exit(1); + } + int i; + for (i=0; i<fsz; i+=2) + { + map[i+1] = pf[i+0]; + map[i+0] = pf[i+1]; + } + }else + map = pf; + + handle_mmap(map, fsz, fn, files_done); + + if (opt_byteswap) + free(map); + + files_done++; + ret = munmap(pf, fsz); + if (ret < 0) + { + printf("; !!! couldn't munmap(\"%s\"): %s\n", + fn, + strerror(errno)); + exit(1); + } + } + + ret = close(f); + if (ret < 0) + { + printf("; !!! couldn't close(\"%s\"): %s\n", + fn, + strerror(errno)); + exit(1); + } +} + +void usage(void) +{ + printf("dump_dip - simple disassembler for sc144xx DIP codes\n"); + printf("\n"); + printf("usage: dump_dip [options] <files>\n"); + printf("options:\n"); + printf(" -b byteswap\n"); + printf("\n"); + printf("example:\n"); + printf(" dump_dip ../WinCD/install/M* > win_cd_dip.asm\n"); + printf("\n"); +} + +int main(int argc, char ** argv){ + int n=1; + + if (argc == 1) + { + usage(); + exit(1); + } + + while (argv[n][0] == '-') + { + switch (argv[n][1]){ + case 'b': + opt_byteswap = 1; + break; + default: + printf("; !!! ERROR: unknown option %c\n", argv[n][1]); + usage(); + exit(1); + } + n++; + if (!argv[n]) + { + usage(); + exit(1); + } + } + + while (argv[n]) + handle_file(argv[n++]); + + printf("; +++ processed %d input files\n", files_done); + return 0; +} diff --git a/com-on-air_cs-linux/tools/dump_dip.h b/com-on-air_cs-linux/tools/dump_dip.h new file mode 100644 index 0000000..65bfec1 --- /dev/null +++ b/com-on-air_cs-linux/tools/dump_dip.h @@ -0,0 +1,225 @@ +/* + * dump_dip - simple disassembler for sc144xx DIP codes + * + * usage: dump_dip [options] <files> + * options: + * -b byteswap + * + * example: + * dump_dip ../WinCD/install/M* > win_cd_dip.asm + * + * authors: + * (c) 2009 Matthias Wenzel - dect /at/ mazzoo /dot/ de + * (c) 1999 Alfred Arnold + * + * license: + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + */ +#ifndef DUMP_DIP_H +#define DUMP_DIP_H + +#define M_14400 (1 << 0) +#define M_14401 (1 << 1) +#define M_14402 (1 << 2) +#define M_14404 (1 << 3) +#define M_14405 (1 << 4) +#define M_14420 (1 << 5) +#define M_14421 (1 << 6) +#define M_14422 (1 << 7) +#define M_14424 (1 << 8) + +#define PARAM_NONE 0 +#define PARAM_HEX 1 +#define PARAM_DEC 2 +#define PARAM_LABEL 3 + +char * cpu_name[] = +{ + "sc14400", + "sc14401", + "sc14402", + "sc14404", + "sc14405", + "sc14420", + "sc14421", + "sc14422", + "sc14424", +}; + +struct op_code { + char * mnemonic; + uint8_t code; + uint32_t cpu; + uint32_t param_type; +}; + +struct op_code dip_op_code[] = +{ + {"BR" , 0x01, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_LABEL}, + {"BRK" , 0x6e, M_14402 | M_14404 | M_14405 | M_14422 | M_14424, PARAM_NONE }, + {"JMP" , 0x02, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_LABEL}, + {"JMP1" , 0x03, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_LABEL}, + {"RTN" , 0x04, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"WNT" , 0x08, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_DEC }, + {"WT" , 0x09, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_DEC }, + {"WSC" , 0x48, M_14404 | M_14405 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"RFEN" , 0x0b, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"RFDIS" , 0x0a, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"BK_A" , 0x0e, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"BK_A1" , 0x05, M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"BK_C" , 0x0f, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"SLOTZERO" , 0x0d, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"EN_SL_ADJ", 0x2c, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"WNTP1" , 0x07, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"WNTM1" , 0x06, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"LD_PTR" , 0x0c, M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"UNLCK" , 0x28, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RX" , 0x49, M_14404 | M_14405 | M_14422 | M_14424, PARAM_HEX }, + {"A_TX" , 0x4a, M_14404 | M_14405 | M_14422 | M_14424, PARAM_HEX }, + {"A_MUTE" , 0xc1, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_MTOFF" , 0xc9, M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_MUTE1" , 0xca, M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_MTOFF1" , 0xcb, M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_STOFF" , 0xc2, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_STON" , 0xcc, M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV0" , 0x80, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV36" , 0x82, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV30" , 0x83, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV24" , 0x84, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV18" , 0x85, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV12" , 0x86, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV6" , 0x87, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV33" , 0x8a, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV27" , 0x8b, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV21" , 0x8c, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV15" , 0x8d, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV9" , 0x8e, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RCV3" , 0x8f, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_NORM" , 0xc5, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_RST" , 0xc0, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_LDR" , 0xc6, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"A_LDW" , 0xc7, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"A_RST1" , 0xeb, M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"A_LDR1" , 0xce, M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"A_LDW1" , 0xcf, M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"A_ST18" , 0xe1, M_14402 , PARAM_NONE }, + {"B_ST" , 0x31, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_ST2" , 0x21, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_PPT" , 0x22, M_14404 | M_14405 | M_14424, PARAM_NONE }, + {"B_ZT" , 0x22, M_14400 , PARAM_NONE }, + {"B_ZR" , 0x2a, M_14400 , PARAM_NONE }, + {"B_AT" , 0x32, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_AT2" , 0x37, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BT" , 0x34, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BTFM" , 0x23, M_14404 | M_14405 | M_14424, PARAM_HEX }, + {"B_BTFU" , 0x25, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BTFP" , 0x35, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BTDU" , 0x71, M_14404 | M_14405 | M_14424, PARAM_HEX }, + {"B_BTDP" , 0x72, M_14404 | M_14405 | M_14424, PARAM_HEX }, + {"B_XON" , 0x27, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_XOFF" , 0x26, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_SR" , 0x29, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_AR" , 0x3a, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_AR2" , 0x3f, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_RON" , 0x2f, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_RINV" , 0x2e, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_BR" , 0x3c, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BRFU" , 0x2d, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BRFP" , 0x3d, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BRFD" , 0x2a, M_14404 | M_14405 | M_14424, PARAM_HEX }, + {"B_BRDU" , 0x79, M_14404 | M_14405 | M_14424, PARAM_HEX }, + {"B_BRDP" , 0x7a, M_14404 | M_14405 | M_14424, PARAM_HEX }, + {"B_XR" , 0x2b, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_XT" , 0x24, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_WB_ON" , 0x65, M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_WB_OFF" , 0x64, M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_WRS" , 0x39, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_RC" , 0x33, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_RST" , 0x20, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"B_DIV1" , 0x4f, M_14405 , PARAM_NONE }, + {"B_DIV2" , 0x4e, M_14405 , PARAM_NONE }, + {"B_DIV4" , 0x4d, M_14405 , PARAM_NONE }, + {"C_LD" , 0xfa, M_14401 | M_14402 | M_14420 | M_14421 | M_14422 , PARAM_HEX }, + {"C_ON" , 0xee, M_14420 | M_14421 | M_14422 , PARAM_NONE }, + {"C_OFF" , 0xef, M_14420 | M_14421 | M_14422 , PARAM_NONE }, + {"C_LD2" , 0xba, M_14424, PARAM_HEX }, + {"C_ON2" , 0xae, M_14424, PARAM_NONE }, + {"C_OFF2" , 0xaf, M_14424, PARAM_NONE }, + {"D_LDK" , 0x50, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"D_PREP" , 0x44, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"D_WRS" , 0x5f, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"D_LDS" , 0x57, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"D_RST" , 0x40, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"M_WR" , 0xb9, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"M_RST" , 0xa9, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"M_INI0" , 0xa0, M_14404 | M_14405 | M_14424, PARAM_NONE }, + {"M_INI1" , 0xa1, M_14404 | M_14405 | M_14424, PARAM_NONE }, + {"MEN1N" , 0xa4, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"MEN1" , 0xa5, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"P_EN" , 0xe9, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"P_LDH" , 0xed, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"P_LDL" , 0xec, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"P_LD" , 0xe8, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"P_SC" , 0xea, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"U_INT0" , 0x61, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"U_INT1" , 0x6b, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"U_INT2" , 0x6d, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"U_INT3" , 0x6f, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"U_PSC" , 0x60, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {"U_VINT" , 0x63, M_14404 | M_14405 | M_14422 | M_14424, PARAM_HEX }, + + /* obsolete stuff - argument range may be incorrect */ + + {"D_ON" , 0x42, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"D_OFF" , 0x43, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"RCK_INT" , 0x62, M_14420 | M_14421 , PARAM_NONE }, + {"CLK1" , 0x66, M_14420 | M_14421 , PARAM_NONE }, + {"CLK3" , 0x67, M_14420 | M_14421 , PARAM_NONE }, + {"U_CK8" , 0x68, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"U_CK4" , 0x69, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"U_CK2" , 0x6a, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"U_CK1" , 0x6c, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"MEN3N" , 0xa2, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"MEN3" , 0xa3, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"MEN2N" , 0xa6, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"MEN2" , 0xa7, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"M_RD" , 0xa8, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_HEX }, + {"M_WRS" , 0xb8, M_14400 | M_14420 | M_14421 , PARAM_HEX }, + {"A_ALAW" , 0xc3, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"A_DT" , 0xc4, M_14400 | M_14401 | M_14420 | M_14421 , PARAM_NONE }, + {"A_LIN" , 0xc8, M_14420 | M_14421 , PARAM_NONE }, + {"A_DT1" , 0xcd, M_14420 | M_14421 , PARAM_NONE }, + {"A_STRN" , 0xe0, M_14420 | M_14421 , PARAM_NONE }, + {"RCK_EXT" , 0x63, M_14420 | M_14421 , PARAM_HEX }, + {"P_SPD0" , 0xe8, M_14400 , PARAM_HEX }, + {"P_SPD1" , 0xe9, M_14400 , PARAM_HEX }, + {"P_SPD2" , 0xea, M_14400 , PARAM_HEX }, + {"P_SPD3" , 0xeb, M_14400 , PARAM_HEX }, + {"P_SPD4" , 0xec, M_14400 , PARAM_HEX }, + {"P_SPD5" , 0xed, M_14400 , PARAM_HEX }, + {"P_SPD6" , 0xee, M_14400 , PARAM_HEX }, + {"P_SPD7" , 0xef, M_14400 , PARAM_HEX }, + {"P_RPD0" , 0xe0, M_14400 , PARAM_HEX }, + {"P_RPD1" , 0xe1, M_14400 , PARAM_HEX }, + {"P_RPD2" , 0xe2, M_14400 , PARAM_HEX }, + {"P_RPD3" , 0xe3, M_14400 , PARAM_HEX }, + {"P_RPD4" , 0xe4, M_14400 , PARAM_HEX }, + {"P_RPD5" , 0xe5, M_14400 , PARAM_HEX }, + {"P_RPD6" , 0xe6, M_14400 , PARAM_HEX }, + {"P_RPD7" , 0xe7, M_14400 , PARAM_HEX }, + + /* aliases */ + + {"B_TX" , 0x31, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BT2" , 0x25, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BR2" , 0x2d, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BTP" , 0x35, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_BRP" , 0x3d, M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_HEX }, + {"B_ON" , 0x27, M_14400 | M_14401 | M_14402 | M_14404 | M_14405 | M_14420 | M_14421 | M_14422 | M_14424, PARAM_NONE }, + {NULL, 0, 0, 0} +}; + +#endif /* DUMP_DIP_H */ |