src/mess/drivers/victor9k.c
| r0 | r7449 | |
| 1 | /***************************************************************************
|
| 2 | |
| 3 | Victor 9000
|
| 4 | |
| 5 | - very exciting hardware, disk controller is a direct descendant
|
| 6 | of the Commodore drives (designed by Chuck Peddle)
|
| 7 | |
| 8 | Skeleton driver
|
| 9 | |
| 10 | ***************************************************************************/
|
| 11 | |
| 12 | #include "emu.h"
|
| 13 | #include "includes/victor9k.h"
|
| 14 | #include "cpu/i86/i86.h"
|
| 15 | #include "devices/flopdrv.h"
|
| 16 | #include "devices/messram.h"
|
| 17 | #include "machine/ctronics.h"
|
| 18 | #include "machine/6522via.h"
|
| 19 | #include "machine/ieee488.h"
|
| 20 | #include "machine/pit8253.h"
|
| 21 | #include "machine/pic8259.h"
|
| 22 | #include "machine/upd7201.h"
|
| 23 | #include "video/mc6845.h"
|
| 24 | |
| 25 | /* Memory Maps */
|
| 26 | |
| 27 | static ADDRESS_MAP_START( victor9k_mem, ADDRESS_SPACE_PROGRAM, 8 )
|
| 28 | AM_RANGE(0x00000, 0x1ffff) AM_RAM
|
| 29 | /* AM_RANGE(0xe0000, 0xe0001) AM_DEVREADWRITE(I8259A_TAG, pic8259_r, pic8259_w)
|
| 30 | AM_RANGE(0xe0020, 0xe0023) AM_DEVREADWRITE(I8253_TAG, pit8253_r, pit8253_w)
|
| 31 | AM_RANGE(0xe0040, 0xe0043) AM_DEVREADWRITE(UPD7201_TAG, upd7201_cd_ba_r, upd7201_cd_ba_w)*/
|
| 32 | AM_RANGE(0xe8000, 0xe8000) AM_DEVREADWRITE(HD46505S_TAG, mc6845_register_r, mc6845_register_w)
|
| 33 | AM_RANGE(0xe8001, 0xe8001) AM_DEVREADWRITE(HD46505S_TAG, mc6845_status_r, mc6845_address_w)
|
| 34 | /* AM_RANGE(0xe8020, 0xe802f) AM_DEVREADWRITE(M6522_1_TAG, via_r, via_w)
|
| 35 | AM_RANGE(0xe8040, 0xe804f) AM_DEVREADWRITE(M6522_2_TAG, via_r, via_w)
|
| 36 | AM_RANGE(0xe8060, 0xe806f) AM_DEVREADWRITE(M6852_TAG, m6852_r, m6852_w)
|
| 37 | AM_RANGE(0xe8080, 0xe808f) AM_DEVREADWRITE(M6522_3_TAG, via_r, via_w)
|
| 38 | AM_RANGE(0xe80a0, 0xe80af) AM_DEVREADWRITE(M6522_4_TAG, via_r, via_w)
|
| 39 | AM_RANGE(0xe80c0, 0xe80cf) AM_DEVREADWRITE(M6522_6_TAG, via_r, via_w)
|
| 40 | AM_RANGE(0xe80e0, 0xe80ef) AM_DEVREADWRITE(M6522_5_TAG, via_r, via_w)*/
|
| 41 | AM_RANGE(0xf0000, 0xf0fff) AM_RAM
|
| 42 | AM_RANGE(0xfe000, 0xfffff) AM_ROM AM_REGION(I8088_TAG, 0)
|
| 43 | ADDRESS_MAP_END
|
| 44 | |
| 45 | /* Input Ports */
|
| 46 | |
| 47 | static INPUT_PORTS_START( victor9k )
|
| 48 | INPUT_PORTS_END
|
| 49 | |
| 50 | /* Video */
|
| 51 | |
| 52 | static MC6845_UPDATE_ROW( victor9k_update_row )
|
| 53 | {
|
| 54 | }
|
| 55 | |
| 56 | static const mc6845_interface hd46505s_intf = |
| 57 | {
|
| 58 | SCREEN_TAG,
|
| 59 | 8,
|
| 60 | NULL,
|
| 61 | victor9k_update_row,
|
| 62 | NULL,
|
| 63 | DEVCB_NULL,
|
| 64 | DEVCB_NULL,
|
| 65 | DEVCB_NULL,
|
| 66 | DEVCB_NULL,
|
| 67 | NULL
|
| 68 | };
|
| 69 | |
| 70 | static VIDEO_START( victor9k )
|
| 71 | {
|
| 72 | victor9k_state *state = (victor9k_state *)machine->driver_data;
|
| 73 | |
| 74 | /* find devices */
|
| 75 | state->crt = devtag_get_device(machine, HD46505S_TAG);
|
| 76 | }
|
| 77 | |
| 78 | static VIDEO_UPDATE( victor9k )
|
| 79 | {
|
| 80 | victor9k_state *state = (victor9k_state *)screen->machine->driver_data;
|
| 81 | |
| 82 | mc6845_update(state->crt, bitmap, cliprect);
|
| 83 | |
| 84 | return 0;
|
| 85 | }
|
| 86 | |
| 87 | /* Floppy Configuration */
|
| 88 | |
| 89 | static const floppy_config victor9k_floppy_config =
|
| 90 | {
|
| 91 | DEVCB_NULL,
|
| 92 | DEVCB_NULL,
|
| 93 | DEVCB_NULL,
|
| 94 | DEVCB_NULL,
|
| 95 | DEVCB_NULL,
|
| 96 | FLOPPY_DRIVE_DS_80,
|
| 97 | FLOPPY_OPTIONS_NAME(default),
|
| 98 | DO_NOT_KEEP_GEOMETRY
|
| 99 | };
|
| 100 | |
| 101 | /* IEEE-488 Interface */
|
| 102 | |
| 103 | static IEEE488_DAISY( ieee488_daisy )
|
| 104 | {
|
| 105 | // { M6522_1_TAG },
|
| 106 | { NULL }
|
| 107 | };
|
| 108 | |
| 109 | /* Machine Initialization */
|
| 110 | |
| 111 | static MACHINE_START( victor9k )
|
| 112 | {
|
| 113 | victor9k_state *state = (victor9k_state *)machine->driver_data;
|
| 114 | |
| 115 | /* find devices */
|
| 116 | state->ieee488 = devtag_get_device(machine, IEEE488_TAG);
|
| 117 | }
|
| 118 | |
| 119 | /* Machine Driver */
|
| 120 | |
| 121 | static MACHINE_DRIVER_START( victor9k )
|
| 122 | MDRV_DRIVER_DATA(victor9k_state)
|
| 123 | |
| 124 | /* basic machine hardware */
|
| 125 | MDRV_CPU_ADD(I8088_TAG, I8088, 5000000)
|
| 126 | MDRV_CPU_PROGRAM_MAP(victor9k_mem)
|
| 127 | |
| 128 | MDRV_MACHINE_START(victor9k)
|
| 129 | |
| 130 | /* video hardware */
|
| 131 | MDRV_SCREEN_ADD(SCREEN_TAG, RASTER)
|
| 132 | MDRV_SCREEN_REFRESH_RATE(50)
|
| 133 | MDRV_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(2500)) /* not accurate */
|
| 134 | MDRV_SCREEN_FORMAT(BITMAP_FORMAT_INDEXED16)
|
| 135 | MDRV_SCREEN_SIZE(640, 480)
|
| 136 | MDRV_SCREEN_VISIBLE_AREA(0, 640-1, 0, 480-1)
|
| 137 | |
| 138 | MDRV_PALETTE_LENGTH(2)
|
| 139 | MDRV_PALETTE_INIT(monochrome_green)
|
| 140 | |
| 141 | MDRV_VIDEO_START(victor9k)
|
| 142 | MDRV_VIDEO_UPDATE(victor9k)
|
| 143 | |
| 144 | MDRV_MC6845_ADD(HD46505S_TAG, H46505, 1000000, hd46505s_intf)
|
| 145 | |
| 146 | /* sound hardware */
|
| 147 | MDRV_SPEAKER_STANDARD_MONO("mono")
|
| 148 | // MDRV_M6852_ADD(M6852_TAG, 0, m6852_intf)
|
| 149 | // MDRV_SOUND_ROUTE(ALL_OUTPUTS, "mono", 0.25)
|
| 150 | |
| 151 | /* devices */
|
| 152 | MDRV_IEEE488_ADD(IEEE488_TAG, ieee488_daisy)
|
| 153 | // MDRV_PIC8259_ADD(I8259A_TAG, i8259_intf)
|
| 154 | // MDRV_PIT8253_ADD(I8253_TAG, i8253_intf)
|
| 155 | // MDRV_UPD7201_ADD(UPD7201_TAG, 0, upd7201_intf)
|
| 156 | // MDRV_VIA6522_ADD(M6522_1_TAG, 0, m6522_1_intf)
|
| 157 | // MDRV_VIA6522_ADD(M6522_2_TAG, 0, m6522_2_intf)
|
| 158 | // MDRV_VIA6522_ADD(M6522_3_TAG, 0, m6522_3_intf)
|
| 159 | // MDRV_VIA6522_ADD(M6522_4_TAG, 0, m6522_4_intf)
|
| 160 | // MDRV_VIA6522_ADD(M6522_5_TAG, 0, m6522_5_intf)
|
| 161 | // MDRV_VIA6522_ADD(M6522_6_TAG, 0, m6522_6_intf)
|
| 162 | MDRV_FLOPPY_2_DRIVES_ADD(victor9k_floppy_config)
|
| 163 | |
| 164 | /* internal ram */
|
| 165 | MDRV_RAM_ADD("messram")
|
| 166 | MDRV_RAM_DEFAULT_SIZE("128K")
|
| 167 | MDRV_RAM_EXTRA_OPTIONS("512K")
|
| 168 | MACHINE_DRIVER_END
|
| 169 | |
| 170 | /* ROMs */
|
| 171 | |
| 172 | ROM_START( victor9k )
|
| 173 | ROM_REGION( 0x2000, I8088_TAG, 0 )
|
| 174 | ROM_LOAD( "102320.7j", 0x0000, 0x1000, CRC(3d615fd7) SHA1(b22f7e5d66404185395d8effbf57efded0079a92) )
|
| 175 | ROM_LOAD( "102322.8j", 0x1000, 0x1000, CRC(9209df0e) SHA1(3ee8e0c15186bbd5768b550ecc1fa3b6b1dbb928) )
|
| 176 | ROM_LOAD( "v9000_univ._fe_f3f7_13db.7j", 0x0000, 0x1000, CRC(25c7a59f) SHA1(8784e9aa7eb9439f81e18b8e223c94714e033911) )
|
| 177 | ROM_LOAD( "v9000_univ._ff_f3f7_39fe.8j", 0x1000, 0x1000, CRC(496c7467) SHA1(eccf428f62ef94ab85f4a43ba59ae6a066244a66) )
|
| 178 | |
| 179 | ROM_REGION( 0x800, "gcr", 0 )
|
| 180 | ROM_LOAD( "100836-01.4k", 0x000, 0x800, CRC(adc601bd) SHA1(6eeff3d2063ae2d97452101aa61e27ef83a467e5) )
|
| 181 | |
| 182 | ROM_REGION( 0x800, "motor", 0)
|
| 183 | ROM_LOAD( "disk spindle motor control i8048", 0x000, 0x800, NO_DUMP )
|
| 184 | |
| 185 | ROM_REGION( 0x800, "keyboard", 0)
|
| 186 | ROM_LOAD( "keyboard controller i8048", 0x000, 0x800, NO_DUMP )
|
| 187 | ROM_END
|
| 188 | |
| 189 | /* System Drivers */
|
| 190 | |
| 191 | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */
|
| 192 | COMP( 1982, victor9k, 0, 0, victor9k, victor9k, 0, "Victor Business Products", "Victor 9000", GAME_NOT_WORKING | GAME_NO_SOUND )
|