| 295 |
gtk_clist_clear( codelist ); |
gtk_clist_clear( codelist ); |
| 296 |
|
|
| 297 |
if ( vm.is_on() ){ |
if ( vm.is_on() ){ |
| 298 |
char buf[3][100], *ptrs[4] = {0}; |
char buf[3][100], *ptrs[5] = {0}; |
| 299 |
vector<unsigned long> mem = bin_loader.get_instr(); |
vector<unsigned long> mem = bin_loader.get_instr(); |
| 300 |
despasm despasma(mem, 1); |
despasm despasma(mem, 1); |
| 301 |
|
|
| 302 |
ptrs[0] = buf[0]; |
ptrs[0] = buf[0]; |
| 303 |
ptrs[1] = buf[1]; |
ptrs[1] = NULL; |
| 304 |
ptrs[3] = buf[2]; |
ptrs[2] = buf[1]; |
| 305 |
|
ptrs[4] = buf[2]; |
| 306 |
|
|
| 307 |
for( int i = 0 ; i < mem.size() ; i++ ){ |
for( int i = 0 ; i < mem.size() ; i++ ){ |
| 308 |
sprintf( buf[0], "%08X:", i*4 ); |
sprintf( buf[0], "%08X:", i*4 ); |
| 309 |
strcpy( buf[1], despasma.getline(i).c_str() ); |
strcpy( buf[1], despasma.getline(i).c_str() ); |
| 310 |
|
|
| 311 |
ptrs[2] = strchr( buf[1], '\t' ); |
ptrs[3] = strchr( buf[1], '\t' ); |
| 312 |
if (ptrs[2]){ |
if (ptrs[3]){ |
| 313 |
ptrs[2][0] = '\0'; |
ptrs[3][0] = '\0'; |
| 314 |
ptrs[2]++; |
ptrs[3]++; |
| 315 |
} |
} |
| 316 |
sprintf( buf[2], "%08X", mem[i] ); |
sprintf( buf[2], "%08X", mem[i] ); |
| 317 |
|
|
| 319 |
gtk_clist_set_background(codelist, i, &colors ); |
gtk_clist_set_background(codelist, i, &colors ); |
| 320 |
} |
} |
| 321 |
|
|
| 322 |
for( int i = 0 ; i < 4 ; i++ ) |
for( int i = 0 ; i < 5 ; i++ ) |
| 323 |
gtk_clist_set_column_auto_resize(codelist, i, true ); |
gtk_clist_set_column_auto_resize(codelist, i, true ); |
| 324 |
|
|
| 325 |
gtk_clist_set_column_justification(codelist, 3, |
gtk_clist_set_column_justification(codelist, 4, |
| 326 |
GTK_JUSTIFY_CENTER); |
GTK_JUSTIFY_CENTER); |
| 327 |
} |
} |
| 328 |
|
|
| 329 |
gtk_clist_thaw( codelist ); |
gtk_clist_thaw( codelist ); |
| 330 |
} |
} |
| 331 |
|
void refresh_codelist_addtext( char *s_no, char *s_yes, int row ) |
| 332 |
|
{ |
| 333 |
|
GtkCList *codelist; |
| 334 |
|
codelist = GTK_CLIST(lookup_widget( window_main, "clist_code")); |
| 335 |
|
char *s_old; |
| 336 |
|
|
| 337 |
|
gtk_clist_get_text( codelist, row, 1 , &s_old); |
| 338 |
|
|
| 339 |
|
if ( s_old == NULL || strlen(s_old) == 0 ) |
| 340 |
|
gtk_clist_set_text( codelist, row, 1 , s_no); |
| 341 |
|
else { |
| 342 |
|
char buf[100]; |
| 343 |
|
sprintf(buf, "%s%s", s_old, s_yes ); |
| 344 |
|
gtk_clist_set_text( codelist, row, 1 , buf); |
| 345 |
|
} |
| 346 |
|
|
| 347 |
|
} |
| 348 |
void refresh_codelist( void ) |
void refresh_codelist( void ) |
| 349 |
{ |
{ |
| 350 |
GtkCList *codelist; |
GtkCList *codelist; |
| 363 |
|
|
| 364 |
gdk_colormap_alloc_colors( sys, colors, 6, FALSE, TRUE, dummy ); |
gdk_colormap_alloc_colors( sys, colors, 6, FALSE, TRUE, dummy ); |
| 365 |
|
|
| 366 |
|
gtk_clist_freeze( codelist ); |
| 367 |
|
|
| 368 |
int rows = bin_loader.get_instr().size(); |
int rows = bin_loader.get_instr().size(); |
| 369 |
for( int i = 0; i < rows ; i++) |
for( int i = 0; i < rows ; i++){ |
| 370 |
gtk_clist_set_background(codelist, i, &(colors[0]) ); |
gtk_clist_set_background(codelist, i, &(colors[0]) ); |
| 371 |
|
gtk_clist_set_text(codelist, i, 1, "" ); |
| 372 |
|
} |
| 373 |
|
|
| 374 |
if (vm.is_active(vmachine::WB)) |
if (vm.is_active( vmachine::IF )){ |
| 375 |
gtk_clist_set_background(codelist, |
gtk_clist_set_background(codelist, |
| 376 |
vm.get_pppPC()/4, &(colors[5]) ); |
vm.get_nPC()/4, &(colors[1]) ); |
| 377 |
|
if (vm.is_stall( vmachine::IF )) |
| 378 |
|
refresh_codelist_addtext( "!IF", "/!IF", |
| 379 |
|
vm.get_nPC()/4 ); |
| 380 |
|
else |
| 381 |
|
refresh_codelist_addtext( "IF", "/IF", vm.get_nPC()/4 ); |
| 382 |
|
} |
| 383 |
|
|
| 384 |
if (vm.is_active(vmachine::MA)) |
if (vm.is_active(vmachine::ID)){ |
| 385 |
gtk_clist_set_background(codelist, |
gtk_clist_set_background(codelist, |
| 386 |
vm.get_ppPC()/4, &(colors[4]) ); |
vm.get_PC()/4, &(colors[2]) ); |
| 387 |
|
if (vm.is_stall( vmachine::ID )) |
| 388 |
|
refresh_codelist_addtext( "!ID", "/!ID", |
| 389 |
|
vm.get_PC()/4 ); |
| 390 |
|
else |
| 391 |
|
refresh_codelist_addtext( "ID", "/ID", vm.get_PC()/4 ); |
| 392 |
|
} |
| 393 |
|
|
| 394 |
if (vm.is_active(vmachine::EX)) |
if (vm.is_active(vmachine::EX)){ |
| 395 |
gtk_clist_set_background(codelist, |
gtk_clist_set_background(codelist, |
| 396 |
vm.get_pPC()/4, &(colors[3]) ); |
vm.get_pPC()/4, &(colors[3]) ); |
| 397 |
|
if (vm.is_stall( vmachine::EX )) |
| 398 |
if (vm.is_active(vmachine::ID)) |
refresh_codelist_addtext( "!EX", "/!EX", |
| 399 |
|
vm.get_pPC()/4 ); |
| 400 |
|
else |
| 401 |
|
refresh_codelist_addtext( "EX", "/EX", vm.get_pPC()/4 ); |
| 402 |
|
} |
| 403 |
|
|
| 404 |
|
if (vm.is_active(vmachine::MA)){ |
| 405 |
gtk_clist_set_background(codelist, |
gtk_clist_set_background(codelist, |
| 406 |
vm.get_PC()/4, &(colors[2]) ); |
vm.get_ppPC()/4, &(colors[4]) ); |
| 407 |
|
if (vm.is_stall( vmachine::MA )) |
| 408 |
|
refresh_codelist_addtext( "!MA", "/!MA", |
| 409 |
|
vm.get_ppPC()/4 ); |
| 410 |
|
else |
| 411 |
|
refresh_codelist_addtext( "MA", "/MA", |
| 412 |
|
vm.get_ppPC()/4 ); |
| 413 |
|
} |
| 414 |
|
|
| 415 |
if (vm.is_active( vmachine::IF )) |
if (vm.is_active(vmachine::WB)){ |
| 416 |
gtk_clist_set_background(codelist, |
gtk_clist_set_background(codelist, |
| 417 |
vm.get_nPC()/4, &(colors[1]) ); |
vm.get_pppPC()/4, &(colors[5]) ); |
| 418 |
|
if (vm.is_stall( vmachine::WB )) |
| 419 |
|
refresh_codelist_addtext( "!WB", "/!WB", |
| 420 |
|
vm.get_pppPC()/4 ); |
| 421 |
|
else |
| 422 |
|
refresh_codelist_addtext( "WB", "/WB", |
| 423 |
|
vm.get_pppPC()/4 ); |
| 424 |
|
} |
| 425 |
|
|
| 426 |
|
|
| 427 |
gtk_clist_moveto( codelist, vm.get_nPC()/4, 0, 0.8, 0); |
gtk_clist_moveto( codelist, vm.get_nPC()/4, 0, 0.8, 0); |
| 428 |
|
|
| 429 |
|
gtk_clist_thaw( codelist ); |
| 430 |
} |
} |
| 431 |
void refresh_memory( void ) |
void refresh_memory( void ) |
| 432 |
{ |
{ |