trunk/src/mess/drivers/a3000.c
| r18735 | r18736 | |
| 1 | | /*************************************************************************** |
| 2 | | |
| 3 | | Commodore Amiga 3000 |
| 4 | | |
| 5 | | Skeleton driver |
| 6 | | |
| 7 | | ***************************************************************************/ |
| 8 | | |
| 9 | | #include "emu.h" |
| 10 | | #include "cpu/m68000/m68000.h" |
| 11 | | |
| 12 | | |
| 13 | | class a3000_state : public driver_device |
| 14 | | { |
| 15 | | public: |
| 16 | | a3000_state(const machine_config &mconfig, device_type type, const char *tag) |
| 17 | | : driver_device(mconfig, type, tag) { } |
| 18 | | |
| 19 | | UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 20 | | { |
| 21 | | return 0; |
| 22 | | } |
| 23 | | }; |
| 24 | | |
| 25 | | |
| 26 | | |
| 27 | | /*************************************************************************** |
| 28 | | CONSTANTS |
| 29 | | ***************************************************************************/ |
| 30 | | |
| 31 | | #define XTAL_U104 XTAL_32MHz |
| 32 | | |
| 33 | | |
| 34 | | /*************************************************************************** |
| 35 | | ADDRESS MAPS |
| 36 | | ***************************************************************************/ |
| 37 | | |
| 38 | | static ADDRESS_MAP_START( a3000_mem, AS_PROGRAM, 32, a3000_state ) |
| 39 | | ADDRESS_MAP_UNMAP_HIGH |
| 40 | | AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("chipram") |
| 41 | | AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("kickstart", 0) |
| 42 | | ADDRESS_MAP_END |
| 43 | | |
| 44 | | |
| 45 | | /*************************************************************************** |
| 46 | | INPUT PORTS |
| 47 | | ***************************************************************************/ |
| 48 | | |
| 49 | | static INPUT_PORTS_START( a3000 ) |
| 50 | | INPUT_PORTS_END |
| 51 | | |
| 52 | | |
| 53 | | /*************************************************************************** |
| 54 | | MACHINE DRIVERS |
| 55 | | ***************************************************************************/ |
| 56 | | |
| 57 | | static MACHINE_CONFIG_START( a3000, a3000_state ) |
| 58 | | MCFG_CPU_ADD("maincpu", M68030, XTAL_U104 / 2) |
| 59 | | MCFG_CPU_PROGRAM_MAP(a3000_mem) |
| 60 | | |
| 61 | | MCFG_SCREEN_ADD("screen", RASTER) |
| 62 | | MCFG_SCREEN_REFRESH_RATE(60) |
| 63 | | MCFG_SCREEN_UPDATE_DRIVER(a3000_state, screen_update) |
| 64 | | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 65 | | MCFG_SCREEN_SIZE(512*2, 312) |
| 66 | | MCFG_SCREEN_VISIBLE_AREA((129-8-8)*2, (449+8-1+8)*2, 44-8, 300+8-1) |
| 67 | | MACHINE_CONFIG_END |
| 68 | | |
| 69 | | |
| 70 | | /*************************************************************************** |
| 71 | | ROM DEFINITIONS |
| 72 | | ***************************************************************************/ |
| 73 | | |
| 74 | | /* Note: I think those ROMs are correct, but they should be verified */ |
| 75 | | ROM_START( a3000 ) |
| 76 | | ROM_REGION32_BE(0x80000, "kickstart", 0) |
| 77 | | ROM_DEFAULT_BIOS("kick14") |
| 78 | | ROM_SYSTEM_BIOS(0, "kick14", "Kickstart 1.4 (36.16)") |
| 79 | | /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 0 CS=9713 */ |
| 80 | | ROMX_LOAD("390629-02.u182", 0x00000, 0x40000, CRC(58327536) SHA1(d1713d7f31474a5948e6d488e33686061cf3d1e2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1)) |
| 81 | | /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 1 CS=9B21 */ |
| 82 | | ROMX_LOAD("390630-02.u183", 0x00002, 0x40000, CRC(fe2f7fb9) SHA1(c05c9c52d014c66f9019152b3f2a2adc2c678794), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1)) |
| 83 | | ROM_SYSTEM_BIOS(1, "kick204", "Kickstart 2.04 (37.175)") |
| 84 | | ROMX_LOAD("390629-03.u182", 0x00000, 0x40000, CRC(a245dbdf) SHA1(83bab8e95d378b55b0c6ae6561385a96f638598f), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2)) |
| 85 | | ROMX_LOAD("390630-03.u183", 0x00002, 0x40000, CRC(7db1332b) SHA1(48f14b31279da6757848df6feb5318818f8f576c), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2)) |
| 86 | | ROM_SYSTEM_BIOS(2, "kick31", "Kickstart 3.1 (40.68)") |
| 87 | | ROMX_LOAD("kick31.u182", 0x00000, 0x40000, CRC(286b9a0d) SHA1(6763a2258ec493f7408cf663110dae9a17803ad1), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3)) |
| 88 | | ROMX_LOAD("kick31.u183", 0x00002, 0x40000, CRC(0b8cde6a) SHA1(5f02e97b48ebbba87d516a56b0400c6fc3434d8d), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3)) |
| 89 | | ROM_END |
| 90 | | |
| 91 | | |
| 92 | | /*************************************************************************** |
| 93 | | GAME DRIVERS |
| 94 | | ***************************************************************************/ |
| 95 | | |
| 96 | | /* YEAR NAME PARENT COMPAT MACHINE INPUT INIT COMPANY FULLNAME FLAGS */ |
| 97 | | COMP( 1990, a3000, 0, 0, a3000, a3000, driver_device, 0, "Commodore Business Machines", "Amiga 3000", GAME_NOT_WORKING | GAME_NO_SOUND ) |
trunk/src/mess/drivers/amiga.c
| r18735 | r18736 | |
| 176 | 176 | AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart */ |
| 177 | 177 | ADDRESS_MAP_END |
| 178 | 178 | |
| 179 | static ADDRESS_MAP_START( amiga_mem32, AS_PROGRAM, 32, ami1200_state ) |
| 180 | ADDRESS_MAP_UNMAP_HIGH |
| 181 | // ADDRESS_MAP_GLOBAL_MASK(0xffffff) // not sure |
| 182 | AM_RANGE(0x000000, 0x1fffff) AM_RAMBANK("bank1") AM_SHARE("chip_ram") |
| 183 | AM_RANGE(0xbfd000, 0xbfefff) AM_READWRITE16_LEGACY(amiga_cia_r, amiga_cia_w, 0xffffffff) |
| 184 | AM_RANGE(0xc00000, 0xdfffff) AM_READWRITE16_LEGACY(amiga_custom_r, amiga_custom_w, 0xffffffff) AM_SHARE("custom_regs") |
| 185 | AM_RANGE(0xe80000, 0xe8ffff) AM_READWRITE16_LEGACY(amiga_autoconfig_r, amiga_autoconfig_w, 0xffffffff) |
| 186 | AM_RANGE(0xf80000, 0xffffff) AM_ROM AM_REGION("user1", 0) /* Kickstart */ |
| 187 | ADDRESS_MAP_END |
| 179 | 188 | |
| 180 | 189 | static ADDRESS_MAP_START(keyboard_mem, AS_PROGRAM, 8, amiga_state ) |
| 181 | 190 | AM_RANGE(0x0000, 0x003f) AM_RAM /* internal user ram */ |
| r18735 | r18736 | |
| 853 | 862 | MCFG_SOFTWARE_LIST_ADD("flop_common","amiga_flop") |
| 854 | 863 | MCFG_SOFTWARE_LIST_ADD("flop_list","amiga1200_flop") |
| 855 | 864 | MCFG_SOFTWARE_LIST_ADD("flop_aga","amigaaga_flop") |
| 865 | |
| 856 | 866 | |
| 857 | | |
| 858 | 867 | MACHINE_CONFIG_END |
| 859 | 868 | |
| 860 | 869 | |
| r18735 | r18736 | |
| 870 | 879 | |
| 871 | 880 | /* sound hardware */ |
| 872 | 881 | MCFG_SOUND_MODIFY("amiga") |
| 873 | | MCFG_SOUND_CLOCK(AMIGA_68EC020_PAL_CLOCK/8) /* 3.546895 MHz */ |
| 882 | MCFG_SOUND_CLOCK(AMIGA_68EC020_PAL_CLOCK/4) /* 3.546895 MHz */ |
| 874 | 883 | |
| 875 | 884 | /* cia */ |
| 876 | 885 | MCFG_DEVICE_MODIFY("cia_0") |
| r18735 | r18736 | |
| 884 | 893 | MACHINE_CONFIG_END |
| 885 | 894 | |
| 886 | 895 | |
| 896 | // 16mhz and 25mhz versions were available |
| 897 | // 68030 / 68040 options available |
| 898 | #define A3000_XTAL XTAL_25MHz |
| 899 | |
| 900 | /* ToDo: proper A3000 clocks */ |
| 901 | |
| 902 | static MACHINE_CONFIG_START( a3000n, amiga_state ) |
| 903 | /* basic machine hardware */ |
| 904 | MCFG_CPU_ADD("maincpu", M68030, A3000_XTAL) |
| 905 | MCFG_CPU_PROGRAM_MAP(amiga_mem32) |
| 906 | |
| 907 | MCFG_CPU_ADD("keyboard", M6502, XTAL_1MHz) /* 1 MHz? */ |
| 908 | MCFG_CPU_PROGRAM_MAP(keyboard_mem) |
| 909 | MCFG_DEVICE_DISABLE() |
| 910 | |
| 911 | MCFG_SCREEN_ADD("screen", RASTER) |
| 912 | MCFG_SCREEN_REFRESH_RATE(59.997) |
| 913 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(0)) |
| 914 | |
| 915 | MCFG_MACHINE_RESET_OVERRIDE(amiga_state, amiga ) |
| 916 | |
| 917 | /* video hardware */ |
| 918 | MCFG_VIDEO_ATTRIBUTES(VIDEO_UPDATE_BEFORE_VBLANK) |
| 919 | MCFG_SCREEN_SIZE(228*4, 262) |
| 920 | MCFG_SCREEN_VISIBLE_AREA(214, (228*4)-1, 34, 262-1) |
| 921 | MCFG_SCREEN_UPDATE_DRIVER(amiga_state, screen_update_amiga) |
| 922 | |
| 923 | MCFG_PALETTE_LENGTH(4096) |
| 924 | MCFG_PALETTE_INIT_OVERRIDE(amiga_state, amiga ) |
| 925 | |
| 926 | MCFG_VIDEO_START_OVERRIDE(amiga_state,amiga) |
| 927 | |
| 928 | /* devices */ |
| 929 | MCFG_MSM6242_ADD("rtc",amiga_rtc_intf) |
| 930 | MCFG_CENTRONICS_PRINTER_ADD("centronics", amiga_centronics_config) |
| 931 | |
| 932 | /* sound hardware */ |
| 933 | MCFG_SPEAKER_STANDARD_STEREO("lspeaker", "rspeaker") |
| 934 | |
| 935 | MCFG_SOUND_ADD("amiga", AMIGA, 3579545) |
| 936 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.50) |
| 937 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.50) |
| 938 | MCFG_SOUND_ROUTE(2, "rspeaker", 0.50) |
| 939 | MCFG_SOUND_ROUTE(3, "lspeaker", 0.50) |
| 940 | |
| 941 | /* cia */ |
| 942 | MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68000_NTSC_CLOCK / 10, 60, cia_0_ntsc_intf) |
| 943 | MCFG_LEGACY_MOS8520_ADD("cia_1", AMIGA_68000_NTSC_CLOCK, 0, cia_1_intf) |
| 944 | |
| 945 | /* fdc */ |
| 946 | MCFG_AMIGA_FDC_ADD("fdc", AMIGA_68000_NTSC_CLOCK) |
| 947 | MCFG_FLOPPY_DRIVE_ADD("fdc:0", amiga_floppies, "35dd", 0, amiga_fdc::floppy_formats) |
| 948 | MCFG_FLOPPY_DRIVE_ADD("fdc:1", amiga_floppies, 0, 0, amiga_fdc::floppy_formats) |
| 949 | MCFG_FLOPPY_DRIVE_ADD("fdc:2", amiga_floppies, 0, 0, amiga_fdc::floppy_formats) |
| 950 | MCFG_FLOPPY_DRIVE_ADD("fdc:3", amiga_floppies, 0, 0, amiga_fdc::floppy_formats) |
| 951 | |
| 952 | MCFG_AMIGA_KEYBOARD_ADD("kbd") |
| 953 | MACHINE_CONFIG_END |
| 954 | |
| 955 | static MACHINE_CONFIG_DERIVED( a3000, a3000n ) |
| 956 | |
| 957 | MCFG_SCREEN_MODIFY("screen") |
| 958 | MCFG_SCREEN_REFRESH_RATE(50) |
| 959 | MCFG_SCREEN_SIZE(228*4, 312) |
| 960 | MCFG_SCREEN_VISIBLE_AREA(214, (228*4)-1, 34, 312-1) |
| 961 | |
| 962 | /* cia */ |
| 963 | MCFG_DEVICE_REMOVE("cia_0") |
| 964 | MCFG_LEGACY_MOS8520_ADD("cia_0", AMIGA_68000_PAL_CLOCK / 10, 50, cia_0_pal_intf) |
| 965 | |
| 966 | /* fdc */ |
| 967 | MCFG_DEVICE_MODIFY("fdc") |
| 968 | MCFG_DEVICE_CLOCK(AMIGA_68000_PAL_CLOCK) |
| 969 | MACHINE_CONFIG_END |
| 970 | |
| 887 | 971 | /*************************************************************************** |
| 888 | 972 | |
| 889 | 973 | Amiga specific stuff |
| r18735 | r18736 | |
| 1034 | 1118 | NULL, /* scanline0_callback */ |
| 1035 | 1119 | NULL, /* reset_callback */ |
| 1036 | 1120 | NULL, /* nmi_callback */ |
| 1037 | | FLAGS_AGA_CHIPSET /* flags */ |
| 1121 | FLAGS_AGA_CHIPSET | FLAGS_IS_32BIT /* flags */ |
| 1038 | 1122 | }; |
| 1039 | 1123 | |
| 1040 | 1124 | /* configure our Amiga setup */ |
| r18735 | r18736 | |
| 1045 | 1129 | membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base()); |
| 1046 | 1130 | } |
| 1047 | 1131 | |
| 1132 | DRIVER_INIT_MEMBER(amiga_state,a3000) |
| 1133 | { |
| 1134 | static const amiga_machine_interface a3000_intf = |
| 1135 | { |
| 1136 | ECS_CHIP_RAM_MASK, |
| 1137 | amiga_read_joy0dat, amiga_read_joy1dat, /* joy0dat_r & joy1dat_r */ |
| 1138 | NULL, /* potgo_w */ |
| 1139 | NULL, /* serdat_w */ |
| 1140 | NULL, /* scanline0_callback */ |
| 1141 | NULL, /* reset_callback */ |
| 1142 | NULL, /* nmi_callback */ |
| 1143 | FLAGS_IS_32BIT, /* flags */ |
| 1144 | }; |
| 1048 | 1145 | |
| 1146 | /* configure our Amiga setup */ |
| 1147 | amiga_machine_config(machine(), &a3000_intf); |
| 1148 | |
| 1149 | /* set up memory */ |
| 1150 | membank("bank1")->configure_entry(0, m_chip_ram); |
| 1151 | membank("bank1")->configure_entry(1, machine().root_device().memregion("user1")->base()); |
| 1152 | } |
| 1153 | |
| 1154 | |
| 1155 | |
| 1049 | 1156 | /*************************************************************************** |
| 1050 | 1157 | ROM DEFINITIONS |
| 1051 | 1158 | ***************************************************************************/ |
| r18735 | r18736 | |
| 1158 | 1265 | |
| 1159 | 1266 | #define rom_ami1200n rom_ami1200 |
| 1160 | 1267 | |
| 1268 | /* Note: I think those ROMs are correct, but they should be verified */ |
| 1269 | ROM_START( ami3000 ) |
| 1270 | ROM_REGION32_BE(0x80000, "user1", 0) |
| 1271 | ROM_DEFAULT_BIOS("kick14") |
| 1272 | ROM_SYSTEM_BIOS(0, "kick14", "Kickstart 1.4 (36.16)") |
| 1273 | /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 0 CS=9713 */ |
| 1274 | ROMX_LOAD("390629-02.u182", 0x00000, 0x40000, CRC(58327536) SHA1(d1713d7f31474a5948e6d488e33686061cf3d1e2), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1)) |
| 1275 | /* COPYRIGHT 1990 CAI // ALL RIGHTS RESERVED // ALPHA 5 ROM 1 CS=9B21 */ |
| 1276 | ROMX_LOAD("390630-02.u183", 0x00002, 0x40000, CRC(fe2f7fb9) SHA1(c05c9c52d014c66f9019152b3f2a2adc2c678794), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(1)) |
| 1277 | ROM_SYSTEM_BIOS(1, "kick204", "Kickstart 2.04 (37.175)") |
| 1278 | ROMX_LOAD("390629-03.u182", 0x00000, 0x40000, CRC(a245dbdf) SHA1(83bab8e95d378b55b0c6ae6561385a96f638598f), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2)) |
| 1279 | ROMX_LOAD("390630-03.u183", 0x00002, 0x40000, CRC(7db1332b) SHA1(48f14b31279da6757848df6feb5318818f8f576c), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(2)) |
| 1280 | ROM_SYSTEM_BIOS(2, "kick31", "Kickstart 3.1 (40.68)") |
| 1281 | ROMX_LOAD("kick31.u182", 0x00000, 0x40000, CRC(286b9a0d) SHA1(6763a2258ec493f7408cf663110dae9a17803ad1), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3)) |
| 1282 | ROMX_LOAD("kick31.u183", 0x00002, 0x40000, CRC(0b8cde6a) SHA1(5f02e97b48ebbba87d516a56b0400c6fc3434d8d), ROM_GROUPWORD | ROM_REVERSE | ROM_SKIP(2) | ROM_BIOS(3)) |
| 1161 | 1283 | |
| 1284 | ROM_REGION(0x1040, "keyboard", 0) |
| 1285 | ROM_LOAD("keyboard", 0x0000, 0x1040, NO_DUMP) |
| 1286 | ROM_END |
| 1162 | 1287 | |
| 1288 | #define rom_ami3000n rom_ami3000 |
| 1289 | |
| 1163 | 1290 | ROM_START( cdtv ) |
| 1164 | 1291 | ROM_REGION16_BE(0x100000, "user1", 0) |
| 1165 | 1292 | ROM_LOAD16_BYTE("391008-01.u34", 0x000000, 0x020000, CRC(791cb14b) SHA1(277a1778924496353ffe56be68063d2a334360e4)) |
| r18735 | r18736 | |
| 1189 | 1316 | COMP( 1985, ami1000n, ami1000, 0, ami1000n, amiga, amiga_state, amiga, "Commodore Business Machines", "Amiga 1000 (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS ) |
| 1190 | 1317 | |
| 1191 | 1318 | |
| 1192 | | /* Amiga 2000 - similar to 1000 */ |
| 1193 | | /* Amiga 1500 - Amiga 2000 with two floppy drives (2nd replacing the HDD) */ |
| 1194 | | /* Amiga 2500 - Amiga 2000 with 68020 accelerator card */ |
| 1195 | 1319 | |
| 1196 | | /* Amiga 3000 - ECS chipset, 68030 CPU - skeleton driver a3000.c */ |
| 1197 | | |
| 1198 | | /* Amiga 4000 - AGA chipset, 68040 / 68060 CPU */ |
| 1199 | | |
| 1200 | 1320 | /* Low-end market line */ |
| 1201 | 1321 | |
| 1202 | 1322 | COMP( 1987, ami500, 0, 0, ami500, amiga, amiga_state, amiga, "Commodore Business Machines", "Amiga 500 (PAL, OCS)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS ) |
| r18735 | r18736 | |
| 1211 | 1331 | COMP( 1992, ami1200, 0, 0, a1200, amiga, ami1200_state, a1200, "Commodore Business Machines", "Amiga 1200 (PAL, AGA)" , GAME_NOT_WORKING ) |
| 1212 | 1332 | COMP( 1992, ami1200n, ami1200, 0, a1200n, amiga, ami1200_state, a1200, "Commodore Business Machines", "Amiga 1200 (NTSC, AGA)" , GAME_NOT_WORKING ) |
| 1213 | 1333 | |
| 1334 | COMP( 1992, ami3000, 0, 0, a3000, amiga, amiga_state, a3000, "Commodore Business Machines", "Amiga 3000 (PAL, ECS, 68030)" , GAME_NOT_WORKING ) |
| 1335 | COMP( 1992, ami3000n, ami3000, 0, a3000n, amiga, amiga_state, a3000, "Commodore Business Machines", "Amiga 3000 (NTSC, ECS, 68030)" , GAME_NOT_WORKING ) |
| 1214 | 1336 | |
| 1337 | |
| 1338 | |
| 1215 | 1339 | COMP( 1991, cdtv, 0, 0, cdtv, cdtv, amiga_state, cdtv, "Commodore Business Machines", "CDTV (NTSC)", GAME_NOT_WORKING | GAME_IMPERFECT_GRAPHICS ) |
| 1216 | 1340 | |
| 1341 | /* other official models */ |
| 1342 | /* Amiga 2000 - similar to 1000 */ |
| 1343 | /* Amiga 1500 - Amiga 2000 with two floppy drives (2nd replacing the HDD) */ |
| 1344 | /* Amiga 2500 - Amiga 2000 with 68020 accelerator card */ |
| 1345 | /* Amiga 4000 - AGA chipset, 68040 / 68060 CPU */ |
| 1346 | |
| 1347 | |
| 1217 | 1348 | /* CD32 - see cd32.c */ |
| 1218 | 1349 | |
| 1219 | 1350 | |