|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- #pragma once
- #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
-
- #ifdef __BIG_ENDIAN__
- #define regal 1
- #define regah 0
- #define regcl 3
- #define regch 2
- #define regdl 5
- #define regdh 4
- #define regbl 7
- #define regbh 6
- #else
- #define regal 0
- #define regah 1
- #define regcl 2
- #define regch 3
- #define regdl 4
- #define regdh 5
- #define regbl 6
- #define regbh 7
- #endif
-
- #define segbase(x) ((uint32_t) x << 4)
- #define getmem8(x, y) read86(segbase(x) + y)
- #define getmem16(x, y) readw86(segbase(x) + y)
- #define putmem8(x, y, z) write86(segbase(x) + y, z)
- #define putmem16(x, y, z) writew86(segbase(x) + y, z)
- #define getreg16(regid) regs.wordregs[regid]
- #define putreg16(regid, writeval) regs.wordregs[regid] = writeval
-
- typedef void (*INTHOOK) ();
- union _bytewordregs_ {
- uint16_t wordregs[8];
- uint8_t byteregs[8];
- };
-
-
- void write86 (uint32_t addr32, uint8_t value);
- void writew86 (uint32_t addr32, uint16_t value);
- uint8_t read86 (uint32_t addr32);
- uint16_t readw86 (uint32_t addr32);
- int exec86(int execloops); // returns 0 if halted
- void reset86(uint16_t startip);
|