--- monitor.c 2010-06-09 09:14:09 +0000 +++ monitor.c 2010-06-09 09:20:37 +0000 @@ -1288,4 +1288,45 @@ if (mem_ioreg_list_base) { while (1) { + /* Enthusi/ONS, fix by iAN CooG - display vic regs verbosely - start */ + if (n==0) { + if (machine_class == VICE_MACHINE_C64 || + machine_class == VICE_MACHINE_C128 || + machine_class == VICE_MACHINE_C64DTV|| + machine_class == VICE_MACHINE_C64SC ) { + int v_d016,v_d011,v_d018,v_dd00,v_bank,v_bitmap,v_map,v_font,v_bmflag,v_hmflag; + v_d016 = mon_get_mem_val(default_memspace, 0xd016); + v_d011 = mon_get_mem_val(default_memspace, 0xd011); + v_dd00 = mon_get_mem_val(default_memspace, 0xdd00); + v_d018 = mon_get_mem_val(default_memspace, 0xd018); + v_bmflag = ((v_d011 & 0x20) >> 5); /* 0 text, 1 gfx */ + v_hmflag = (v_d016 & 0x10) >> 4; /* 0 hires, 1 multi */ + v_bank = 0xc000 - (v_dd00 & 3) * 0x4000; + v_bitmap = ((v_d018 >> 3) & 1) * 0x2000 + v_bank; + v_map = (v_d018 >> 4) * 0x0400 + v_bank; + v_font = ((v_d018 >> 1) & 7) * 0x0800 + v_bank; + /* $1x00 and $9x00 mapped to $dx00 */ + if ( (( v_font >> 12) == 1 ) || + (( v_font >> 12) == 9 ) ) { + v_font = 0xd000 | (v_font & 0x0f00); + } + if (v_bmflag) { + mon_out("Display Mode: Bitmap gfx\n"); + } else { + mon_out("Display Mode: Standard Text\n"); + } + if (v_hmflag) { + mon_out("GFX Mode: multi color\n"); + } else { + mon_out("GFX Mode: hires color\n"); + } + mon_out("VIC Memory Bank: $%04x - $%04x\n", v_bank, v_bank + 0x3fff); + mon_out("Video Memory: $%04x\n",v_map); + if (!v_bmflag) { + mon_out("Character Set: $%04x\n", v_font); + } + mon_out("Bitmap Memory: $%04x\n\n", v_bitmap); + } + } + /* Enthusi/ONS, fix by iAN CooG - display vic regs verbosely - end */ mon_out("%s:\n", mem_ioreg_list_base[n].name); start = new_addr(default_memspace, mem_ioreg_list_base[n].start);
--- vicii.c 2010-06-09 17:16:40 +0000 +++ vicii.c 2010-06-10 09:39:16 +0000 @@ -1372,5 +1372,5 @@ m_disp = ((vic->regs[0x11] & 0x20) >> 5); /* 0 text, 1 bitmap */ - v_bank = 0; /* FIXME */ + v_bank = vic->vbank_phi2; /* FIXME: using either vbank_phi1 is the same or not? */ mon_out("Display Mode:"); @@ -1389,5 +1389,10 @@ mon_out("\nVIC Memory Bank: $%04x - $%04x\n", v_bank, v_bank+0x3fff); mon_out("\nVideo Memory: $%04x\n", ((vic->regs[0x18] >> 4) * 0x0400) + v_bank); - mon_out("Character Set: $%04x\n", (((vic->regs[0x18] >> 1) & 0x7) * 0x800) + v_bank); + i=(((vic->regs[0x18] >> 1) & 0x7) * 0x800) + v_bank; + /* $1x00 and $9x00 mapped to $dx00 */ + if ( (( i >> 12) == 1 ) || (( i >> 12) == 9 ) ) { + i = 0xd000 | (i & 0x0f00); + } + mon_out("Character Set: $%04x\n", i); mon_out("Bitmap Memory: $%04x\n", (((vic->regs[0x18] >> 3) & 1) * 0x2000) + v_bank);