Exemple #1
0
 public void Run(vm machine)
 {
     if (machine.A == TERMINATE) {
         machine.RN = false;
     } else if (machine.A == BREAK) {
         machine.BRK = true;
     } else if (machine.A == UNLOAD_DEVICE) {
         int device = machine.AX;
         machine.UnloadDevice(device);
     } else if (machine.A == LOAD_PROGRAM) {
         int device = machine.AX;
         StorageDevice disk = (StorageDevice)machine.GetDevice(device);
         machine.LoadProgram(disk.GetData());
     } else if (machine.A == GET_ROM_DEVICE) {
         for (int i = 0; i < machine.NumberOfDevices(); i++) {
             VMDevice device = machine.GetDevice(i);
             if(device is VirtualROMDisk) {
                 machine.EX = i;
                 if(machine.AX <= 0) {
                     return;
                 }
                 machine.AX--;
             }
         }
         throw new Exception("No ROM devices found!");
     }
 }
Exemple #2
0
 public void Run(vm machine)
 {
     if(machine.A == GETDIR)	{
         machine.pager.Push(machine.hdi.GetWorkingDirectory(),machine.CR3);
     } else if (machine.A == CHANGEDIR) {
         string path = machine.pager.PopString(machine.CR3);
         machine.hdi.ChangeDirectory(path);
     } else if (machine.A == CREATEDIR) {
         string dir = machine.pager.PopString(machine.CR3);
         machine.hdi.CreateDirectory(dir);
     } else if (machine.A == CREATEFILE) {
         string filename = machine.pager.PopString(machine.CR3);
         machine.hdi.CreateFile(filename);
     } else if (machine.A == OPENFILE) {
         string filename = machine.pager.PopString(machine.CR3);
         machine.hdi.OpenFile(filename);
     } else if (machine.A == CLOSEFILE) {
         machine.hdi.CloseFile();
     } else if (machine.A == READBYTES) {
         int len = machine.AX;
         uint addr = machine.DA;
         byte[] data = machine.hdi.ReadBytes(len);
         if(machine.pager.checkVAT(addr,(uint)len,machine.CR3)) {
         } else {
         }
     } else if (machine.A == WRITEBYTES) {
     } else if (machine.A == LOADPROGRAM) {
         byte[] program = machine.hdi.ReadAllBytes();
         machine.LoadProgram(program);
     } else if (machine.A == DIREXISTS) {
         string name = machine.pager.PopString(machine.CR3);
         machine.CP = machine.hdi.DirectoryExists(name);
     } else if (machine.A == FILEEXISTS) {
         string name = machine.pager.PopString(machine.CR3);
         machine.CP = machine.hdi.FileExists(name);
     }
 }