--- mon/src/mon_cmd.cpp 1999/10/25 08:04:47 1.4 +++ mon/src/mon_cmd.cpp 2000/10/06 00:04:22 1.8 @@ -24,11 +24,11 @@ #include "mon.h" #include "mon_cmd.h" -#include "mon_ppc.h" -#include "mon_68k.h" -#include "mon_x86.h" -#include "mon_6502.h" -#include "mon_8080.h" +#include "mon_disass.h" + +#ifndef VERSION +#define VERSION "2" +#endif /* @@ -118,7 +118,7 @@ static inline uint8 char2print(uint8 c) void version(void) { - fprintf(monout, "mon V%d.%d\n", MON_VERSION_MAJOR, MON_VERSION_MINOR); + fprintf(monout, "mon V" VERSION "\n"); } @@ -264,6 +264,34 @@ void ascii_dump(void) /* + * Binary dump + * b [start [end]] + */ + +void binary_dump(void) +{ + uint32 adr, end_adr; + uint8 str[9]; + + str[8] = 0; + + if (!range_args(&adr, &end_adr, 7)) // 8 lines unless end address specified + return; + + while (adr <= end_adr && !mon_aborted()) { + fprintf(monout, "%08x:", mon_use_real_mem ? adr : adr % mon_mem_size); + uint8 b = mon_read_byte(adr); + for (int m=0x80, i=0; i<8; m>>=1, i++) + str[i] = (b & m) ? '*' : '.'; + fprintf(monout, " '%s'\n", str); + adr++; + } + + mon_dot_address = adr; +} + + +/* * Disassemble * d [start [end]] * d65 [start [end]] @@ -277,7 +305,8 @@ enum CPUType { CPU_6502, CPU_680x0, CPU_8080, - CPU_80x86 + CPU_80x86_32, + CPU_80x86_16 }; static void disassemble(CPUType type) @@ -309,17 +338,8 @@ static void disassemble(CPUType type) case CPU_680x0: while (adr <= end_adr && !mon_aborted()) { - uint16 buf[8]; - buf[0] = mon_read_half(adr); - buf[1] = mon_read_half(adr + 2); - buf[2] = mon_read_half(adr + 4); - buf[3] = mon_read_half(adr + 6); - buf[4] = mon_read_half(adr + 8); - buf[5] = mon_read_half(adr + 10); - buf[6] = mon_read_half(adr + 12); - buf[7] = mon_read_half(adr + 14); fprintf(monout, "%08x: ", mon_use_real_mem ? adr : adr % mon_mem_size); - adr += disass_68k(monout, mon_use_real_mem ? adr : adr % mon_mem_size, buf); + adr += disass_68k(monout, mon_use_real_mem ? adr : adr % mon_mem_size); } break; @@ -333,13 +353,17 @@ static void disassemble(CPUType type) } break; - case CPU_80x86: + case CPU_80x86_32: while (adr <= end_adr && !mon_aborted()) { - uint8 buf[16]; - for (int i=0; i<16; i++) - buf[i] = mon_read_byte(adr + i); fprintf(monout, "%08x: ", mon_use_real_mem ? adr : adr % mon_mem_size); - adr += disass_x86(monout, mon_use_real_mem ? adr : adr % mon_mem_size, buf); + adr += disass_x86(monout, mon_use_real_mem ? adr : adr % mon_mem_size, false); + } + break; + + case CPU_80x86_16: + while (adr <= end_adr && !mon_aborted()) { + fprintf(monout, "%08x: ", mon_use_real_mem ? adr : adr % mon_mem_size); + adr += disass_x86(monout, mon_use_real_mem ? adr : adr % mon_mem_size, true); } break; } @@ -367,9 +391,14 @@ void disassemble_8080(void) disassemble(CPU_8080); } -void disassemble_80x86(void) +void disassemble_80x86_32(void) +{ + disassemble(CPU_80x86_32); +} + +void disassemble_80x86_16(void) { - disassemble(CPU_80x86); + disassemble(CPU_80x86_16); }