/*****************************************************************************
**
**  ShowLNX (c) 2002 by Michal Pasiecznik (pasiussg@wp.pl).
**  This program is freeware. If you made any changes, please refer to
**  in this source.
**
**  Author            : Michal Pasiecznik
**  Data              : February 14, 2002
**  Version           : 0.7
**
**  Description       : This program displays info about header of the .lnx
**                      cartridge file, used by the Atari Lynx emulators.
**
*****************************************************************************/

#include <stdio.h>
#include <string.h>

struct
{
  unsigned char magic[4];
  unsigned char bank0a;
  unsigned char bank0b;
  unsigned char bank1a;
  unsigned char bank1b;
  unsigned char versiona;
  unsigned char versionb;
  unsigned char cartname[32];
  unsigned char manufname[16];
  unsigned char rotation;
}header;

int main(int argc, char *argv[])
{

FILE *plik;
unsigned short bank0,bank1,version;
unsigned int lenght;

printf("\nShowLNX v0.7 by Michal Pasiecznik (pasiussg@wp.pl)\n");

if(argc==1)
 {
  printf("\nUsage: ShowLNX filename[.lnx]\n\n");
  return(0);
 }

if(argc>2)
 {
  printf("\nWrong number of arguments!\n\n");
  return(0);
 }

if(strstr(argv[1],".lnx")==NULL)
 strcat(argv[1],".lnx");

if((plik=fopen(argv[1],"rb"))==NULL)
 {
  printf("\nNo such filename!\n\n");
  fclose(plik);
  return(0);
 }

fread(&header,sizeof(header),1,plik);

if(strcmp(header.magic,"LYNX")!=0)
 {
  printf("\nThis is not a *.lnx file!\n\n");
  return(0);
 }

bank0=header.bank0b*256+header.bank0a;
bank1=header.bank1b*256+header.bank1a;
lenght=(bank0+bank1)*256;
version=header.versionb*256+header.versiona;

fclose(plik);

printf("\nCartname:     %s",header.cartname);
printf("\nManufacturer: %s",header.manufname);
printf("\nLenght:       %d",lenght);
printf("\nBank0:        %d",bank0);
printf("\nBank1:        %d",bank1);
printf("\nRotation:     ");

if(header.rotation==0)
 printf("none");
else
if(header.rotation==1)
 printf("left");
else
if(header.rotation==2)
 printf("right");
else
 printf("???");

printf("\nType:         %s",header.magic);
printf("\nVersion:      %d\n\n",version);

return(1);

}
