home *** CD-ROM | disk | FTP | other *** search
- Subject: v07i098: Generic assembler for micros, Part02/02
- Newsgroups: mod.sources
- Approved: mirror!rs
-
- 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/
-