#include <stdio.h>
#define ss 256
main(ac,av)
int ac; char *av[];
{
  FILE *fp; unsigned char c[16]; char val[9],*p; int i,j,l,m; long tno,cno=1;
  if(ac<2){
      printf("2000.7\n");
      printf("File name: ");gets(c);}else strcpy(c,av[1]);
  while((fp=fopen(c,"r"))==0){ printf("File name: "); scanf("%s",c); }
  fseek(fp,0L,2); tno=ftell(fp); tno=(tno+ss-1)/ss;
  printf("There are %3d blocks in the file !\n",tno);
loop:
  m=0; printf("rec= %d/%d\n",cno,tno); fseek(fp,ss*(cno-1),0);
  for(i=0;i<ss/16;++i){
    for(j=0;j<16;++j)c[j]=0; if(m==0)fread(c,1,16,fp); m=feof(fp);
    for(j=0;j<16;++j){
      sprintf(val,"%02X",c[j]);p=val;
      if((l=strlen(val))>2)p+=2; printf("%s ",p);
    }
    for(j=0;j<16;++j){if(c[j]<32||c[j]>126)c[j]='.'; putchar(c[j]);}
    putchar('\n');
  }
  gets(c); fflush(stdin);
  if(c[0]==0)cno+=1; else if(c[0]>47&&c[0]<58)cno=atol(c); else exit(0);
  if(cno<=tno)goto loop;
}
