diff --git a/doc/CHANGELOG.md b/doc/CHANGELOG.md
index 21208d4d..a93b33ff 100644
--- a/doc/CHANGELOG.md
+++ b/doc/CHANGELOG.md
@@ -25,7 +25,7 @@ The full set of tests is only run for tagged releases.
### Summary
- use vivado 2019.1 as default
-- finalize coverity fixups, now defect free
+- finalize coverity fixups, now defect free ([see blog](https://wfjm.github.io/blogs/w11/2019-06-14-coverity-fixes-done.html))
- use SPDX license tags, remove boilerplate license disclaimers
### New features
@@ -39,17 +39,24 @@ The full set of tests is only run for tagged releases.
- librtools/Rstats: add Reset(); drop operator-=() and operator*=()
- librtcltools/RtclStats: Rename Collect->Exec, not longer const; add -reset
- libr*/*: Stats() not longer const; use RtclStats::Exec()
- - librtools/RparseUrl: add DirName,FileName,FileStem,FileType
- - librw11/Rw11VirtDisk(File): use RfileFd
- - librw11/Rw11Cpu: MemWriteByte(): use AddMembe()
- - derive ReventFd and RtimerFd from Rfd
+ - other backend updates
+ - RparseUrl: add DirName,FileName,FileStem,FileType
+ - derive ReventFd and RtimerFd from Rfd
+ - Rw11VirtDiskFile,Rw11VirtTapeTap: use RfileFd
+ - Rw11Cpu: MemWriteByte(): use AddMembe()
+ - Rw11CntlTM11: support odd record length
- generic_so.mk: use -scrUuv for ar to avoid "'u' modifier ignored"
- tools/oskit/hook/hook_ibmon_*.tcl: check ibmon availability
+ - tap2file: add -v option
- firmware changes
- sys_w11a_arty: down-rate to 72 MHz, viv 2019.1 fails with 75 MHz
- sys_w11a_*.vmfset: add new rule for vivado 2019.1
- pdp11_vmbox: support membe for em cacc access
+### Bug Fixes
+- tap2file: correct rlmax calculation
+- Rw11CntlTM11: AddNormalExit(): get tmds logic right
+
---
## 2019-06-01: [w11a_V0.78](https://github.com/wfjm/w11/releases/tag/w11a_V0.78) - rev 1158(wfjm)
diff --git a/tools/bin/tap2file b/tools/bin/tap2file
index b02ecb83..07eec401 100755
--- a/tools/bin/tap2file
+++ b/tools/bin/tap2file
@@ -1,10 +1,11 @@
#!/usr/bin/perl -w
-# $Id: tap2file 1172 2019-06-29 07:27:24Z mueller $
+# $Id: tap2file 1180 2019-07-08 15:46:59Z mueller $
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright 2015-2019 by Walter F.J. Mueller
#
# Revision History:
# Date Rev Version Comment
+# 2019-07-08 1180 1.0.3 BUGFIX in rlmax calculation; add -v option
# 2018-12-18 1089 1.0.2 add and use bailout
# 2015-06-03 686 1.0.1 add print_usage; cleanups
# 2015-05-24 684 1.0 Initial version
@@ -20,7 +21,7 @@ use Getopt::Long;
my %opts = ();
-GetOptions(\%opts, "pref=s", "help")
+GetOptions(\%opts, "pref=s", "v", "help")
or bailout("bad command options");
if (scalar(@ARGV) == 0 || exists $opts{help}) {
@@ -53,11 +54,13 @@ while ($nb = read(IFILE, $block, 4)) {
my $metabeg = unpack("V", $block);
if ($metabeg == 0x00000000) {
+ printf "%4d,%5d : ---EOF---\n",$nfile,$nrec if $opts{v};
close_ofile();
$nfile += 1;
next;
}
if ($metabeg == 0xffffffff) {
+ printf "%4d,%5d : ---EOT---\n",$nfile,$nrec if $opts{v};
last;
}
@@ -73,7 +76,13 @@ while ($nb = read(IFILE, $block, 4)) {
$rlmax = $metabeg;
} else {
$rlmin = $metabeg if $metabeg < $rlmin;
- $rlmax = $metabeg if $metabeg > $rlmin;
+ $rlmax = $metabeg if $metabeg > $rlmax;
+ }
+ if ($opts{v}) {
+ printf "%4d,%5d : %6d :",$nfile,$nrec,$metabeg;
+ foreach (unpack("C16", $block)) {printf " %2.2x", $_};
+ print " ..." if $metabeg > 16;
+ print "\n";
}
$nrec += 1;
@@ -122,5 +131,6 @@ sub print_usage {
print " ifile input tap file\n";
print " Options\n";
print " --pref=p use p as prefix for generated files\n";
+ print " --v verbose, trace each record\n";
print " --help this message\n";
}
diff --git a/tools/man/man1/tap2file.1 b/tools/man/man1/tap2file.1
index b206d99d..5ecab86a 100644
--- a/tools/man/man1/tap2file.1
+++ b/tools/man/man1/tap2file.1
@@ -1,11 +1,11 @@
.\" -*- nroff -*-
-.\" $Id: tap2file.1 686 2015-06-04 21:08:08Z mueller $
+.\" $Id: tap2file.1 1180 2019-07-08 15:46:59Z mueller $
.\"
-.\" Copyright 2015- by Walter F.J. Mueller
+.\" Copyright 2015-2019 by Walter F.J. Mueller
.\"
.\" ------------------------------------------------------------------
.
-.TH TAP2FILE 1 2015-06-03 "Retro Project" "Retro Project Manual"
+.TH TAP2FILE 1 2019-07-08 "Retro Project" "Retro Project Manual"
.\" ------------------------------------------------------------------
.SH NAME
tap2file \- split a tap format tape container into individual files
@@ -14,6 +14,7 @@ tap2file \- split a tap format tape container into individual files
.
.SY tap2file
.OP \-\-pref=p
+.OP \-\-v
.I FILE
.
.SY tap2file
@@ -35,14 +36,20 @@ the record length is variable the minimal and the maximal record length is given
.SH OPTIONS
.
.\" ----------------------------------------------
-.IP "\fB\-\-pref\fR=\fIp\fR"
+.IP "\fB\-pref\fR=\fIp\fR"
use \fIp\fR as prefix to generate the names of all generated file. If not
specified the stem of the input file name is taken.
.
.\" ----------------------------------------------
+.IP "\fB\-v\fR"
+verbose mode, prints a message per processed record which contains file number,
+record number, record length and the first 16 bytes as hex dump. EOF and
+EOT markers are also indicated. Can be useful for tapes with varying record
+length files or for debugging.
+.
+.\" ----------------------------------------------
.IP "\fB\-help\fR"
print full help text and exit.
-.
.\" ------------------------------------------------------------------
.SH EXAMPLES
.IP "\fBtap2file tmscptape.tap\fR" 4
@@ -67,6 +74,30 @@ byte records, and the remaining ones 10240 byte records. In case of a tape
generated by a Unix system a record length of 10240 is a good hint this the
file contains a \fBtar\fR(1) archive.
+.IP "\fBtap2file -v test.tap\fR" 4
+reads the file \fItest.tap\fR and writes a one line trace info for each record.
+The stdout output might look like
+
+.EX
+ 0, 0 : 80 : 00 00 00 00 50 00 06 07 08 09 0a 0b 0c 0d ...
+ 0, 1 : 80 : 00 00 01 00 50 00 06 07 08 09 0a 0b 0c 0d ...
+ 0, 2 : 160 : 00 00 02 00 a0 00 06 07 08 09 0a 0b 0c 0d ...
+ 0, 3 : 160 : 00 00 03 00 a0 00 06 07 08 09 0a 0b 0c 0d ...
+ 0, 4 : ---EOF---
+test_00.dat: 4 records, length min= 80, max= 160
+ 1, 0 : 92 : 01 00 00 00 5c 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 1 : 92 : 01 00 01 00 5c 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 2 : 92 : 01 00 02 00 5c 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 3 : 100 : 01 00 03 00 64 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 4 : 100 : 01 00 04 00 64 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 5 : 96 : 01 00 05 00 60 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 6 : 96 : 01 00 06 00 60 00 06 07 08 09 0a 0b 0c 0d ...
+ 1, 7 : ---EOF---
+test_01.dat: 7 records, length min= 92, max= 100
+ 5, 0 : ---EOF---
+ 6, 0 : ---EOT---
+.EE
+
.\" ------------------------------------------------------------------
.SH "SEE ALSO"
.BR file2tap (1)
diff --git a/tools/src/librw11/Rw11CntlTM11.cpp b/tools/src/librw11/Rw11CntlTM11.cpp
index 4f4b59f6..a0d3368f 100644
--- a/tools/src/librw11/Rw11CntlTM11.cpp
+++ b/tools/src/librw11/Rw11CntlTM11.cpp
@@ -1,20 +1,13 @@
-// $Id: Rw11CntlTM11.cpp 1133 2019-04-19 18:43:00Z mueller $
-//
+// $Id: Rw11CntlTM11.cpp 1183 2019-07-10 18:48:41Z mueller $
+// SPDX-License-Identifier: GPL-3.0-or-later
// Copyright 2015-2019 by Walter F.J. Mueller
// Other credits:
// the boot code is from the simh project and Copyright Robert M Supnik
//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 3, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
-//
// Revision History:
// Date Rev Version Comment
+// 2019-07-10 1183 1.1 support odd record length
+// 2019-07-08 1182 1.0.11 BUGFIX: AddNormalExit(): get tmds logic right
// 2019-04-19 1133 1.0.10 use ExecWibr()
// 2019-04-14 1131 1.0.9 proper unit init, call UnitSetupAll() in Start()
// 2019-02-23 1114 1.0.8 use std::bind instead of lambda
@@ -30,7 +23,6 @@
// ---------------------------------------------------------------------------
/*!
- \file
\brief Implemenation of Rw11CntlTM11.
*/
@@ -138,10 +130,10 @@ Rw11CntlTM11::Rw11CntlTM11()
fRd_tmsr(0),
fRd_tmbc(0),
fRd_tmba(0),
- fRd_bc(0),
fRd_addr(0),
fRd_nwrd(0),
fRd_fu(0),
+ fRd_rddone(0),
fRd_opcode(0),
fBuf(),
fRdma(this,
@@ -292,10 +284,10 @@ void Rw11CntlTM11::Dump(std::ostream& os, int ind, const char* text,
os << bl << " fRd_tmsr: " << RosPrintBvi(fRd_tmsr,8) << endl;
os << bl << " fRd_tmbc: " << RosPrintBvi(fRd_tmbc,8) << endl;
os << bl << " fRd_tmba: " << RosPrintBvi(fRd_tmba,8) << endl;
- os << bl << " fRd_bc: " << RosPrintf(fRd_bc,"d",6) << endl;
os << bl << " fRd_addr: " << RosPrintBvi(fRd_addr,8,18) << endl;
os << bl << " fRd_nwrd: " << RosPrintf(fRd_nwrd,"d",6) << endl;
os << bl << " fRd_fu: " << fRd_fu << endl;
+ os << bl << " fRd_rddone: " << RosPrintf(fRd_rddone,"d",6) << endl;
os << bl << " fRd_opcode: " << fRd_opcode << endl;
os << bl << " fBuf.size: " << RosPrintf(fBuf.size(),"d",6) << endl;
fRdma.Dump(os, ind+2, "fRdma: ", detail);
@@ -400,16 +392,13 @@ int Rw11CntlTM11::AttnHandler(RlinkServer::AttnArgs& args)
fStats.Inc(kStatNFuncRead);
size_t nwalloc = (nbyt+1)/2;
if (fBuf.size() < nwalloc) fBuf.resize(nwalloc);
- size_t ndone;
bool rc = unit.VirtReadRecord(nbyt, reinterpret_cast(fBuf.data()),
- ndone, fRd_opcode, emsg);
+ fRd_rddone, fRd_opcode, emsg);
if (!rc) WriteLog("read", emsg);
- if ((!rc) || ndone == 0) {
+ if ((!rc) || fRd_rddone == 0) {
AddFastExit(clist, fRd_opcode, 0);
- } else if (ndone&0x1) { // FIXME_code: add odd rlen handling
- AddErrorExit(clist, kTMCR_M_RICMD|kTMSR_M_BTE); // now just bail out !!
} else {
- size_t nwdma = ndone/2;
+ size_t nwdma = fRd_rddone/2;
fRdma.QueueWMem(addr, fBuf.data(), nwdma, Rw11Cpu::kCPAH_M_UBM22);
}
@@ -418,11 +407,7 @@ int Rw11CntlTM11::AttnHandler(RlinkServer::AttnArgs& args)
fStats.Inc((fu==kFUNC_WRITE) ? kStatNFuncWrite : kStatNFuncWrteg);
size_t nwdma = (nbyt+1)/2;
if (fBuf.size() < nwdma) fBuf.resize(nwdma);
- if (nbyt&0x1) { // FIXME_code: add odd rlen handling
- AddErrorExit(clist, kTMCR_M_RICMD|kTMSR_M_BTE); // now just bail out !!
- } else {
- fRdma.QueueRMem(addr, fBuf.data(), nwdma, Rw11Cpu::kCPAH_M_UBM22);
- }
+ fRdma.QueueRMem(addr, fBuf.data(), nwdma, Rw11Cpu::kCPAH_M_UBM22);
} else if (fu == kFUNC_WEOF) { // Write Eof ---------------------
fStats.Inc(kStatNFuncWeof);
@@ -547,16 +532,7 @@ void Rw11CntlTM11::AddFastExit(RlinkCommandList& clist, int opcode, size_t ndone
tmcr |= (kRFUNC_DONE<1) {
- RlogMsg lmsg(LogFile());
- bool err = tmcr & (kTMCR_M_RBTE);
- lmsg << "-I " << Name() << (err ? ": err " : ": ok ")
- << " un=" << unum
- << " cr=" << RosPrintBvi(tmcr,8)
- << " "
- << " bc=" << RosPrintBvi(tmbc,8)
- << " ds=" << RosPrintBvi(tmds,8);
- }
+ if (fTraceLevel>1) WriteExitLog(tmcr, fRd_addr, tmbc, tmds);
return;
}
@@ -570,19 +546,26 @@ void Rw11CntlTM11::AddNormalExit(RlinkCommandList& clist, size_t ndone,
uint16_t unum = (fRd_tmcr>>kTMCR_V_UNIT) & kTMCR_B_UNIT;
Rw11UnitTM11& unit = *fspUnit[unum];
Rw11Cpu& cpu = Cpu();
-
- uint16_t tmds = kTMRL_M_ONL;
- if (unit.Virt().WProt()) tmds |= kTMRL_M_WRL;
- if (unit.Virt().Bot()) tmds |= kTMRL_M_BOT;
- if (unit.Virt().Eot()) tmds |= kTMRL_M_EOT;
-
+
uint32_t addr = fRd_addr + 2*ndone;
uint16_t tmbc = fRd_tmbc + 2*uint16_t(ndone);
+ size_t nbyt = 2*ndone;
if (fRd_fu == kFUNC_READ) { // handle READ
+ if (fRd_rddone & 0x1) { // odd rlen corrections
+ addr += 1;
+ tmbc += 1;
+ }
+
switch (fRd_opcode) {
- case Rw11VirtTape::kOpCodeOK:
+ case Rw11VirtTape::kOpCodeOK:
+ if (fRd_rddone & 0x1) { // write trailing byte
+ nbyt += 1;
+ Cpu().AddLalh(clist, fRd_addr + 2*ndone, Rw11Cpu::kCPAH_M_UBM22);
+ Cpu().AddMembe(clist, Rw11Cpu::kCPMEMBE_M_BE0);
+ clist.AddWreg(Rw11Cpu::kCPMEM, fBuf[ndone]);
+ }
break;
case Rw11VirtTape::kOpCodeRecLenErr:
@@ -601,12 +584,23 @@ void Rw11CntlTM11::AddNormalExit(RlinkCommandList& clist, size_t ndone,
} else { // handle WRITE or WEIRG
int opcode;
RerrMsg emsg;
- size_t nbyt = 2*ndone;
+ if (fRd_tmbc & 0x1) { // odd rlen corrections
+ nbyt -= 1;
+ addr -= 1;
+ tmbc -= 1;
+ }
+
if (!unit.VirtWriteRecord(nbyt, reinterpret_cast(fBuf.data()),
opcode, emsg))
WriteLog("write", emsg);
}
+ // now Virt status up-to-date, even for writes
+ uint16_t tmds = kTMRL_M_ONL;
+ if (unit.Virt().WProt()) tmds |= kTMRL_M_WRL;
+ if (unit.Virt().Bot()) tmds |= kTMRL_M_BOT;
+ if (unit.Virt().Eot()) tmds |= kTMRL_M_EOT;
+
uint16_t tmba = uint16_t(addr & 0xfffe);
uint16_t ea = uint16_t((addr>>16)&0x0003);
tmcr |= kTMCR_M_REAENA | (ea<1) {
- RlogMsg lmsg(LogFile());
- bool err = tmcr & (kTMCR_M_RPAE|kTMCR_M_RRLE|kTMCR_M_RBTE|kTMCR_M_RNXM);
- lmsg << "-I " << Name() << (err ? ": err " : ": ok ")
- << " un=" << unum
- << " cr=" << RosPrintBvi(tmcr,8)
- << " ad=" << RosPrintBvi(addr,8,18)
- << " bc=" << RosPrintBvi(tmbc,8)
- << " ds=" << RosPrintBvi(tmds,8);
- }
+ if (fTraceLevel>1) WriteExitLog(tmcr, addr, tmbc, tmds);
return;
}
@@ -647,5 +632,28 @@ void Rw11CntlTM11::WriteLog(const char* func, RerrMsg& emsg)
return;
}
+//------------------------------------------+-----------------------------------
+//! FIXME_docs
+
+void Rw11CntlTM11::WriteExitLog(uint16_t tmcr, uint32_t addr,
+ uint16_t tmbc, uint16_t tmds)
+{
+ uint16_t unum = (fRd_tmcr>>kTMCR_V_UNIT) & kTMCR_B_UNIT;
+ RlogMsg lmsg(LogFile());
+
+ bool err = tmcr & (kTMCR_M_RPAE|kTMCR_M_RRLE|kTMCR_M_RBTE|kTMCR_M_RNXM);
+ uint16_t nbyt = tmbc - fRd_tmbc;
+ lmsg << "-I " << Name() << (err ? ": err " : ": ok ")
+ << " un=" << unum
+ << " cr=" << RosPrintBvi(tmcr,8)
+ << " ad=" << RosPrintBvi(addr,8,18)
+ << " bc=" << RosPrintBvi(tmbc,8)
+ << " nb=" << RosPrintf(nbyt,"d",5)
+ << " ds=" << RosPrintBvi(tmds,8);
+ if (tmds & kTMRL_M_EOF) lmsg << " EOF";
+ if (tmds & kTMRL_M_EOT) lmsg << " EOT";
+ if (tmds & kTMRL_M_BOT) lmsg << " BOT";
+ return;
+}
} // end namespace Retro
diff --git a/tools/src/librw11/Rw11CntlTM11.hpp b/tools/src/librw11/Rw11CntlTM11.hpp
index 5582e01a..7b011e38 100644
--- a/tools/src/librw11/Rw11CntlTM11.hpp
+++ b/tools/src/librw11/Rw11CntlTM11.hpp
@@ -1,18 +1,10 @@
-// $Id: Rw11CntlTM11.hpp 1160 2019-06-07 17:30:17Z mueller $
-//
+// $Id: Rw11CntlTM11.hpp 1183 2019-07-10 18:48:41Z mueller $
+// SPDX-License-Identifier: GPL-3.0-or-later
// Copyright 2015-2019 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 3, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
//
// Revision History:
// Date Rev Version Comment
+// 2019-07-10 1183 1.1 support odd record length
// 2019-06-07 1160 1.0.2 RdmaStats() not longer const
// 2017-04-02 865 1.0.1 Dump(): add detail arg
// 2015-06-04 686 1.0 Initial version
@@ -21,7 +13,6 @@
/*!
- \file
\brief Declaration of class Rw11CntlTM11.
*/
@@ -155,6 +146,8 @@ namespace Retro {
void AddNormalExit(RlinkCommandList& clist, size_t ndone,
uint16_t tmcr=0);
void WriteLog(const char* func, RerrMsg& emsg);
+ void WriteExitLog(uint16_t tmcr, uint32_t addr,
+ uint16_t tmbc, uint16_t tmds);
protected:
size_t fPC_tmcr; //!< PrimClist: tmcr index
@@ -166,10 +159,10 @@ namespace Retro {
uint16_t fRd_tmsr; //!< Rdma: request tmsr
uint16_t fRd_tmbc; //!< Rdma: request tmbc
uint16_t fRd_tmba; //!< Rdma: request tmba
- uint32_t fRd_bc; //!< Rdma: request bc
uint32_t fRd_addr; //!< Rdma: current addr
uint32_t fRd_nwrd; //!< Rdma: current nwrd
uint16_t fRd_fu; //!< Rdma: request fu code
+ size_t fRd_rddone; //!< Rdma: bytes read
int fRd_opcode; //!< Rdma: read opcode
std::vector fBuf; //!< data buffer
Rw11Rdma fRdma; //!< Rdma controller
diff --git a/tools/src/librw11/Rw11CntlTM11.ipp b/tools/src/librw11/Rw11CntlTM11.ipp
index 4f4c6188..234be9b7 100644
--- a/tools/src/librw11/Rw11CntlTM11.ipp
+++ b/tools/src/librw11/Rw11CntlTM11.ipp
@@ -1,15 +1,6 @@
-// $Id: Rw11CntlTM11.ipp 1160 2019-06-07 17:30:17Z mueller $
-//
+// $Id: Rw11CntlTM11.ipp 1183 2019-07-10 18:48:41Z mueller $
+// SPDX-License-Identifier: GPL-3.0-or-later
// Copyright 2015-2019 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 3, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
//
// Revision History:
// Date Rev Version Comment
@@ -18,7 +9,6 @@
// ---------------------------------------------------------------------------
/*!
- \file
\brief Implemenation (inline) of Rw11CntlTM11.
*/
diff --git a/tools/src/librw11/Rw11UnitTM11.cpp b/tools/src/librw11/Rw11UnitTM11.cpp
index 2fd0737c..5e98a4ac 100644
--- a/tools/src/librw11/Rw11UnitTM11.cpp
+++ b/tools/src/librw11/Rw11UnitTM11.cpp
@@ -1,15 +1,6 @@
-// $Id: Rw11UnitTM11.cpp 1081 2018-12-14 22:29:42Z mueller $
-//
-// Copyright 2015-2017 by Walter F.J. Mueller
-//
-// This program is free software; you may redistribute and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation, either version 3, or (at your option) any later version.
-//
-// This program is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY, without even the implied warranty of MERCHANTABILITY
-// or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
-// for complete details.
+// $Id: Rw11UnitTM11.cpp 1180 2019-07-08 15:46:59Z mueller $
+// SPDX-License-Identifier: GPL-3.0-or-later
+// Copyright 2015-2019 by Walter F.J. Mueller
//
// Revision History:
// Date Rev Version Comment
@@ -44,7 +35,7 @@ Rw11UnitTM11::Rw11UnitTM11(Rw11CntlTM11* pcntl, size_t index)
: Rw11UnitTapeBase(pcntl, index),
fTmds(0)
{
- // setup disk geometry: only rk05 supported, no rk05f !
+ // setup tape unit type: only tu10 supported !
fType = "tu10";
fEnabled = true;
}
diff --git a/tools/tcl/ibd_tm11/util.tcl b/tools/tcl/ibd_tm11/util.tcl
index 4752cd37..c0b8e18c 100644
--- a/tools/tcl/ibd_tm11/util.tcl
+++ b/tools/tcl/ibd_tm11/util.tcl
@@ -1,9 +1,10 @@
-# $Id: util.tcl 1177 2019-06-30 12:34:07Z mueller $
+# $Id: util.tcl 1180 2019-07-08 15:46:59Z mueller $
# SPDX-License-Identifier: GPL-3.0-or-later
-# Copyright 2015- by Walter F.J. Mueller
+# Copyright 2015-2019 by Walter F.J. Mueller
#
# Revision History:
# Date Rev Version Comment
+# 2019-07-08 1180 1.0.2 add sym def for CR.den values
# 2015-12-26 719 1.0.1 add regmap_add defs
# 2015-05-17 683 1.0 Initial version
#
@@ -22,8 +23,8 @@ namespace eval ibd_tm11 {
regdsc SR {icmd 15} {eof 14} {pae 12} {eot 10} {rle 9} {bte 8} {nxm 7} \
{onl 6} {bot 5} {wrl 2} {rew 1} {tur 0}
- regdsc CR {err 15} {den 14 2} {ini 12} {pevn 11} {unit 10 3} \
- {rdy 7} {ie 6} {ea 5 2} \
+ regdsc CR {err 15} {den 14 2 "s:D72:D75:D78:D98"} \
+ {ini 12} {pevn 11} {unit 10 3} {rdy 7} {ie 6} {ea 5 2} \
{func 3 3 "s:UNLOAD:READ:WRITE:WEOF:SFORW:SBACK:WRTEG:REWIND"} \
{go 0}
variable FUNC_UNLOAD [bvi b3 "000"]
@@ -99,7 +100,7 @@ namespace eval ibd_tm11 {
append rval "Controller registers:"
append rval [format "\n sr: %6.6o %s" $sr [regtxt ibd_tm11::SR $sr]]
append rval [format "\n cr: %6.6o %s" $cr [regtxt ibd_tm11::CR $cr]]
- append rval [format "\n bc: %6.6o nw=%s" $bc $fbc]
+ append rval [format "\n bc: %6.6o nb=%s" $bc $fbc]
append rval [format "\n ba: %6.6o" $ba]
append rval "\nUnit registers:"