v07i098: Generic assembler for micros, Part02/02
sources-request at mirror.TMC.COM
sources-request at mirror.TMC.COM
Wed Jan 21 02:11:42 AEST 1987
Submitted by: seismo!cisden!lmc
Mod.sources: Volume 7, Issue 98
Archive-name: micro.asm/Part02
[ Sorry about sending out that previous archive with intial tilde's
in it; makes it hard to send things via /usr/ucb/Mail, I know. -r$ ]
: This is a shar archieve. Extract with sh, not csh.
: The rest of this file will extract:
: 6502_ops.h 6803_ops.h 8085_ops.h
echo extracting - 6502_ops.h
sed 's/^X//' > 6502_ops.h << '/FUNKY/STUFF/'
X#define c64 1
X
Xopdclass o_immed = { 8, NO, NO, NO, 0};
Xopdclass o_zpage = { 8, NO, NO, NO, 0};
Xopdclass o_mem = { 16, NO, YES, NO, 0};
Xopdclass o_rel = { 8, YES, NO, YES, 0};
X
Xinsclass i_nomem = { 1, 0, &o_none, &o_none, 0, 0};
Xinsclass i_branch = { 2, 1, &o_rel, &o_none, 8, 0};
Xinsclass i_immed = { 2, 1, &o_immed, &o_none, 8, 0};
Xinsclass i_zpage = { 2, 1, &o_zpage, &o_none, 8, 0};
Xinsclass i_abs = { 3, 1, &o_mem, &o_none, 8, 0};
X
Xopdef optab[] = {
X { "adci", &i_immed, 0x69, geninstr},
X { "adcz", &i_zpage, 0x65, geninstr},
X { "adczx", &i_zpage, 0x75, geninstr},
X { "adca", &i_abs, 0x6d, geninstr},
X { "adcax", &i_abs, 0x7d, geninstr},
X { "adcay", &i_abs, 0x79, geninstr},
X { "adcix", &i_abs, 0x61, geninstr},
X { "adciy", &i_abs, 0x71, geninstr},
X { "andi", &i_immed, 0x29, geninstr},
X { "andz", &i_zpage, 0x25, geninstr},
X { "andzx", &i_zpage, 0x35, geninstr},
X { "anda", &i_abs, 0x2d, geninstr},
X { "andax", &i_abs, 0x3d, geninstr},
X { "anday", &i_abs, 0x39, geninstr},
X { "andix", &i_abs, 0x21, geninstr},
X { "andiy", &i_abs, 0x31, geninstr},
X { "aslac", &i_nomem, 0x0a, geninstr},
X { "aslz", &i_zpage, 0x06, geninstr},
X { "aslzx", &i_zpage, 0x16, geninstr},
X { "asla", &i_abs, 0x0e, geninstr},
X { "aslax", &i_abs, 0x1e, geninstr},
X { "bcc", &i_branch, 0x90, geninstr},
X { "bcs", &i_branch, 0xb0, geninstr},
X { "beq", &i_branch, 0xf0, geninstr},
X { "bitz", &i_zpage, 0x24, geninstr},
X { "bita", &i_abs, 0x2c, geninstr},
X { "bmi", &i_branch, 0x30, geninstr},
X { "bne", &i_branch, 0xd0, geninstr},
X { "bpl", &i_branch, 0x10, geninstr},
X { "brk", &i_nomem, 0x00, geninstr},
X { "bvc", &i_branch, 0x50, geninstr},
X { "bvs", &i_branch, 0x70, geninstr},
X { "clc", &i_nomem, 0x18, geninstr},
X { "cld", &i_nomem, 0xd8, geninstr},
X { "cli", &i_nomem, 0x58, geninstr},
X { "clv", &i_nomem, 0xb8, geninstr},
X { "cmpi", &i_immed, 0xc9, geninstr},
X { "cmpz", &i_zpage, 0xc5, geninstr},
X { "cmpzx", &i_zpage, 0xd5, geninstr},
X { "cmpa", &i_abs, 0xcd, geninstr},
X { "cmpax", &i_abs, 0xdd, geninstr},
X { "cmpay", &i_abs, 0xd9, geninstr},
X { "cmpix", &i_abs, 0xc1, geninstr},
X { "cmpiy", &i_abs, 0xd1, geninstr},
X { "cpxi", &i_immed, 0xe0, geninstr},
X { "cpxz", &i_zpage, 0xe4, geninstr},
X { "cpxa", &i_abs, 0xec, geninstr},
X { "cpyi", &i_immed, 0xc0, geninstr},
X { "cpyz", &i_zpage, 0xc4, geninstr},
X { "cpya", &i_abs, 0xcc, geninstr},
X { "decz", &i_zpage, 0xc6, geninstr},
X { "deczx", &i_zpage, 0xd6, geninstr},
X { "deca", &i_abs, 0xce, geninstr},
X { "decax", &i_abs, 0xde, geninstr},
X { "dex", &i_nomem, 0xca, geninstr},
X { "dey", &i_nomem, 0x88, geninstr},
X { "eori", &i_immed, 0x49, geninstr},
X { "eorz", &i_zpage, 0x45, geninstr},
X { "eorzx", &i_zpage, 0x55, geninstr},
X { "eora", &i_abs, 0x4d, geninstr},
X { "eorax", &i_abs, 0x5d, geninstr},
X { "eoray", &i_abs, 0x59, geninstr},
X { "eorix", &i_abs, 0x41, geninstr},
X { "eoriy", &i_abs, 0x51, geninstr},
X { "incz", &i_zpage, 0xe6, geninstr},
X { "inczx", &i_zpage, 0xf6, geninstr},
X { "inca", &i_abs, 0xee, geninstr},
X { "incax", &i_abs, 0xfe, geninstr},
X { "inx", &i_nomem, 0xe8, geninstr},
X { "iny", &i_nomem, 0xc8, geninstr},
X { "jmp", &i_abs, 0x4c, geninstr},
X { "jmpi", &i_abs, 0x6c, geninstr},
X { "jsr", &i_abs, 0x20, geninstr},
X { "ldai", &i_immed, 0xa9, geninstr},
X { "ldaz", &i_zpage, 0xa5, geninstr},
X { "ldazx", &i_zpage, 0xb5, geninstr},
X { "ldaa", &i_abs, 0xad, geninstr},
X { "ldaax", &i_abs, 0xbd, geninstr},
X { "ldaay", &i_abs, 0xb9, geninstr},
X { "ldaix", &i_abs, 0xa1, geninstr},
X { "ldaiy", &i_abs, 0xb1, geninstr},
X { "ldxi", &i_immed, 0xa2, geninstr},
X { "ldxz", &i_zpage, 0xa6, geninstr},
X { "ldxzy", &i_zpage, 0xb6, geninstr},
X { "ldxa", &i_abs, 0xae, geninstr},
X { "ldxay", &i_abs, 0xbe, geninstr},
X { "ldyi", &i_immed, 0xa0, geninstr},
X { "ldyz", &i_zpage, 0xa4, geninstr},
X { "ldyzx", &i_zpage, 0xb4, geninstr},
X { "ldya", &i_abs, 0xac, geninstr},
X { "ldyax", &i_abs, 0xbc, geninstr},
X { "lsrac", &i_nomem, 0x4a, geninstr},
X { "lsrz", &i_zpage, 0x46, geninstr},
X { "lsrzx", &i_zpage, 0x56, geninstr},
X { "lsra", &i_abs, 0x4e, geninstr},
X { "lsrax", &i_abs, 0x5e, geninstr},
X { "nop", &i_nomem, 0xea, geninstr},
X { "orai", &i_immed, 0x09, geninstr},
X { "oraz", &i_zpage, 0x05, geninstr},
X { "orazx", &i_zpage, 0x15, geninstr},
X { "oraa", &i_abs, 0x0d, geninstr},
X { "oraax", &i_abs, 0x1d, geninstr},
X { "oraay", &i_abs, 0x19, geninstr},
X { "oraix", &i_abs, 0x01, geninstr},
X { "oraiy", &i_abs, 0x11, geninstr},
X { "pha", &i_nomem, 0x48, geninstr},
X { "php", &i_nomem, 0x08, geninstr},
X { "pla", &i_nomem, 0x68, geninstr},
X { "plp", &i_nomem, 0x28, geninstr},
X { "rolac", &i_nomem, 0x2a, geninstr},
X { "rolz", &i_zpage, 0x26, geninstr},
X { "rolzx", &i_zpage, 0x36, geninstr},
X { "rola", &i_abs, 0x2e, geninstr},
X { "rolax", &i_abs, 0x3e, geninstr},
X { "rorac", &i_nomem, 0x6a, geninstr},
X { "rorz", &i_zpage, 0x66, geninstr},
X { "rorzx", &i_zpage, 0x76, geninstr},
X { "rora", &i_abs, 0x6e, geninstr},
X { "rorax", &i_abs, 0x7e, geninstr},
X { "rti", &i_nomem, 0x40, geninstr},
X { "rst", &i_nomem, 0x60, geninstr},
X { "sbci", &i_immed, 0xe9, geninstr},
X { "sbcz", &i_zpage, 0xe5, geninstr},
X { "sbczx", &i_zpage, 0xf5, geninstr},
X { "sbca", &i_abs, 0xed, geninstr},
X { "sbcax", &i_abs, 0xfd, geninstr},
X { "sbcay", &i_abs, 0xf9, geninstr},
X { "sbcix", &i_abs, 0xe1, geninstr},
X { "sbciy", &i_abs, 0xf1, geninstr},
X { "sec", &i_nomem, 0x38, geninstr},
X { "sed", &i_nomem, 0xf8, geninstr},
X { "sei", &i_nomem, 0x78, geninstr},
X { "staz", &i_zpage, 0x85, geninstr},
X { "stazx", &i_zpage, 0x95, geninstr},
X { "staa", &i_abs, 0x8d, geninstr},
X { "staax", &i_abs, 0x9d, geninstr},
X { "staay", &i_abs, 0x99, geninstr},
X { "staix", &i_abs, 0x81, geninstr},
X { "staiy", &i_abs, 0x91, geninstr},
X { "stxz", &i_zpage, 0x86, geninstr},
X { "stxzy", &i_zpage, 0x96, geninstr},
X { "stxa", &i_abs, 0x8e, geninstr},
X { "styz", &i_zpage, 0x84, geninstr},
X { "styzx", &i_zpage, 0x94, geninstr},
X { "stya", &i_abs, 0x8c, geninstr},
X { "tax", &i_nomem, 0xaa, geninstr},
X { "tay", &i_nomem, 0xa8, geninstr},
X { "tsx", &i_nomem, 0xba, geninstr},
X { "txa", &i_nomem, 0x8a, geninstr},
X { "txs", &i_nomem, 0x9a, geninstr},
X { "tya", &i_nomem, 0x98, geninstr}
X};
X
X#define oplen sizeof(optab)/sizeof(opdef)
X
Xsymbol predef[] = {
X { "acptr", 0xffa5, &o_mem, (segmnt *) 0 },
X { "chkin", 0xffc6, &o_mem, (segmnt *) 0 },
X { "chkout", 0xffc9, &o_mem, (segmnt *) 0 },
X { "chrin", 0xffcf, &o_mem, (segmnt *) 0 },
X { "chrout", 0xffd2, &o_mem, (segmnt *) 0 },
X { "ciout", 0xffa8, &o_mem, (segmnt *) 0 },
X { "cint", 0xff81, &o_mem, (segmnt *) 0 },
X { "clall", 0xffe7, &o_mem, (segmnt *) 0 },
X { "close", 0xffc3, &o_mem, (segmnt *) 0 },
X { "clrchn", 0xffcc, &o_mem, (segmnt *) 0 },
X { "getin", 0xffe4, &o_mem, (segmnt *) 0 },
X { "iobase", 0xfff3, &o_mem, (segmnt *) 0 },
X { "ioinit", 0xff84, &o_mem, (segmnt *) 0 },
X { "listen", 0xffb1, &o_mem, (segmnt *) 0 },
X { "load", 0xffd5, &o_mem, (segmnt *) 0 },
X { "membot", 0xff9c, &o_mem, (segmnt *) 0 },
X { "memtop", 0xff99, &o_mem, (segmnt *) 0 },
X { "open", 0xffc0, &o_mem, (segmnt *) 0 },
X { "plot", 0xfff0, &o_mem, (segmnt *) 0 },
X { "ramtas", 0xff87, &o_mem, (segmnt *) 0 },
X { "rdtim", 0xffde, &o_mem, (segmnt *) 0 },
X { "readst", 0xffb7, &o_mem, (segmnt *) 0 },
X { "restor", 0xff8a, &o_mem, (segmnt *) 0 },
X { "save", 0xffd8, &o_mem, (segmnt *) 0 },
X { "scnkey", 0xff9f, &o_mem, (segmnt *) 0 },
X { "screen", 0xffed, &o_mem, (segmnt *) 0 },
X { "second", 0xff93, &o_mem, (segmnt *) 0 },
X { "setlfs", 0xffba, &o_mem, (segmnt *) 0 },
X { "setmsg", 0xff90, &o_mem, (segmnt *) 0 },
X { "setnam", 0xffbd, &o_mem, (segmnt *) 0 },
X { "settim", 0xffdb, &o_mem, (segmnt *) 0 },
X { "settmo", 0xffa2, &o_mem, (segmnt *) 0 },
X { "stop", 0xffe1, &o_mem, (segmnt *) 0 },
X { "talk", 0xffb4, &o_mem, (segmnt *) 0 },
X { "tksa", 0xff96, &o_mem, (segmnt *) 0 },
X { "udtim", 0xffea, &o_mem, (segmnt *) 0 },
X { "unlsn", 0xffae, &o_mem, (segmnt *) 0 },
X { "untlk", 0xffab, &o_mem, (segmnt *) 0 },
X { "vector", 0xff8d, &o_mem, (segmnt *) 0 },
X { "", 0x0, &o_none, (segmnt *) 0 }
X};
/FUNKY/STUFF/
echo extracting - 6803_ops.h
sed 's/^X//' > 6803_ops.h << '/FUNKY/STUFF/'
X
Xopdclass o_reg = { 1, NO , NO , NO , 0};
Xopdclass o_smem = { 8, NO , NO , NO , 0};
Xopdclass o_rmem = { 8, YES, NO , YES, -2};
Xopdclass o_mem = {16, NO , NO , NO , 0};
Xopdclass o_off = { 8, YES, NO , NO , 0};
Xopdclass o_data = { 8, YES, NO , NO , 0};
Xopdclass o_data2 = {16, YES, NO , NO , 0};
Xopdclass o_cond = { 4, NO , NO , NO , 0};
X
Xinsclass i_reg = {1, 1, &o_reg , &o_none, -4, 0};
Xinsclass i_regp = {1, 1, &o_reg , &o_none, 0, 0};
Xinsclass i_rimed = {2, 2, &o_reg , &o_data, -6, 8};
Xinsclass i_rimd2 = {3, 2, &o_reg , &o_data2,-6, 16};
Xinsclass i_rdir = {2, 2, &o_reg , &o_smem, -6, 8};
Xinsclass i_rindx = {2, 2, &o_reg , &o_off , -6, 8};
Xinsclass i_rxtd = {3, 2, &o_reg , &o_mem , -6,16};
Xinsclass i_imed = {3, 1, &o_data2,&o_none, 16, 0};
Xinsclass i_dir = {2, 1, &o_smem, &o_none, 8, 0};
Xinsclass i_indx = {2, 1, &o_off , &o_none, 8, 0};
Xinsclass i_xtd = {3, 1, &o_mem , &o_none, 16, 0};
Xinsclass i_rel = {2, 1, &o_rmem, &o_none, 8, 0};
Xinsclass i_cond = {2, 2, &o_cond, &o_rmem, 0, 8};
X
Xchoicedef c_adc = {"adcs" , "adcz" , 2, 0, 0xff, NO};
Xchoicedef c_add = {"adds" , "addz" , 2, 0, 0xff, NO};
Xchoicedef c_and = {"ands" , "andz" , 2, 0, 0xff, NO};
Xchoicedef c_bit = {"bits" , "bitz" , 2, 0, 0xff, NO};
Xchoicedef c_cmp = {"cmps" , "cmpz" , 2, 0, 0xff, NO};
Xchoicedef c_eor = {"eors" , "eorz" , 2, 0, 0xff, NO};
Xchoicedef c_lda = {"ldas" , "ldaz" , 2, 0, 0xff, NO};
Xchoicedef c_ldr = {"ldrs" , "ldrz" , 2, 0, 0xff, NO};
Xchoicedef c_ora = {"oras" , "oraz" , 2, 0, 0xff, NO};
Xchoicedef c_sbc = {"sbcs" , "sbcz" , 2, 0, 0xff, NO};
Xchoicedef c_sub = {"subs" , "subz" , 2, 0, 0xff, NO};
Xchoicedef c_dad = {"addds", "adddz", 1, 0, 0xff, NO};
Xchoicedef c_ldd = {"ldds" , "lddz" , 1, 0, 0xff, NO};
Xchoicedef c_std = {"stds" , "stdz" , 1, 0, 0xff, NO};
Xchoicedef c_sta = {"stas" , "staz" , 1, 0, 0xff, NO};
Xchoicedef c_str = {"strs" , "strz" , 1, 0, 0xff, NO};
Xchoicedef c_dsb = {"subds", "subdz", 1, 0, 0xff, NO};
Xchoicedef c_jsr = {"jsrs" , "jsrz" , 1, 0, 0xff, NO};
Xchoicedef c_cpx = {"cpxs" , "cpxz" , 1, 0, 0xff, NO};
X
Xopdef optab[] = {
X "aba" , &i_noopd, 0x1b, geninstr,
X "abx" , &i_noopd, 0x3a, geninstr,
X "adc" , (insclass *)&c_adc, 0x00, choiceinstr,
X "adcs" , &i_rdir , 0x99, geninstr,
X "adci" , &i_rimed, 0x89, geninstr,
X "adcx" , &i_rindx, 0xa9, geninstr,
X "adcz" , &i_rxtd , 0xb9, geninstr,
X "add" , (insclass *)&c_add, 0x00, choiceinstr,
X "adds" , &i_rdir , 0x9b, geninstr,
X "addi" , &i_rimed, 0x8b, geninstr,
X "addd" , (insclass *)&c_dad, 0x00, choiceinstr,
X "addds" , &i_dir , 0xd3, geninstr,
X "adddi" , &i_imed , 0xc3, geninstr,
X "adddx" , &i_indx , 0xe3, geninstr,
X "adddz" , &i_xtd , 0xf3, geninstr,
X "addx" , &i_rindx, 0xab, geninstr,
X "addz" , &i_rxtd , 0xbb, geninstr,
X "and" , (insclass *)&c_and, 0x00, choiceinstr,
X "ands" , &i_rdir , 0x94, geninstr,
X "andi" , &i_rimed, 0x84, geninstr,
X "andx" , &i_rindx, 0xa4, geninstr,
X "andz" , &i_rxtd , 0xb4, geninstr,
X "asla" , &i_reg , 0x48, geninstr,
X "asld" , &i_noopd, 0x05, geninstr,
X "aslx" , &i_indx , 0x68, geninstr,
X "asl" , &i_xtd , 0x78, geninstr,
X "asra" , &i_reg , 0x47, geninstr,
X "asrx" , &i_indx , 0x67, geninstr,
X "asr" , &i_xtd , 0x77, geninstr,
X "bc" , &i_cond , 0x20, geninstr,
X "bit" , (insclass *)&c_bit, 0x00, choiceinstr,
X "bits" , &i_rdir , 0x95, geninstr,
X "biti" , &i_rimed, 0x85, geninstr,
X "bitx" , &i_rindx, 0xa5, geninstr,
X "bitz" , &i_rxtd , 0xb5, geninstr,
X "bra" , &i_rel , 0x20, geninstr,
X "bsr" , &i_rel , 0x8d, geninstr,
X "cba" , &i_noopd, 0x11, geninstr,
X "clc" , &i_noopd, 0x0c, geninstr,
X "cli" , &i_noopd, 0x0e, geninstr,
X "clra" , &i_reg , 0x4f, geninstr,
X "clrx" , &i_indx , 0x6f, geninstr,
X "clr" , &i_xtd , 0x7f, geninstr,
X "clv" , &i_noopd, 0x0a, geninstr,
X "cmp" , (insclass *)&c_cmp, 0x00, choiceinstr,
X "cmps" , &i_rdir , 0x91, geninstr,
X "cmpi" , &i_rimed, 0x81, geninstr,
X "cmpx" , &i_rindx, 0xa1, geninstr,
X "cmpz" , &i_rxtd , 0xb1, geninstr,
X "coma" , &i_reg , 0x43, geninstr,
X "comx" , &i_indx , 0x63, geninstr,
X "com" , &i_xtd , 0x73, geninstr,
X "cpx" , (insclass *)&c_cpx, 0x00, choiceinstr,
X "cpxs" , &i_dir , 0x9c, geninstr,
X "cpxi" , &i_imed , 0x8c, geninstr,
X "cpxx" , &i_indx , 0xac, geninstr,
X "cpxz" , &i_xtd , 0xbc, geninstr,
X "daa" , &i_noopd, 0x19, geninstr,
X "deca" , &i_reg , 0x4a, geninstr,
X "decx" , &i_indx , 0x6a, geninstr,
X "dec" , &i_xtd , 0x7a, geninstr,
X "des" , &i_noopd, 0x34, geninstr,
X "dex" , &i_noopd, 0x09, geninstr,
X "eor" , (insclass *)&c_eor, 0x00, choiceinstr,
X "eors" , &i_rdir , 0x98, geninstr,
X "eori" , &i_rimed, 0x88, geninstr,
X "eorx" , &i_rindx, 0xa8, geninstr,
X "eorz" , &i_rxtd , 0xb8, geninstr,
X "inca" , &i_reg , 0x4c, geninstr,
X "incx" , &i_indx , 0x6c, geninstr,
X "inc" , &i_xtd , 0x7c, geninstr,
X "ins" , &i_noopd, 0x31, geninstr,
X "inx" , &i_noopd, 0x08, geninstr,
X "jmpx" , &i_indx , 0x6e, geninstr,
X "jmp" , &i_xtd , 0x7e, geninstr,
X "jsr" , (insclass *)&c_jsr, 0x00, choiceinstr,
X "jsrs" , &i_dir , 0x9d, geninstr,
X "jsrx" , &i_indx , 0xad, geninstr,
X "jsrz" , &i_xtd , 0xbd, geninstr,
X "lda" , (insclass *)&c_lda, 0x00, choiceinstr,
X "ldas" , &i_rdir , 0x96, geninstr,
X "ldai" , &i_rimed, 0x86, geninstr,
X "ldax" , &i_rindx, 0xa6, geninstr,
X "ldaz" , &i_rxtd , 0xb6, geninstr,
X "ldd" , (insclass *)&c_ldd, 0x00, choiceinstr,
X "ldds" , &i_dir , 0xdc, geninstr,
X "lddi" , &i_imed , 0xcc, geninstr,
X "lddx" , &i_indx , 0xec, geninstr,
X "lddz" , &i_xtd , 0xfc, geninstr,
X "ldr" , (insclass *)&c_ldr, 0x00, choiceinstr,
X "ldrs" , &i_rdir , 0x9e, geninstr,
X "ldri" , &i_rimd2, 0x8e, geninstr,
X "ldrx" , &i_rindx, 0xae, geninstr,
X "ldrz" , &i_rxtd , 0xbe, geninstr,
X "lsla" , &i_reg , 0x45, geninstr,
X "lsld" , &i_noopd, 0x05, geninstr,
X "lslx" , &i_indx , 0x65, geninstr,
X "lsl" , &i_xtd , 0x75, geninstr,
X "lsra" , &i_reg , 0x44, geninstr,
X "lsrd" , &i_noopd, 0x04, geninstr,
X "lsrx" , &i_indx , 0x64, geninstr,
X "lsr" , &i_xtd , 0x74, geninstr,
X "mul" , &i_noopd, 0x3d, geninstr,
X "nega" , &i_reg , 0x40, geninstr,
X "negx" , &i_indx , 0x60, geninstr,
X "neg" , &i_xtd , 0x70, geninstr,
X "nop" , &i_noopd, 0x01, geninstr,
X "ora" , (insclass *)&c_ora, 0x00, choiceinstr,
X "oras" , &i_rdir , 0x9a, geninstr,
X "orai" , &i_rimed, 0x8a, geninstr,
X "orax" , &i_rindx, 0xaa, geninstr,
X "oraz" , &i_rxtd , 0xba, geninstr,
X "psha" , &i_regp , 0x36, geninstr,
X "pshx" , &i_noopd, 0x3c, geninstr,
X "pula" , &i_regp , 0x32, geninstr,
X "pulx" , &i_noopd, 0x38, geninstr,
X "rola" , &i_reg , 0x49, geninstr,
X "rolx" , &i_indx , 0x69, geninstr,
X "rol" , &i_xtd , 0x79, geninstr,
X "rora" , &i_reg , 0x46, geninstr,
X "rorx" , &i_indx , 0x66, geninstr,
X "ror" , &i_xtd , 0x76, geninstr,
X "rti" , &i_noopd, 0x3b, geninstr,
X "rts" , &i_noopd, 0x39, geninstr,
X "sba" , &i_noopd, 0x10, geninstr,
X "sbc" , (insclass *)&c_sbc, 0x00, choiceinstr,
X "sbcs" , &i_rdir , 0x92, geninstr,
X "sbci" , &i_rimed, 0x82, geninstr,
X "sbcx" , &i_rindx, 0xa2, geninstr,
X "sbcz" , &i_rxtd , 0xb2, geninstr,
X "sec" , &i_noopd, 0x0d, geninstr,
X "sei" , &i_noopd, 0x0f, geninstr,
X "sev" , &i_noopd, 0x0b, geninstr,
X "sta" , (insclass *)&c_sta, 0x00, choiceinstr,
X "stas" , &i_rdir , 0x97, geninstr,
X "stax" , &i_rindx, 0xa7, geninstr,
X "staz" , &i_rxtd , 0xb7, geninstr,
X "std" , (insclass *)&c_std, 0x00, choiceinstr,
X "stds" , &i_dir , 0xdd, geninstr,
X "stdx" , &i_indx , 0xed, geninstr,
X "stdz" , &i_xtd , 0xfd, geninstr,
X "str" , (insclass *)&c_str, 0x00, choiceinstr,
X "strs" , &i_rdir , 0x9f, geninstr,
X "strx" , &i_rindx, 0xaf, geninstr,
X "strz" , &i_rdir , 0xbf, geninstr,
X "sub" , (insclass *)&c_sub, 0x00, choiceinstr,
X "subs" , &i_rdir , 0x90, geninstr,
X "subi" , &i_rimed, 0x80, geninstr,
X "subd" , (insclass *)&c_dsb, 0x00, choiceinstr,
X "subds" , &i_dir , 0x93, geninstr,
X "subdi" , &i_imed , 0x83, geninstr,
X "subdx" , &i_indx , 0xa3, geninstr,
X "subdz" , &i_xtd , 0xb3, geninstr,
X "subx" , &i_rindx, 0xa0, geninstr,
X "subz" , &i_rxtd , 0xb0, geninstr,
X "swi" , &i_noopd, 0x3f, geninstr,
X "tab" , &i_noopd, 0x16, geninstr,
X "tap" , &i_noopd, 0x06, geninstr,
X "tba" , &i_noopd, 0x17, geninstr,
X "tpa" , &i_noopd, 0x07, geninstr,
X "tsta" , &i_reg , 0x4d, geninstr,
X "tstx" , &i_indx , 0x6d, geninstr,
X "tst" , &i_xtd , 0x7d, geninstr,
X "tsx" , &i_noopd, 0x30, geninstr,
X "txs" , &i_noopd, 0x35, geninstr,
X "wai" , &i_noopd, 0x3e, geninstr,
X};
X
X#define oplen sizeof(optab)/sizeof(opdef)
X
Xsymbol predef[] = {
X {"ra" , 0x0, &o_reg , (segmnt *)0 },
X {"rb" , 0x1, &o_reg , (segmnt *)0 },
X {"rx" , 0x1, &o_reg , (segmnt *)0 },
X {"sp" , 0x0, &o_reg , (segmnt *)0 },
X {"nz" , 0x6, &o_cond, (segmnt *)0 },
X {"z" , 0x7, &o_cond, (segmnt *)0 },
X {"ne" , 0x6, &o_cond, (segmnt *)0 },
X {"eq" , 0x7, &o_cond, (segmnt *)0 },
X {"nc" , 0x4, &o_cond, (segmnt *)0 },
X {"c" , 0x5, &o_cond, (segmnt *)0 },
X {"gez", 0xc, &o_cond, (segmnt *)0 },
X {"gz" , 0xe, &o_cond, (segmnt *)0 },
X {"gt" , 0x2, &o_cond, (segmnt *)0 },
X {"lez", 0xf, &o_cond, (segmnt *)0 },
X {"le" , 0x3, &o_cond, (segmnt *)0 },
X {"lz" , 0xd, &o_cond, (segmnt *)0 },
X {"m" , 0xb, &o_cond, (segmnt *)0 },
X {"ov" , 0x9, &o_cond, (segmnt *)0 },
X {"nov", 0x8, &o_cond, (segmnt *)0 },
X {"p" , 0xa, &o_cond, (segmnt *)0 },
X {"ge" , 0x4, &o_cond, (segmnt *)0 },
X {"lt" , 0x5, &o_cond, (segmnt *)0 },
X {"" , 0x0, &o_none, (segmnt *)0 },
X};
/FUNKY/STUFF/
echo extracting - 8085_ops.h
sed 's/^X//' > 8085_ops.h << '/FUNKY/STUFF/'
Xopdclass o_reg = { 3, NO , NO , NO , 0};
Xopdclass o_rp = { 2, NO , NO , NO , 0};
Xopdclass o_mem = {16, NO , YES, NO , 0};
Xopdclass o_data = { 8, YES, NO , NO , 0};
Xopdclass o_data2 = {16, YES, YES, NO , 0};
Xopdclass o_port = { 8, NO , NO , NO , 0};
Xopdclass o_rupt = { 3, NO , NO , NO , 0};
Xopdclass o_cond = { 3, NO , NO , NO , 0};
X
Xinsclass i_reg1 = {1, 1, &o_reg , &o_none, -3, 0};
Xinsclass i_reg2 = {1, 1, &o_reg , &o_none, 0, 0};
Xinsclass i_rp = {1, 1, &o_rp , &o_none, -4, 0};
Xinsclass i_data = {2, 1, &o_data, &o_none, 8, 0};
Xinsclass i_rd = {2, 2, &o_reg , &o_data, -3, 8};
Xinsclass i_drd = {3, 2, &o_reg , &o_data2,-3, 16};
Xinsclass i_mem = {3, 1, &o_mem , &o_none, 8, 0};
Xinsclass i_rupt = {1, 1, &o_rupt, &o_none, -3, 0};
Xinsclass i_port = {2, 1, &o_port, &o_none, 8, 0};
Xinsclass i_rr = {1, 2, &o_reg , &o_reg , -3, 0};
Xinsclass i_cond = {1, 1, &o_cond, &o_none, -3, 0};
Xinsclass i_condm = {3, 2, &o_cond, &o_mem , -3, 16};
X
Xopdef optab[] = {
X "aci" , &i_data , 0xce, geninstr,
X "adc" , &i_reg2 , 0x88, geninstr,
X "adcm" , &i_noopd, 0x8e, geninstr,
X "add" , &i_reg2 , 0x80, geninstr,
X "addm" , &i_noopd, 0x86, geninstr,
X "adi" , &i_data , 0xc6, geninstr,
X "ana" , &i_reg2 , 0xa0, geninstr,
X "anam" , &i_noopd, 0xa6, geninstr,
X "ani" , &i_data , 0xe6, geninstr,
X "call" , &i_mem , 0xcd, geninstr,
X "cc" , &i_condm, 0xc4, geninstr,
X "cma" , &i_noopd, 0x2f, geninstr,
X "cmc" , &i_noopd, 0x3f, geninstr,
X "cmp" , &i_reg2 , 0xb8, geninstr,
X "cmpm" , &i_noopd, 0xbe, geninstr,
X "cpi" , &i_data , 0xfe, geninstr,
X "daa" , &i_noopd, 0x27, geninstr,
X "dad" , &i_rp , 0x09, geninstr,
X "dcr" , &i_reg1 , 0x05, geninstr,
X "dcrm" , &i_noopd, 0x35, geninstr,
X "dcx" , &i_rp , 0x0b, geninstr,
X "di" , &i_noopd, 0xf3, geninstr,
X "ei" , &i_noopd, 0xfd, geninstr,
X "hlt" , &i_noopd, 0x76, geninstr,
X "in" , &i_port , 0xdb, geninstr,
X "inr" , &i_reg1 , 0x04, geninstr,
X "inrm" , &i_noopd, 0x34, geninstr,
X "inx" , &i_rp , 0x03, geninstr,
X "jc" , &i_condm, 0xc2, geninstr,
X "jmp" , &i_mem , 0xc3, geninstr,
X "lda" , &i_mem , 0x3a, geninstr,
X "ldax" , &i_rp , 0x0a, geninstr,
X "ldi" , &i_rd , 0x06, geninstr,
X "ldr" , &i_reg1 , 0x46, geninstr,
X "lhld" , &i_mem , 0x2a, geninstr,
X "lxi" , &i_drd , 0x01, geninstr,
X "mrr" , &i_rr , 0x40, geninstr,
X "mvim" , &i_data , 0x36, geninstr,
X "nop" , &i_noopd, 0x00, geninstr,
X "ora" , &i_reg2 , 0xb0, geninstr,
X "oram" , &i_noopd, 0xb6, geninstr,
X "ori" , &i_data , 0xf6, geninstr,
X "out" , &i_port , 0xd3, geninstr,
X "pchl" , &i_noopd, 0xe9, geninstr,
X "pop" , &i_rp , 0xc1, geninstr,
X "poppsw" , &i_noopd, 0xf1, geninstr,
X "push" , &i_rp , 0xc5, geninstr,
X "pushpsw", &i_noopd, 0xf5, geninstr,
X "ral" , &i_noopd, 0x17, geninstr,
X "rar" , &i_noopd, 0x1f, geninstr,
X "rc" , &i_condm, 0xc0, geninstr,
X "ret" , &i_noopd, 0xc9, geninstr,
X "rim" , &i_noopd, 0x20, geninstr,
X "rlc" , &i_noopd, 0x07, geninstr,
X "rrc" , &i_noopd, 0x0f, geninstr,
X "rst" , &i_rupt , 0xc7, geninstr,
X "sbb" , &i_reg2 , 0x98, geninstr,
X "sbbm" , &i_noopd, 0x9e, geninstr,
X "sbi" , &i_data , 0xde, geninstr,
X "shld" , &i_mem , 0x22, geninstr,
X "sim" , &i_noopd, 0x30, geninstr,
X "sphl" , &i_noopd, 0xf9, geninstr,
X "sta" , &i_mem , 0x32, geninstr,
X "stax" , &i_rp , 0x02, geninstr,
X "stc" , &i_noopd, 0x37, geninstr,
X "str" , &i_reg2 , 0x70, geninstr,
X "sub" , &i_reg2 , 0x90, geninstr,
X "subm" , &i_noopd, 0x96, geninstr,
X "sui" , &i_data , 0xd6, geninstr,
X "xchg" , &i_noopd, 0xeb, geninstr,
X "xra" , &i_reg2 , 0xa8, geninstr,
X "xram" , &i_noopd, 0xae, geninstr,
X "xri" , &i_data , 0xee, geninstr,
X "xthl" , &i_noopd, 0xe3, geninstr,
X};
X
X#define oplen sizeof(optab)/sizeof(opdef)
X
Xsymbol predef[] = {
X {"ra" , 7, &o_reg , (segmnt *)0 },
X {"rb" , 0, &o_reg , (segmnt *)0 },
X {"rc" , 1, &o_reg , (segmnt *)0 },
X {"rd" , 2, &o_reg , (segmnt *)0 },
X {"re" , 3, &o_reg , (segmnt *)0 },
X {"rh" , 4, &o_reg , (segmnt *)0 },
X {"rl" , 5, &o_reg , (segmnt *)0 },
X {"rbc" , 0, &o_rp , (segmnt *)0 },
X {"rde" , 1, &o_rp , (segmnt *)0 },
X {"rhl" , 2, &o_rp , (segmnt *)0 },
X {"sp" , 3, &o_rp , (segmnt *)0 },
X {"rupt0" , 0, &o_rupt, (segmnt *)0 },
X {"rupt1" , 1, &o_rupt, (segmnt *)0 },
X {"rupt2" , 2, &o_rupt, (segmnt *)0 },
X {"rupt3" , 3, &o_rupt, (segmnt *)0 },
X {"rupt4" , 4, &o_rupt, (segmnt *)0 },
X {"rupt5" , 5, &o_rupt, (segmnt *)0 },
X {"rupt6" , 6, &o_rupt, (segmnt *)0 },
X {"rupt7" , 7, &o_rupt, (segmnt *)0 },
X {"nz" , 0, &o_cond, (segmnt *)0 },
X {"z" , 1, &o_cond, (segmnt *)0 },
X {"nc" , 2, &o_cond, (segmnt *)0 },
X {"c" , 3, &o_cond, (segmnt *)0 },
X {"po" , 4, &o_cond, (segmnt *)0 },
X {"pe" , 5, &o_cond, (segmnt *)0 },
X {"p" , 6, &o_cond, (segmnt *)0 },
X {"m" , 7, &o_cond, (segmnt *)0 },
X {"ramstart" , 0, &o_mem , (segmnt *)0 },
X {"ramend" , 0, &o_mem , (segmnt *)0 },
X {"romstart" , 0, &o_mem , (segmnt *)0 },
X {"romend" , 0, &o_mem , (segmnt *)0 },
X {"" , 0, &o_none, (segmnt *)0 }
X};
/FUNKY/STUFF/
More information about the Mod.sources
mailing list