public void MspRealModeServices() { IntelArchitecture arch = new IntelArchitecture(ProcessorMode.Real); Platform platform = new MsdosPlatform(null, arch); var state = arch.CreateProcessorState(); state.SetRegister(Registers.ah, Constant.Byte(0x3E)); SystemService svc = platform.FindService(0x21, state); Assert.AreEqual("msdos_close_file", svc.Name); Assert.AreEqual(1, svc.Signature.Parameters.Length); Assert.IsFalse(svc.Characteristics.Terminates, "close() shouldn't terminate program"); state.SetRegister(Registers.ah, Constant.Byte(0x4C)); svc = platform.FindService(0x21, state); Assert.AreEqual("msdos_terminate", svc.Name); Assert.AreEqual(1, svc.Signature.Parameters.Length); Assert.IsTrue(svc.Characteristics.Terminates, "terminate() should terminate program"); state.SetRegister(Registers.ah, Constant.Byte(0x2F)); svc = platform.FindService(0x21, state); Assert.AreEqual("msdos_get_disk_transfer_area_address", svc.Name); Assert.AreEqual(0, svc.Signature.Parameters.Length); SequenceStorage seq = (SequenceStorage) svc.Signature.ReturnValue.Storage; Assert.AreEqual("es", seq.Head.Name); Assert.AreEqual("bx", seq.Tail.Name); }
public void i86() { arch = new IntelArchitecture(ProcessorMode.Real); Platform = new MsdosPlatform(null, arch); SetDefaultWordWidth(PrimitiveType.Word16); }