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 cctalk mailing list