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(); } }
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(); } }