/*
 *      Copyright (c) 1991 Paul Campbell
 *      All Rights Reserved
 *      THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Paul Campbell
 *      The copyright notice above does not evidence any
 *      actual or intended publication of such source code.
 */
 
#include <stdio.h>
char b[32768];
char *bp = &b[0];

void 
main()
{
	long c, lastc;
	long i, j, offset, s, addr_pc, k;

	lastc = 0;
	for (;;) {
		c = getchar();
		if (c == EOF)
			break;
		if (c == 0xa)
			c = 0xd;
		if (c == 0xd && lastc == 0x0d)
			continue;
		*bp++ = c;
		lastc = c;
	}
	*bp++ = 0;
	addr_pc = 0x8000;
	offset = bp-&b[0];
	for (i = 0; i < offset; ) {
		j = offset - i;
		if (j > 32)
			j = 32;
		s = (j + (addr_pc&0xff) + ((addr_pc>>8)&0xff))&0xff;
		printf(":%02X%04X00",j&0xff,addr_pc);
		for (k = 0; k < j; k++, i++) {
			s += b[i]&0xff;
			printf("%02X", b[i]&0xff);
		}
		s = (256 - (s&0xff))&0xff;
		printf("%02X%c%c", s, 13, 10);
		addr_pc += j;
	}
	printf(":00000001ff%c%c",13,10);
	fprintf(stderr, "0x%x bytes\n",offset);
}

