Mercurial > hg > ede
view emu/test_mem.c @ 30:c0c2e99b6bb0
fixed negative rel8 address bug in assembler
author | james <jb302@eecs.qmul.ac.uk> |
---|---|
date | Tue, 15 Apr 2014 12:21:22 +0100 |
parents | 83e80c2c489c |
children |
line wrap: on
line source
#include <stdio.h> #define MAIN #include "mem.h" void main(void) { A = 0xAA; IR = 0x12; unsigned char i; for (i = 0 ; i < 8 ; i++) { set_flag(i, 1); } set_wide(DPTR, 0xDE1D); set_wide(SP, 0xADEA); set_wide(PC, 0xBEFA); set_wide(TMP, 0xEFC3); for (i = 0; i < 4; i++) { regs[i] = i; } for (i = 8; i < 0x0C; i++) { regs[i] = 0x10 | (i - 8); } /* 0xAC 0x12 0xFF * 0x00 0x01 0x02 0x03 * 0xDE 0xAD 0xBE 0xFF * 0x10 0x11 0x12 0x13 * 0x1D 0xEA 0xFA 0xC3 * 0xDE 0x1D 0xBE 0xFA * 0xAD 0xEA 0xEF 0xC3*/ putchar(A); putchar(IR); putchar(flags); for (i = 0; i < 0x10; i++) { putchar(regs[i]); } unsigned short int data_pointer = get_wide(DPTR); unsigned short int program_counter = get_wide(PC); unsigned short int stack_pointer = get_wide(SP); unsigned short int temp = get_wide(TMP); putchar((data_pointer >> 8) & 0xFF); putchar(data_pointer & 0xFF); putchar((program_counter >> 8) & 0xFF); putchar(program_counter & 0xFF); putchar((stack_pointer >> 8) & 0xFF); putchar(stack_pointer & 0xFF); putchar((temp >> 8) & 0xFF); putchar(temp & 0xFF); int ac; for (ac = 0 ; ac < 0x10000 ; ac++) { mem[ac] = ac & 0xFF; } for (ac = 0 ; ac < 0x10000 ; ac++) { putchar(fetch()); } }