rmnimbus: Clean up some static functions (nw)

This commit is contained in:
AJR 2018-04-20 10:58:12 -04:00
parent 4eb6db5203
commit bc150a0117
2 changed files with 58 additions and 59 deletions

View File

@ -240,6 +240,15 @@ public:
void decode_dos21(device_t *device, offs_t pc); void decode_dos21(device_t *device, offs_t pc);
private: private:
void decode_dssi_none(uint16_t ds, uint16_t si, uint8_t raw_flag);
void decode_dssi_generic(uint16_t ds, uint16_t si, uint8_t raw_flag);
void decode_dssi_f_fill_area(uint16_t ds, uint16_t si, uint8_t raw_flag);
void decode_dssi_f_plot_character_string(uint16_t ds, uint16_t si, uint8_t raw_flag);
void decode_dssi_f_set_new_clt(uint16_t ds, uint16_t si, uint8_t raw_flag);
void decode_dssi_f_plonk_char(uint16_t ds, uint16_t si, uint8_t raw_flag);
void decode_dssi_f_rw_sectors(uint16_t ds, uint16_t si, uint8_t raw_flag);
void debug_command(int ref, const std::vector<std::string> &params); void debug_command(int ref, const std::vector<std::string> &params);
void video_debug(int ref, const std::vector<std::string> &params); void video_debug(int ref, const std::vector<std::string> &params);
}; };

View File

@ -120,7 +120,7 @@ enum
#define LINEAR_ADDR(seg,ofs) ((seg<<4)+ofs) #define LINEAR_ADDR(seg,ofs) ((seg<<4)+ofs)
#define OUTPUT_SEGOFS(mess,seg,ofs) device->logerror("%s=%04X:%04X [%08X]\n",mess,seg,ofs,((seg<<4)+ofs)) #define OUTPUT_SEGOFS(mess,seg,ofs) logerror("%s=%04X:%04X [%08X]\n",mess,seg,ofs,((seg<<4)+ofs))
#define LOG_SIO 0 #define LOG_SIO 0
#define LOG_DISK_HDD 0 #define LOG_DISK_HDD 0
@ -177,12 +177,6 @@ struct t_nimbus_brush
static int instruction_hook(device_t &device, offs_t curpc); static int instruction_hook(device_t &device, offs_t curpc);
static void decode_dssi_generic(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag);
static void decode_dssi_f_fill_area(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag);
static void decode_dssi_f_plot_character_string(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag);
static void decode_dssi_f_set_new_clt(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag);
static void decode_dssi_f_plonk_char(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag);
static void decode_dssi_f_rw_sectors(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag);
void rmnimbus_state::external_int(uint8_t vector, bool state) void rmnimbus_state::external_int(uint8_t vector, bool state)
{ {
@ -294,7 +288,7 @@ void rmnimbus_state::decode_subbios(device_t *device,offs_t pc, uint8_t raw_flag
char drv_str[80]; char drv_str[80];
char func_str[80]; char func_str[80];
void (*dump_dssi)(device_t *,uint16_t, uint16_t ,uint8_t) = nullptr; void (rmnimbus_state::*dump_dssi)(uint16_t, uint16_t, uint8_t) = &rmnimbus_state::decode_dssi_none;
uint16_t ax = m_maincpu->state_int(I8086_AX); uint16_t ax = m_maincpu->state_int(I8086_AX);
uint16_t bx = m_maincpu->state_int(I8086_BX); uint16_t bx = m_maincpu->state_int(I8086_BX);
@ -375,14 +369,14 @@ void rmnimbus_state::decode_subbios(device_t *device,offs_t pc, uint8_t raw_flag
case 1 : set_func("f_initialise_unit"); break; case 1 : set_func("f_initialise_unit"); break;
case 2 : set_func("f_pseudo_init_unit"); break; case 2 : set_func("f_pseudo_init_unit"); break;
case 3 : set_func("f_get_device_status"); break; case 3 : set_func("f_get_device_status"); break;
case 4 : set_func("f_read_n_sectors"); dump_dssi=&decode_dssi_f_rw_sectors; break; case 4 : set_func("f_read_n_sectors"); dump_dssi = &rmnimbus_state::decode_dssi_f_rw_sectors; break;
case 5 : set_func("f_write_n_sectors"); dump_dssi=&decode_dssi_f_rw_sectors; break; case 5 : set_func("f_write_n_sectors"); dump_dssi = &rmnimbus_state::decode_dssi_f_rw_sectors; break;
case 6 : set_func("f_verify_n_sectors"); break; case 6 : set_func("f_verify_n_sectors"); break;
case 7 : set_func("f_media_check"); break; case 7 : set_func("f_media_check"); break;
case 8 : set_func("f_recalibrate"); break; case 8 : set_func("f_recalibrate"); break;
case 9 : set_func("f_motors_off"); break; case 9 : set_func("f_motors_off"); break;
} }
dump_dssi=&decode_dssi_f_rw_sectors; dump_dssi = &rmnimbus_state::decode_dssi_f_rw_sectors;
}; break; }; break;
@ -466,17 +460,17 @@ void rmnimbus_state::decode_subbios(device_t *device,offs_t pc, uint8_t raw_flag
case 3 : set_func("f_graphics_output_off"); break; case 3 : set_func("f_graphics_output_off"); break;
case 4 : set_func("f_reinit_graphics_output"); break; case 4 : set_func("f_reinit_graphics_output"); break;
case 5 : set_func("f_polymarker"); break; case 5 : set_func("f_polymarker"); break;
case 6 : set_func("f_polyline"); dump_dssi=&decode_dssi_f_fill_area; break; case 6 : set_func("f_polyline"); dump_dssi = &rmnimbus_state::decode_dssi_f_fill_area; break;
case 7 : set_func("f_fill_area"); dump_dssi=&decode_dssi_f_fill_area; break; case 7 : set_func("f_fill_area"); dump_dssi = &rmnimbus_state::decode_dssi_f_fill_area; break;
case 8 : set_func("f_flood_fill_area"); break; case 8 : set_func("f_flood_fill_area"); break;
case 9 : set_func("f_plot_character_string"); dump_dssi=&decode_dssi_f_plot_character_string; break; case 9 : set_func("f_plot_character_string"); dump_dssi = &rmnimbus_state::decode_dssi_f_plot_character_string; break;
case 10 : set_func("f_define_graphics_clipping_area"); break; case 10 : set_func("f_define_graphics_clipping_area"); break;
case 11 : set_func("f_enquire_clipping_area_limits"); break; case 11 : set_func("f_enquire_clipping_area_limits"); break;
case 12 : set_func("f_select_graphics_clipping_area"); break; case 12 : set_func("f_select_graphics_clipping_area"); break;
case 13 : set_func("f_enq_selctd_graphics_clip_area"); break; case 13 : set_func("f_enq_selctd_graphics_clip_area"); break;
case 14 : set_func("f_set_clt_element"); break; case 14 : set_func("f_set_clt_element"); break;
case 15 : set_func("f_enquire_clt_element"); break; case 15 : set_func("f_enquire_clt_element"); break;
case 16 : set_func("f_set_new_clt"); dump_dssi=&decode_dssi_f_set_new_clt; break; case 16 : set_func("f_set_new_clt"); dump_dssi = &rmnimbus_state::decode_dssi_f_set_new_clt; break;
case 17 : set_func("f_enquire_clt_contents"); break; case 17 : set_func("f_enquire_clt_contents"); break;
case 18 : set_func("f_define_dithering_pattern"); break; case 18 : set_func("f_define_dithering_pattern"); break;
case 19 : set_func("f_enquire_dithering_pattern"); break; case 19 : set_func("f_enquire_dithering_pattern"); break;
@ -539,11 +533,11 @@ void rmnimbus_state::decode_subbios(device_t *device,offs_t pc, uint8_t raw_flag
switch(ax) switch(ax)
{ {
case 0 : set_func("f_get_version_number"); break; case 0 : set_func("f_get_version_number"); break;
case 1 : set_func("f_plonk_char"); dump_dssi=decode_dssi_f_plonk_char; break; case 1 : set_func("f_plonk_char"); dump_dssi = &rmnimbus_state::decode_dssi_f_plonk_char; break;
case 2 : set_func("f_plonk_cursor"); break; case 2 : set_func("f_plonk_cursor"); break;
case 3 : set_func("f_kill_cursor"); break; case 3 : set_func("f_kill_cursor"); break;
case 4 : set_func("f_scroll"); break; case 4 : set_func("f_scroll"); break;
case 5 : set_func("f_width"); dump_dssi=decode_dssi_generic;break; case 5 : set_func("f_width"); dump_dssi = &rmnimbus_state::decode_dssi_generic; break;
case 6 : set_func("f_get_char_set"); break; case 6 : set_func("f_get_char_set"); break;
case 7 : set_func("f_set_char_set"); break; case 7 : set_func("f_set_char_set"); break;
case 8 : set_func("f_reset_char_set"); break; case 8 : set_func("f_reset_char_set"); break;
@ -613,15 +607,13 @@ void rmnimbus_state::decode_subbios(device_t *device,offs_t pc, uint8_t raw_flag
if(raw_flag) if(raw_flag)
{ {
if(dump_dssi!=nullptr) (this->*dump_dssi)(ds, si, raw_flag);
dump_dssi(device,ds,si,raw_flag);
} }
else else
{ {
logerror("Type=%s, Driver=%s, Function=%s\n",type_str,drv_str,func_str); logerror("Type=%s, Driver=%s, Function=%s\n",type_str,drv_str,func_str);
if(dump_dssi!=nullptr) (this->*dump_dssi)(ds, si, raw_flag);
dump_dssi(device,ds,si,raw_flag);
logerror("=======================================================================\n"); logerror("=======================================================================\n");
} }
} }
@ -636,10 +628,13 @@ static inline void *get_dssi_ptr(address_space &space, uint16_t ds, uint16_t s
return space.get_read_ptr(addr); return space.get_read_ptr(addr);
} }
static void decode_dssi_generic(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag) void rmnimbus_state::decode_dssi_none(uint16_t ds, uint16_t si, uint8_t raw_flag)
{ {
rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>(); }
address_space &space = state->m_maincpu->space(AS_PROGRAM);
void rmnimbus_state::decode_dssi_generic(uint16_t ds, uint16_t si, uint8_t raw_flag)
{
address_space &space = m_maincpu->space(AS_PROGRAM);
uint16_t *params; uint16_t *params;
int count; int count;
@ -649,16 +644,15 @@ static void decode_dssi_generic(device_t *device,uint16_t ds, uint16_t si, uint
params=(uint16_t *)get_dssi_ptr(space,ds,si); params=(uint16_t *)get_dssi_ptr(space,ds,si);
for(count=0; count<10; count++) for(count=0; count<10; count++)
device->logerror("%04X ",params[count]); logerror("%04X ",params[count]);
device->logerror("\n"); logerror("\n");
} }
static void decode_dssi_f_fill_area(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag) void rmnimbus_state::decode_dssi_f_fill_area(uint16_t ds, uint16_t si, uint8_t raw_flag)
{ {
rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>(); address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &space = state->m_maincpu->space(AS_PROGRAM);
uint16_t *addr_ptr; uint16_t *addr_ptr;
t_area_params *area_params; t_area_params *area_params;
@ -674,18 +668,18 @@ static void decode_dssi_f_fill_area(device_t *device,uint16_t ds, uint16_t si,
if(raw_flag) if(raw_flag)
{ {
device->logerror("\tdw\t%04X, %04X, %04X, %04X, %04X, %04X, %04X, %04X, %04X, ", logerror("\tdw\t%04X, %04X, %04X, %04X, %04X, %04X, %04X, %04X, %04X, ",
brush->style,brush->style_index,brush->colour1,brush->colour2, brush->style,brush->style_index,brush->colour1,brush->colour2,
brush->transparency,brush->boundary_spec,brush->boundary_colour,brush->save_colour, brush->transparency,brush->boundary_spec,brush->boundary_colour,brush->save_colour,
area_params->count); area_params->count);
} }
else else
{ {
device->logerror("Brush params\n"); logerror("Brush params\n");
device->logerror("Style=%04X, StyleIndex=%04X\n",brush->style,brush->style_index); logerror("Style=%04X, StyleIndex=%04X\n",brush->style,brush->style_index);
device->logerror("Colour1=%04X, Colour2=%04X\n",brush->colour1,brush->colour2); logerror("Colour1=%04X, Colour2=%04X\n",brush->colour1,brush->colour2);
device->logerror("transparency=%04X, boundary_spec=%04X\n",brush->transparency,brush->boundary_spec); logerror("transparency=%04X, boundary_spec=%04X\n",brush->transparency,brush->boundary_spec);
device->logerror("boundary colour=%04X, save colour=%04X\n",brush->boundary_colour,brush->save_colour); logerror("boundary colour=%04X, save colour=%04X\n",brush->boundary_colour,brush->save_colour);
OUTPUT_SEGOFS("SegData:OfsData",area_params->seg_data,area_params->ofs_data); OUTPUT_SEGOFS("SegData:OfsData",area_params->seg_data,area_params->ofs_data);
@ -697,22 +691,21 @@ static void decode_dssi_f_fill_area(device_t *device,uint16_t ds, uint16_t si,
if(raw_flag) if(raw_flag)
{ {
if(cocount!=(area_params->count-1)) if(cocount!=(area_params->count-1))
device->logerror("%04X, %04X, ",addr_ptr[cocount*2],addr_ptr[(cocount*2)+1]); logerror("%04X, %04X, ",addr_ptr[cocount*2],addr_ptr[(cocount*2)+1]);
else else
device->logerror("%04X, %04X ",addr_ptr[cocount*2],addr_ptr[(cocount*2)+1]); logerror("%04X, %04X ",addr_ptr[cocount*2],addr_ptr[(cocount*2)+1]);
} }
else else
device->logerror("x=%d y=%d\n",addr_ptr[cocount*2],addr_ptr[(cocount*2)+1]); logerror("x=%d y=%d\n",addr_ptr[cocount*2],addr_ptr[(cocount*2)+1]);
} }
if(raw_flag) if(raw_flag)
device->logerror("\n"); logerror("\n");
} }
static void decode_dssi_f_plot_character_string(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag) void rmnimbus_state::decode_dssi_f_plot_character_string(uint16_t ds, uint16_t si, uint8_t raw_flag)
{ {
rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>(); address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &space = state->m_maincpu->space(AS_PROGRAM);
uint8_t *char_ptr; uint8_t *char_ptr;
t_plot_string_params *plot_string_params; t_plot_string_params *plot_string_params;
@ -726,23 +719,22 @@ static void decode_dssi_f_plot_character_string(device_t *device,uint16_t ds, u
OUTPUT_SEGOFS("SegFont:OfsFont",plot_string_params->seg_font,plot_string_params->ofs_font); OUTPUT_SEGOFS("SegFont:OfsFont",plot_string_params->seg_font,plot_string_params->ofs_font);
OUTPUT_SEGOFS("SegData:OfsData",plot_string_params->seg_data,plot_string_params->ofs_data); OUTPUT_SEGOFS("SegData:OfsData",plot_string_params->seg_data,plot_string_params->ofs_data);
device->logerror("x=%d, y=%d, length=%d\n",plot_string_params->x,plot_string_params->y,plot_string_params->length); logerror("x=%d, y=%d, length=%d\n",plot_string_params->x,plot_string_params->y,plot_string_params->length);
char_ptr=(uint8_t*)space.get_read_ptr(LINEAR_ADDR(plot_string_params->seg_data,plot_string_params->ofs_data)); char_ptr=(uint8_t*)space.get_read_ptr(LINEAR_ADDR(plot_string_params->seg_data,plot_string_params->ofs_data));
if (plot_string_params->length==0xFFFF) if (plot_string_params->length==0xFFFF)
device->logerror("%s",char_ptr); logerror("%s",char_ptr);
else else
for(charno=0;charno<plot_string_params->length;charno++) for(charno=0;charno<plot_string_params->length;charno++)
device->logerror("%c",char_ptr[charno]); logerror("%c",char_ptr[charno]);
device->logerror("\n"); logerror("\n");
} }
static void decode_dssi_f_set_new_clt(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag) void rmnimbus_state::decode_dssi_f_set_new_clt(uint16_t ds, uint16_t si, uint8_t raw_flag)
{ {
rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>(); address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &space = state->m_maincpu->space(AS_PROGRAM);
uint16_t *new_colours; uint16_t *new_colours;
int colour; int colour;
new_colours=(uint16_t *)get_dssi_ptr(space,ds,si); new_colours=(uint16_t *)get_dssi_ptr(space,ds,si);
@ -753,14 +745,13 @@ static void decode_dssi_f_set_new_clt(device_t *device,uint16_t ds, uint16_t si
OUTPUT_SEGOFS("SegColours:OfsColours",ds,si); OUTPUT_SEGOFS("SegColours:OfsColours",ds,si);
for(colour=0;colour<16;colour++) for(colour=0;colour<16;colour++)
device->logerror("colour #%02X=%04X\n",colour,new_colours[colour]); logerror("colour #%02X=%04X\n",colour,new_colours[colour]);
} }
static void decode_dssi_f_plonk_char(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag) void rmnimbus_state::decode_dssi_f_plonk_char(uint16_t ds, uint16_t si, uint8_t raw_flag)
{ {
rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>(); address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &space = state->m_maincpu->space(AS_PROGRAM);
uint16_t *params; uint16_t *params;
params=(uint16_t *)get_dssi_ptr(space,ds,si); params=(uint16_t *)get_dssi_ptr(space,ds,si);
@ -769,13 +760,12 @@ static void decode_dssi_f_plonk_char(device_t *device,uint16_t ds, uint16_t si,
OUTPUT_SEGOFS("SegParams:OfsParams",ds,si); OUTPUT_SEGOFS("SegParams:OfsParams",ds,si);
device->logerror("plonked_char=%c\n",params[0]); logerror("plonked_char=%c\n",params[0]);
} }
static void decode_dssi_f_rw_sectors(device_t *device,uint16_t ds, uint16_t si, uint8_t raw_flag) void rmnimbus_state::decode_dssi_f_rw_sectors(uint16_t ds, uint16_t si, uint8_t raw_flag)
{ {
rmnimbus_state *state = device->machine().driver_data<rmnimbus_state>(); address_space &space = m_maincpu->space(AS_PROGRAM);
address_space &space = state->m_maincpu->space(AS_PROGRAM);
uint16_t *params; uint16_t *params;
int param_no; int param_no;
@ -785,9 +775,9 @@ static void decode_dssi_f_rw_sectors(device_t *device,uint16_t ds, uint16_t si,
params=(uint16_t *)get_dssi_ptr(space,ds,si); params=(uint16_t *)get_dssi_ptr(space,ds,si);
for(param_no=0;param_no<16;param_no++) for(param_no=0;param_no<16;param_no++)
device->logerror("%04X ",params[param_no]); logerror("%04X ",params[param_no]);
device->logerror("\n"); logerror("\n");
} }
void rmnimbus_state::decode_dos21(device_t *device,offs_t pc) void rmnimbus_state::decode_dos21(device_t *device,offs_t pc)