Пример #1
0
 /// <summary>
 /// Constructor for the compiler
 /// </summary>
 /// <param name="FInput">The AGC Code file to read from</param>
 /// <param name="FOutput">The AGC Bin file to write to</param>
 public YUL(String FInput, String FOutput)
 {
     AGC_Code_File = FInput;
     filename = Path.GetFileName(AGC_Code_File);
     AGC_Bit_File = FOutput;
     if (File.Exists(AGC_Bit_File))
     {
         File.Delete(AGC_Bit_File);
     }
     AGC_Bit = File.Create(AGC_Bit_File);
     for (int j = 0; j < 655360; j++)
     {
         AGC_Bit.Write(new byte[] { 0 }, 0, 1);
     }
     AGC_Bit.Close();
     AGC_Bit.Dispose();
     Console.WriteLine("Empty bin file created");
     bank_index_counter = new int[44];
     for (int i = 0; i < 44; i++)
     {
         bank_index_counter[i] = 0;
     }
     Cp_File = File.ReadAllLines(AGC_Code_File);
     FB = 0;
     EB = 0;
     FEB = 0;
     unresolvedLabelError = -6;
     Bank = new BANK(false, FB, FEB, AGC_Bit_File);
     Bank.compiling = true;
     bank_changed = false;
 }
Пример #2
0
 /// <summary>
 /// AGC builder placeholder
 /// </summary>
 public AGC(String file, Channels chan)
 {
     AGC_File = file;
     FEB = 0;
     RegBank = new BANK(true, 0, 0, AGC_File);
     running = false;
     clock = new CLOCK();
     e_mem = false;
     this.chan = chan;
     chan.regDelegate(this, read_chan);
     PB = new BANK(false, 0, 0, AGC_File); //load the current pgrogram bank - at launch : FB0
     fFixed = false;
 }
Пример #3
0
 private void switchBank()
 {
     switch (bank_type)
     {
         case "FB":
             Bank = new BANK(false, FB, FEB, AGC_Bit_File);
             break;
         case "EB":
             Bank = new BANK(true, EB, 0, AGC_Bit_File);
             break;
     }
     Bank.compiling = true;
     bank_changed = false;
 }
Пример #4
0
 public AGC_Compiler(String FInput, String FOutput)
 {
     AGC_Code_File = FInput;
     AGC_Bit_File = FOutput;
     Cp_File = File.ReadAllLines(AGC_Code_File);
     FB = 0; EB = 0;
     FEB = 0;
     B = new BANK(false, FB, FEB, AGC_Bit_File);
     B.compiling = true;
     process_line(0);
     foreach (KeyValuePair<string, int> kvp in labels)
     {
         Console.WriteLine("Label : {0} - Value : {1}", kvp.Key, kvp.Value);
     }
     process_line(1);
 }
Пример #5
0
 /// <summary>
 /// start (run) a previous AGC intialized (powered up)
 /// </summary>
 public void start()
 {
     if(!running)
     {
         clock.c_start();
         cycle_count = 0;
         running = true;
         b = new BANK(false, FB, FEB.getHex(), AGC_File);
         Console.WriteLine("AGC Started");
         B = b.get_word(Z.getHex());
         B.setWord(B.hexToByte());
         Z.setHex((ushort)(Z.getHex() + 1));
         MCT();
     }
     else
     {
         Console.WriteLine("AGC Halted.");
     }
 }
Пример #6
0
 /// <summary>
 /// AGC builder placeholder
 /// </summary>
 public AGC(String file)
 {
     A = new sWord(0x0, false);
     Z = new sWord(0x0, false);
     Q = new sWord(0x0, false);
     L = new sWord(0x0, false);
     G = new sWord(0x0, false);
     X = new sWord(0x0, false);
     Y = new sWord(0x0, false);
     U = new sWord(0x0, false);
     B = new sWord(0x0, false);
     FEB = new sWord(0x0, false);
     FB = 0; EB = 0; S = 0; SQ = 0;
     running = false;
     clock = new CLOCK();
     b = null;
     cycle_count = 0;
     AGC_File = file;
 }
Пример #7
0
 //Bank management
 public void switch_bank(bool erasable)
 {
     if (erasable)
     {
         PB.write_bank();
         PB = new BANK(true,RegBank.get_word(3),0,AGC_File);
     }
     else
     {
         PB = new BANK(false, RegBank.get_word(4), FEB, AGC_File);
     }
 }
Пример #8
0
 public void restore_fFixed()
 {
     PB.write_bank();
     if (PB.isErasable() && (PB.getId() == 0))
     { RegBank = new BANK(true, 0, 0, AGC_File); }
     PB = new BANK(tEr, tId, tFEB, AGC_File);
     e_mem = tEr;
 }
Пример #9
0
 public int fFixed_switch(int adr)
 {
     tEr = PB.isErasable();
     tId = (short)PB.getId();
     tFEB = PB.getFEB();
     sWord s = new sWord((short)adr);
     if (s.getVal(10, 11) == 0)
     {
         if ((short)s.getVal(8, 9) == 0)
         { PB = RegBank; }
         else
         {
             PB = new BANK(true, (short)s.getVal(8, 9), 0, AGC_File);
         }
         adr = s.getVal(0, 7);
         e_mem = true;
     }
     else
     {
         PB = new BANK(false, (short)s.getVal(10, 11), 0, AGC_File);
         adr = s.getVal(0, 9);
         e_mem = false;
     }
     return adr;
 }