home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume7 / micro.asm / part02 < prev    next >
Encoding:
Internet Message Format  |  1987-01-19  |  23.9 KB

  1. Subject:  v07i098:  Generic assembler for micros, Part02/02
  2. Newsgroups: mod.sources
  3. Approved: mirror!rs
  4.  
  5. Submitted by: seismo!cisden!lmc
  6. Mod.sources: Volume 7, Issue 98
  7. Archive-name: micro.asm/Part02
  8.  
  9. [  Sorry about sending out that previous archive with intial tilde's
  10.    in it; makes it hard to send things via /usr/ucb/Mail, I know.  -r$  ]
  11.  
  12. : This is a shar archieve.  Extract with sh, not csh.
  13. : The rest of this file will extract:
  14. : 6502_ops.h 6803_ops.h 8085_ops.h
  15. echo extracting - 6502_ops.h
  16. sed 's/^X//' > 6502_ops.h << '/FUNKY/STUFF/'
  17. X#define c64 1
  18. X
  19. Xopdclass  o_immed  =  { 8,  NO,  NO,  NO,  0};
  20. Xopdclass  o_zpage  =  { 8,  NO,  NO,  NO,  0};
  21. Xopdclass  o_mem    =  { 16, NO, YES,  NO,  0};
  22. Xopdclass  o_rel    =  { 8, YES,  NO, YES,  0};
  23. X
  24. Xinsclass  i_nomem  =  { 1, 0,  &o_none, &o_none, 0, 0};
  25. Xinsclass  i_branch =  { 2, 1,   &o_rel, &o_none, 8, 0};
  26. Xinsclass  i_immed  =  { 2, 1, &o_immed, &o_none, 8, 0};
  27. Xinsclass  i_zpage  =  { 2, 1, &o_zpage, &o_none, 8, 0};
  28. Xinsclass  i_abs    =  { 3, 1,   &o_mem, &o_none, 8, 0};
  29. X
  30. Xopdef optab[] = {
  31. X    { "adci",    &i_immed,    0x69,    geninstr},
  32. X    { "adcz",    &i_zpage,    0x65,    geninstr},
  33. X    { "adczx",    &i_zpage,    0x75,    geninstr},
  34. X    { "adca",    &i_abs,    0x6d,    geninstr},
  35. X    { "adcax",    &i_abs,    0x7d,    geninstr},
  36. X    { "adcay",    &i_abs,    0x79,    geninstr},
  37. X    { "adcix",    &i_abs,    0x61,    geninstr},
  38. X    { "adciy",    &i_abs,    0x71,    geninstr},
  39. X    { "andi",    &i_immed,    0x29,    geninstr},
  40. X    { "andz",    &i_zpage,    0x25,    geninstr},
  41. X    { "andzx",    &i_zpage,    0x35,    geninstr},
  42. X    { "anda",    &i_abs,    0x2d,    geninstr},
  43. X    { "andax",    &i_abs,    0x3d,    geninstr},
  44. X    { "anday",    &i_abs,    0x39,    geninstr},
  45. X    { "andix",    &i_abs,    0x21,    geninstr},
  46. X    { "andiy",    &i_abs,    0x31,    geninstr},
  47. X    { "aslac",    &i_nomem,    0x0a,    geninstr},
  48. X    { "aslz",    &i_zpage,    0x06,    geninstr},
  49. X    { "aslzx",    &i_zpage,    0x16,    geninstr},
  50. X    { "asla",    &i_abs,    0x0e,    geninstr},
  51. X    { "aslax",    &i_abs,    0x1e,    geninstr},
  52. X    { "bcc",    &i_branch,    0x90,    geninstr},
  53. X    { "bcs",    &i_branch,    0xb0,    geninstr},
  54. X    { "beq",    &i_branch,    0xf0,    geninstr},
  55. X    { "bitz",    &i_zpage,    0x24,    geninstr},
  56. X    { "bita",    &i_abs,    0x2c,    geninstr},
  57. X    { "bmi",    &i_branch,    0x30,    geninstr},
  58. X    { "bne",    &i_branch,    0xd0,    geninstr},
  59. X    { "bpl",    &i_branch,    0x10,    geninstr},
  60. X    { "brk",    &i_nomem,    0x00,    geninstr},
  61. X    { "bvc",    &i_branch,    0x50,    geninstr},
  62. X    { "bvs",    &i_branch,    0x70,    geninstr},
  63. X    { "clc",    &i_nomem,    0x18,    geninstr},
  64. X    { "cld",    &i_nomem,    0xd8,    geninstr},
  65. X    { "cli",    &i_nomem,    0x58,    geninstr},
  66. X    { "clv",    &i_nomem,    0xb8,    geninstr},
  67. X    { "cmpi",    &i_immed,    0xc9,    geninstr},
  68. X    { "cmpz",    &i_zpage,    0xc5,    geninstr},
  69. X    { "cmpzx",    &i_zpage,    0xd5,    geninstr},
  70. X    { "cmpa",    &i_abs,    0xcd,    geninstr},
  71. X    { "cmpax",    &i_abs,    0xdd,    geninstr},
  72. X    { "cmpay",    &i_abs,    0xd9,    geninstr},
  73. X    { "cmpix",    &i_abs,    0xc1,    geninstr},
  74. X    { "cmpiy",    &i_abs,    0xd1,    geninstr},
  75. X    { "cpxi",    &i_immed,    0xe0,    geninstr},
  76. X    { "cpxz",    &i_zpage,    0xe4,    geninstr},
  77. X    { "cpxa",    &i_abs,    0xec,    geninstr},
  78. X    { "cpyi",    &i_immed,    0xc0,    geninstr},
  79. X    { "cpyz",    &i_zpage,    0xc4,    geninstr},
  80. X    { "cpya",    &i_abs,    0xcc,    geninstr},
  81. X    { "decz",    &i_zpage,    0xc6,    geninstr},
  82. X    { "deczx",    &i_zpage,    0xd6,    geninstr},
  83. X    { "deca",    &i_abs,    0xce,    geninstr},
  84. X    { "decax",    &i_abs,    0xde,    geninstr},
  85. X    { "dex",    &i_nomem,    0xca,    geninstr},
  86. X    { "dey",    &i_nomem,    0x88,    geninstr},
  87. X    { "eori",    &i_immed,    0x49,    geninstr},
  88. X    { "eorz",    &i_zpage,    0x45,    geninstr},
  89. X    { "eorzx",    &i_zpage,    0x55,    geninstr},
  90. X    { "eora",    &i_abs,    0x4d,    geninstr},
  91. X    { "eorax",    &i_abs,    0x5d,    geninstr},
  92. X    { "eoray",    &i_abs,    0x59,    geninstr},
  93. X    { "eorix",    &i_abs,    0x41,    geninstr},
  94. X    { "eoriy",    &i_abs,    0x51,    geninstr},
  95. X    { "incz",    &i_zpage,    0xe6,    geninstr},
  96. X    { "inczx",    &i_zpage,    0xf6,    geninstr},
  97. X    { "inca",    &i_abs,    0xee,    geninstr},
  98. X    { "incax",    &i_abs,    0xfe,    geninstr},
  99. X    { "inx",    &i_nomem,    0xe8,    geninstr},
  100. X    { "iny",    &i_nomem,    0xc8,    geninstr},
  101. X    { "jmp",    &i_abs,    0x4c,    geninstr},
  102. X    { "jmpi",    &i_abs,    0x6c,    geninstr},
  103. X    { "jsr",    &i_abs,    0x20,    geninstr},
  104. X    { "ldai",    &i_immed,    0xa9,    geninstr},
  105. X    { "ldaz",    &i_zpage,    0xa5,    geninstr},
  106. X    { "ldazx",    &i_zpage,    0xb5,    geninstr},
  107. X    { "ldaa",    &i_abs,    0xad,    geninstr},
  108. X    { "ldaax",    &i_abs,    0xbd,    geninstr},
  109. X    { "ldaay",    &i_abs,    0xb9,    geninstr},
  110. X    { "ldaix",    &i_abs,    0xa1,    geninstr},
  111. X    { "ldaiy",    &i_abs,    0xb1,    geninstr},
  112. X    { "ldxi",    &i_immed,    0xa2,    geninstr},
  113. X    { "ldxz",    &i_zpage,    0xa6,    geninstr},
  114. X    { "ldxzy",    &i_zpage,    0xb6,    geninstr},
  115. X    { "ldxa",    &i_abs,    0xae,    geninstr},
  116. X    { "ldxay",    &i_abs,    0xbe,    geninstr},
  117. X    { "ldyi",    &i_immed,    0xa0,    geninstr},
  118. X    { "ldyz",    &i_zpage,    0xa4,    geninstr},
  119. X    { "ldyzx",    &i_zpage,    0xb4,    geninstr},
  120. X    { "ldya",    &i_abs,    0xac,    geninstr},
  121. X    { "ldyax",    &i_abs,    0xbc,    geninstr},
  122. X    { "lsrac",    &i_nomem,    0x4a,    geninstr},
  123. X    { "lsrz",    &i_zpage,    0x46,    geninstr},
  124. X    { "lsrzx",    &i_zpage,    0x56,    geninstr},
  125. X    { "lsra",    &i_abs,    0x4e,    geninstr},
  126. X    { "lsrax",    &i_abs,    0x5e,    geninstr},
  127. X    { "nop",    &i_nomem,    0xea,    geninstr},
  128. X    { "orai",    &i_immed,    0x09,    geninstr},
  129. X    { "oraz",    &i_zpage,    0x05,    geninstr},
  130. X    { "orazx",    &i_zpage,    0x15,    geninstr},
  131. X    { "oraa",    &i_abs,    0x0d,    geninstr},
  132. X    { "oraax",    &i_abs,    0x1d,    geninstr},
  133. X    { "oraay",    &i_abs,    0x19,    geninstr},
  134. X    { "oraix",    &i_abs,    0x01,    geninstr},
  135. X    { "oraiy",    &i_abs,    0x11,    geninstr},
  136. X    { "pha",    &i_nomem,    0x48,    geninstr},
  137. X    { "php",    &i_nomem,    0x08,    geninstr},
  138. X    { "pla",    &i_nomem,    0x68,    geninstr},
  139. X    { "plp",    &i_nomem,    0x28,    geninstr},
  140. X    { "rolac",    &i_nomem,    0x2a,    geninstr},
  141. X    { "rolz",    &i_zpage,    0x26,    geninstr},
  142. X    { "rolzx",    &i_zpage,    0x36,    geninstr},
  143. X    { "rola",    &i_abs,    0x2e,    geninstr},
  144. X    { "rolax",    &i_abs,    0x3e,    geninstr},
  145. X    { "rorac",    &i_nomem,    0x6a,    geninstr},
  146. X    { "rorz",    &i_zpage,    0x66,    geninstr},
  147. X    { "rorzx",    &i_zpage,    0x76,    geninstr},
  148. X    { "rora",    &i_abs,    0x6e,    geninstr},
  149. X    { "rorax",    &i_abs,    0x7e,    geninstr},
  150. X    { "rti",    &i_nomem,    0x40,    geninstr},
  151. X    { "rst",    &i_nomem,    0x60,    geninstr},
  152. X    { "sbci",    &i_immed,    0xe9,    geninstr},
  153. X    { "sbcz",    &i_zpage,    0xe5,    geninstr},
  154. X    { "sbczx",    &i_zpage,    0xf5,    geninstr},
  155. X    { "sbca",    &i_abs,    0xed,    geninstr},
  156. X    { "sbcax",    &i_abs,    0xfd,    geninstr},
  157. X    { "sbcay",    &i_abs,    0xf9,    geninstr},
  158. X    { "sbcix",    &i_abs,    0xe1,    geninstr},
  159. X    { "sbciy",    &i_abs,    0xf1,    geninstr},
  160. X    { "sec",    &i_nomem,    0x38,    geninstr},
  161. X    { "sed",    &i_nomem,    0xf8,    geninstr},
  162. X    { "sei",    &i_nomem,    0x78,    geninstr},
  163. X    { "staz",    &i_zpage,    0x85,    geninstr},
  164. X    { "stazx",    &i_zpage,    0x95,    geninstr},
  165. X    { "staa",    &i_abs,    0x8d,    geninstr},
  166. X    { "staax",    &i_abs,    0x9d,    geninstr},
  167. X    { "staay",    &i_abs,    0x99,    geninstr},
  168. X    { "staix",    &i_abs,    0x81,    geninstr},
  169. X    { "staiy",    &i_abs,    0x91,    geninstr},
  170. X    { "stxz",    &i_zpage,    0x86,    geninstr},
  171. X    { "stxzy",    &i_zpage,    0x96,    geninstr},
  172. X    { "stxa",    &i_abs,    0x8e,    geninstr},
  173. X    { "styz",    &i_zpage,    0x84,    geninstr},
  174. X    { "styzx",    &i_zpage,    0x94,    geninstr},
  175. X    { "stya",    &i_abs,    0x8c,    geninstr},
  176. X    { "tax",    &i_nomem,    0xaa,    geninstr},
  177. X    { "tay",    &i_nomem,    0xa8,    geninstr},
  178. X    { "tsx",    &i_nomem,    0xba,    geninstr},
  179. X    { "txa",    &i_nomem,    0x8a,    geninstr},
  180. X    { "txs",    &i_nomem,    0x9a,    geninstr},
  181. X    { "tya",    &i_nomem,    0x98,    geninstr}
  182. X};
  183. X
  184. X#define oplen sizeof(optab)/sizeof(opdef)
  185. X
  186. Xsymbol predef[] = {
  187. X    { "acptr",      0xffa5, &o_mem, (segmnt *) 0 },
  188. X    { "chkin",      0xffc6, &o_mem, (segmnt *) 0 },
  189. X    { "chkout",     0xffc9, &o_mem, (segmnt *) 0 },
  190. X    { "chrin",      0xffcf, &o_mem, (segmnt *) 0 },
  191. X    { "chrout",     0xffd2, &o_mem, (segmnt *) 0 },
  192. X    { "ciout",      0xffa8, &o_mem, (segmnt *) 0 },
  193. X    { "cint",       0xff81, &o_mem, (segmnt *) 0 },
  194. X    { "clall",      0xffe7, &o_mem, (segmnt *) 0 },
  195. X    { "close",      0xffc3, &o_mem, (segmnt *) 0 },
  196. X    { "clrchn",     0xffcc, &o_mem, (segmnt *) 0 },
  197. X    { "getin",      0xffe4, &o_mem, (segmnt *) 0 },
  198. X    { "iobase",     0xfff3, &o_mem, (segmnt *) 0 },
  199. X    { "ioinit",     0xff84, &o_mem, (segmnt *) 0 },
  200. X    { "listen",     0xffb1, &o_mem, (segmnt *) 0 },
  201. X    { "load",       0xffd5, &o_mem, (segmnt *) 0 },
  202. X    { "membot",     0xff9c, &o_mem, (segmnt *) 0 },
  203. X    { "memtop",     0xff99, &o_mem, (segmnt *) 0 },
  204. X    { "open",       0xffc0, &o_mem, (segmnt *) 0 },
  205. X    { "plot",       0xfff0, &o_mem, (segmnt *) 0 },
  206. X    { "ramtas",     0xff87, &o_mem, (segmnt *) 0 },
  207. X    { "rdtim",      0xffde, &o_mem, (segmnt *) 0 },
  208. X    { "readst",     0xffb7, &o_mem, (segmnt *) 0 },
  209. X    { "restor",     0xff8a, &o_mem, (segmnt *) 0 },
  210. X    { "save",       0xffd8, &o_mem, (segmnt *) 0 },
  211. X    { "scnkey",     0xff9f, &o_mem, (segmnt *) 0 },
  212. X    { "screen",     0xffed, &o_mem, (segmnt *) 0 },
  213. X    { "second",     0xff93, &o_mem, (segmnt *) 0 },
  214. X    { "setlfs",     0xffba, &o_mem, (segmnt *) 0 },
  215. X    { "setmsg",     0xff90, &o_mem, (segmnt *) 0 },
  216. X    { "setnam",     0xffbd, &o_mem, (segmnt *) 0 },
  217. X    { "settim",     0xffdb, &o_mem, (segmnt *) 0 },
  218. X    { "settmo",     0xffa2, &o_mem, (segmnt *) 0 },
  219. X    { "stop",       0xffe1, &o_mem, (segmnt *) 0 },
  220. X    { "talk",       0xffb4, &o_mem, (segmnt *) 0 },
  221. X    { "tksa",       0xff96, &o_mem, (segmnt *) 0 },
  222. X    { "udtim",      0xffea, &o_mem, (segmnt *) 0 },
  223. X    { "unlsn",      0xffae, &o_mem, (segmnt *) 0 },
  224. X    { "untlk",      0xffab, &o_mem, (segmnt *) 0 },
  225. X    { "vector",     0xff8d, &o_mem, (segmnt *) 0 },
  226. X    { "",           0x0,    &o_none, (segmnt *) 0 }
  227. X};
  228. /FUNKY/STUFF/
  229. echo extracting - 6803_ops.h
  230. sed 's/^X//' > 6803_ops.h << '/FUNKY/STUFF/'
  231. X
  232. Xopdclass o_reg   = { 1, NO , NO , NO , 0};
  233. Xopdclass o_smem  = { 8, NO , NO , NO , 0};
  234. Xopdclass o_rmem  = { 8, YES, NO , YES, -2};
  235. Xopdclass o_mem   = {16, NO , NO , NO , 0};
  236. Xopdclass o_off   = { 8, YES, NO , NO , 0};
  237. Xopdclass o_data  = { 8, YES, NO , NO , 0};
  238. Xopdclass o_data2 = {16, YES, NO , NO , 0};
  239. Xopdclass o_cond  = { 4, NO , NO , NO , 0};
  240. X
  241. Xinsclass i_reg   = {1, 1, &o_reg , &o_none, -4, 0};
  242. Xinsclass i_regp  = {1, 1, &o_reg , &o_none,  0, 0};
  243. Xinsclass i_rimed = {2, 2, &o_reg , &o_data, -6, 8};
  244. Xinsclass i_rimd2 = {3, 2, &o_reg , &o_data2,-6, 16};
  245. Xinsclass i_rdir  = {2, 2, &o_reg , &o_smem, -6, 8};
  246. Xinsclass i_rindx = {2, 2, &o_reg , &o_off , -6, 8};
  247. Xinsclass i_rxtd  = {3, 2, &o_reg , &o_mem , -6,16};
  248. Xinsclass i_imed  = {3, 1, &o_data2,&o_none, 16, 0};
  249. Xinsclass i_dir   = {2, 1, &o_smem, &o_none,  8, 0};
  250. Xinsclass i_indx  = {2, 1, &o_off , &o_none,  8, 0};
  251. Xinsclass i_xtd   = {3, 1, &o_mem , &o_none, 16, 0};
  252. Xinsclass i_rel   = {2, 1, &o_rmem, &o_none,  8, 0};
  253. Xinsclass i_cond  = {2, 2, &o_cond, &o_rmem,  0, 8};
  254. X
  255. Xchoicedef c_adc = {"adcs" , "adcz" , 2, 0, 0xff, NO};
  256. Xchoicedef c_add = {"adds" , "addz" , 2, 0, 0xff, NO};
  257. Xchoicedef c_and = {"ands" , "andz" , 2, 0, 0xff, NO};
  258. Xchoicedef c_bit = {"bits" , "bitz" , 2, 0, 0xff, NO};
  259. Xchoicedef c_cmp = {"cmps" , "cmpz" , 2, 0, 0xff, NO};
  260. Xchoicedef c_eor = {"eors" , "eorz" , 2, 0, 0xff, NO};
  261. Xchoicedef c_lda = {"ldas" , "ldaz" , 2, 0, 0xff, NO};
  262. Xchoicedef c_ldr = {"ldrs" , "ldrz" , 2, 0, 0xff, NO};
  263. Xchoicedef c_ora = {"oras" , "oraz" , 2, 0, 0xff, NO};
  264. Xchoicedef c_sbc = {"sbcs" , "sbcz" , 2, 0, 0xff, NO};
  265. Xchoicedef c_sub = {"subs" , "subz" , 2, 0, 0xff, NO};
  266. Xchoicedef c_dad = {"addds", "adddz", 1, 0, 0xff, NO};
  267. Xchoicedef c_ldd = {"ldds" , "lddz" , 1, 0, 0xff, NO};
  268. Xchoicedef c_std = {"stds" , "stdz" , 1, 0, 0xff, NO};
  269. Xchoicedef c_sta = {"stas" , "staz" , 1, 0, 0xff, NO};
  270. Xchoicedef c_str = {"strs" , "strz" , 1, 0, 0xff, NO};
  271. Xchoicedef c_dsb = {"subds", "subdz", 1, 0, 0xff, NO};
  272. Xchoicedef c_jsr = {"jsrs" , "jsrz" , 1, 0, 0xff, NO};
  273. Xchoicedef c_cpx = {"cpxs" , "cpxz" , 1, 0, 0xff, NO};
  274. X
  275. Xopdef optab[] = {
  276. X    "aba"    , &i_noopd, 0x1b, geninstr,
  277. X    "abx"    , &i_noopd, 0x3a, geninstr,
  278. X    "adc"    , (insclass *)&c_adc, 0x00, choiceinstr,
  279. X    "adcs"   , &i_rdir , 0x99, geninstr,
  280. X    "adci"   , &i_rimed, 0x89, geninstr,
  281. X    "adcx"   , &i_rindx, 0xa9, geninstr,
  282. X    "adcz"   , &i_rxtd , 0xb9, geninstr,
  283. X    "add"    , (insclass *)&c_add, 0x00, choiceinstr,
  284. X    "adds"   , &i_rdir , 0x9b, geninstr,
  285. X    "addi"   , &i_rimed, 0x8b, geninstr,
  286. X    "addd"   , (insclass *)&c_dad, 0x00, choiceinstr,
  287. X    "addds"  , &i_dir  , 0xd3, geninstr,
  288. X    "adddi"  , &i_imed , 0xc3, geninstr,
  289. X    "adddx"  , &i_indx , 0xe3, geninstr,
  290. X    "adddz"  , &i_xtd  , 0xf3, geninstr,
  291. X    "addx"   , &i_rindx, 0xab, geninstr,
  292. X    "addz"   , &i_rxtd , 0xbb, geninstr,
  293. X    "and"    , (insclass *)&c_and, 0x00, choiceinstr,
  294. X    "ands"   , &i_rdir , 0x94, geninstr,
  295. X    "andi"   , &i_rimed, 0x84, geninstr,
  296. X    "andx"   , &i_rindx, 0xa4, geninstr,
  297. X    "andz"   , &i_rxtd , 0xb4, geninstr,
  298. X    "asla"   , &i_reg  , 0x48, geninstr,
  299. X    "asld"   , &i_noopd, 0x05, geninstr,
  300. X    "aslx"   , &i_indx , 0x68, geninstr,
  301. X    "asl"    , &i_xtd  , 0x78, geninstr,
  302. X    "asra"   , &i_reg  , 0x47, geninstr,
  303. X    "asrx"   , &i_indx , 0x67, geninstr,
  304. X    "asr"    , &i_xtd  , 0x77, geninstr,
  305. X    "bc"     , &i_cond , 0x20, geninstr,
  306. X    "bit"    , (insclass *)&c_bit, 0x00, choiceinstr,
  307. X    "bits"   , &i_rdir , 0x95, geninstr,
  308. X    "biti"   , &i_rimed, 0x85, geninstr,
  309. X    "bitx"   , &i_rindx, 0xa5, geninstr,
  310. X    "bitz"   , &i_rxtd , 0xb5, geninstr,
  311. X    "bra"    , &i_rel  , 0x20, geninstr,
  312. X    "bsr"    , &i_rel  , 0x8d, geninstr,
  313. X    "cba"    , &i_noopd, 0x11, geninstr,
  314. X    "clc"    , &i_noopd, 0x0c, geninstr,
  315. X    "cli"    , &i_noopd, 0x0e, geninstr,
  316. X    "clra"   , &i_reg  , 0x4f, geninstr,
  317. X    "clrx"   , &i_indx , 0x6f, geninstr,
  318. X    "clr"    , &i_xtd  , 0x7f, geninstr,
  319. X    "clv"    , &i_noopd, 0x0a, geninstr,
  320. X    "cmp"    , (insclass *)&c_cmp, 0x00, choiceinstr,
  321. X    "cmps"   , &i_rdir , 0x91, geninstr,
  322. X    "cmpi"   , &i_rimed, 0x81, geninstr,
  323. X    "cmpx"   , &i_rindx, 0xa1, geninstr,
  324. X    "cmpz"   , &i_rxtd , 0xb1, geninstr,
  325. X    "coma"   , &i_reg  , 0x43, geninstr,
  326. X    "comx"   , &i_indx , 0x63, geninstr,
  327. X    "com"    , &i_xtd  , 0x73, geninstr,
  328. X    "cpx"    , (insclass *)&c_cpx, 0x00, choiceinstr,
  329. X    "cpxs"   , &i_dir  , 0x9c, geninstr,
  330. X    "cpxi"   , &i_imed , 0x8c, geninstr,
  331. X    "cpxx"   , &i_indx , 0xac, geninstr,
  332. X    "cpxz"   , &i_xtd  , 0xbc, geninstr,
  333. X    "daa"    , &i_noopd, 0x19, geninstr,
  334. X    "deca"   , &i_reg  , 0x4a, geninstr,
  335. X    "decx"   , &i_indx , 0x6a, geninstr,
  336. X    "dec"    , &i_xtd  , 0x7a, geninstr,
  337. X    "des"    , &i_noopd, 0x34, geninstr,
  338. X    "dex"    , &i_noopd, 0x09, geninstr,
  339. X    "eor"    , (insclass *)&c_eor, 0x00, choiceinstr,
  340. X    "eors"   , &i_rdir , 0x98, geninstr,
  341. X    "eori"   , &i_rimed, 0x88, geninstr,
  342. X    "eorx"   , &i_rindx, 0xa8, geninstr,
  343. X    "eorz"   , &i_rxtd , 0xb8, geninstr,
  344. X    "inca"   , &i_reg  , 0x4c, geninstr,
  345. X    "incx"   , &i_indx , 0x6c, geninstr,
  346. X    "inc"    , &i_xtd  , 0x7c, geninstr,
  347. X    "ins"    , &i_noopd, 0x31, geninstr,
  348. X    "inx"    , &i_noopd, 0x08, geninstr,
  349. X    "jmpx"   , &i_indx , 0x6e, geninstr,
  350. X    "jmp"    , &i_xtd  , 0x7e, geninstr,
  351. X    "jsr"    , (insclass *)&c_jsr, 0x00, choiceinstr,
  352. X    "jsrs"   , &i_dir  , 0x9d, geninstr,
  353. X    "jsrx"   , &i_indx , 0xad, geninstr,
  354. X    "jsrz"   , &i_xtd  , 0xbd, geninstr,
  355. X    "lda"    , (insclass *)&c_lda, 0x00, choiceinstr,
  356. X    "ldas"   , &i_rdir , 0x96, geninstr,
  357. X    "ldai"   , &i_rimed, 0x86, geninstr,
  358. X    "ldax"   , &i_rindx, 0xa6, geninstr,
  359. X    "ldaz"   , &i_rxtd , 0xb6, geninstr,
  360. X    "ldd"    , (insclass *)&c_ldd, 0x00, choiceinstr,
  361. X    "ldds"   , &i_dir  , 0xdc, geninstr,
  362. X    "lddi"   , &i_imed , 0xcc, geninstr,
  363. X    "lddx"   , &i_indx , 0xec, geninstr,
  364. X    "lddz"   , &i_xtd  , 0xfc, geninstr,
  365. X    "ldr"    , (insclass *)&c_ldr, 0x00, choiceinstr,
  366. X    "ldrs"   , &i_rdir , 0x9e, geninstr,
  367. X    "ldri"   , &i_rimd2, 0x8e, geninstr,
  368. X    "ldrx"   , &i_rindx, 0xae, geninstr,
  369. X    "ldrz"   , &i_rxtd , 0xbe, geninstr,
  370. X    "lsla"   , &i_reg  , 0x45, geninstr,
  371. X    "lsld"   , &i_noopd, 0x05, geninstr,
  372. X    "lslx"   , &i_indx , 0x65, geninstr,
  373. X    "lsl"    , &i_xtd  , 0x75, geninstr,
  374. X    "lsra"   , &i_reg  , 0x44, geninstr,
  375. X    "lsrd"   , &i_noopd, 0x04, geninstr,
  376. X    "lsrx"   , &i_indx , 0x64, geninstr,
  377. X    "lsr"    , &i_xtd  , 0x74, geninstr,
  378. X    "mul"    , &i_noopd, 0x3d, geninstr,
  379. X    "nega"   , &i_reg  , 0x40, geninstr,
  380. X    "negx"   , &i_indx , 0x60, geninstr,
  381. X    "neg"    , &i_xtd  , 0x70, geninstr,
  382. X    "nop"    , &i_noopd, 0x01, geninstr,
  383. X    "ora"    , (insclass *)&c_ora, 0x00, choiceinstr,
  384. X    "oras"   , &i_rdir , 0x9a, geninstr,
  385. X    "orai"   , &i_rimed, 0x8a, geninstr,
  386. X    "orax"   , &i_rindx, 0xaa, geninstr,
  387. X    "oraz"   , &i_rxtd , 0xba, geninstr,
  388. X    "psha"   , &i_regp , 0x36, geninstr,
  389. X    "pshx"   , &i_noopd, 0x3c, geninstr,
  390. X    "pula"   , &i_regp , 0x32, geninstr,
  391. X    "pulx"   , &i_noopd, 0x38, geninstr,
  392. X    "rola"   , &i_reg  , 0x49, geninstr,
  393. X    "rolx"   , &i_indx , 0x69, geninstr,
  394. X    "rol"    , &i_xtd  , 0x79, geninstr,
  395. X    "rora"   , &i_reg  , 0x46, geninstr,
  396. X    "rorx"   , &i_indx , 0x66, geninstr,
  397. X    "ror"    , &i_xtd  , 0x76, geninstr,
  398. X    "rti"    , &i_noopd, 0x3b, geninstr,
  399. X    "rts"    , &i_noopd, 0x39, geninstr,
  400. X    "sba"    , &i_noopd, 0x10, geninstr,
  401. X    "sbc"    , (insclass *)&c_sbc, 0x00, choiceinstr,
  402. X    "sbcs"   , &i_rdir , 0x92, geninstr,
  403. X    "sbci"   , &i_rimed, 0x82, geninstr,
  404. X    "sbcx"   , &i_rindx, 0xa2, geninstr,
  405. X    "sbcz"   , &i_rxtd , 0xb2, geninstr,
  406. X    "sec"    , &i_noopd, 0x0d, geninstr,
  407. X    "sei"    , &i_noopd, 0x0f, geninstr,
  408. X    "sev"    , &i_noopd, 0x0b, geninstr,
  409. X    "sta"    , (insclass *)&c_sta, 0x00, choiceinstr,
  410. X    "stas"   , &i_rdir , 0x97, geninstr,
  411. X    "stax"   , &i_rindx, 0xa7, geninstr,
  412. X    "staz"   , &i_rxtd , 0xb7, geninstr,
  413. X    "std"    , (insclass *)&c_std, 0x00, choiceinstr,
  414. X    "stds"   , &i_dir  , 0xdd, geninstr,
  415. X    "stdx"   , &i_indx , 0xed, geninstr,
  416. X    "stdz"   , &i_xtd  , 0xfd, geninstr,
  417. X    "str"    , (insclass *)&c_str, 0x00, choiceinstr,
  418. X    "strs"   , &i_rdir , 0x9f, geninstr,
  419. X    "strx"   , &i_rindx, 0xaf, geninstr,
  420. X    "strz"   , &i_rdir , 0xbf, geninstr,
  421. X    "sub"    , (insclass *)&c_sub, 0x00, choiceinstr,
  422. X    "subs"   , &i_rdir , 0x90, geninstr,
  423. X    "subi"   , &i_rimed, 0x80, geninstr,
  424. X    "subd"   , (insclass *)&c_dsb, 0x00, choiceinstr,
  425. X    "subds"  , &i_dir  , 0x93, geninstr,
  426. X    "subdi"  , &i_imed , 0x83, geninstr,
  427. X    "subdx"  , &i_indx , 0xa3, geninstr,
  428. X    "subdz"  , &i_xtd  , 0xb3, geninstr,
  429. X    "subx"   , &i_rindx, 0xa0, geninstr,
  430. X    "subz"   , &i_rxtd , 0xb0, geninstr,
  431. X    "swi"    , &i_noopd, 0x3f, geninstr,
  432. X    "tab"    , &i_noopd, 0x16, geninstr,
  433. X    "tap"    , &i_noopd, 0x06, geninstr,
  434. X    "tba"    , &i_noopd, 0x17, geninstr,
  435. X    "tpa"    , &i_noopd, 0x07, geninstr,
  436. X    "tsta"   , &i_reg  , 0x4d, geninstr,
  437. X    "tstx"   , &i_indx , 0x6d, geninstr,
  438. X    "tst"    , &i_xtd  , 0x7d, geninstr,
  439. X    "tsx"    , &i_noopd, 0x30, geninstr,
  440. X    "txs"    , &i_noopd, 0x35, geninstr,
  441. X    "wai"    , &i_noopd, 0x3e, geninstr,
  442. X};
  443. X
  444. X#define oplen sizeof(optab)/sizeof(opdef)
  445. X
  446. Xsymbol predef[] = {
  447. X    {"ra" , 0x0, &o_reg , (segmnt *)0 },
  448. X    {"rb" , 0x1, &o_reg , (segmnt *)0 },
  449. X    {"rx" , 0x1, &o_reg , (segmnt *)0 },
  450. X    {"sp" , 0x0, &o_reg , (segmnt *)0 },
  451. X    {"nz" , 0x6, &o_cond, (segmnt *)0 },
  452. X    {"z"  , 0x7, &o_cond, (segmnt *)0 },
  453. X    {"ne" , 0x6, &o_cond, (segmnt *)0 },
  454. X    {"eq" , 0x7, &o_cond, (segmnt *)0 },
  455. X    {"nc" , 0x4, &o_cond, (segmnt *)0 },
  456. X    {"c"  , 0x5, &o_cond, (segmnt *)0 },
  457. X    {"gez", 0xc, &o_cond, (segmnt *)0 },
  458. X    {"gz" , 0xe, &o_cond, (segmnt *)0 },
  459. X    {"gt" , 0x2, &o_cond, (segmnt *)0 },
  460. X    {"lez", 0xf, &o_cond, (segmnt *)0 },
  461. X    {"le" , 0x3, &o_cond, (segmnt *)0 },
  462. X    {"lz" , 0xd, &o_cond, (segmnt *)0 },
  463. X    {"m"  , 0xb, &o_cond, (segmnt *)0 },
  464. X    {"ov" , 0x9, &o_cond, (segmnt *)0 },
  465. X    {"nov", 0x8, &o_cond, (segmnt *)0 },
  466. X    {"p"  , 0xa, &o_cond, (segmnt *)0 },
  467. X    {"ge" , 0x4, &o_cond, (segmnt *)0 },
  468. X    {"lt" , 0x5, &o_cond, (segmnt *)0 },
  469. X    {""   , 0x0, &o_none, (segmnt *)0 },
  470. X};
  471. /FUNKY/STUFF/
  472. echo extracting - 8085_ops.h
  473. sed 's/^X//' > 8085_ops.h << '/FUNKY/STUFF/'
  474. Xopdclass o_reg   = { 3, NO , NO , NO , 0};
  475. Xopdclass o_rp    = { 2, NO , NO , NO , 0};
  476. Xopdclass o_mem   = {16, NO , YES, NO , 0};
  477. Xopdclass o_data  = { 8, YES, NO , NO , 0};
  478. Xopdclass o_data2 = {16, YES, YES, NO , 0};
  479. Xopdclass o_port  = { 8, NO , NO , NO , 0};
  480. Xopdclass o_rupt  = { 3, NO , NO , NO , 0};
  481. Xopdclass o_cond  = { 3, NO , NO , NO , 0};
  482. X
  483. Xinsclass i_reg1  = {1, 1, &o_reg , &o_none, -3, 0};
  484. Xinsclass i_reg2  = {1, 1, &o_reg , &o_none,  0, 0};
  485. Xinsclass i_rp    = {1, 1, &o_rp  , &o_none, -4, 0};
  486. Xinsclass i_data  = {2, 1, &o_data, &o_none,  8, 0};
  487. Xinsclass i_rd    = {2, 2, &o_reg , &o_data, -3, 8};
  488. Xinsclass i_drd   = {3, 2, &o_reg , &o_data2,-3, 16};
  489. Xinsclass i_mem   = {3, 1, &o_mem , &o_none,  8, 0};
  490. Xinsclass i_rupt  = {1, 1, &o_rupt, &o_none, -3, 0};
  491. Xinsclass i_port  = {2, 1, &o_port, &o_none,  8, 0};
  492. Xinsclass i_rr    = {1, 2, &o_reg , &o_reg , -3, 0};
  493. Xinsclass i_cond  = {1, 1, &o_cond, &o_none, -3, 0};
  494. Xinsclass i_condm = {3, 2, &o_cond, &o_mem , -3, 16};
  495. X
  496. Xopdef optab[] = {
  497. X    "aci"    , &i_data , 0xce, geninstr,
  498. X    "adc"    , &i_reg2 , 0x88, geninstr,
  499. X    "adcm"   , &i_noopd, 0x8e, geninstr,
  500. X    "add"    , &i_reg2 , 0x80, geninstr,
  501. X    "addm"   , &i_noopd, 0x86, geninstr,
  502. X    "adi"    , &i_data , 0xc6, geninstr,
  503. X    "ana"    , &i_reg2 , 0xa0, geninstr,
  504. X    "anam"   , &i_noopd, 0xa6, geninstr,
  505. X    "ani"    , &i_data , 0xe6, geninstr,
  506. X    "call"   , &i_mem  , 0xcd, geninstr,
  507. X    "cc"     , &i_condm, 0xc4, geninstr,
  508. X    "cma"    , &i_noopd, 0x2f, geninstr,
  509. X    "cmc"    , &i_noopd, 0x3f, geninstr,
  510. X    "cmp"    , &i_reg2 , 0xb8, geninstr,
  511. X    "cmpm"   , &i_noopd, 0xbe, geninstr,
  512. X    "cpi"    , &i_data , 0xfe, geninstr,
  513. X    "daa"    , &i_noopd, 0x27, geninstr,
  514. X    "dad"    , &i_rp   , 0x09, geninstr,
  515. X    "dcr"    , &i_reg1 , 0x05, geninstr,
  516. X    "dcrm"   , &i_noopd, 0x35, geninstr,
  517. X    "dcx"    , &i_rp   , 0x0b, geninstr,
  518. X    "di"     , &i_noopd, 0xf3, geninstr,
  519. X    "ei"     , &i_noopd, 0xfd, geninstr,
  520. X    "hlt"    , &i_noopd, 0x76, geninstr,
  521. X    "in"     , &i_port , 0xdb, geninstr,
  522. X    "inr"    , &i_reg1 , 0x04, geninstr,
  523. X    "inrm"   , &i_noopd, 0x34, geninstr,
  524. X    "inx"    , &i_rp   , 0x03, geninstr,
  525. X    "jc"     , &i_condm, 0xc2, geninstr,
  526. X    "jmp"    , &i_mem  , 0xc3, geninstr,
  527. X    "lda"    , &i_mem  , 0x3a, geninstr,
  528. X    "ldax"   , &i_rp   , 0x0a, geninstr,
  529. X    "ldi"    , &i_rd   , 0x06, geninstr,
  530. X    "ldr"    , &i_reg1 , 0x46, geninstr,
  531. X    "lhld"   , &i_mem  , 0x2a, geninstr,
  532. X    "lxi"    , &i_drd  , 0x01, geninstr,
  533. X    "mrr"    , &i_rr   , 0x40, geninstr,
  534. X    "mvim"   , &i_data , 0x36, geninstr,
  535. X    "nop"    , &i_noopd, 0x00, geninstr,
  536. X    "ora"    , &i_reg2 , 0xb0, geninstr,
  537. X    "oram"   , &i_noopd, 0xb6, geninstr,
  538. X    "ori"    , &i_data , 0xf6, geninstr,
  539. X    "out"    , &i_port , 0xd3, geninstr,
  540. X    "pchl"   , &i_noopd, 0xe9, geninstr,
  541. X    "pop"    , &i_rp   , 0xc1, geninstr,
  542. X    "poppsw" , &i_noopd, 0xf1, geninstr,
  543. X    "push"   , &i_rp   , 0xc5, geninstr,
  544. X    "pushpsw", &i_noopd, 0xf5, geninstr,
  545. X    "ral"    , &i_noopd, 0x17, geninstr,
  546. X    "rar"    , &i_noopd, 0x1f, geninstr,
  547. X    "rc"     , &i_condm, 0xc0, geninstr,
  548. X    "ret"    , &i_noopd, 0xc9, geninstr,
  549. X    "rim"    , &i_noopd, 0x20, geninstr,
  550. X    "rlc"    , &i_noopd, 0x07, geninstr,
  551. X    "rrc"    , &i_noopd, 0x0f, geninstr,
  552. X    "rst"    , &i_rupt , 0xc7, geninstr,
  553. X    "sbb"    , &i_reg2 , 0x98, geninstr,
  554. X    "sbbm"   , &i_noopd, 0x9e, geninstr,
  555. X    "sbi"    , &i_data , 0xde, geninstr,
  556. X    "shld"   , &i_mem  , 0x22, geninstr,
  557. X    "sim"    , &i_noopd, 0x30, geninstr,
  558. X    "sphl"   , &i_noopd, 0xf9, geninstr,
  559. X    "sta"    , &i_mem  , 0x32, geninstr,
  560. X    "stax"   , &i_rp   , 0x02, geninstr,
  561. X    "stc"    , &i_noopd, 0x37, geninstr,
  562. X    "str"    , &i_reg2 , 0x70, geninstr,
  563. X    "sub"    , &i_reg2 , 0x90, geninstr,
  564. X    "subm"   , &i_noopd, 0x96, geninstr,
  565. X    "sui"    , &i_data , 0xd6, geninstr,
  566. X    "xchg"   , &i_noopd, 0xeb, geninstr,
  567. X    "xra"    , &i_reg2 , 0xa8, geninstr,
  568. X    "xram"   , &i_noopd, 0xae, geninstr,
  569. X    "xri"    , &i_data , 0xee, geninstr,
  570. X    "xthl"   , &i_noopd, 0xe3, geninstr,
  571. X};
  572. X
  573. X#define oplen sizeof(optab)/sizeof(opdef)
  574. X
  575. Xsymbol predef[] = {
  576. X    {"ra"        ,      7, &o_reg , (segmnt *)0 },
  577. X    {"rb"        ,      0, &o_reg , (segmnt *)0 },
  578. X    {"rc"        ,      1, &o_reg , (segmnt *)0 },
  579. X    {"rd"        ,      2, &o_reg , (segmnt *)0 },
  580. X    {"re"        ,      3, &o_reg , (segmnt *)0 },
  581. X    {"rh"        ,      4, &o_reg , (segmnt *)0 },
  582. X    {"rl"        ,      5, &o_reg , (segmnt *)0 },
  583. X    {"rbc"       ,      0, &o_rp  , (segmnt *)0 },
  584. X    {"rde"       ,      1, &o_rp  , (segmnt *)0 },
  585. X    {"rhl"       ,      2, &o_rp  , (segmnt *)0 },
  586. X    {"sp"        ,      3, &o_rp  , (segmnt *)0 },
  587. X    {"rupt0"     ,      0, &o_rupt, (segmnt *)0 },
  588. X    {"rupt1"     ,      1, &o_rupt, (segmnt *)0 },
  589. X    {"rupt2"     ,      2, &o_rupt, (segmnt *)0 },
  590. X    {"rupt3"     ,      3, &o_rupt, (segmnt *)0 },
  591. X    {"rupt4"     ,      4, &o_rupt, (segmnt *)0 },
  592. X    {"rupt5"     ,      5, &o_rupt, (segmnt *)0 },
  593. X    {"rupt6"     ,      6, &o_rupt, (segmnt *)0 },
  594. X    {"rupt7"     ,      7, &o_rupt, (segmnt *)0 },
  595. X    {"nz"        ,      0, &o_cond, (segmnt *)0 },
  596. X    {"z"         ,      1, &o_cond, (segmnt *)0 },
  597. X    {"nc"        ,      2, &o_cond, (segmnt *)0 },
  598. X    {"c"         ,      3, &o_cond, (segmnt *)0 },
  599. X    {"po"        ,      4, &o_cond, (segmnt *)0 },
  600. X    {"pe"        ,      5, &o_cond, (segmnt *)0 },
  601. X    {"p"         ,      6, &o_cond, (segmnt *)0 },
  602. X    {"m"         ,      7, &o_cond, (segmnt *)0 },
  603. X    {"ramstart"  ,      0, &o_mem , (segmnt *)0 },
  604. X    {"ramend"    ,      0, &o_mem , (segmnt *)0 },
  605. X    {"romstart"  ,      0, &o_mem , (segmnt *)0 },
  606. X    {"romend"    ,      0, &o_mem , (segmnt *)0 },
  607. X    {""          ,      0, &o_none, (segmnt *)0 }
  608. X};
  609. /FUNKY/STUFF/
  610.