public Lister(TapeReader tp, string o) { tr = tp; dr = null; deck = new List <Card>(); hadnoorg = true; out_p = o; FirstAdr = 1000000; LastAdr = -1000000; }
public void Putval(int adr, long value) { if (dr == null) { deck = new List <Card>(); dr = new DeckReader(tr, deck); if (hadnoorg) { startline = thisline; startpage = thispage; } } if (bssflag) { curadr = adr; } if (adr != curadr) { throw new InvalidDataException(string.Format("{0} {1} wrongadr", thispage, thisline)); } if (dr.Read(out int dadr, out long dvalue)) { if ((adr != dadr || value != dvalue) && (dr.Cardtype() != 'F')) { Console.WriteLine("Difference {0} {1}", thispage, thisline); Console.WriteLine("Card {0} {1}", Convert.ToString(dadr, 8).PadLeft(5, '0'), Convert.ToString(dvalue, 8).PadLeft(12, '0')); Console.WriteLine("List {0} {1}", Convert.ToString(adr, 8).PadLeft(5, '0'), Convert.ToString(value, 8).PadLeft(12, '0')); Environment.Exit(-1); } } else { Console.WriteLine("Difference {0} {1}", thispage, thisline); Console.WriteLine("Card Transfer {0}", Convert.ToString(dadr, 8).PadLeft(5, '0')); Console.WriteLine("List {0} {1}", Convert.ToString(adr, 8).PadLeft(5, '0'), Convert.ToString(value, 8).PadLeft(12, '0')); Environment.Exit(-1); } if (adr < FirstAdr) { FirstAdr = adr; } if (adr > LastAdr) { LastAdr = adr; } curadr++; }
public void END(int?TransferAdr) { char tch = ' '; if (TransferAdr != null && dr == null) { deck = new List <Card>(); dr = new DeckReader(tr, deck); if (hadnoorg) { startline = thisline; startpage = thispage; } } if (dr != null) { if (dr.Cardtype() == 'R') { TransferAdr = 0; } if ((TransferAdr != null && (!hadnoorg || TransferAdr != 0))) { if (dr.Read(out int adr, out long value)) { Console.WriteLine("Difference {0} {1}", thispage, thisline); Console.WriteLine("Card {0} {1}", Convert.ToString(adr, 8).PadLeft(5, '0'), Convert.ToString(value, 8).PadLeft(12, '0')); Console.WriteLine("List Transfer {0}", Convert.ToString((int)TransferAdr, 8).PadLeft(5, '0')); Environment.Exit(-1); } else if (adr != TransferAdr) { Console.WriteLine("Difference {0} {1}", thispage, thisline); Console.WriteLine("Card Transfer {0}", Convert.ToString(adr, 8).PadLeft(5, '0')); Console.WriteLine("List Transfer {0}", Convert.ToString((int)TransferAdr, 8).PadLeft(5, '0')); Environment.Exit(-1); } if (dr.Cardtype() != 'T') { tch = 'T'; } } if (!dr.CardEmpty()) { Console.WriteLine("Difference {0} {1}", thispage, thisline); Console.WriteLine("more data on card"); Environment.Exit(-1); } string x = ""; if (startpage != 0) { x += string.Format("Page{0}", startpage); } x += string.Format("Line{0}", startline); x += "_"; x += dr.Cardtype(); if (tch != ' ') { x += tch; } Console.Write("{0}:{1} {2} {3} {4}\n", x, deck.Count, Convert.ToString(FirstAdr, 8).PadLeft(5, '0'), Convert.ToString(LastAdr, 8).PadLeft(5, '0'), TransferAdr != null ? Convert.ToString((int)TransferAdr, 8).PadLeft(5, '0') : ""); using (TapeWriter tw = new TapeWriter(out_p + x + ".cbn", true)) foreach (Card crd in deck) { tw.WriteRecord(true, CBNConverter.ToCBN(crd)); } deck.Clear(); dr = null; } curadr = 0; bssflag = false; hadnoorg = true; FirstAdr = 1000000; LastAdr = -1000000; }