public void addProgramFromFile(string fileName) { //var codeStorage = new Storage(fileName); //byte[] altcode = Util.getCode("MOVB 4\nOPENFILEHANDLE\nSAVEB 12\nMOVA 20\nMOVATOCX\nMOVA 0\nWRITE\nHALT\n"); //byte[] altcode = Util.getCode("MOVB 4\nOPENFILEHANDLE\nSAVEB 12\nMOVA 20\nMOVATOCX\nMOVA 0\nREAD\nCLOSEHANDLE\nHALT\n"); //byte[] altcode = Util.getCode("MOVA 20\nMOVATOCX\nMOVA 4\nPRINTC\nHALT\n"); //byte[] altcode = Util.getCode("MOVA 20\nMOVATOCX\nMOVA 4\nREADC\nHALT\n"); //byte[] altcode = Util.getCode("MOUNT 0\nMOVA 0\nMOVATOCX\nMOVA 8\nWRITE\nMOVA 4\nREAD\nHALT\n"); //string t = "0000001000000008\"big\0\"00000000FFFFFFFF00000004"; //string t2 = "0000001000000008\"big\0\"00000000BBBBBBBB00000004"; //string t = "0000000C00000008\"big\0\"00000000BBBBBBBB00000004"; //string t = "000000040000000100000004"; //byte[] altdata = Util.getData(t); StorageFile codeFile = StorageFile.Open(this.codeStorage, fileName); VMInfo programData = Util.readCodeFromFile(codeFile); //Util.saveCodeToHdd(codeStorage, 10, new VMInfo { code = altcode, data = altdata }); uint rowCount = (uint)((programData.code.Length + programData.data.Length) / Constants.BLOCK_SIZE) + 1; //uint rowCount = 10; MemAccesser memAccesser = virtualMemory.reserveMemory(rowCount); memAccesser.writeFromAddr(0, programData.code); memAccesser.writeFromAddr((uint)programData.code.Length, programData.data); Program program = new Program(fileName, memAccesser); program.registers.CS = 0; program.registers.DS = 0 + (uint)programData.code.Length; programs.Add(program); }