pragma Ipath("a:/inc/");
#include <stdio.h>

#define BEGIN      {
#define END        }
#define IF         if(
#define THEN       ){
#define ELSE       }else{
#define ELSEIF     }else{if( 
#define ENDIF      }
#define WHILE      while(
#define DO         ){
#define FOR        for(
#define TO         ;
#define BY         ;
#define LOOP       for(;;){
#define ENDWHILE   }
#define REPEAT     do{
#define UNTIL(s)   }while(s);
#define SWITCH(s)  switch(s){
#define CASE(s)    case(s):
#define DEFAULT    default:
#define BREAK      break;
#define ENDSWITCH  }
#define RETURN(s)  return(s);
#define FUNCTION   int
#define MODULE     void
#define OR         ||
#define AND        &&
#define NOT        !
#define EQU        ==
#define NEQ        !=
#define MODULE     void
#define ON         0xFF
#define OFF        0x00
#define TAB        0x09
#define LF         0x0A
#define CR         0x0D
#define BLANK      0x20
#define COMMA      0x2C
#define ZERO       0x00

MODULE main(argc,argv)
int         argc;
char            *argv[];
BEGIN
  unsigned char buffer[16],Check;
  FILE *fp[2];
  int i,Byte_Count,Byte_Size;

  Byte_Count = 0;
  fp[0] = fopen(argv[1],"r");
  WHILE (Byte_Size = fread(buffer,1,16,fp[0])) NEQ ZERO DO
    i = Check = 0;
    printf("S1%02X%04X",Byte_Size + 5,Byte_Count);
    WHILE i < Byte_Size DO
      Check = Check + buffer[i];
      printf("%02X",buffer[i++]);
    ENDWHILE
    Check = Check + Byte_Count / 0x100 & 0xFF;
    Check = Check + Byte_Count         & 0xFF;
    Check = Check + Byte_Size + 5;
    Byte_Count = Byte_Count + 0x10;
    printf("%02X\n",0xFF - Check);
  ENDWHILE
  fclose(fp[0]);
END
