From: <pa...@us...> - 2011-05-31 21:21:08
|
Revision: 4446 http://fuse-emulator.svn.sourceforge.net/fuse-emulator/?rev=4446&view=rev Author: pak21 Date: 2011-05-31 21:21:02 +0000 (Tue, 31 May 2011) Log Message: ----------- Ensure pages loaded from .dck files get saved back into snapshots. This change is dedicated to James Alexander Kendall. Modified Paths: -------------- trunk/fuse/hacking/ChangeLog trunk/fuse/peripherals/dck.c Modified: trunk/fuse/hacking/ChangeLog =================================================================== --- trunk/fuse/hacking/ChangeLog 2011-05-16 22:32:57 UTC (rev 4445) +++ trunk/fuse/hacking/ChangeLog 2011-05-31 21:21:02 UTC (rev 4446) @@ -3638,3 +3638,5 @@ 20110514 tape.c: add case for set signal level block (Fred). 20110514 tape.c: we want to allow 0 tstate blocks to twiddle the mic to accomodate the set signal level block (Fred). +20110531 peripherals/dck.c: ensure pages loaded from .dck files get saved back + into snapshots. Modified: trunk/fuse/peripherals/dck.c =================================================================== --- trunk/fuse/peripherals/dck.c 2011-05-16 22:32:57 UTC (rev 4445) +++ trunk/fuse/peripherals/dck.c 2011-05-31 21:21:02 UTC (rev 4446) @@ -138,17 +138,19 @@ for( i = 0; i < 8; i++ ) { + memory_page *page = mem[i]; + switch( dck->dck[num_block]->access[i] ) { case LIBSPECTRUM_DCK_PAGE_NULL: break; case LIBSPECTRUM_DCK_PAGE_ROM: - mem[i]->page = memory_pool_allocate( MEMORY_PAGE_SIZE ); - if( !mem[i]->page ) return 1; - memcpy( mem[i]->page, dck->dck[num_block]->pages[i], + page->page = memory_pool_allocate( MEMORY_PAGE_SIZE ); + memcpy( page->page, dck->dck[num_block]->pages[i], MEMORY_PAGE_SIZE ); - mem[i]->writable = 0; + page->writable = 0; + page->save_to_snapshot = 1; break; case LIBSPECTRUM_DCK_PAGE_RAM_EMPTY: @@ -159,12 +161,12 @@ other cases, we allocate ourselves a new page to store the contents in */ if( !(dck->dck[num_block]->bank == LIBSPECTRUM_DCK_BANK_HOME && i>1) ) { - mem[i]->page = memory_pool_allocate( MEMORY_PAGE_SIZE ); - if( !mem[i]->page ) return 1; - mem[i]->writable = 1; + page->page = memory_pool_allocate( MEMORY_PAGE_SIZE ); + page->writable = 1; + page->save_to_snapshot = 1; } - memcpy( mem[i]->page, dck->dck[num_block]->pages[i], + memcpy( page->page, dck->dck[num_block]->pages[i], MEMORY_PAGE_SIZE ); break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |