home *** CD-ROM | disk | FTP | other *** search
- /* note the requirement of list file to use keyword org */
- /* read a list file from assembler and write a Nohau compatible */
- /* line number symbol file....... */
- /* records are "filename line#(dec) address(hex)\n" */
-
- #include <stdio.h>
- #include <string.h>
-
- #define TRUE 1
- char version[] = {"1.10" };
-
- /* main() */
- void main(argc,argv)
- int argc;
- char *argv[];
- {
- FILE *fptr1, *fptr2;
- int i,line=1,lnflg,slflg=0,orgflg=0,orgold=0;
- char *ptr;
- char string[133],xaddr[]={" "};
- char s1[] = {" "},s2[]={" "};
- char s4[] = {"org "}; /* works for Franklin and Avocet */
- char s5[5];
-
- if (argc != 3){
- printf("CONVERT.EXE version %s\n",version);
- printf("start program with >convert listfile lsymfile \n");
- exit();
- }
- printf("CONVERT.EXE version %s\n",version);
- printf("Input = %s Output = %s\n",argv[1],argv[2]);
-
- if( (fptr1=fopen(argv[1], "r")) == NULL)
- {printf("Can't open file %s\n", argv[1]); exit(); }
-
- if( (fptr2=fopen(argv[2],"w")) == NULL)
- {printf("Can't open file %s\n", argv[2]); exit();}
-
- while( fgets(string,133,fptr1) != NULL) {
- itoa(line,s2,10);
- strcpy(&s1[1],&s2);
- ptr=strstr(&string,&s1);
- if (*ptr== NULL) lnflg = 0;
- else {
- switch(*ptr) {
- case ' ' : lnflg = TRUE; break;
- case '\t' : lnflg = TRUE; break;
- default : lnflg = 0;
- }
- }
- if (*(ptr = strstr(&string,&s4)) != NULL)
- orgflg ++;
- else
- orgold = orgflg;
- strcpy(s5,s4);
- s5[3] = '\t';
- if (*(ptr = strstr(&string,&s5)) != NULL)
- orgflg ++;
- else
- orgold = orgflg;
- strcpy(s5,s4);
- strupr(s5);
- if (*(ptr = strstr(&string,&s5)) != NULL)
- orgflg ++;
- else
- orgold = orgflg;
- strcpy(s5,s4);
- strupr(s5);
- s5[3] = '\t';
- if (*(ptr = strstr(&string,&s5)) != NULL)
- orgflg ++;
- else
- orgold = orgflg;
-
-
- for (i=0;i<4;i++) {
- if ((string[i] >= '0') && (string[i] <= 'F')) {
- slflg = orgflg;
- xaddr[i] = string[i];}
- else {slflg = 0; break; }
- }
- if(orgflg==orgold) {
- if(lnflg) {
- if (slflg) fprintf(fptr2, "%s %d %s\n", argv[1],line,xaddr);
- }
- }
- if(lnflg) line++;
- }
- fclose(fptr1); fclose(fptr2);
- /* end main */
- }
-