Previous 199869 Revisions Next

r31325 Saturday 19th July, 2014 at 17:56:32 UTC by Sandro Ronco
(MESS) New NOT_WORKING system
----------------------------------
Psion Organiser I


(MESS) New WORKING system:
----------------------------------
Psion Organiser II XP
Psion Organiser II P200
[src/mess]mess.lst
[src/mess/drivers]psion.c
[src/mess/includes]psion.h

trunk/src/mess/drivers/psion.c
r31324r31325
222222      m_maincpu->reset();
223223}
224224
225READ8_MEMBER( psion1_state::reset_kb_counter_r )
226{
227   m_kb_counter = 0;
228   return 0;
229}
230
231READ8_MEMBER( psion1_state::inc_kb_counter_r )
232{
233   m_kb_counter++;
234   return 0;
235}
236
237READ8_MEMBER( psion1_state::switchoff_r )
238{
239   if (!m_stby_pwr)
240   {
241      m_stby_pwr = 1;
242      m_maincpu->reset();
243   }
244   return 0;
245}
246
247static ADDRESS_MAP_START(psion1_mem, AS_PROGRAM, 8, psion1_state)
248   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
249   AM_RANGE(0x0040, 0x00ff) AM_RAM AM_SHARE("sys_register")
250   AM_RANGE(0x2000, 0x2000) AM_MIRROR(0x07fe) AM_DEVREADWRITE("hd44780", hd44780_device, control_read, control_write)
251   AM_RANGE(0x2001, 0x2001) AM_MIRROR(0x07fe) AM_DEVREADWRITE("hd44780", hd44780_device, data_read, data_write)
252   AM_RANGE(0x2800, 0x2800) AM_READ(reset_kb_counter_r)
253   AM_RANGE(0x2e00, 0x2e00) AM_READ(switchoff_r)
254   AM_RANGE(0x3000, 0x3000) AM_READ(inc_kb_counter_r)
255   AM_RANGE(0x4000, 0x47ff) AM_RAM AM_SHARE("ram")
256   AM_RANGE(0xf000, 0xffff) AM_ROM
257ADDRESS_MAP_END
258
225259static ADDRESS_MAP_START(psioncm_mem, AS_PROGRAM, 8, psion_state)
226260   ADDRESS_MAP_UNMAP_LOW
227261   AM_RANGE(0x0000, 0x001f) AM_READWRITE(hd63701_int_reg_r, hd63701_int_reg_w)
r31324r31325
331365      PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D [)]") PORT_CODE(KEYCODE_D)
332366INPUT_PORTS_END
333367
368INPUT_PORTS_START( psion1 )
369   PORT_START("BATTERY")
370   PORT_CONFNAME( 0x01, 0x00, "Battery Status" )
371   PORT_CONFSETTING( 0x00, DEF_STR( Normal ) )
372   PORT_CONFSETTING( 0x01, "Low Battery" )
334373
374   PORT_START("ON")
375   PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_KEYBOARD) PORT_NAME("ON/CLEAR") PORT_CODE(KEYCODE_MINUS)  PORT_CHANGED_MEMBER(DEVICE_SELF, psion_state, psion_on, 0)
376
377   PORT_START("K1")
378   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("RIGHT") PORT_CODE(KEYCODE_RIGHT)
379   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Left") PORT_CODE(KEYCODE_LEFT)
380   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Down [NUM]") PORT_CODE(KEYCODE_DOWN)
381   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Up [CAP]") PORT_CODE(KEYCODE_UP)
382   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("MODE") PORT_CODE(KEYCODE_EQUALS)
383
384   PORT_START("K2")
385   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Shift") PORT_CODE(KEYCODE_LSHIFT)
386   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("S [;]") PORT_CODE(KEYCODE_S)
387   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("M [,]") PORT_CODE(KEYCODE_M)
388   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("G [=]") PORT_CODE(KEYCODE_G)
389   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("A [<]") PORT_CODE(KEYCODE_A)
390
391   PORT_START("K3")
392   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Y [0]") PORT_CODE(KEYCODE_Y)
393   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("T [:]") PORT_CODE(KEYCODE_T)
394   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("N [$]") PORT_CODE(KEYCODE_N)
395   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("H [\"]") PORT_CODE(KEYCODE_H)
396   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("B [>]") PORT_CODE(KEYCODE_B)
397
398   PORT_START("K4")
399   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Z [.]") PORT_CODE(KEYCODE_Z)
400   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("U [1]") PORT_CODE(KEYCODE_U)
401   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("O [4]") PORT_CODE(KEYCODE_O)
402   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("I [7]") PORT_CODE(KEYCODE_I)
403   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("C [(]") PORT_CODE(KEYCODE_C)
404
405   PORT_START("K5")
406   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL)
407   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("W [3]") PORT_CODE(KEYCODE_W)
408   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Q [6]") PORT_CODE(KEYCODE_Q)
409   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("K [9]") PORT_CODE(KEYCODE_K)
410   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("E [%]") PORT_CODE(KEYCODE_E)
411
412   PORT_START("K6")
413   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("EXE") PORT_CODE(KEYCODE_ENTER)
414   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("X [+]") PORT_CODE(KEYCODE_X)
415   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("R [-]") PORT_CODE(KEYCODE_R)
416   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("L [*]") PORT_CODE(KEYCODE_L)
417   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("F [/]") PORT_CODE(KEYCODE_F)
418
419   PORT_START("K7")
420   PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("Space") PORT_CODE(KEYCODE_SPACE)
421   PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("V [2]") PORT_CODE(KEYCODE_V)
422   PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("P [5]") PORT_CODE(KEYCODE_P)
423   PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("J [8]") PORT_CODE(KEYCODE_J)
424   PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYBOARD) PORT_NAME("D [)]") PORT_CODE(KEYCODE_D)
425INPUT_PORTS_END
426
427
335428void psion_state::nvram_init(nvram_device &nvram, void *data, size_t size)
336429{
337430   //cold start (by default is 1=warm start)
r31324r31325
346439      m_rom_bank_count = 3;
347440      m_ram_bank_count = 0;
348441   }
349   else if (!strcmp(machine().system().name, "psionp350"))
350   {
351      m_rom_bank_count = 0;
352      m_ram_bank_count = 5;
353   }
354442   else if (!strncmp(machine().system().name, "psionlz", 7))
355443   {
356444      m_rom_bank_count = 3;
r31324r31325
361449      m_rom_bank_count = 3;
362450      m_ram_bank_count = 9;
363451   }
452   else if (!strncmp(machine().system().name, "psionp", 6))
453   {
454      m_rom_bank_count = 0;
455      m_ram_bank_count = 5;
456   }
364457   else
365458   {
366459      m_rom_bank_count = 0;
r31324r31325
415508      update_banks();
416509}
417510
511void psion1_state::machine_reset()
512{
513   psion_state::machine_reset();
514   m_enable_nmi = 1;
515}
418516
419517HD44780_PIXEL_UPDATE(psion_state::lz_pixel_update)
420518{
r31324r31325
433531   }
434532}
435533
534HD44780_PIXEL_UPDATE(psion1_state::psion1_pixel_update)
535{
536   if (pos < 8 && line < 2)
537      bitmap.pix16(y, (line * 8 + pos) * 6 + x) = state;
538}
539
436540PALETTE_INIT_MEMBER(psion_state, psion)
437541{
438542   palette.set_pen_color(0, rgb_t(138, 146, 148));
r31324r31325
506610   MCFG_HD44780_PIXEL_UPDATE_CB(psion_state::lz_pixel_update)
507611MACHINE_CONFIG_END
508612
613static MACHINE_CONFIG_DERIVED_CLASS( psion1, psion_2lines, psion1_state )
614   MCFG_CPU_MODIFY("maincpu")
615   MCFG_CPU_PROGRAM_MAP(psion1_mem)
616
617   MCFG_DEVICE_MODIFY("nmi_timer")
618   MCFG_TIMER_START_DELAY(attotime::from_seconds(1))
619
620   MCFG_SCREEN_MODIFY("screen")
621   MCFG_SCREEN_SIZE(6*16, 1*8)
622   MCFG_SCREEN_VISIBLE_AREA(0, 6*16-1, 0, 8*1-1)
623
624   MCFG_DEVICE_MODIFY("hd44780")
625   MCFG_HD44780_LCD_SIZE(1, 16)
626   MCFG_HD44780_PIXEL_UPDATE_CB(psion1_state::psion1_pixel_update)
627MACHINE_CONFIG_END
628
509629static MACHINE_CONFIG_DERIVED( psioncm, psion_2lines )
510630
511631   MCFG_CPU_MODIFY("maincpu")
r31324r31325
541661MACHINE_CONFIG_END
542662
543663/* ROM definition */
664
665ROM_START( psion1 )
666   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
667   ROM_SYSTEM_BIOS(0, "v1", "Organiser I")
668   ROMX_LOAD( "psion1.rom",  0xf000, 0x1000, CRC(7e2609c1) SHA1(a3320ea8ac3ab9e0039ee16f7c571731adde5869), ROM_BIOS(1))
669ROM_END
670
544671ROM_START( psioncm )
545672   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
546673   ROM_SYSTEM_BIOS(0, "v24", "CM v2.4")
547674   ROMX_LOAD( "24-cm.dat",    0x8000, 0x8000,  CRC(f6798394) SHA1(736997f0db9a9ee50d6785636bdc3f8ff1c33c66), ROM_BIOS(1))
675   ROM_SYSTEM_BIOS(1, "v26", "CM v2.6")
676   ROMX_LOAD( "26-cm.rom",    0x8000, 0x8000,  CRC(21b7c94c) SHA1(e0a3168c96a3f0b37b8698e86574e40597fe3c62), ROM_BIOS(2))
677   ROM_SYSTEM_BIOS(2, "v33", "CM v3.3")
678   ROMX_LOAD( "33-cm.rom",    0x8000, 0x8000,  CRC(5c10b167) SHA1(6deea00fe648bddae1d61a22858023bc80277ea0), ROM_BIOS(3))
679   ROM_SYSTEM_BIOS(3, "v33f","CM v3.3 French")
680   ROMX_LOAD( "33-cmf.rom",   0x8000, 0x8000,  CRC(4d626ce2) SHA1(82b96f11a0abfc1931b6022b84733d975ad7ab2b), ROM_BIOS(4))
681   ROM_SYSTEM_BIOS(4, "v36f","CM v3.6 French")
682   ROMX_LOAD( "36-cmf.rom",   0x8000, 0x8000,  CRC(beabe0f5) SHA1(a5ef3bb92190a257cb0e94d58b2c23935436edeb), ROM_BIOS(5))
548683ROM_END
549684
685ROM_START( psionxp )
686   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
687   ROM_SYSTEM_BIOS(0, "v26", "XP v2.6")
688   ROMX_LOAD( "26-xp.rom",    0x8000, 0x8000,  CRC(a81db40f) SHA1(af72d94ccee1fa1dade8776bdbd39920665a68b7), ROM_BIOS(1) )
689ROM_END
690
550691ROM_START( psionla )
551692   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
552693   ROM_SYSTEM_BIOS(0, "v33", "LA v3.3")
553694   ROMX_LOAD( "33-la.dat",    0x8000, 0x8000,  CRC(02668ed4) SHA1(e5d4ee6b1cde310a2970ffcc6f29a0ce09b08c46), ROM_BIOS(1))
695   ROM_SYSTEM_BIOS(1, "v34g", "LA v3.4 German")
696   ROMX_LOAD( "34-lag.rom",   0x8000, 0x8000,  CRC(13a92c4b) SHA1(dab8bd6a41a5fd509c5ad4b0b0ab80d14f2c421a), ROM_BIOS(2))
697   ROM_SYSTEM_BIOS(2, "v36", "LA v3.6")
698   ROMX_LOAD( "36-la.rom",    0x8000, 0x8000,  CRC(7442c7f6) SHA1(94f15bd06bd750be70fa4a4ab588237c5a703f65), ROM_BIOS(3))
554699ROM_END
555700
701ROM_START( psionp200 )
702   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
703   ROM_SYSTEM_BIOS(0, "v33", "POS200a v3.3")
704   ROMX_LOAD( "33-p200a.rom", 0x8000, 0x8000, CRC(91e94998) SHA1(e9e8106eb9283d20452697859894aa407cc07bd1), ROM_BIOS(1))
705   ROM_SYSTEM_BIOS(1, "v36", "POS200 v3.6")
706   ROMX_LOAD( "36-p200.rom",  0x8000, 0x8000, CRC(4569ef5b) SHA1(8c275474cc6e3f50156f0b6e32121cadd14ea8be), ROM_BIOS(2))
707   ROM_SYSTEM_BIOS(2, "v36a", "POS200a v3.6")
708   ROMX_LOAD( "36-p200a.rom", 0x8000, 0x8000, CRC(36cceeb7) SHA1(57069812c5a16babfff91dc7d7e0842e5dc68652), ROM_BIOS(3))
709   ROM_SYSTEM_BIOS(3, "v36b", "POS250 v3.6")
710   ROMX_LOAD( "36-p250.rom",  0x8000, 0x8000, CRC(235cc76a) SHA1(3229cdff4b049a1fbf9a758ce3abf3fdc9b547c9), ROM_BIOS(4))
711ROM_END
712
556713ROM_START( psionp350 )
557714   ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF )
558715   ROM_SYSTEM_BIOS(0, "v36", "POS350 v3.6")
r31324r31325
571728   ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
572729   ROM_SYSTEM_BIOS(0, "v44", "LZ64 v4.4")
573730   ROMX_LOAD( "44-lz64.dat",  0x8000, 0x10000, CRC(aa487913) SHA1(5a44390f63fc8c1bc94299ab2eb291bc3a5b989a), ROM_BIOS(1))
731   ROM_SYSTEM_BIOS(1, "v46si", "LZ64 v4.6 Spanish / Italian")
732   ROMX_LOAD( "46-lz64i.rom", 0x8000, 0x10000, CRC(c96c7e65) SHA1(1b4af43657bbd3ecd92f370762bde166047b85e2), ROM_BIOS(2))
733   ROM_SYSTEM_BIOS(2, "v43", "LZ64 v4.3")
734   ROMX_LOAD( "43-lz64.rom",  0x8000, 0x10000, CRC(57e7a372) SHA1(46c2da1cfe991c0c1f2486e4aa28388767937ddd), ROM_BIOS(3))
735   ROM_SYSTEM_BIOS(3, "v46a", "LZ64 v4.6a")
736   ROMX_LOAD( "46a-lz64.rom", 0x8000, 0x10000, CRC(9b0d5a7a) SHA1(f1cdd6ef43cd65ef18e148deca0500f0c1ad2f80), ROM_BIOS(4))
737   ROM_SYSTEM_BIOS(4, "v46b", "LZ64 v4.6b")
738   ROMX_LOAD( "46b-lz64.rom", 0x8000, 0x10000, CRC(8d1101e2) SHA1(eddd0c3a2881667a1485b0d66f82f8c7792995c2), ROM_BIOS(5))
574739
575740   ROM_REGION( 0x1000, "hd44780", 0 )
576741   ROM_LOAD( "psion_lz_charset.bin",    0x0000, 0x1000,  BAD_DUMP CRC(44bff6f6) SHA1(aef544548b783d608a7d55456f6c46f421a11ed7))
r31324r31325
589754   ROM_REGION( 0x18000, "maincpu", ROMREGION_ERASEFF )
590755   ROM_SYSTEM_BIOS(0, "v46", "LZ v4.6")
591756   ROMX_LOAD( "46-lz.dat",    0x8000, 0x10000, CRC(22715f48) SHA1(cf460c81cadb53eddb7afd8dadecbe8c38ea3fc2), ROM_BIOS(1))
757   ROM_SYSTEM_BIOS(1, "v42", "LZ v4.2")
758   ROMX_LOAD( "42-lz.rom",    0x8000, 0x10000, CRC(f2d6ad47) SHA1(ee8315ae872463068d805c6e0b71f62ae8eb65be), ROM_BIOS(2))
759   ROM_SYSTEM_BIOS(2, "v44", "LZ v4.4")
760   ROMX_LOAD( "44-lz.rom",    0x8000, 0x10000, CRC(4a0a990b) SHA1(dde0ba69a4a7f02b610ad6bd69a8b8552b060223), ROM_BIOS(3))
761   ROM_SYSTEM_BIOS(3, "v45", "LZ v4.5")
762   ROMX_LOAD( "45-lz.rom",    0x8000, 0x10000, CRC(f95d8f39) SHA1(cb64152c2418bf730c89999d1b13c1d1ada1f082), ROM_BIOS(4))
592763
593764   ROM_REGION( 0x1000, "hd44780", 0 )
594765   ROM_LOAD( "psion_lz_charset.bin",    0x0000, 0x1000,  BAD_DUMP CRC(44bff6f6) SHA1(aef544548b783d608a7d55456f6c46f421a11ed7))
r31324r31325
606777/* Driver */
607778
608779/*    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT COMPANY   FULLNAME       FLAGS */
780COMP( 1984, psion1,     0,       0,     psion1,         psion1,driver_device,    0,   "Psion",   "Organiser I",         GAME_NOT_WORKING)
609781COMP( 1986, psioncm,    0,       0,     psioncm,        psion, driver_device,    0,   "Psion",   "Organiser II CM",     GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
610782COMP( 1986, psionla,    psioncm, 0,     psionla,        psion, driver_device,    0,   "Psion",   "Organiser II LA",     GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
783COMP( 1986, psionxp,    psioncm, 0,     psionla,        psion, driver_device,    0,   "Psion",   "Organiser II XP",     GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
784COMP( 1986, psionp200,  psioncm, 0,     psionp350,      psion, driver_device,    0,   "Psion",   "Organiser II P200",   GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
611785COMP( 1986, psionp350,  psioncm, 0,     psionp350,      psion, driver_device,    0,   "Psion",   "Organiser II P350",   GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
612786COMP( 1986, psionlam,   psioncm, 0,     psionlam,       psion, driver_device,    0,   "Psion",   "Organiser II LAM",    GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
613787COMP( 1989, psionlz,    0,       0,     psionlz,        psion, driver_device,    0,   "Psion",   "Organiser II LZ",     GAME_SUPPORTS_SAVE | GAME_IMPERFECT_GRAPHICS)
trunk/src/mess/includes/psion.h
r31324r31325
8484   static HD44780_PIXEL_UPDATE(lz_pixel_update);
8585};
8686
87
88class psion1_state : public psion_state
89{
90public:
91   psion1_state(const machine_config &mconfig, device_type type, const char *tag)
92      : psion_state(mconfig, type, tag)
93      { }
94
95   virtual void machine_reset();
96
97   DECLARE_READ8_MEMBER( reset_kb_counter_r );
98   DECLARE_READ8_MEMBER( inc_kb_counter_r );
99   DECLARE_READ8_MEMBER( switchoff_r );
100
101   static HD44780_PIXEL_UPDATE(psion1_pixel_update);
102};
103
87104#endif  // _PSION_H_
trunk/src/mess/mess.lst
r31324r31325
22392239bml3mk2
22402240bml3mk5
22412241b16
2242psion1
22422243psioncm
22432244psionla
2245psionxp
2246psionp200
22442247psionp350
22452248psionlam
22462249psionlz64

Previous 199869 Revisions Next


© 1997-2024 The MAME Team