Previous 199869 Revisions Next

r29242 Friday 4th April, 2014 at 06:53:33 UTC by Fabio Priuli
(MESS) modernized psion.c nvram. nw.
[src/mess/drivers]psion.c
[src/mess/includes]psion.h

trunk/src/mess/includes/psion.h
r29241r29242
1212#define _PSION_H_
1313
1414#include "cpu/m6800/m6800.h"
15#include "machine/nvram.h"
1516#include "machine/psion_pack.h"
1617#include "video/hd44780.h"
1718#include "sound/beep.h"
r29241r29242
2930         m_beep(*this, "beeper"),
3031         m_pack1(*this, "pack1"),
3132         m_pack2(*this, "pack2"),
33         m_nvram1(*this, "nvram1"),
34         m_nvram2(*this, "nvram2"),
35         m_nvram3(*this, "nvram3"),
3236         m_sys_register(*this, "sys_register"),
37         m_stby_pwr(1),
3338         m_ram(*this, "ram"){ }
3439
3540   required_device<hd63701_cpu_device> m_maincpu;
r29241r29242
3742   required_device<beep_device> m_beep;
3843   required_device<datapack_device> m_pack1;
3944   required_device<datapack_device> m_pack2;
45   required_device<nvram_device> m_nvram1;
46   required_device<nvram_device> m_nvram2;
47   optional_device<nvram_device> m_nvram3;
4048
4149   UINT16 m_kb_counter;
4250   UINT8 m_enable_nmi;
r29241r29242
6068
6169   virtual void machine_start();
6270   virtual void machine_reset();
71   void nvram_init(nvram_device &nvram, void *data, size_t size);
6372
6473   UINT8 kb_read();
6574   void update_banks();
trunk/src/mess/drivers/psion.c
r29241r29242
2323#include "emu.h"
2424#include "includes/psion.h"
2525#include "rendlay.h"
26#include "mcfglgcy.h"
2726
2827TIMER_DEVICE_CALLBACK_MEMBER(psion_state::nmi_timer)
2928{
r29241r29242
332331      PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D [)]") PORT_CODE(KEYCODE_D)
333332INPUT_PORTS_END
334333
335static NVRAM_HANDLER( psion )
336{
337   psion_state *state = machine.driver_data<psion_state>();
338334
339   if (read_or_write)
340   {
341      file->write(state->m_sys_register, 0xc0);
342      file->write(state->m_ram, state->m_ram.bytes());
343      if (state->m_ram_bank_count)
344         file->write(state->m_paged_ram, state->m_ram_bank_count * 0x4000);
345   }
346   else
347   {
348      if (file)
349      {
350         file->read(state->m_sys_register, 0xc0);
351         file->read(state->m_ram, state->m_ram.bytes());
352         if (state->m_ram_bank_count)
353            file->read(state->m_paged_ram, state->m_ram_bank_count * 0x4000);
354
355         //warm start
356         state->m_stby_pwr = 1;
357      }
358      else
359         //cold start
360         state->m_stby_pwr = 0;
361   }
335void psion_state::nvram_init(nvram_device &nvram, void *data, size_t size)
336{
337   //cold start (by default is 1=warm start)
338   m_stby_pwr = 0;
362339}
363340
341
364342void psion_state::machine_start()
365343{
366344   if (!strcmp(machine().system().name, "psionlam"))
r29241r29242
406384      membank("rambank")->set_entry(0);
407385   }
408386
387   m_nvram1->set_base(m_sys_register, 0xc0);
388   m_nvram2->set_base(m_ram, m_ram.bytes());
389   if (m_nvram3)
390      m_nvram3->set_base(m_paged_ram, m_ram_bank_count * 0x4000);
391   
409392   save_item(NAME(m_kb_counter));
410393   save_item(NAME(m_enable_nmi));
411394   save_item(NAME(m_tcsr_value));
r29241r29242
498481   MCFG_SOUND_ADD( "beeper", BEEP, 0 )
499482   MCFG_SOUND_ROUTE( ALL_OUTPUTS, "mono", 1.00 )
500483
501   MCFG_NVRAM_HANDLER(psion)
484   MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram1", psion_state, nvram_init)      // sys_regs
485   MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram2", psion_state, nvram_init)      // RAM
502486
503487   MCFG_TIMER_DRIVER_ADD_PERIODIC("nmi_timer", psion_state, nmi_timer, attotime::from_seconds(1))
504488
r29241r29242
544528
545529   MCFG_CPU_MODIFY("maincpu")
546530   MCFG_CPU_PROGRAM_MAP(psionp350_mem)
531
532   MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram3", psion_state, nvram_init)   // paged RAM
547533MACHINE_CONFIG_END
548534
549535static MACHINE_CONFIG_DERIVED( psionlz, psion_4lines )
550536
551537   MCFG_CPU_MODIFY("maincpu")
552538   MCFG_CPU_PROGRAM_MAP(psionlz_mem)
539
540   MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram3", psion_state, nvram_init)   // paged RAM
553541MACHINE_CONFIG_END
554542
555543/* ROM definition */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team