SCSI Tape to TAP utility
Chuck Guzis
cclist at sydex.com
Sun Aug 9 11:46:47 CDT 2015
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."
More information about the cctech
mailing list