If it's the MSD Chemstation .ms file format you're after, see below (sorry to you non-programmers!). It hasn't changed since the days of the Pascal Chemstation (although I could be stand corrected). It was originally listed in an appendix of the HP 59970 MS Chemstation Handbook which is long out of print. I managed to salvage a copy from the trash many years ago, so I can scan the relevant pages if you need it. There's not much more useful information than the listing below though.
I didn't have a scanner handy, so the listing below is a direct copy from an old usenet post:
http://groups.google.com/group/sci.tech ... ce26fb6331
typedef struct HPUX_Header_Record {
char N_File_Number; /* No. of chars in File_Number */
char File_Number[3];
char N_File_String; /* No. of chars in File_String */
char File_String[19];
char N_Data_Name; /* No. of chars in Data_Name */
char Data_Name[61];
char N_Misc_Info; /* No. of chars in Misc_Info */
char Misc_Info[61];
char N_Operator; /* No. of chars in Operator */
char Operator[29];
char N_Date_Time; /* No. of chars in Date_Time */
char Date_Time[29]; /* Tue Jan 06 98 12:24:50 PM */
char N_Instr_Model; /* No. of chars in Instr_Model */
char Instr_Model[9];
char N_Inlet; /* No. of chars in Inlet */
char Inlet[9];
char N_Method_File; /* No. of chars in Method_File */
char Method_File[19];
unsigned long File_Type;
int Seq_Index;
int ALS_Bottle;
int Replicate;
int Dir_Entry_Type;
unsigned long Dir_Offset;
unsigned long Data_Offset;
unsigned long Run_Table_Offset;
unsigned long Normalization_Records_Offset;
unsigned int Extra_Records;
unsigned long Num_Data_Records;
unsigned long Start_Ret_Time;
unsigned long End_Ret_Time;
unsigned long Max_Signal;
unsigned long Min_Signal;
char Unused[214];
};
typedef struct HPUX_Norm_Record {
double Norm_Mass;
double Slope;
double Intercept;
};
typedef struct HPUX_Spectral_Record {
unsigned int N_Words1;
unsigned long Ret_Time;
unsigned int N_Words2;
unsigned int Data_Type;
unsigned int Status_Word;
unsigned int Num_Peaks;
unsigned int Base_Peak;
unsigned int B_P_Abundance;
unsigned int Mass[1000];
/* Abundance = (Value in Bits 0 to 13) * 8^(Value in Bits 14 to 15) */
unsigned int Abundance[1000];
unsigned int N_Words3;
unsigned int N_Words4;
unsigned int Unknown; /* Status word? */
unsigned long Total_Signal;
};
typedef struct HPUX_Dir_Record {
unsigned long Spectrum_Offset; /* in words */
unsigned long Ret_Time; /* milliseconds */
unsigned long Total_Signal;
};