3eeb1142181b235453c12218bfbf1548479e264d
2 * COPYRIGHT: GPL - See COPYING in the top level directory
3 * PROJECT: ReactOS Virtual DOS Machine
5 * PURPOSE: Exported functions for manipulating registers
6 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
9 /* INCLUDES *******************************************************************/
15 /* PUBLIC FUNCTIONS ***********************************************************/
22 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].val
;
24 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].Long
;
33 EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].val
= Value
;
35 EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].Long
= Value
;
44 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].w
.lo
;
46 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].LowWord
;
55 EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].w
.lo
= Value
;
57 EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].LowWord
= Value
;
66 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].b
.hi
;
68 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].HighByte
;
77 EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].b
.hi
= Value
;
79 EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].HighByte
= Value
;
88 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].b
.lo
;
90 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].LowByte
;
99 EmulatorContext
.state
->general_reg
[EMULATOR_REG_AX
].b
.lo
= Value
;
101 EmulatorContext
.GeneralRegs
[EMULATOR_REG_AX
].LowByte
= Value
;
110 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].val
;
112 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].Long
;
121 EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].val
= Value
;
123 EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].Long
= Value
;
132 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].w
.lo
;
134 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].LowWord
;
143 EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].w
.lo
= Value
;
145 EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].LowWord
= Value
;
154 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].b
.hi
;
156 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].HighByte
;
165 EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].b
.hi
= Value
;
167 EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].HighByte
= Value
;
176 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].b
.lo
;
178 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].LowByte
;
187 EmulatorContext
.state
->general_reg
[EMULATOR_REG_BX
].b
.lo
= Value
;
189 EmulatorContext
.GeneralRegs
[EMULATOR_REG_BX
].LowByte
= Value
;
200 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].val
;
202 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].Long
;
211 EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].val
= Value
;
213 EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].Long
= Value
;
222 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].w
.lo
;
224 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].LowWord
;
233 EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].w
.lo
= Value
;
235 EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].LowWord
= Value
;
244 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].b
.hi
;
246 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].HighByte
;
255 EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].b
.hi
= Value
;
257 EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].HighByte
= Value
;
266 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].b
.lo
;
268 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].LowByte
;
277 EmulatorContext
.state
->general_reg
[EMULATOR_REG_CX
].b
.lo
= Value
;
279 EmulatorContext
.GeneralRegs
[EMULATOR_REG_CX
].LowByte
= Value
;
290 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].val
;
292 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].Long
;
301 EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].val
= Value
;
303 EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].Long
= Value
;
312 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].w
.lo
;
314 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].LowWord
;
323 EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].w
.lo
= Value
;
325 EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].LowWord
= Value
;
334 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].b
.hi
;
336 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].HighByte
;
345 EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].b
.hi
= Value
;
347 EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].HighByte
= Value
;
356 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].b
.lo
;
358 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].LowByte
;
367 EmulatorContext
.state
->general_reg
[EMULATOR_REG_DX
].b
.lo
= Value
;
369 EmulatorContext
.GeneralRegs
[EMULATOR_REG_DX
].LowByte
= Value
;
379 return EmulatorGetRegister(EMULATOR_REG_SP
);
386 EmulatorSetStack(EmulatorGetRegister(EMULATOR_REG_SS
), Value
);
393 return LOWORD(EmulatorGetRegister(EMULATOR_REG_SP
));
400 EmulatorSetStack(EmulatorGetRegister(EMULATOR_REG_SS
), Value
);
410 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_BP
].val
;
412 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_BP
].Long
;
421 EmulatorContext
.state
->general_reg
[EMULATOR_REG_BP
].val
= Value
;
423 EmulatorContext
.GeneralRegs
[EMULATOR_REG_BP
].Long
= Value
;
432 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_BP
].w
.lo
;
434 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_BP
].LowWord
;
443 EmulatorContext
.state
->general_reg
[EMULATOR_REG_BP
].w
.lo
= Value
;
445 EmulatorContext
.GeneralRegs
[EMULATOR_REG_BP
].LowWord
= Value
;
456 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_SI
].val
;
458 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_SI
].Long
;
467 EmulatorContext
.state
->general_reg
[EMULATOR_REG_SI
].val
= Value
;
469 EmulatorContext
.GeneralRegs
[EMULATOR_REG_SI
].Long
= Value
;
478 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_SI
].w
.lo
;
480 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_SI
].LowWord
;
489 EmulatorContext
.state
->general_reg
[EMULATOR_REG_SI
].w
.lo
= Value
;
491 EmulatorContext
.GeneralRegs
[EMULATOR_REG_SI
].LowWord
= Value
;
502 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_DI
].val
;
504 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_DI
].Long
;
513 EmulatorContext
.state
->general_reg
[EMULATOR_REG_DI
].val
= Value
;
515 EmulatorContext
.GeneralRegs
[EMULATOR_REG_DI
].Long
= Value
;
524 return EmulatorContext
.state
->general_reg
[EMULATOR_REG_DI
].w
.lo
;
526 return EmulatorContext
.GeneralRegs
[EMULATOR_REG_DI
].LowWord
;
535 EmulatorContext
.state
->general_reg
[EMULATOR_REG_DI
].w
.lo
= Value
;
537 EmulatorContext
.GeneralRegs
[EMULATOR_REG_DI
].LowWord
= Value
;
547 return EmulatorGetProgramCounter();
554 EmulatorExecute(EmulatorGetRegister(EMULATOR_REG_CS
), Value
);
561 return LOWORD(EmulatorGetProgramCounter());
568 EmulatorExecute(EmulatorGetRegister(EMULATOR_REG_CS
), Value
);
577 return EmulatorGetRegister(EMULATOR_REG_CS
);
584 EmulatorSetRegister(EMULATOR_REG_CS
, Value
);
591 return EmulatorGetRegister(EMULATOR_REG_SS
);
598 EmulatorSetRegister(EMULATOR_REG_SS
, Value
);
605 return EmulatorGetRegister(EMULATOR_REG_DS
);
612 EmulatorSetRegister(EMULATOR_REG_DS
, Value
);
619 return EmulatorGetRegister(EMULATOR_REG_ES
);
626 EmulatorSetRegister(EMULATOR_REG_ES
, Value
);
633 return EmulatorGetRegister(EMULATOR_REG_FS
);
640 EmulatorSetRegister(EMULATOR_REG_FS
, Value
);
647 return EmulatorGetRegister(EMULATOR_REG_GS
);
654 EmulatorSetRegister(EMULATOR_REG_GS
, Value
);
663 return EmulatorGetFlag(EMULATOR_FLAG_CF
);
671 EmulatorSetFlag(EMULATOR_FLAG_CF
);
673 EmulatorClearFlag(EMULATOR_FLAG_CF
);
680 return EmulatorGetFlag(EMULATOR_FLAG_PF
);
688 EmulatorSetFlag(EMULATOR_FLAG_PF
);
690 EmulatorClearFlag(EMULATOR_FLAG_PF
);
697 return EmulatorGetFlag(EMULATOR_FLAG_AF
);
705 EmulatorSetFlag(EMULATOR_FLAG_AF
);
707 EmulatorClearFlag(EMULATOR_FLAG_AF
);
714 return EmulatorGetFlag(EMULATOR_FLAG_ZF
);
722 EmulatorSetFlag(EMULATOR_FLAG_ZF
);
724 EmulatorClearFlag(EMULATOR_FLAG_ZF
);
731 return EmulatorGetFlag(EMULATOR_FLAG_SF
);
739 EmulatorSetFlag(EMULATOR_FLAG_SF
);
741 EmulatorClearFlag(EMULATOR_FLAG_SF
);
748 return EmulatorGetFlag(EMULATOR_FLAG_IF
);
756 EmulatorSetFlag(EMULATOR_FLAG_IF
);
758 EmulatorClearFlag(EMULATOR_FLAG_IF
);
765 return EmulatorGetFlag(EMULATOR_FLAG_DF
);
773 EmulatorSetFlag(EMULATOR_FLAG_DF
);
775 EmulatorClearFlag(EMULATOR_FLAG_DF
);
782 return EmulatorGetFlag(EMULATOR_FLAG_OF
);
790 EmulatorSetFlag(EMULATOR_FLAG_OF
);
792 EmulatorClearFlag(EMULATOR_FLAG_OF
);
801 return 0; // UNIMPLEMENTED