static void write_header( libspectrum_byte **buffer, libspectrum_byte **ptr, size_t *length, libspectrum_snap *snap ) { libspectrum_make_room( buffer, LIBSPECTRUM_SNA_HEADER_LENGTH, ptr, length ); *(*ptr)++ = libspectrum_snap_i ( snap ); libspectrum_write_word( ptr, libspectrum_snap_hl_( snap ) ); libspectrum_write_word( ptr, libspectrum_snap_de_( snap ) ); libspectrum_write_word( ptr, libspectrum_snap_bc_( snap ) ); *(*ptr)++ = libspectrum_snap_f_( snap ); *(*ptr)++ = libspectrum_snap_a_( snap ); libspectrum_write_word( ptr, libspectrum_snap_hl ( snap ) ); libspectrum_write_word( ptr, libspectrum_snap_de ( snap ) ); libspectrum_write_word( ptr, libspectrum_snap_bc ( snap ) ); libspectrum_write_word( ptr, libspectrum_snap_iy ( snap ) ); libspectrum_write_word( ptr, libspectrum_snap_ix ( snap ) ); *(*ptr)++ = libspectrum_snap_iff2( snap ) ? 0x04 : 0x00; *(*ptr)++ = libspectrum_snap_r ( snap ); *(*ptr)++ = libspectrum_snap_f ( snap ); *(*ptr)++ = libspectrum_snap_a ( snap ); libspectrum_write_word( ptr, libspectrum_snap_sp ( snap ) ); *(*ptr)++ = libspectrum_snap_im( snap ); *(*ptr)++ = libspectrum_snap_out_ula( snap ) & 0x07; }
/* Routines for transferring the Z80 contents to and from snapshots */ static void z80_from_snapshot( libspectrum_snap *snap ) { A = libspectrum_snap_a ( snap ); F = libspectrum_snap_f ( snap ); A_ = libspectrum_snap_a_( snap ); F_ = libspectrum_snap_f_( snap ); BC = libspectrum_snap_bc ( snap ); DE = libspectrum_snap_de ( snap ); HL = libspectrum_snap_hl ( snap ); BC_ = libspectrum_snap_bc_( snap ); DE_ = libspectrum_snap_de_( snap ); HL_ = libspectrum_snap_hl_( snap ); IX = libspectrum_snap_ix( snap ); IY = libspectrum_snap_iy( snap ); I = libspectrum_snap_i ( snap ); R = R7 = libspectrum_snap_r( snap ); SP = libspectrum_snap_sp( snap ); PC = libspectrum_snap_pc( snap ); IFF1 = libspectrum_snap_iff1( snap ); IFF2 = libspectrum_snap_iff2( snap ); IM = libspectrum_snap_im( snap ); z80.halted = libspectrum_snap_halted( snap ); z80.interrupts_enabled_at = libspectrum_snap_last_instruction_ei( snap ) ? z80_tstates : -1; }