Program to Implement an Absolute Loader

#include<stdio.h>
#include<stdlib.h>
char line[8][20];
void numtok();
int cur=0;

int lth;
void main()
{
 FILE *fin;
 int i=0,m=0,k=0,l,j;
 int prgstart,prglen,textaddr,disp;
 char str[70];
  struct loccontent
  {
   int addr;
   char content[3];
  }mem[200];
// clrscr();
  for(i=0;i<200;++i)
  {
   mem[i].content[0]='x';
   mem[i].content[1]='x';
   mem[i].content[2]='\0';
  }
 fin=fopen("loadin.txt","r");
  while(!feof(fin))
  {
   fgets(str,70,fin);
   numtok(str);
   if(strcmp(line[0],"H")==0)
   {
    printf("program name is %s\n",line[1]);
    prgstart=atoi(line[2]);
    prglen=atoi(line[3]);
     j=0;
     for(i=prgstart;i<=prgstart+prglen;++i)
     {
      mem[j].addr=i;
      j++;
     }
   }
   else if(strcmp(line[0],"T")==0)
    {
    textaddr=atoi(line[1]);
    disp=textaddr-prgstart;
     for(m=3;m<lth;++m)
     {
      for(i=0;i<5;i+=2)
      {
       mem[disp].addr=textaddr++;
  
       mem[disp].content[0]=line[m][i];
       mem[disp].content[1]=line[m][i+1];
       mem[disp].content[2]='\0';
       disp++;
      }
     }
   }
   else if(strcmp(line[0],"E")==0)
        break;
   
  }
   k=0;
 for(i=0;i<prglen;i+=16)
 {
  printf("%d",mem[k].addr);
   for(l=0;l<4;l++)
   {
    for(j=0;j<4;j++)
    {
     printf("%c%c",mem[k].content[0],mem[k].content[1]);
     k++;
    }
   printf("\t");
   }
  printf("\n");
 }
getch();
}
void numtok(char str[70])
{
  int i=0,j=0,k=0;
   while(str[j]!='\0')
   {
    line[i][k]=str[j];
     if(str[j]=='^')
     {
      line[i][k]='\0';
      k=-1;
      i++;
     }
    k++;
    j++;
   }
  line[i][k]='\0';
  lth=i+1;
}

Input File 

LOADIN.TXT

H^COPY^1000^115
T^1000^12^141033^482039^001036^281030
T^1012^9^345890^581056^454645
T^1000^12^141033^482039^001036^281030

E^1000

Output


No comments: