#include<stdio.h>
#include<stdlib.h>
char line[5][20];
void numtok();
int cur=0;
int lth;
void main()
{
FILE *fin;
int i=0,m=0,k=0,t=0,l,j,prevsize;
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=random(10000);
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)
{
if(t==0)
{
textaddr=prgstart;
t=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\t",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

No comments:
Post a Comment