Previous 15994 Revisions Next

r9784 Friday 17th December, 2010 at 11:36:46 UTC by Curt Coder
[ABC1600] Added SCC8530 and Xebec S1410 Winchester controller skeleton.
[src/mess]mess.mak
[src/mess/drivers]abc1600.c
[src/mess/includes]abc1600.h
[src/mess/machine]s1410.c* s1410.h*

src/mess/machine/s1410.c
r0r9784
1/**********************************************************************
2
3    Xebec S1410 5.25" Winchester Disk Controller emulation
4
5    Copyright MESS Team.
6    Visit http://mamedev.org for licensing and usage restrictions.
7
8**********************************************************************/
9
10/*
11
12Xebec S1410
13
14PCB Layout
15----------
16
17ASSY 104527 REV E04 SN 127623
18
19|-------------------------------------------|
20|                                           |
21|CN1                                        |
22|                                           |
23|                                           |
24|CN2                               |
25|                   XEBEC2               CN5|
26|   PROM                  2114      |
27|CN3                XEBEC1      2114        |
28|                                 |
29|CN4            Z80         ROM         |
30|   20MHz                             16MHz |
31|-------------------------------------------|
32
33Notes:
34    Relevant IC's shown.
35
36    Z80      - Zilog Z8400APS Z80A CPU
37   ROM      - 2732 pinout ROM "XEBEC 104521G 2155008 M460949"
38   PROM   - National Semiconductor DM74S288N "103911" 32x8 TTL PROM
39   2114   - National Semiconductor NMC2148HN-3 1Kx4 RAM
40   XEBEC1   - Xebec 3198-0009
41   XEBEC2   - Xebec 3198-0045 "T20"
42   CN1      - 4-pin Molex, drive power
43   CN2      - 34-pin PCB edge, ST-506 drive 0/1 control
44   CN3      - 2x10 PCB header, ST-506 drive 0 data
45   CN4      - 2x10 PCB header, ST-506 drive 1 data
46   CN5      - 2x25 PCB header, SASI host interface
47
48*/
49
50#define ADDRESS_MAP_MODERN
51
52#include "emu.h"
53#include "s1410.h"
54#include "cpu/z80/z80.h"
55#include "machine/devhelpr.h"
56
57
58
59//**************************************************************************
60//   MACROS / CONSTANTS
61//**************************************************************************
62
63#define Z8400A_TAG         "z80"
64
65
66
67//**************************************************************************
68//  DEVICE DEFINITIONS
69//**************************************************************************
70
71const device_type S1410 = s1410_device_config::static_alloc_device_config;
72
73
74
75//**************************************************************************
76//  DEVICE CONFIGURATION
77//**************************************************************************
78
79GENERIC_DEVICE_CONFIG_SETUP(s1410, "Xebec S1410")
80
81
82//-------------------------------------------------
83//  device_config_complete - perform any
84//  operations now that the configuration is
85//  complete
86//-------------------------------------------------
87
88void s1410_device_config::device_config_complete()
89{
90}
91
92
93//-------------------------------------------------
94//  ROM( s1410 )
95//-------------------------------------------------
96
97ROM_START( s1410 )
98   ROM_REGION( 0x1000, Z8400A_TAG, 0 )
99   ROM_LOAD( "104521g", 0x0000, 0x1000, CRC(24385115) SHA1(c389f6108cd5ed798a090acacce940ee43d77042) )
100
101   ROM_REGION( 0x100, "103911", 0 )
102   ROM_LOAD( "103911", 0x000, 0x100, NO_DUMP ) // DM74S288N
103ROM_END
104
105
106//-------------------------------------------------
107//  rom_region - device-specific ROM region
108//-------------------------------------------------
109
110const rom_entry *s1410_device_config::rom_region() const
111{
112   return ROM_NAME( s1410 );
113}
114
115
116//-------------------------------------------------
117//  ADDRESS_MAP( s1410_mem )
118//-------------------------------------------------
119
120static ADDRESS_MAP_START( s1410_mem, ADDRESS_SPACE_PROGRAM, 8, s1410_device )
121   AM_RANGE(0x0000, 0x0fff) AM_ROM
122   AM_RANGE(0x1000, 0x13ff) AM_RAM
123ADDRESS_MAP_END
124
125
126//-------------------------------------------------
127//  ADDRESS_MAP( s1410_io )
128//-------------------------------------------------
129
130static ADDRESS_MAP_START( s1410_io, ADDRESS_SPACE_IO, 8, s1410_device )
131   ADDRESS_MAP_GLOBAL_MASK(0xff)
132   AM_RANGE(0x66, 0x66) AM_WRITENOP
133   AM_RANGE(0x67, 0x67) AM_WRITENOP
134   AM_RANGE(0x68, 0x68) AM_READNOP
135   AM_RANGE(0x69, 0x69) AM_WRITENOP
136   AM_RANGE(0x6a, 0x6a) AM_WRITENOP
137   AM_RANGE(0x6b, 0x6b) AM_WRITENOP
138   AM_RANGE(0x6c, 0x6c) AM_WRITENOP
139   AM_RANGE(0xa0, 0xa0) AM_NOP
140   AM_RANGE(0xc1, 0xc1) AM_WRITENOP
141   AM_RANGE(0xc2, 0xc2) AM_WRITENOP
142   AM_RANGE(0xc3, 0xc3) AM_WRITENOP
143ADDRESS_MAP_END
144
145//-------------------------------------------------
146//  MACHINE_DRIVER( s1410 )
147//-------------------------------------------------
148
149static MACHINE_CONFIG_FRAGMENT( s1410 )
150   MDRV_CPU_ADD(Z8400A_TAG, Z80, XTAL_16MHz/4)
151   MDRV_CPU_PROGRAM_MAP(s1410_mem)
152   MDRV_CPU_IO_MAP(s1410_io)
153MACHINE_CONFIG_END
154
155
156//-------------------------------------------------
157//  machine_config_additions - device-specific
158//   machine configurations
159//-------------------------------------------------
160
161machine_config_constructor s1410_device_config::machine_config_additions() const
162{
163   return MACHINE_CONFIG_NAME( s1410 );
164}
165
166
167
168//**************************************************************************
169//  LIVE DEVICE
170//**************************************************************************
171
172//-------------------------------------------------
173//  s1410_device - constructor
174//-------------------------------------------------
175
176s1410_device::s1410_device(running_machine &_machine, const s1410_device_config &config)
177    : device_t(_machine, config),
178      m_config(config)
179{
180}
181
182
183//-------------------------------------------------
184//  device_start - device-specific startup
185//-------------------------------------------------
186
187void s1410_device::device_start()
188{
189}
190
191
192//-------------------------------------------------
193//  device_reset - device-specific reset
194//-------------------------------------------------
195
196void s1410_device::device_reset()
197{
198}
src/mess/machine/s1410.h
r0r9784
1/**********************************************************************
2
3    Xebec S1410 5.25" Winchester Disk Controller emulation
4
5    Copyright MESS Team.
6    Visit http://mamedev.org for licensing and usage restrictions.
7
8**********************************************************************/
9
10#pragma once
11
12#ifndef __S1410__
13#define __S1410__
14
15#include "emu.h"
16
17
18
19//**************************************************************************
20//   MACROS / CONSTANTS
21//**************************************************************************
22
23#define S1410_TAG   "s1410"
24
25
26
27//**************************************************************************
28//  INTERFACE CONFIGURATION MACROS
29//**************************************************************************
30
31#define MDRV_S1410_ADD() \
32    MDRV_DEVICE_ADD(S1410_TAG, S1410, 0)
33
34
35
36//**************************************************************************
37//   TYPE DEFINITIONS
38//**************************************************************************
39
40// ======================> s1410_interface
41
42struct s1410_interface
43{
44};
45
46
47// ======================> s1410_device_config
48
49class s1410_device_config :   public device_config,
50                                public s1410_interface
51{
52    friend class s1410_device;
53
54    // construction/destruction
55    s1410_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock);
56
57public:
58    // allocators
59    static device_config *static_alloc_device_config(const machine_config &mconfig, const char *tag, const device_config *owner, UINT32 clock);
60    virtual device_t *alloc_device(running_machine &machine) const;
61   
62   // optional information overrides
63   virtual const rom_entry *rom_region() const;
64   virtual machine_config_constructor machine_config_additions() const;
65
66protected:
67    // device_config overrides
68    virtual void device_config_complete();
69};
70
71
72// ======================> s1410_device
73
74class s1410_device :  public device_t
75{
76    friend class s1410_device_config;
77
78    // construction/destruction
79    s1410_device(running_machine &_machine, const s1410_device_config &_config);
80
81public:
82
83protected:
84    // device-level overrides
85    virtual void device_start();
86    virtual void device_reset();
87
88private:
89    const s1410_device_config &m_config;
90};
91
92
93// device type definition
94extern const device_type S1410;
95
96
97
98#endif
src/mess/includes/abc1600.h
r9783r9784
88#define Z8410AB1_1_TAG      "7g"
99#define Z8410AB1_2_TAG      "8g"
1010#define Z8470AB1_TAG      "17b"
11#define Z8530B1_TAG         "2a"
1112#define Z8536B1_TAG         "15b"
1213#define SAB1797_02P_TAG      "5a"
1314#define FDC9229BT_TAG      "7a"
1415#define E050_C16PC_TAG      "13b"
1516#define SY6845E_TAG         "sy6845e"
16#define Z8400A_TAG         "z80"
1717#define SCREEN_TAG         "screen"
1818
1919class abc1600_state : public driver_device
src/mess/mess.mak
r9783r9784
10681068   $(MESS_MACHINE)/abc99.o      \
10691069   $(MESS_MACHINE)/abc830.o   \
10701070   $(MESS_DRIVERS)/abc1600.o   \
1071   $(MESS_MACHINE)/s1410.o      \
10711072
10721073$(MESSOBJ)/magnavox.a:         \
10731074   $(MESS_MACHINE)/odyssey2.o   \
src/mess/drivers/abc1600.c
r9783r9784
33   Luxor ABC 1600
44
55   Skeleton driver
6
6   
77*/
88
99/*
r9783r9784
1919   - DART
2020   - CIO
2121   - RTC
22   - hard disk (Xebec controller card w/ Z80A, 1K RAM, ROM "104521G", PROM "103911", Xebec 3198-0009, Xebec 3198-0045, 16MHz xtal, 20MHz xtal)
22   - hard disk (Xebec S1410)
2323   - monitor portrait/landscape mode
2424
2525*/
r9783r9784
2828
2929#include "emu.h"
3030#include "cpu/m68000/m68000.h"
31#include "cpu/z80/z80.h"
3231#include "devices/flopdrv.h"
3332#include "devices/messram.h"
33#include "machine/8530scc.h"
3434#include "machine/abc99.h"
35#include "machine/s1410.h"
3536#include "machine/wd17xx.h"
3637#include "machine/z80dart.h"
3738#include "machine/z80dma.h"
r9783r9784
5859//   AM_RANGE(0x7f000, 0x7f000) AM_DEVREADWRITE_LEGACY(Z8410AB1_2_TAG, z80dma_r, z80dma_w)
5960//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE_LEGACY(Z80DART_TAG, z80dart_ba_cd_r, z80dart_ba_cd_w)
6061//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE_LEGACY(SAB1797_02P_TAG, wd17xx_r, wd17xx_w)
62//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE(Z8530B1_TAG, scc8530_r, scc8530_w)
6163//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE(Z8536B1_TAG, z8536_r, z8536_w)
6264//   AM_RANGE(0x7f000, 0x7f003) AM_DEVREADWRITE(E050_C16PC_TAG, e050c16pc_r, e050c16pc_w)
6365   AM_RANGE(0x80000, 0xfffff) AM_RAM
6466ADDRESS_MAP_END
6567
6668
67//-------------------------------------------------
68//  ADDRESS_MAP( xebec_mem )
69//-------------------------------------------------
7069
71static ADDRESS_MAP_START( xebec_mem, ADDRESS_SPACE_PROGRAM, 8, abc1600_state )
72   AM_RANGE(0x0000, 0x0fff) AM_ROM
73   AM_RANGE(0x1000, 0x13ff) AM_RAM
74ADDRESS_MAP_END
75
76
77//-------------------------------------------------
78//  ADDRESS_MAP( xebec_io )
79//-------------------------------------------------
80
81static ADDRESS_MAP_START( xebec_io, ADDRESS_SPACE_IO, 8, abc1600_state )
82ADDRESS_MAP_END
83
84
85
8670//**************************************************************************
8771//   INPUT PORTS
8872//**************************************************************************
r9783r9784
283267   MDRV_CPU_ADD(MC68008P8_TAG, M68008, XTAL_64MHz/8)
284268   MDRV_CPU_PROGRAM_MAP(abc1600_mem)
285269
286   MDRV_CPU_ADD(Z8400A_TAG, Z80, XTAL_16MHz/4)
287   MDRV_CPU_PROGRAM_MAP(xebec_mem)
288   MDRV_CPU_IO_MAP(xebec_io)
289
290270   // video hardware
291271    MDRV_SCREEN_ADD(SCREEN_TAG, RASTER)
292272    MDRV_SCREEN_REFRESH_RATE(50)
r9783r9784
305285   MDRV_Z80DMA_ADD(Z8410AB1_1_TAG, 4000000, dma1_intf)
306286   MDRV_Z80DMA_ADD(Z8410AB1_2_TAG, 4000000, dma2_intf)
307287   MDRV_Z80DART_ADD(Z8470AB1_TAG, 4000000, dart_intf)
288   MDRV_SCC8530_ADD(Z8530B1_TAG, 4000000)
308289   MDRV_WD179X_ADD(SAB1797_02P_TAG, fdc_intf)
309290   MDRV_FLOPPY_DRIVE_ADD(FLOPPY_0, abc1600_floppy_config)
310291   MDRV_ABC99_ADD()
292   MDRV_S1410_ADD()
311293
312294   // internal ram
313295   MDRV_RAM_ADD("messram")
r9783r9784
347329   ROM_LOAD( "1023 6490352-01.11e", 0x410, 0x104, CRC(a2f350ac) SHA1(77e08654a197080fa2111bc3031cd2c7699bf82b) )
348330   ROM_LOAD( "1024 6490353-01.12e", 0x514, 0x104, CRC(67f1328a) SHA1(b585495fe14a7ae2fbb29f722dca106d59325002) )
349331   ROM_LOAD( "1025 6490354-01.6e",  0x618, 0x104, CRC(9bda0468) SHA1(ad373995dcc18532274efad76fa80bd13c23df25) )
350
351   ROM_REGION( 0x1000, Z8400A_TAG, 0 ) // Xebec hard disk controller card
352   ROM_LOAD( "104521g", 0x0800, 0x0800, BAD_DUMP CRC(1b004bdd) SHA1(ad8b14d9f2511826d7e81a11c23077fc02846fe7) ) // missing first half
353
354   ROM_REGION( 0x100, "103911", 0 ) // Xebec hard disk controller card
355   ROM_LOAD( "103911", 0x000, 0x100, NO_DUMP ) // DM74S288N
356332ROM_END
357333
358334

Previous 15994 Revisions Next


© 1998-2018 The MESS Team