* sim/ucsim/hc08.src/hc08mac.h: removed faulty and unused add_u16_disp
[fw/sdcc] / sim / ucsim / hc08.src / hc08mac.h
1 /*
2  * Simulator of microcontrollers (z80mac.h)
3  *
4  * some z80 code base from Karl Bongers karl@turbobit.com
5  *
6  * Copyright (C) 1999,99 Drotos Daniel, Talker Bt.
7  * 
8  * To contact author send email to drdani@mazsola.iit.uni-miskolc.hu
9  *
10  */
11
12 // shift positions
13 #define BITPOS_C 0  // 1
14 #define BITPOS_Z 1  // 2H
15 #define BITPOS_N 2  // 4H
16 #define BITPOS_I 3  // 8H
17 #define BITPOS_H 4  // 10H
18 #define BITPUS_V 7  // 80H
19
20 #define store2(addr, val) { ram->set((t_addr) (addr), (val >> 8) & 0xff); \
21                             ram->set((t_addr) (addr+1), val & 0xff); }
22 #define store1(addr, val) ram->set((t_addr) (addr), val)
23 #define get1(addr) ram->get((t_addr) (addr))
24 #define get2(addr) ((ram->get((t_addr) (addr)) << 8) | ram->get((t_addr) (addr+1)) )
25 #define fetch2() ((fetch() << 8) | fetch() )
26 #define fetch1() fetch()
27 #define push2(val) {store2(regs.SP-1,(val)); regs.SP-=2; }
28 #define push1(val) {store1(regs.SP,(val)); regs.SP-=1; }
29 #define pop2(var) {var=get2(regs.SP+1); regs.SP+=2;}
30 #define pop1(var) {var=get1(regs.SP+1); regs.SP+=1;}
31
32
33 #define FLAG_SET(f) {regs.P |= f;}
34 #define FLAG_CLEAR(f) {regs.P &= ~(f);}
35 #define FLAG_ASSIGN(f,c) {regs.P = (c) ? regs.P | (f) : regs.P & ~(f);}
36 #define FLAG_NZ(f) { \
37       regs.P = (regs.P & ~(BIT_N|BIT_Z)) \
38       | (((f) & 0xff) ? 0 : BIT_Z) \
39       | (((f) & 0x80) ? BIT_N : 0) \
40       ; }
41 #define EA_IMM(c) ((((c) >> 4) & 0xf)==0xa)
42 #define OPERAND(code,prefix) (EA_IMM(code) ? fetch() : get1(fetchea(code,prefix)))
43
44
45