mirror of
https://github.com/holub/mame
synced 2025-10-06 17:08:28 +03:00
cd2650: Add proper XTAL frequency, MCFG_SCREEN_RAW_PARAMS and some info (nw)
This commit is contained in:
parent
476c01e6f0
commit
bc1c5622d4
@ -151,6 +151,7 @@ enum
|
|||||||
XTAL_13_5168MHz = 13516800, /* Kontron KDT6 */
|
XTAL_13_5168MHz = 13516800, /* Kontron KDT6 */
|
||||||
XTAL_14MHz = 14000000,
|
XTAL_14MHz = 14000000,
|
||||||
XTAL_14_112MHz = 14112000, /* Timex/Sinclair TS2068 */
|
XTAL_14_112MHz = 14112000, /* Timex/Sinclair TS2068 */
|
||||||
|
XTAL_14_192640MHz = 14192640, /* Reported by Central Data 2650 document, true xtal unchecked on PCB */
|
||||||
XTAL_14_3MHz = 14300000, /* Agat-7 */
|
XTAL_14_3MHz = 14300000, /* Agat-7 */
|
||||||
XTAL_14_314MHz = 14314000, /* Taito TTL Board */
|
XTAL_14_314MHz = 14314000, /* Taito TTL Board */
|
||||||
XTAL_14_31818MHz = 14318181, /* Extremely common, used on 100's of PCBs (4x NTSC subcarrier) */
|
XTAL_14_31818MHz = 14318181, /* Extremely common, used on 100's of PCBs (4x NTSC subcarrier) */
|
||||||
|
@ -2,11 +2,25 @@
|
|||||||
// copyright-holders:Robbbert
|
// copyright-holders:Robbbert
|
||||||
/***************************************************************************
|
/***************************************************************************
|
||||||
|
|
||||||
Central Data cd2650
|
Central Data 2650 Computer System
|
||||||
|
|
||||||
2010-04-08 Skeleton driver.
|
2010-04-08 Skeleton driver.
|
||||||
|
|
||||||
No info available on this computer apart from a few newsletters.
|
No info available on this computer apart from a few newsletters and
|
||||||
|
magazine articles. The computer was described in a series of articles
|
||||||
|
published between April and June 1977 in Radio-Electronics, which include
|
||||||
|
supposedly complete schematics and fairly detailed subsystem descriptions.
|
||||||
|
|
||||||
|
All signals to and from the 2650 board (including the built-in 300 baud
|
||||||
|
Kansas City standard cassette tape interface) are passed through six ribbon
|
||||||
|
cables. Central Data later produced an “extender board” that adapted the
|
||||||
|
bus signals to a S-100 backplane. This interface was missing a considerable
|
||||||
|
number of standard S-100 timing signals, though it was compatible at least
|
||||||
|
with some dynamic RAM boards released by the company.
|
||||||
|
|
||||||
|
The unusual XTAL frequency seems deliberately chosen to produce a vertical
|
||||||
|
sync rate of exactly 60 Hz.
|
||||||
|
|
||||||
The system only uses 1000-14FF for videoram and 17F0-17FF for
|
The system only uses 1000-14FF for videoram and 17F0-17FF for
|
||||||
scratch ram. All other ram is optional.
|
scratch ram. All other ram is optional.
|
||||||
|
|
||||||
@ -23,11 +37,15 @@ V Verify?
|
|||||||
Press Esc to exit most commands.
|
Press Esc to exit most commands.
|
||||||
|
|
||||||
TODO
|
TODO
|
||||||
- Lots, probably. The computer is a complete mystery. No manuals or schematics exist.
|
- Lots, probably. The computer is a complete mystery. No manuals are known to exist.
|
||||||
- Cassette doesn't work.
|
- Cassette doesn't work.
|
||||||
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
|
#define CHARACTER_WIDTH 8
|
||||||
|
#define CHARACTER_HEIGHT 8
|
||||||
|
#define CHARACTER_LINES 12
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "cpu/s2650/s2650.h"
|
#include "cpu/s2650/s2650.h"
|
||||||
//#include "bus/s100/s100.h"
|
//#include "bus/s100/s100.h"
|
||||||
@ -96,8 +114,8 @@ READ8_MEMBER( cd2650_state::keyin_r )
|
|||||||
|
|
||||||
static ADDRESS_MAP_START(cd2650_mem, AS_PROGRAM, 8, cd2650_state)
|
static ADDRESS_MAP_START(cd2650_mem, AS_PROGRAM, 8, cd2650_state)
|
||||||
ADDRESS_MAP_UNMAP_HIGH
|
ADDRESS_MAP_UNMAP_HIGH
|
||||||
AM_RANGE( 0x0000, 0x03ff) AM_ROM AM_REGION("roms", 0)
|
AM_RANGE(0x0000, 0x0fff) AM_ROM AM_REGION("roms", 0)
|
||||||
AM_RANGE( 0x1000, 0x7fff) AM_RAM AM_SHARE("videoram")
|
AM_RANGE(0x1000, 0x7fff) AM_RAM AM_SHARE("videoram")
|
||||||
ADDRESS_MAP_END
|
ADDRESS_MAP_END
|
||||||
|
|
||||||
static ADDRESS_MAP_START( cd2650_io, AS_IO, 8, cd2650_state)
|
static ADDRESS_MAP_START( cd2650_io, AS_IO, 8, cd2650_state)
|
||||||
@ -133,14 +151,14 @@ uint32_t cd2650_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
|
|||||||
|
|
||||||
for (y = 0; y < 16; y++)
|
for (y = 0; y < 16; y++)
|
||||||
{
|
{
|
||||||
for (ra = 0; ra < 10; ra++)
|
for (ra = 0; ra < CHARACTER_LINES; ra++)
|
||||||
{
|
{
|
||||||
uint16_t *p = &bitmap.pix16(sy++);
|
uint16_t *p = &bitmap.pix16(sy++);
|
||||||
|
|
||||||
for (x = 0; x < 80; x++)
|
for (x = 0; x < 80; x++)
|
||||||
{
|
{
|
||||||
gfx = 0;
|
gfx = 0;
|
||||||
if ((ra) && (ra < 9))
|
if (ra < CHARACTER_HEIGHT)
|
||||||
{
|
{
|
||||||
mem = offset + y + (x<<4);
|
mem = offset + y + (x<<4);
|
||||||
|
|
||||||
@ -149,7 +167,7 @@ uint32_t cd2650_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap
|
|||||||
|
|
||||||
chr = m_p_videoram[mem] & 0x3f;
|
chr = m_p_videoram[mem] & 0x3f;
|
||||||
|
|
||||||
gfx = m_p_chargen[(BITSWAP8(chr,7,6,2,1,0,3,4,5)<<3) | (ra-1) ];
|
gfx = m_p_chargen[(BITSWAP8(chr,7,6,2,1,0,3,4,5)<<3) | ra];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Display a scanline of a character */
|
/* Display a scanline of a character */
|
||||||
@ -262,7 +280,7 @@ QUICKLOAD_LOAD_MEMBER( cd2650_state, cd2650 )
|
|||||||
|
|
||||||
static MACHINE_CONFIG_START( cd2650 )
|
static MACHINE_CONFIG_START( cd2650 )
|
||||||
/* basic machine hardware */
|
/* basic machine hardware */
|
||||||
MCFG_CPU_ADD("maincpu",S2650, XTAL_1MHz)
|
MCFG_CPU_ADD("maincpu", S2650, XTAL_14_192640MHz / 12) // 1.182720MHz according to RE schematic
|
||||||
MCFG_CPU_PROGRAM_MAP(cd2650_mem)
|
MCFG_CPU_PROGRAM_MAP(cd2650_mem)
|
||||||
MCFG_CPU_IO_MAP(cd2650_io)
|
MCFG_CPU_IO_MAP(cd2650_io)
|
||||||
MCFG_CPU_DATA_MAP(cd2650_data)
|
MCFG_CPU_DATA_MAP(cd2650_data)
|
||||||
@ -271,12 +289,10 @@ static MACHINE_CONFIG_START( cd2650 )
|
|||||||
|
|
||||||
/* video hardware */
|
/* video hardware */
|
||||||
MCFG_SCREEN_ADD("screen", RASTER)
|
MCFG_SCREEN_ADD("screen", RASTER)
|
||||||
MCFG_SCREEN_REFRESH_RATE(50)
|
MCFG_SCREEN_RAW_PARAMS(XTAL_14_192640MHz, 112 * CHARACTER_WIDTH, 0, 80 * CHARACTER_WIDTH, 22 * CHARACTER_LINES, 0, 16 * CHARACTER_LINES)
|
||||||
MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
|
||||||
MCFG_SCREEN_UPDATE_DRIVER(cd2650_state, screen_update)
|
MCFG_SCREEN_UPDATE_DRIVER(cd2650_state, screen_update)
|
||||||
MCFG_SCREEN_SIZE(640, 160)
|
|
||||||
MCFG_SCREEN_VISIBLE_AREA(0, 639, 0, 159)
|
|
||||||
MCFG_SCREEN_PALETTE("palette")
|
MCFG_SCREEN_PALETTE("palette")
|
||||||
|
|
||||||
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cd2650)
|
MCFG_GFXDECODE_ADD("gfxdecode", "palette", cd2650)
|
||||||
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
MCFG_PALETTE_ADD_MONOCHROME("palette")
|
||||||
|
|
||||||
@ -298,7 +314,7 @@ MACHINE_CONFIG_END
|
|||||||
|
|
||||||
/* ROM definition */
|
/* ROM definition */
|
||||||
ROM_START( cd2650 )
|
ROM_START( cd2650 )
|
||||||
ROM_REGION( 0x0400, "roms", 0 )
|
ROM_REGION( 0x1000, "roms", 0 )
|
||||||
ROM_LOAD( "cd2650.rom", 0x0000, 0x0400, CRC(5397328e) SHA1(7106fdb60e1ad2bc5e8e45527f348c23296e8d6a))
|
ROM_LOAD( "cd2650.rom", 0x0000, 0x0400, CRC(5397328e) SHA1(7106fdb60e1ad2bc5e8e45527f348c23296e8d6a))
|
||||||
|
|
||||||
ROM_REGION( 0x0600, "chargen", 0 )
|
ROM_REGION( 0x0600, "chargen", 0 )
|
||||||
@ -320,4 +336,4 @@ ROM_END
|
|||||||
/* Driver */
|
/* Driver */
|
||||||
|
|
||||||
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||||
COMP( 1977, cd2650, 0, 0, cd2650, cd2650, cd2650_state, 0, "Central Data", "CD 2650", 0 )
|
COMP( 1977, cd2650, 0, 0, cd2650, cd2650, cd2650_state, 0, "Central Data", "2650 Computer System", 0 )
|
||||||
|
Loading…
Reference in New Issue
Block a user