Previous 199869 Revisions Next

r29222 Thursday 3rd April, 2014 at 18:07:04 UTC by Fabio Priuli
(MESS) modernized nvram for clcd.c, lisa.c and nc.c. nw.
[src/mess/drivers]clcd.c lisa.c nc.c
[src/mess/includes]lisa.h nc.h
[src/mess/machine]lisa.c

trunk/src/mess/machine/lisa.c
r29221r29222
842842
843843/* should save PRAM to file */
844844/* TODO : save time difference with host clock, set default date, etc */
845NVRAM_HANDLER(lisa)
845void lisa_state::nvram_init(nvram_device &nvram, void *data, size_t size)
846846{
847   lisa_state *state = machine.driver_data<lisa_state>();
847   memset(data, 0x00, size);
848848
849   if (read_or_write)
850849   {
851      file->write(state->m_fdc_ram, 1024);
852   }
853   else
854   {
855      if (file)
856         file->read(state->m_fdc_ram, 1024);
857      else
858         memset(state->m_fdc_ram, 0, 1024);
850      /* Now we copy the host clock into the Lisa clock */
851      system_time systime;
852      machine().base_datetime(systime);
859853
860      {
861         /* Now we copy the host clock into the Lisa clock */
862         system_time systime;
863         machine.base_datetime(systime);
854      m_clock_regs.alarm = 0xfffffL;
855      /* The clock count starts on 1st January 1980 */
856      m_clock_regs.years = (systime.local_time.year - 1980) & 0xf;
857      m_clock_regs.days1 = (systime.local_time.day + 1) / 100;
858      m_clock_regs.days2 = ((systime.local_time.day + 1) / 10) % 10;
859      m_clock_regs.days3 = (systime.local_time.day + 1) % 10;
860      m_clock_regs.hours1 = systime.local_time.hour / 10;
861      m_clock_regs.hours2 = systime.local_time.hour % 10;
862      m_clock_regs.minutes1 = systime.local_time.minute / 10;
863      m_clock_regs.minutes2 = systime.local_time.minute % 10;
864      m_clock_regs.seconds1 = systime.local_time.second / 10;
865      m_clock_regs.seconds2 = systime.local_time.second % 10;
866      m_clock_regs.tenths = 0;
864867
865         state->m_clock_regs.alarm = 0xfffffL;
866         /* The clock count starts on 1st January 1980 */
867         state->m_clock_regs.years = (systime.local_time.year - 1980) & 0xf;
868         state->m_clock_regs.days1 = (systime.local_time.day + 1) / 100;
869         state->m_clock_regs.days2 = ((systime.local_time.day + 1) / 10) % 10;
870         state->m_clock_regs.days3 = (systime.local_time.day + 1) % 10;
871         state->m_clock_regs.hours1 = systime.local_time.hour / 10;
872         state->m_clock_regs.hours2 = systime.local_time.hour % 10;
873         state->m_clock_regs.minutes1 = systime.local_time.minute / 10;
874         state->m_clock_regs.minutes2 = systime.local_time.minute % 10;
875         state->m_clock_regs.seconds1 = systime.local_time.second / 10;
876         state->m_clock_regs.seconds2 = systime.local_time.second % 10;
877         state->m_clock_regs.tenths = 0;
878      }
879      state->m_clock_regs.clock_mode = timer_disable;
880      state->m_clock_regs.clock_write_ptr = -1;
868      m_clock_regs.clock_mode = timer_disable;
869      m_clock_regs.clock_write_ptr = -1;
881870   }
882
883
884871#if 0
885872   UINT32 temp32;
886873   SINT8 temp8;
887874   temp32 = (m_clock_regs.alarm << 12) | (m_clock_regs.years << 8) | (m_clock_regs.days1 << 4)
888         | m_clock_regs.days2;
875   | m_clock_regs.days2;
889876
890877   temp32 = (m_clock_regs.days3 << 28) | (m_clock_regs.hours1 << 24) | (m_clock_regs.hours2 << 20)
891         | (m_clock_regs.minutes1 << 16) | (m_clock_regs.minutes2 << 12)
892         | (m_clock_regs.seconds1 << 8) | (m_clock_regs.seconds2 << 4) | m_clock_regs.tenths;
878   | (m_clock_regs.minutes1 << 16) | (m_clock_regs.minutes2 << 12)
879   | (m_clock_regs.seconds1 << 8) | (m_clock_regs.seconds2 << 4) | m_clock_regs.tenths;
893880
894881   temp8 = clock_mode;         /* clock mode */
895882
896883   temp8 = m_clock_regs.clock_write_ptr;    /* clock byte to be written next (-1 if clock write disabled) */
897884#endif
885
898886}
899887
888
900889#ifdef UNUSED_FUNCTION
901890void lisa_state::init_lisa1(void)
902891{
r29221r29222
953942
954943   /* read command every ms (don't know the real value) */
955944   machine().scheduler().timer_pulse(attotime::from_msec(1), timer_expired_delegate(FUNC(lisa_state::set_COPS_ready),this));
945
946   m_nvram->set_base(m_fdc_ram, 1024);
956947}
957948
958949void lisa_state::machine_reset()
trunk/src/mess/includes/lisa.h
r29221r29222
1010#define LISA_H_
1111
1212#include "emu.h"
13#include "cpu/m68000/m68000.h"
1314#include "machine/6522via.h"
1415#include "machine/8530scc.h"
1516#include "machine/6522via.h"
17#include "machine/nvram.h"
1618#include "machine/applefdc.h"
1719#include "machine/sonydriv.h"
18#include "cpu/m68000/m68000.h"
1920#include "sound/speaker.h"
2021
2122#define COP421_TAG      "u9f"
r29221r29222
106107      m_fdc(*this, "fdc"),
107108      m_scc(*this, "scc"),
108109      m_speaker(*this, "speaker"),
110      m_nvram(*this, "nvram"),
109111      m_fdc_rom(*this,"fdc_rom"),
110112      m_fdc_ram(*this,"fdc_ram"),
111113      m_io_line0(*this, "LINE0"),
r29221r29222
127129   optional_device<applefdc_base_device> m_fdc;
128130   required_device<scc8530_t> m_scc;
129131   required_device<speaker_sound_device> m_speaker;
132   required_device<nvram_device> m_nvram;
130133
131134   required_shared_ptr<UINT8> m_fdc_rom;
132135   required_shared_ptr<UINT8> m_fdc_ram;
r29221r29222
202205   virtual void machine_start();
203206   virtual void machine_reset();
204207   virtual void video_start();
208   void nvram_init(nvram_device &nvram, void *data, size_t size);
205209   UINT32 screen_update_lisa(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
206210   INTERRUPT_GEN_MEMBER(lisa_interrupt);
207211   TIMER_CALLBACK_MEMBER(handle_mouse);
trunk/src/mess/includes/nc.h
r29221r29222
1111#include "machine/i8251.h"
1212#include "machine/clock.h"
1313#include "machine/ram.h"
14#include "machine/nvram.h"
1415#include "sound/beep.h"
1516
1617#define NC_NUM_COLOURS 4
r29221r29222
4142      m_beeper2(*this, "beep.2"),
4243      m_centronics(*this, "centronics"),
4344      m_uart(*this, "uart"),
44      m_uart_clock(*this, "uart_clock")
45      m_uart_clock(*this, "uart_clock"),
46      m_nvram(*this, "nvram")
4547   {
4648   }
4749
r29221r29222
115117   required_device<centronics_device> m_centronics;
116118   required_device<i8251_device> m_uart;
117119   required_device<clock_device> m_uart_clock;
120   required_device<nvram_device> m_nvram;
118121
119122   char m_memory_config[4];
120123   emu_timer *m_keyboard_timer;
trunk/src/mess/drivers/clcd.c
r29221r29222
1818#include "machine/mos6551.h"
1919#include "machine/msm58321.h"
2020#include "machine/ram.h"
21#include "machine/nvram.h"
2122#include "sound/speaker.h"
2223#include "rendlay.h"
23#include "mcfglgcy.h"
2424
2525class clcd_state : public driver_device
2626{
r29221r29222
3333      m_rtc(*this, "rtc"),
3434      m_centronics(*this, "centronics"),
3535      m_ram(*this,"ram"),
36      m_nvram(*this, "nvram"),
3637      m_bank1(*this, "bank1"),
3738      m_bank2(*this, "bank2"),
3839      m_bank3(*this, "bank3"),
r29221r29222
8990
9091      m_rtc->cs1_w(1);
9192      m_acia->write_cts(0);
93      m_nvram->set_base(ram()->pointer(), ram()->size());
9294   }
9395
9496   DECLARE_PALETTE_INIT(clcd)
r29221r29222
521523      m_key_force_format = 10;
522524   }
523525
526   void nvram_init(nvram_device &nvram, void *data, size_t size);
527
524528private:
525529   required_device<cpu_device> m_maincpu;
526530   required_device<mos6551_device> m_acia;
r29221r29222
528532   required_device<msm58321_device> m_rtc;
529533   required_device<centronics_device> m_centronics;
530534   required_device<ram_device> m_ram;
535   required_device<nvram_device> m_nvram;
531536   required_device<address_map_bank_device> m_bank1;
532537   required_device<address_map_bank_device> m_bank2;
533538   required_device<address_map_bank_device> m_bank3;
r29221r29222
560565   required_ioport m_special;
561566};
562567
563static NVRAM_HANDLER(clcd)
568void clcd_state::nvram_init(nvram_device &nvram, void *data, size_t size)
564569{
565   clcd_state *state = machine.driver_data<clcd_state>();
566
567   if (read_or_write)
568   {
569      file->write(state->ram()->pointer(), state->ram()->size());
570   }
571   else if (file)
572   {
573      file->read(state->ram()->pointer(), state->ram()->size());
574   }
575   else
576   {
577      state->force_format();
578   }
570   memset(data, 0x00, size);
571   force_format();
579572}
580573
574
581575static ADDRESS_MAP_START( clcd_banked_mem, AS_PROGRAM, 8, clcd_state )
582576   /* KERN/APPL/RAM */
583577   AM_RANGE(0x00000, 0x1ffff) AM_MIRROR(0x40000) AM_READWRITE(ram_r, ram_w)
r29221r29222
799793   MCFG_RAM_DEFAULT_VALUE(0)
800794   MCFG_RAM_EXTRA_OPTIONS("32k,64k")
801795   MCFG_RAM_DEFAULT_SIZE("128k")
802   MCFG_NVRAM_HANDLER(clcd)
796
797   MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", clcd_state, nvram_init)
803798MACHINE_CONFIG_END
804799
805800
trunk/src/mess/drivers/nc.c
r29221r29222
404404}
405405
406406
407static NVRAM_HANDLER( nc )
408{
409   nc_state *state = machine.driver_data<nc_state>();
410
411   if (read_or_write)
412   {
413      file->write(state->m_ram->pointer(), state->m_ram->size());
414   }
415   else if (file)
416   {
417      file->read(state->m_ram->pointer(), state->m_ram->size());
418   }
419   else
420   {
421      // leave whatever ram device defaulted to
422   }
423}
424
425
426407TIMER_DEVICE_CALLBACK_MEMBER(nc_state::dummy_timer_callback)
427408{
428409   int inputport_10_state;
r29221r29222
836817   /* keyboard timer */
837818   m_keyboard_timer = machine().scheduler().timer_alloc(timer_expired_delegate(FUNC(nc_state::nc_keyboard_timer_callback),this));
838819   m_keyboard_timer->adjust(attotime::from_msec(10));
820
821   m_nvram->set_base(m_ram->pointer(), m_ram->size());
839822}
840823
841824
r29221r29222
14711454   /* internal ram */
14721455   MCFG_RAM_ADD(RAM_TAG)
14731456   MCFG_RAM_DEFAULT_SIZE("64K")
1474   MCFG_NVRAM_HANDLER(nc)
1457   MCFG_NVRAM_ADD_NO_FILL("nvram")
14751458
14761459   /* dummy timer */
14771460   MCFG_TIMER_DRIVER_ADD_PERIODIC("dummy_timer", nc_state, dummy_timer_callback, attotime::from_hz(50))
trunk/src/mess/drivers/lisa.c
r29221r29222
99*********************************************************************/
1010
1111#include "emu.h"
12#include "cpu/m68000/m68000.h"
1312#include "cpu/m6502/m6504.h"
1413#include "cpu/cop400/cop400.h"
1514#include "includes/lisa.h"
16#include "machine/sonydriv.h"
17#include "machine/applefdc.h"
1815#include "formats/ap_dsk35.h"
19#include "machine/6522via.h"
20#include "sound/speaker.h"
21#include "mcfglgcy.h"
2216
2317
2418/***************************************************************************
r29221r29222
162156   MCFG_SOUND_ROUTE(ALL_OUTPUTS, "mono", 1.00)
163157
164158   /* nvram */
165   MCFG_NVRAM_HANDLER(lisa)
159   MCFG_NVRAM_ADD_CUSTOM_DRIVER("nvram", lisa_state, nvram_init)
166160
167161   /* devices */
168162   MCFG_IWM_ADD("fdc", lisa2_fdc_interface)

Previous 199869 Revisions Next


© 1997-2024 The MAME Team