From 5b52e5418d54aab09187b65e965512e6fe9c5782 Mon Sep 17 00:00:00 2001 From: wfjm Date: Sun, 14 Jul 2019 09:45:17 +0200 Subject: [PATCH] Rw11CntlTM11 and tap2file updates - tap2file - BUGFIX in rlmax calculation - add -v option - Rw11CntlTM11 - BUGFIX: AddNormalExit(): get tmds logic right - support odd record length --- doc/CHANGELOG.md | 17 +++-- tools/bin/tap2file | 16 +++- tools/man/man1/tap2file.1 | 41 +++++++++-- tools/src/librw11/Rw11CntlTM11.cpp | 114 +++++++++++++++-------------- tools/src/librw11/Rw11CntlTM11.hpp | 19 ++--- tools/src/librw11/Rw11CntlTM11.ipp | 14 +--- tools/src/librw11/Rw11UnitTM11.cpp | 17 +---- tools/tcl/ibd_tm11/util.tcl | 11 +-- 8 files changed, 140 insertions(+), 109 deletions(-) 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:"