00001
00002
00003 #ifndef jdb_dump_i_h
00004 #define jdb_dump_i_h
00005
00006 #include <cstdio>
00007 #include <cctype>
00008
00009 #include "config.h"
00010 #include "jdb.h"
00011 #include "jdb_table.h"
00012 #include "jdb_input.h"
00013 #include "jdb_module.h"
00014 #include "jdb_screen.h"
00015 #include "jdb_symbol.h"
00016 #include "kernel_console.h"
00017 #include "keycodes.h"
00018 #include "simpleio.h"
00019 #include "static_init.h"
00020 #include "types.h"
00021
00022 class Jdb_dump : public Jdb_module, public Jdb_table
00023 {
00024 enum
00025 {
00026 B_MODE = 'b',
00027 C_MODE = 'c',
00028 D_MODE = 'd',
00029 };
00030
00031 static char show_adapter_memory;
00032
00033 public:
00034 unsigned cols() const { return 9; }
00035 unsigned rows() const { return ((unsigned)-1)/((cols()-1)*4) + 1; }
00036 void draw_entry(unsigned row, unsigned col);
00037 void print_statline();
00038
00039 private:
00040 int level;
00041 Task_num task;
00042 char dump_type;
00043
00044 public:
00045 unsigned col_width(unsigned col) const;
00046
00047 void print_statline(unsigned row, unsigned col);
00048
00049 Jdb_module::Action_code dump(Address virt, Task_num task, int level);
00050
00051 bool edit_entry(unsigned row, unsigned col, unsigned cx, unsigned cy);
00052
00053 unsigned key_pressed(int c, unsigned &row, unsigned &col);
00054
00055 Jdb_module::Action_code action(int cmd, void *&args, char const *&fmt, int &next_char);
00056
00057 Jdb_module::Cmd const *const cmds() const;
00058
00059 int const num_cmds() const;
00060
00061 Jdb_dump();
00062
00063 private:
00064 inline Address virt(unsigned row, unsigned col);
00065 };
00066
00067
00068
00069
00070
00071
00072
00073
00074 inline Address
00075 Jdb_dump::virt(unsigned row, unsigned col)
00076 {
00077 return (col-1) * 4 + row * (cols()-1) * 4;
00078 }
00079
00080 #endif // jdb_dump_i_h