/*
 *      mkabs - make abs loader file "a.lda" from "a.out"
 *
 *     Jul 19 1982 modified Hayward : mkabs <inputfile >outputfile
 *     can know run on a VAX
 */

#include <stdio.h>

unsigned short header[8];

struct {
	unsigned short start,
		       count,
		       addr;
	char           data[512];
	char           check;
} al = { 1 };

struct {
	unsigned short start,
		       count,
		       addr;
	char           check;
} go = { 1, 6, 02000, 0 } ;

main()
{
	register char *cp;
	register short i,n,bc;

	read(0,header,sizeof(header));
	if(header[0] != 0407 || !header[7]) {
		fprintf(stderr,"mkabs : bad input\n");
		exit(1);
	}
	al.addr = 0;
	while((bc = read(0,al.data,sizeof(al.data))) > 0) {
		al.count = bc + 6;
		n = al.count;
		cp =(char*) &al;  i = 0;
		while(n--)
		      i += *cp++;
		*cp = -i;
		write(1,&al,al.count+1);
		al.addr += bc;
	}
	write(1,&go,sizeof(go));
	exit(0);
}
