コード例 #1
0
        int PosInRecord;      /* index in RRecord for next read word */

        void EndRW()          /* finish current reading or writing operation */
        {
            if (ReadActive)
            {
                RRecord    = null;
                ReadActive = false;
                if (Io704.Config.LogIO != null)
                {
                    Io704.LogIO.WriteLine("Tape {0} end read", unit);
                }
            }
            if (WriteActive)
            {
                byte[] tr = new byte[WRecord.Count * 6];
                int    i  = 0;
                foreach (long w in WRecord)
                {
                    long wt = w;
                    for (int j = i + 5; j >= i; j--)
                    {
                        tr[j] = (byte)(wt & 0x3F);
                        wt  >>= 6;
                    }
                    i += 6;
                }
                f.WriteRecord(wbin, tr);
                if (Io704.Config.LogIO != null)
                {
                    Io704.LogIO.WriteLine("Tape {0}: {1} record {2} with length {3} written", unit, wbin ? "binary" : "BCD", f.NumOfRecords(), WRecord.Count);
                }
                WriteActive = false;
                WRecord.Clear();
            }
        }
コード例 #2
0
 void EndRW() /* finish current reading or writing operation */
 {
     if (WriteActive)
     {
         if (Io704.Config.LogIO != null)
         {
             Io704.LogIO.WriteLine("Punch: record with length {0} written", WRecord.Count);
         }
         while (WRecord.Count < 24)
         {
             WRecord.Add(0);
         }
         byte[] CBN = CBNConverter.ToCBN(WRecord.ToArray());
         f.WriteRecord(true, CBN);
         WriteActive = false;
         WRecord.Clear();
     }
 }