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));
}


Reply via email to