// BEGIN ARDUINO86 USER CONFIGURABLE OPTIONS //SRAM_SIZE should be your total size MINUS 16384 bytes, or if //using networking 19456 bytes! The top of your SRAM needs to //be used for CGA video and optionally ethernet packet memory. //if you have more than 656 KB of RAM accessible, enter 655360 //or if more than 659 KB when using networking. #define SRAM_SIZE 655360UL #define regax 0 #define regcx 1 #define regdx 2 #define regbx 3 #define regsp 4 #define regbp 5 #define regsi 6 #define regdi 7 #define reges 0 #define regcs 1 #define regss 2 #define regds 3 #define regal 0 #define regah 1 #define regcl 2 #define regch 3 #define regdl 4 #define regdh 5 #define regbl 6 #define regbh 7 #define StepIP(x) ip+=x #define getmem8(x,y) read86(segbase(x)+(uint32_t)y) //#define getmem16(x,y) (read86(segbase(x)+y) | ((uint16_t)read86(segbase(x)+y+1)<<8)) #define getmem16(x,y) readw86(segbase(x)+(uint32_t)y) #define putmem8(x,y,z) write86(segbase(x)+(uint32_t)y, z) //#define putmem16(x,y,z) write86(segbase(x)+y, ((z)&0xFF)); write86(segbase(x)+y+1, (((z)>>8)&0xFF)) #define putmem16(x,y,z) writew86(segbase(x)+(uint32_t)y, z) #define signext(value) ((((uint16_t)value&0x80)*0x1FE)|(uint16_t)value) #define signext32(value) ((((uint32_t)value&0x8000)*0x1FFFE)|(uint32_t)value) #define getreg16(regid) regs.wordregs[regid] #define getreg8(regid) regs.byteregs[byteregtable[regid]] #define putreg16(regid, writeval) regs.wordregs[regid] = writeval #define putreg8(regid, writeval) regs.byteregs[byteregtable[regid]] = writeval #define getsegreg(regid) segregs[regid] #define putsegreg(regid, writeval) segregs[regid] = writeval #define segbase(x) ((uint32_t)x<<4) #define makeflagsword() (2 | (uint16_t)cf | ((uint16_t)pf << 2) | ((uint16_t)af << 4) | ((uint16_t)zf << 6) \ | ((uint16_t)sf << 7) | ((uint16_t)tf << 8) | ((uint16_t)ifl << 9) | ((uint16_t)df << 10) | ((uint16_t)of << 11)) #define decodeflagsword(x) {\ temp16 = x;\ cf = temp16 & 1;\ pf = (temp16 >> 2) & 1;\ af = (temp16 >> 4) & 1;\ zf = (temp16 >> 6) & 1;\ sf = (temp16 >> 7) & 1;\ tf = (temp16 >> 8) & 1;\ ifl = (temp16 >> 9) & 1;\ df = (temp16 >> 10) & 1;\ of = (temp16 >> 11) & 1;\ }