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 d

⟦0b21fb102⟧ TextFile

    Length: 1653 (0x675)
    Types: TextFile
    Names: »disassem.c«

Derivation

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

TextFile

/*	Copyrighted (C) 1989 by Na Choon Piaw.  All rights reserved       */



/*	This program and documentation is Public Domain, and may be	  */
/*	distributed and copied by everyone provided this header		  */
/*	remains intact							  */

#include <stdio.h>
#include "assem.h"

/* dissassembler for red code programs.
   NOTE:  I'm not bothering with writing code to REALLY disassemble
          it, just output starting position, number of instructions,
	  opcode, and operands.
   11/25 ---- NCP                           */
#define IO(i,j) if ((i) < (j)) {printf("error reading file\n");exit(1);}


main(argc, argv)
int	argc;
char	*argv[];
{
	FILE	*f;
	int	i,j,k;
	memory	elements[MAXINST];

	if (argc < 1)
	{
		printf("usage: disassem <file>\n");
		exit(1);
	}

	if (!(f = fopen(argv[1],"r")))
	{
		printf("cannot open file %s\n", argv[1]);
		printf("------ main\n");
		exit(1);
	}

	i = fread(&j, sizeof(int), 1, f);
	IO(i,1)
	printf("Number of instructions: %d\n", j);

	i = fread(&k, sizeof(int), 1, f);
	IO(i,1)
	printf("Starting instruction: %d\n", k);

	i = fread(elements, sizeof(memory), j, f);
	IO(i,j)

	printf("NO.\tOPCODE\tFIRSTPARA\tSECONDPARA\n");
	for (i = 0; i < j;i++)
	{
		printf("%d\t", i);
		printf("%d\t", (int) elements[i].inst);
		if (elements[i].m1 == immed)
			putchar('#');
		else if (elements[i].m1 == indirect)
			putchar('@');
		printf("%d\t\t", (int) elements[i].para1);
                if (elements[i].m2 == immed)
                        putchar('#');
                else if (elements[i].m2 == indirect)
                        putchar('@');
                printf("%d\n", (int) elements[i].para2);
	}

	fclose(f);
}