<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.Section1
        {page:Section1;}
 /* List Definitions */
 @list l0
        {mso-list-id:899704633;
        mso-list-template-ids:1786941818;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
 <o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
 <o:shapelayout v:ext="edit">
  <o:idmap v:ext="edit" data="1" />
 </o:shapelayout></xml><![endif]-->
</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Not sure you need to go to the effort. Most simh hosts already
have a perfectly usable tar and it is trivial to convert a file into a simh tape
image. <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Now, what would be handy is a portable (c, perl, etc) of your
guest OS native tape archiving tool, if it has no way to read or write tar
tapes.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>But that has little to do with the original discussion.  In the
original discussion, we aren’t talking about having simh know anything about
guest OS tape handling, file systems, or archive programs. Simh handles tapes
the same regardless of OS. Virtual tapes consist of “files”. These tape files
consist of variable length records.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>What we are talking about doing is adding simh code to allow
attaching a directory as a tape device. Remember, a virtual tape needs “files”
consisting of records. We know how to build the file information (logical file
= physical file). Next, we need record length. For this we have two options:  User
specified fixed size records or text file records. You’d have to supply this
information to simh when attaching the tape device.<o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'>Simple so far. However, the devil is in the details. How to sort
files in the folder (date or name). How to handle backward tape reading. When
to read the directory to get a list of files. What if a physical file gets
deleted? This would all have to be worked out, but I think it is doable.  <o:p></o:p></span></p>

<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif";
color:#1F497D'><o:p> </o:p></span></p>

<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>

<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
simh-bounces@trailing-edge.com [mailto:simh-bounces@trailing-edge.com] <b>On
Behalf Of </b>Michael Richter<br>
<b>Sent:</b> Wednesday, May 05, 2010 9:46 AM<br>
<b>To:</b> simh<br>
<b>Subject:</b> [Simh] Fwd: Making tape/disk images<o:p></o:p></span></p>

</div>

<p class=MsoNormal><o:p> </o:p></p>

<p class=MsoNormal style='margin-bottom:12.0pt'>Oops.  Sent this to Tim
only instead of list.<o:p></o:p></p>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'>---------- Forwarded message
----------<br>
From: <b>Michael Richter</b> <<a href="mailto:ttmrichter@gmail.com">ttmrichter@gmail.com</a>><br>
Date: 5 May 2010 21:45<br>
Subject: Re: [Simh] Making tape/disk images<br>
To: "Shoppa, Tim" <<a href="mailto:tshoppa@wmata.com">tshoppa@wmata.com</a>><br>
<br>
<o:p></o:p></p>

<div>

<div>

<p class=MsoNormal>On 5 May 2010 20:59, Shoppa, Tim <<a
href="mailto:tshoppa@wmata.com" target="_blank">tshoppa@wmata.com</a>>
wrote:<o:p></o:p></p>

<div>

<p class=MsoNormal style='margin-bottom:12.0pt'>Al writes:<br>
> On 5/3/10 12:30 PM, Tim Newsham wrote:<br>
>> the code that reads tape images in simh can also<br>
>> read from a directory instead of a tape image.<br>
><br>
<br>
>and create what type of on-tape directory structure?<br>
<br>
>tape image code knows of nothing above tape blocks and<br>
>file marks.<o:p></o:p></p>

</div>

<p class=MsoNormal>Al hits the issue exactly on the head.<br>
<br>
If SIMH only had to emulate one operating system, with one OS/application tape
format, then I think the concept of a "virtual filesystem tape image"
would be OK.<br>
<br>
But SIMH is used with dozens of OS's, with hundreds of different tape formats.
Seems like things spin out of control to support them all inside SIMH.<br>
<br>
Now, tools that can manipulate files and load them into tape and disk images in
OS-specific formats, or go the other way and extract files from tape and disk
images, has a long tradition. Going back to at least the 1970's. My gut feeling
is to extend this tradition, not abandon it.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><o:p> </o:p></p>

</div>

</div>

<p class=MsoNormal>Would it not be possible to make a general-purpose tape
archive system that has mid-end plugins for the OS-specific formats and
back-end plug-ins for the simulated physical formats?  This way a single
tool with a single command line could be made that allows things like (example
command lines only):<o:p></o:p></p>

<div>

<ul type=disc>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l0 level1 lfo1'>simtar --create --file=myfile.tap
     --file-system=RSTS9 --tape-format=SIMH ./*<o:p></o:p></li>
 <li class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;
     mso-list:l0 level1 lfo1'>simtar --extract --file=myfile.tcp
     --file-system=VMS --tape-format=TPC<o:p></o:p></li>
</ul>

<div>

<p class=MsoNormal>Unless someone can see any reason why this is intrinsically
impossible, I wouldn't mind taking a crack at such a program written in some
scripting language for proof of concept (and maybe even final form -- I don't
see any particular advantage to writing something like this in C since performance
won't be a huge issue).  Since I'm screwing around with RSTS right now my
first version would be for RSTS, naturally.  I could then pop the code up
somewhere for others to hack onto for other formats.  As new emulators get
attached, new operating systems get resurrected, etc. the program could be
expanded with plug-ins.<o:p></o:p></p>

</div>

<div>

<p class=MsoNormal><br>
-- <br>
"Perhaps people don't believe this, but throughout all of the discussions
of entering China our focus has really been what's best for the Chinese people.
It's not been about our revenue or profit or whatnot."<br>
--Sergey Brin, demonstrating the emptiness of the "don't be evil"
mantra.<o:p></o:p></p>

</div>

</div>

</div>

<p class=MsoNormal><br>
<br clear=all>
<br>
-- <br>
"Perhaps people don't believe this, but throughout all of the discussions
of entering China our focus has really been what's best for the Chinese people.
It's not been about our revenue or profit or whatnot."<br>
--Sergey Brin, demonstrating the emptiness of the "don't be evil"
mantra.<o:p></o:p></p>

</div>

</body>

</html>