AtomBusMon/firmware/regs6809.c

45 lines
1022 B
C

#include "AtomBusMon.h"
#define OFFSET_REG_A 32
#define OFFSET_REG_B 33
#define OFFSET_REG_X 34
#define OFFSET_REG_Y 36
#define OFFSET_REG_U 38
#define OFFSET_REG_S 40
#define OFFSET_REG_PC 42
#define OFFSET_REG_D 44
#define OFFSET_REG_CC 45
const char statusString[8] = "EFHINZVC";
void doCmdRegs(char *params) {
uint16_t i;
uint8_t p = hwRead8(OFFSET_REG_CC);
const char *sp = statusString;
logstr("6809 Registers:\n A=");
loghex2(hwRead8(OFFSET_REG_A));
logstr(" B=");
loghex2(hwRead8(OFFSET_REG_B));
logstr(" X=");
loghex4(hwRead16(OFFSET_REG_X));
logstr(" Y=");
loghex4(hwRead16(OFFSET_REG_Y));
logstr("\n CC=");
loghex2(p);
logstr(" D=");
loghex2(hwRead8(OFFSET_REG_D));
logstr(" U=");
loghex4(hwRead16(OFFSET_REG_U));
logstr(" S=");
loghex4(hwRead16(OFFSET_REG_S));
logstr(" PC=");
loghex4(hwRead16(OFFSET_REG_PC));
logstr("\n Status: ");
for (i = 0; i <= 7; i++) {
logc(((p & 128) ? (*sp) : '-'));
p <<= 1;
sp++;
}
logc('\n');
}