Previous 15994 Revisions Next

r14042 Sunday 15th January, 2012 at 12:08:55 UTC by Robbbert
Jupiter3: Hooked up screen and keyboard [Robbbert] but it hangs when it should scroll (nw)
[src/mess/drivers]jupiter.c
[src/mess/includes]jupiter.h

src/mess/includes/jupiter.h
r14041r14042
3434
3535   required_device<cpu_device> m_maincpu;
3636
37   virtual void machine_start();
37   DECLARE_WRITE8_MEMBER(kbd_put);
38   DECLARE_READ8_MEMBER(status_r);
39   DECLARE_READ8_MEMBER(key_r);
40   UINT8 m_term_data;
41
42   UINT8 *m_p_ram;
43   const UINT8 *m_p_chargen;
44   UINT8 *m_p_videoram;
45
46   virtual void machine_reset();
47   virtual void video_start();
48   UINT32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
3849};
3950
4051#endif
src/mess/drivers/jupiter.c
r14041r14042
55*/
66
77#define ADDRESS_MAP_MODERN
8#define VIDEO_START_MEMBER(name) void name::video_start()
9#define SCREEN_UPDATE_MEMBER(name) UINT32 name::screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect)
810
911#include "emu.h"
1012#include "cpu/m6800/m6800.h"
r14041r14042
6062//-------------------------------------------------
6163
6264static ADDRESS_MAP_START( jupiter3_mem, AS_PROGRAM, 8, jupiter3_state )
63   AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION(Z80_TAG, 0)
65   AM_RANGE(0x0000, 0xbfff) AM_RAM AM_BASE(m_p_ram)
66   AM_RANGE(0xc000, 0xdfff) AM_RAM AM_BASE(m_p_videoram)
67   AM_RANGE(0xe000, 0xefff) AM_ROM AM_REGION(Z80_TAG, 0)
68   AM_RANGE(0xf000, 0xffff) AM_RAM
6469ADDRESS_MAP_END
6570
6671
r14041r14042
6974//-------------------------------------------------
7075
7176static ADDRESS_MAP_START( jupiter3_io, AS_IO, 8, jupiter3_state )
77   ADDRESS_MAP_GLOBAL_MASK(0xff)
78   AM_RANGE(0xb0, 0xb0) AM_READ(status_r)
79   AM_RANGE(0xb2, 0xb2) AM_READ(key_r)
7280ADDRESS_MAP_END
7381
7482
r14041r14042
8189//  INPUT_PORTS( jupiter )
8290//-------------------------------------------------
8391
84INPUT_PORTS_START( jupiter )
92static INPUT_PORTS_START( jupiter )
8593INPUT_PORTS_END
8694
95READ8_MEMBER( jupiter3_state::key_r )
96{
97   UINT8 ret = m_term_data;
98   m_term_data = 0;
99   return ret;
100}
87101
102READ8_MEMBER( jupiter3_state::status_r )
103{
104   return (m_term_data) ? 0x80 : 0x00;
105}
88106
107WRITE8_MEMBER( jupiter3_state::kbd_put )
108{
109   m_term_data = data ^ 0x80;
110}
111
112
89113//**************************************************************************
114//  VIDEO
115//**************************************************************************
116
117VIDEO_START_MEMBER( jupiter3_state )
118{
119   m_p_chargen = machine().region("chargen")->base();
120}
121
122SCREEN_UPDATE_MEMBER( jupiter3_state )
123{
124   UINT8 y,ra,chr,gfx;
125   UINT16 sy=0,ma=0,x;
126
127   for (y = 0; y < 32; y++)
128   {
129      for (ra = 0; ra < 10; ra++)
130      {
131         UINT16 *p = &bitmap.pix16(sy++);
132
133         for (x = ma; x < ma + 64; x++)
134         {
135            gfx = 0;
136            if (ra < 9)
137            {
138               chr = m_p_videoram[x];
139               gfx = m_p_chargen[(chr<<4) | ra ];
140            }
141
142            /* Display a scanline of a character */
143            *p++ = BIT(gfx, 7);
144            *p++ = BIT(gfx, 6);
145            *p++ = BIT(gfx, 5);
146            *p++ = BIT(gfx, 4);
147            *p++ = BIT(gfx, 3);
148            *p++ = BIT(gfx, 2);
149            *p++ = BIT(gfx, 1);
150            *p++ = BIT(gfx, 0);
151         }
152      }
153      ma+=64;
154   }
155   return 0;
156}
157
158
159
160
161//**************************************************************************
90162//  DEVICE CONFIGURATION
91163//**************************************************************************
92164
r14041r14042
96168
97169static const floppy_interface jupiter_floppy_interface =
98170{
99    DEVCB_NULL,
100171   DEVCB_NULL,
101    DEVCB_NULL,
102    DEVCB_NULL,
103    DEVCB_NULL,
104    FLOPPY_STANDARD_5_25_SSDD_40,
105    LEGACY_FLOPPY_OPTIONS_NAME(default),
106    NULL,
172   DEVCB_NULL,
173   DEVCB_NULL,
174   DEVCB_NULL,
175   DEVCB_NULL,
176   FLOPPY_STANDARD_5_25_SSDD_40,
177   LEGACY_FLOPPY_OPTIONS_NAME(default),
178   NULL,
107179   NULL
108180};
109181
r14041r14042
120192//  GENERIC_TERMINAL_INTERFACE( terminal_intf )
121193//-------------------------------------------------
122194
123static GENERIC_TERMINAL_INTERFACE( terminal_intf )
195static GENERIC_TERMINAL_INTERFACE( jupiter2_terminal_intf )
124196{
125197   DEVCB_NULL
126198};
127199
200static GENERIC_TERMINAL_INTERFACE( jupiter3_terminal_intf )
201{
202   DEVCB_DRIVER_MEMBER(jupiter3_state, kbd_put)
203};
128204
129205
206
130207//**************************************************************************
131208//  MACHINE INITIALIZATION
132209//**************************************************************************
r14041r14042
144221//  MACHINE_START( jupiter3 )
145222//-------------------------------------------------
146223
147void jupiter3_state::machine_start()
224void jupiter3_state::machine_reset()
148225{
226   UINT8* ROM = machine().region(Z80_TAG)->base();
227   memcpy(m_p_ram, ROM, 0x1000);
228   cpu_set_reg(m_maincpu, STATE_GENPC, 0xe000);
149229}
150230
151231
r14041r14042
159239//-------------------------------------------------
160240
161241static MACHINE_CONFIG_START( jupiter, jupiter2_state )
162    // basic machine hardware
163    MCFG_CPU_ADD(MCM6571AP_TAG, M6800, 2000000)
164    MCFG_CPU_PROGRAM_MAP(jupiter_m6800_mem)
165    MCFG_CPU_IO_MAP(jupiter_m6800_io)
242   // basic machine hardware
243   MCFG_CPU_ADD(MCM6571AP_TAG, M6800, 2000000)
244   MCFG_CPU_PROGRAM_MAP(jupiter_m6800_mem)
245   MCFG_CPU_IO_MAP(jupiter_m6800_io)
166246
167    // video hardware
247   // video hardware
168248   MCFG_FRAGMENT_ADD( generic_terminal )
169249
170250   // devices
171251   MCFG_FD1771_ADD(INS1771N1_TAG, fdc_intf)
172   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
252   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, jupiter2_terminal_intf)
173253
174254   // internal ram
175255   MCFG_RAM_ADD(RAM_TAG)
r14041r14042
182262//-------------------------------------------------
183263
184264static MACHINE_CONFIG_START( jupiter3, jupiter3_state )
185    // basic machine hardware
265   // basic machine hardware
186266   MCFG_CPU_ADD(Z80_TAG, Z80, 4000000)
187    MCFG_CPU_PROGRAM_MAP(jupiter3_mem)
188    MCFG_CPU_IO_MAP(jupiter3_io)
267   MCFG_CPU_PROGRAM_MAP(jupiter3_mem)
268   MCFG_CPU_IO_MAP(jupiter3_io)
189269
190    // video hardware
191   MCFG_FRAGMENT_ADD( generic_terminal )
270   // video hardware
271   MCFG_SCREEN_ADD("screen", RASTER)
272   MCFG_SCREEN_REFRESH_RATE(60)
273   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
274   MCFG_SCREEN_UPDATE_DRIVER(jupiter3_state, screen_update)
275   MCFG_SCREEN_SIZE(512, 320)
276   MCFG_SCREEN_VISIBLE_AREA(0, 512-1, 0, 320-1)
277   MCFG_PALETTE_LENGTH(2)
278   MCFG_PALETTE_INIT(black_and_white)
192279
193280   // devices
194281   MCFG_FD1771_ADD(INS1771N1_TAG, fdc_intf)
195   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, terminal_intf)
282   MCFG_GENERIC_TERMINAL_ADD(TERMINAL_TAG, jupiter3_terminal_intf)
196283
197284   // internal ram
198285   MCFG_RAM_ADD(RAM_TAG)
r14041r14042
229316   ROM_LOAD( "jove 2.0 78_034 4v2d000 2.6c", 0x0400, 0x0400, CRC(ee98dd32) SHA1(0513261c7c0d911225ea957ee67394871a36ada4) )
230317   ROM_LOAD( "jove 2.0 78_034 4v2d000 3.1d", 0x0800, 0x0400, CRC(51476b1d) SHA1(ab6f4eb244bcf9718aafdae67da086ec81f33fa6) )
231318   ROM_LOAD( "jove 2.0 78_034 4v2d000 4.6d", 0x0c00, 0x0400, CRC(16a9595d) SHA1(06150278650590497732e1f3f42356de56737921) )
319
320   // character generator is missing, using one from c10 for now
321   ROM_REGION( 0x2000, "chargen", 0 )
322   ROM_LOAD( "c10_char.bin", 0x0000, 0x2000, BAD_DUMP CRC(cb530b6f) SHA1(95590bbb433db9c4317f535723b29516b9b9fcbf))
232323ROM_END
233324
234325
r14041r14042
284375//  SYSTEM DRIVERS
285376//**************************************************************************
286377
287//    YEAR  NAME    PARENT  COMPAT   MACHINE    INPUT    INIT    COMPANY   FULLNAME       FLAGS
288COMP( 1976, jupiter2,   0,      0,   jupiter,   jupiter,    jupiter,   "Wave Mate",   "Jupiter II",   GAME_NOT_WORKING | GAME_NO_SOUND_HW )
289COMP( 1976, jupiter3,   0,      0,   jupiter3,   jupiter,    jupiter3,   "Wave Mate",   "Jupiter III",   GAME_NOT_WORKING | GAME_NO_SOUND_HW )
378//    YEAR  NAME      PARENT  COMPAT   MACHINE    INPUT    INIT      COMPANY          FULLNAME       FLAGS
379COMP( 1976, jupiter2, 0,      0,       jupiter,   jupiter, jupiter, "Wave Mate",   "Jupiter II",  GAME_NOT_WORKING | GAME_NO_SOUND_HW )
380COMP( 1976, jupiter3, 0,      0,       jupiter3,  jupiter, jupiter3,"Wave Mate",   "Jupiter III", GAME_NOT_WORKING | GAME_NO_SOUND_HW )

Previous 15994 Revisions Next


© 1998-2018 The MESS Team