mirror of
https://github.com/wfjm/w11.git
synced 2026-01-13 15:37:43 +00:00
Rw11CntlTM11 and tap2file updates
- tap2file - BUGFIX in rlmax calculation - add -v option - Rw11CntlTM11 - BUGFIX: AddNormalExit(): get tmds logic right - support odd record length
This commit is contained in:
parent
5b5cd277ef
commit
5b52e5418d
@ -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
|
||||
|
||||
<!-- --------------------------------------------------------------------- -->
|
||||
---
|
||||
## <a id="w11a_V0.78">2019-06-01: [w11a_V0.78](https://github.com/wfjm/w11/releases/tag/w11a_V0.78) - rev 1158(wfjm)</a>
|
||||
|
||||
@ -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 <W.F.J.Mueller@gsi.de>
|
||||
#
|
||||
# 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";
|
||||
}
|
||||
|
||||
@ -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 <W.F.J.Mueller@gsi.de>
|
||||
.\" Copyright 2015-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
.\"
|
||||
.\" ------------------------------------------------------------------
|
||||
.
|
||||
.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)
|
||||
|
||||
@ -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 <W.F.J.Mueller@gsi.de>
|
||||
// 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<uint8_t*>(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<<kTMCR_V_FUNC);
|
||||
cpu.AddWibr(clist, fBase+kTMCR, tmcr);
|
||||
|
||||
if (fTraceLevel>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<uint8_t*>(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<<kTMCR_V_REA);
|
||||
@ -620,16 +614,7 @@ void Rw11CntlTM11::AddNormalExit(RlinkCommandList& clist, size_t ndone,
|
||||
tmcr |= (kRFUNC_DONE<<kTMCR_V_FUNC);
|
||||
cpu.AddWibr(clist, fBase+kTMCR, tmcr);
|
||||
|
||||
if (fTraceLevel>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
|
||||
|
||||
@ -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 <W.F.J.Mueller@gsi.de>
|
||||
//
|
||||
// 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<uint16_t> fBuf; //!< data buffer
|
||||
Rw11Rdma fRdma; //!< Rdma controller
|
||||
|
||||
@ -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 <W.F.J.Mueller@gsi.de>
|
||||
//
|
||||
// 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.
|
||||
*/
|
||||
|
||||
|
||||
@ -1,15 +1,6 @@
|
||||
// $Id: Rw11UnitTM11.cpp 1081 2018-12-14 22:29:42Z mueller $
|
||||
//
|
||||
// Copyright 2015-2017 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
//
|
||||
// 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 <W.F.J.Mueller@gsi.de>
|
||||
//
|
||||
// Revision History:
|
||||
// Date Rev Version Comment
|
||||
@ -44,7 +35,7 @@ Rw11UnitTM11::Rw11UnitTM11(Rw11CntlTM11* pcntl, size_t index)
|
||||
: Rw11UnitTapeBase<Rw11CntlTM11>(pcntl, index),
|
||||
fTmds(0)
|
||||
{
|
||||
// setup disk geometry: only rk05 supported, no rk05f !
|
||||
// setup tape unit type: only tu10 supported !
|
||||
fType = "tu10";
|
||||
fEnabled = true;
|
||||
}
|
||||
|
||||
@ -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 <W.F.J.Mueller@gsi.de>
|
||||
# Copyright 2015-2019 by Walter F.J. Mueller <W.F.J.Mueller@gsi.de>
|
||||
#
|
||||
# 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:"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user