I've got a version that looks for label records and names and dates the
parts appropriately.
Probably not of any interest to UNIX-ers as the tape handling of that
system was abysmally primitive, compared to other mainframe systems.
--Chuck
On 08/09/2015 08:08 AM, Al Kossow wrote:
On 8/8/15 9:16 PM, Chuck Guzis wrote:
On 08/08/2015 08:14 PM, Jay Jaeger wrote:
If anyone is interested, I have code for a Linux
SCSI tape to
AWSTAPE program, and a program that translates aws format to a raw
byte stream. Not sure if I have one that translates to the SimH .tap
format, though. GNU C.
I've got a Linux utility to translate SIMH .tap to raw binary, if
that's interesting to anyone. I would have thought that such
utilities existed already.
--Chuck
this bursts a tape into raw sequentially numbered files
#include <stdio.h>
FILE *fp;
main()
{
unsigned int len, len2;
unsigned int i;
unsigned int filenum = 0;
char fname[20];
sprintf(fname,"%05d",filenum++);
fp = fopen(fname,"w");
do{
len = getchar();
if(feof(stdin)) exit(1);
len = len | (getchar()<<8);
len = len | (getchar()<<16);
len = len | (getchar()<<24);
if(len == -1){
fprintf(stderr,"65535 byte record in file %d\n",filenum);
getchar();getchar();getchar();getchar();
continue;
}
if(len == 0){
fprintf(stderr,"Tape Mark\n");
fclose(fp);
sprintf(fname,"%05d",filenum++);
fp = fopen(fname,"w");
continue;
}
for(i = len; i; i--)
fputc(getchar(), fp);
len2 = getchar();
len2 = len2 | (getchar()<<8);
len2 = len2 | (getchar()<<16);
len2 = len2 | (getchar()<<24);
if(len != len2){
fprintf(stderr, "front and back lengths differ!\n");
exit(1);
}
} while(!feof(stdin));
}
--
--Chuck
-------------------------------------------------------------
"The first thing we do, let's kill all the spammers."