src/mess/drivers/czk80.c
| r9672 | r9673 | |
| 9 | 9 | FDC board contains Z80A DMA and NEC 765A (XTAL on it is 8MHZ) |
| 10 | 10 | Mega board contains 74LS612 and memory chips |
| 11 | 11 | |
| 12 | 27/11/2010 Connected to a terminal |
| 13 | |
| 12 | 14 | ****************************************************************************/ |
| 13 | 15 | |
| 14 | 16 | #include "emu.h" |
| 15 | 17 | #include "cpu/z80/z80.h" |
| 18 | #include "machine/terminal.h" |
| 16 | 19 | |
| 17 | 20 | |
| 18 | 21 | class czk80_state : public driver_device |
| r9672 | r9673 | |
| 24 | 27 | UINT8 *ram; |
| 25 | 28 | }; |
| 26 | 29 | |
| 30 | static UINT8 term_data; |
| 27 | 31 | |
| 32 | static WRITE8_HANDLER( czk80_80_w ) |
| 33 | { |
| 34 | running_device *terminal = space->machine->device("terminal"); |
| 28 | 35 | |
| 36 | terminal_write(terminal, 0, data); |
| 37 | } |
| 38 | |
| 39 | static READ8_HANDLER( czk80_80_r ) |
| 40 | { |
| 41 | UINT8 ret = term_data; |
| 42 | term_data = 0; |
| 43 | return ret; |
| 44 | } |
| 45 | |
| 46 | static READ8_HANDLER( czk80_c0_r ) |
| 47 | { |
| 48 | return 0x80; |
| 49 | } |
| 50 | |
| 51 | static READ8_HANDLER( czk80_81_r ) |
| 52 | { |
| 53 | return 1 | ((term_data) ? 2 : 0); |
| 54 | } |
| 55 | |
| 29 | 56 | static ADDRESS_MAP_START(czk80_mem, ADDRESS_SPACE_PROGRAM, 8) |
| 30 | 57 | ADDRESS_MAP_UNMAP_HIGH |
| 31 | 58 | AM_RANGE(0x0000, 0xffff) AM_RAM AM_BASE_MEMBER(czk80_state, ram) |
| r9672 | r9673 | |
| 33 | 60 | |
| 34 | 61 | static ADDRESS_MAP_START( czk80_io, ADDRESS_SPACE_IO, 8 ) |
| 35 | 62 | ADDRESS_MAP_GLOBAL_MASK(0xff) |
| 63 | AM_RANGE(0x80, 0x80) AM_READWRITE(czk80_80_r,czk80_80_w) |
| 64 | AM_RANGE(0x81, 0x81) AM_READ(czk80_81_r) |
| 65 | AM_RANGE(0xc0, 0xc0) AM_READ(czk80_c0_r) |
| 36 | 66 | ADDRESS_MAP_END |
| 37 | 67 | |
| 38 | 68 | /* Input ports */ |
| 39 | | INPUT_PORTS_START( czk80 ) |
| 69 | static INPUT_PORTS_START( czk80 ) |
| 70 | PORT_INCLUDE(generic_terminal) |
| 40 | 71 | INPUT_PORTS_END |
| 41 | 72 | |
| 42 | 73 | static MACHINE_RESET(czk80) |
| r9672 | r9673 | |
| 48 | 79 | memcpy(state->ram+0xe000,bios, 0x2000); |
| 49 | 80 | } |
| 50 | 81 | |
| 51 | | static VIDEO_START( czk80 ) |
| 82 | |
| 83 | static WRITE8_DEVICE_HANDLER( czk80_kbd_put ) |
| 52 | 84 | { |
| 85 | term_data = data; |
| 53 | 86 | } |
| 54 | 87 | |
| 55 | | static VIDEO_UPDATE( czk80 ) |
| 88 | static GENERIC_TERMINAL_INTERFACE( czk80_terminal_intf ) |
| 56 | 89 | { |
| 57 | | return 0; |
| 58 | | } |
| 90 | DEVCB_HANDLER(czk80_kbd_put) |
| 91 | }; |
| 59 | 92 | |
| 60 | 93 | static MACHINE_CONFIG_START( czk80, czk80_state ) |
| 61 | | /* basic machine hardware */ |
| 62 | | MDRV_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) |
| 63 | | MDRV_CPU_PROGRAM_MAP(czk80_mem) |
| 94 | /* basic machine hardware */ |
| 95 | MDRV_CPU_ADD("maincpu", Z80, XTAL_16MHz / 4) |
| 96 | MDRV_CPU_PROGRAM_MAP(czk80_mem) |
| 64 | 97 | MDRV_CPU_IO_MAP(czk80_io) |
| 65 | 98 | |
| 66 | | MDRV_MACHINE_RESET(czk80) |
| 99 | MDRV_MACHINE_RESET(czk80) |
| 67 | 100 | |
| 68 | | /* video hardware */ |
| 69 | | MDRV_SCREEN_ADD("screen", RASTER) |
| 70 | | MDRV_SCREEN_REFRESH_RATE(60) |
| 71 | | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */ |
| 72 | | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16) |
| 73 | | MDRV_SCREEN_SIZE(256, 192) /* border size not accurate */ |
| 74 | | MDRV_SCREEN_VISIBLE_AREA(0, 256 - 1, 0, 192 - 1) |
| 101 | MDRV_FRAGMENT_ADD( generic_terminal ) |
| 75 | 102 | |
| 76 | | MDRV_PALETTE_LENGTH(2) |
| 77 | | MDRV_PALETTE_INIT(black_and_white) |
| 78 | | |
| 79 | | MDRV_VIDEO_START(czk80) |
| 80 | | MDRV_VIDEO_UPDATE(czk80) |
| 103 | MDRV_GENERIC_TERMINAL_ADD("terminal", czk80_terminal_intf) |
| 81 | 104 | MACHINE_CONFIG_END |
| 82 | 105 | |
| 83 | 106 | |
| 84 | 107 | /* ROM definition */ |
| 85 | 108 | ROM_START( czk80 ) |
| 86 | | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 109 | ROM_REGION( 0x10000, "maincpu", ROMREGION_ERASEFF ) |
| 87 | 110 | ROM_LOAD( "czk80.rom", 0xe000, 0x2000, CRC(7081b7c6) SHA1(13f75b14ea73b252bdfa2384e6eead6e720e49e3)) |
| 88 | 111 | ROM_END |
| 89 | 112 | |