DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T s

⟦2e0929071⟧ TextFile

    Length: 1445 (0x5a5)
    Types: TextFile
    Names: »source_converter.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/Sun/Sdi/source_converter.c« 

TextFile

/*
 * Copyright 1987 by Mark Weiser.
 * Permission to reproduce and use in any manner whatsoever on Suns is granted
 * so long as this copyright and other identifying marks of authorship
 * in the code and the game remain intact and visible.  Use of this code
 * in other products is reserved to me--I'm working on Mac and IBM versions.
 */

/*
 * Little hack to help generate assembler for the source code option.
 */

#include <stdio.h>
#include <ctype.h>

#define OUTSIZE 64
#define MaxSizeOfAnOctalRepresentation 5

char buff[OUTSIZE * MaxSizeOfAnOctalRepresentation];

main(argc, argv)
char **argv;
{
	char *p, c;
	int i;
	if (argc < 2) {
		fprintf(stderr, "Need an argument.\n");
		exit(1);
	}
	printf(" .even\n__start_of_text:\n");
	while (! feof(stdin)) {
		p = buff;
		for (i = 0; i < OUTSIZE; i += 1) {
			if ((c = getchar()) != EOF) {
				if (isalnum(c)  || c == ' ' || c == '*' || c == '/'
					|| c == '#' || c == '<' || c == '>' || c == '.'
					|| c == '_' || c == '[' || c == ']' || c == '(' 
					|| c == ')' || c == '{' || c == '}'
					) {
					*p++ = c;
				} else {
					*p++ = '\\';
					sprintf(p, "%o", (unsigned int)c);
					i += strlen(p);
					p += strlen(p);
				}
			} else {
				goto done;
			}
		}
done:
		*p = '\0';
		printf(" .ascii \"%s\"\n", buff);
	}
	printf(" .ascii \"\\0\"\n",'\\');
	printf(" .even\n");
	printf(" .globl _%s\n", argv[1]);
	printf("_%s:\n", argv[1]);
	printf(" .long __start_of_text\n");
}