src/mame/machine/atari.c
| r4590 | r4591 | |
| 63 | 63 | * |
| 64 | 64 | **************************************************************/ |
| 65 | 65 | |
| 66 | | static READ8_DEVICE_HANDLER(atari_pia_pa_r) |
| 66 | READ8_DEVICE_HANDLER(atari_pia_pa_r) |
| 67 | 67 | { |
| 68 | 68 | return atari_input_disabled() ? 0xFF : input_port_read_safe(device->machine, "djoy_0_1", 0); |
| 69 | 69 | } |
| 70 | 70 | |
| 71 | | static READ8_DEVICE_HANDLER(atari_pia_pb_r) |
| 71 | READ8_DEVICE_HANDLER(atari_pia_pb_r) |
| 72 | 72 | { |
| 73 | 73 | return atari_input_disabled() ? 0xFF : input_port_read_safe(device->machine, "djoy_2_3", 0); |
| 74 | 74 | } |
| 75 | 75 | |
| 76 | 76 | static WRITE8_DEVICE_HANDLER(a600xl_pia_pb_w) { a600xl_mmu(device->machine, data); } |
| 77 | | static WRITE8_DEVICE_HANDLER(a800xl_pia_pb_w) { a800xl_mmu(device->machine, data); } |
| 77 | WRITE8_DEVICE_HANDLER(a800xl_pia_pb_w) { a800xl_mmu(device->machine, data); } |
| 78 | 78 | |
| 79 | | WRITE_LINE_DEVICE_HANDLER(atari_pia_cb2_w) { } |
| 79 | static WRITE_LINE_DEVICE_HANDLER(atari_pia_cb2_w) { } // This is used by Floppy drive on Atari 8bits Home Computers |
| 80 | 80 | |
| 81 | | const pia6821_interface atari_pia_interface = |
| 82 | | { |
| 83 | | DEVCB_HANDLER(atari_pia_pa_r), /* port A in */ |
| 84 | | DEVCB_HANDLER(atari_pia_pb_r), /* port B in */ |
| 85 | | DEVCB_NULL, /* line CA1 in */ |
| 86 | | DEVCB_NULL, /* line CB1 in */ |
| 87 | | DEVCB_NULL, /* line CA2 in */ |
| 88 | | DEVCB_NULL, /* line CB2 in */ |
| 89 | | DEVCB_NULL, /* port A out */ |
| 90 | | DEVCB_NULL, /* port B out */ |
| 91 | | DEVCB_NULL, /* line CA2 out */ |
| 92 | | DEVCB_LINE(atari_pia_cb2_w), /* port CB2 out */ |
| 93 | | DEVCB_NULL, /* IRQA */ |
| 94 | | DEVCB_NULL /* IRQB */ |
| 95 | | }; |
| 96 | | |
| 97 | 81 | const pia6821_interface a600xl_pia_interface = |
| 98 | 82 | { |
| 99 | 83 | DEVCB_HANDLER(atari_pia_pa_r), /* port A in */ |
| r4590 | r4591 | |
| 110 | 94 | DEVCB_NULL /* IRQB */ |
| 111 | 95 | }; |
| 112 | 96 | |
| 113 | | const pia6821_interface a800xl_pia_interface = |
| 114 | | { |
| 115 | | DEVCB_HANDLER(atari_pia_pa_r), /* port A in */ |
| 116 | | DEVCB_HANDLER(atari_pia_pb_r), /* port B in */ |
| 117 | | DEVCB_NULL, /* line CA1 in */ |
| 118 | | DEVCB_NULL, /* line CB1 in */ |
| 119 | | DEVCB_NULL, /* line CA2 in */ |
| 120 | | DEVCB_NULL, /* line CB2 in */ |
| 121 | | DEVCB_NULL, /* port A out */ |
| 122 | | DEVCB_HANDLER(a800xl_pia_pb_w), /* port B out */ |
| 123 | | DEVCB_NULL, /* line CA2 out */ |
| 124 | | DEVCB_LINE(atari_pia_cb2_w), /* port CB2 out */ |
| 125 | | DEVCB_NULL, /* IRQA */ |
| 126 | | DEVCB_NULL /* IRQB */ |
| 127 | | }; |
| 128 | 97 | |
| 129 | | |
| 130 | | |
| 131 | | |
| 132 | 98 | /************************************************************** |
| 133 | 99 | * |
| 134 | 100 | * Reset hardware |
| r4590 | r4591 | |
| 224 | 190 | base2 = memory_region(machine, "maincpu") + 0x15000; /* 0x0800 bytes */ |
| 225 | 191 | } |
| 226 | 192 | memory_install_readwrite8_handler(cpu_get_address_space(machine->cpu[0], ADDRESS_SPACE_PROGRAM), 0x5000, 0x57ff, 0, 0, rbank2, wbank2); |
| 227 | | memory_set_bankptr(machine, 2, base2); |
| 193 | memory_set_bankptr(machine, 2, base2); |
| 228 | 194 | } |
| 229 | 195 | |
| 230 | 196 | |
src/mess/drivers/atari.c
| r4590 | r4591 | |
| 656 | 656 | { |
| 657 | 657 | int i; |
| 658 | 658 | |
| 659 | | for ( i = 0; i < sizeof(atari_palette) / 3; i++ ) { |
| 659 | for ( i = 0; i < sizeof(atari_palette) / 3; i++ ) |
| 660 | { |
| 660 | 661 | palette_set_color_rgb(machine, i, atari_palette[i*3], atari_palette[i*3+1], atari_palette[i*3+2]); |
| 661 | 662 | } |
| 662 | 663 | } |
| r4590 | r4591 | |
| 681 | 682 | }; |
| 682 | 683 | |
| 683 | 684 | |
| 684 | | static const pia6821_interface pia_dummy_intf = |
| 685 | const pia6821_interface atari_pia_interface = |
| 685 | 686 | { |
| 686 | | DEVCB_NULL, |
| 687 | | DEVCB_NULL, |
| 688 | | DEVCB_NULL, |
| 689 | | DEVCB_NULL, |
| 690 | | DEVCB_NULL, |
| 691 | | DEVCB_NULL, |
| 692 | | DEVCB_NULL, |
| 693 | | DEVCB_NULL, |
| 694 | | DEVCB_NULL, |
| 695 | | DEVCB_NULL, |
| 696 | | DEVCB_NULL, |
| 697 | | DEVCB_NULL |
| 687 | DEVCB_HANDLER(atari_pia_pa_r), /* port A in */ |
| 688 | DEVCB_HANDLER(atari_pia_pb_r), /* port B in */ |
| 689 | DEVCB_NULL, /* line CA1 in */ |
| 690 | DEVCB_NULL, /* line CB1 in */ |
| 691 | DEVCB_NULL, /* line CA2 in */ |
| 692 | DEVCB_NULL, /* line CB2 in */ |
| 693 | DEVCB_NULL, /* port A out */ |
| 694 | DEVCB_NULL, /* port B out */ |
| 695 | DEVCB_NULL, /* line CA2 out */ |
| 696 | DEVCB_LINE(atarifdc_pia_cb2_w), /* port CB2 out */ |
| 697 | DEVCB_NULL, /* IRQA */ |
| 698 | DEVCB_NULL /* IRQB */ |
| 698 | 699 | }; |
| 699 | 700 | |
| 701 | const pia6821_interface a800xl_pia_interface = |
| 702 | { |
| 703 | DEVCB_HANDLER(atari_pia_pa_r), /* port A in */ |
| 704 | DEVCB_HANDLER(atari_pia_pb_r), /* port B in */ |
| 705 | DEVCB_NULL, /* line CA1 in */ |
| 706 | DEVCB_NULL, /* line CB1 in */ |
| 707 | DEVCB_NULL, /* line CA2 in */ |
| 708 | DEVCB_NULL, /* line CB2 in */ |
| 709 | DEVCB_NULL, /* port A out */ |
| 710 | DEVCB_HANDLER(a800xl_pia_pb_w), /* port B out */ |
| 711 | DEVCB_NULL, /* line CA2 out */ |
| 712 | DEVCB_LINE(atarifdc_pia_cb2_w), /* port CB2 out */ |
| 713 | DEVCB_NULL, /* IRQA */ |
| 714 | DEVCB_NULL /* IRQB */ |
| 715 | }; |
| 700 | 716 | |
| 717 | |
| 701 | 718 | static MACHINE_DRIVER_START( a400_cartslot ) |
| 702 | 719 | MDRV_CARTSLOT_ADD("cart1") |
| 703 | 720 | MDRV_CARTSLOT_EXTENSION_LIST("rom,bin") |
| r4590 | r4591 | |
| 735 | 752 | MDRV_VIDEO_START(atari) |
| 736 | 753 | MDRV_VIDEO_UPDATE(atari) |
| 737 | 754 | |
| 738 | | MDRV_PIA6821_ADD( "pia", pia_dummy_intf ) |
| 755 | MDRV_PIA6821_ADD( "pia", atari_pia_interface ) |
| 739 | 756 | |
| 740 | 757 | /* sound hardware */ |
| 741 | 758 | MDRV_SPEAKER_STANDARD_MONO("mono") |
| r4590 | r4591 | |
| 827 | 844 | MDRV_CPU_PROGRAM_MAP(a800xl_mem, 0) |
| 828 | 845 | MDRV_CPU_VBLANK_INT_HACK(a800xl_interrupt, TOTAL_LINES_60HZ) |
| 829 | 846 | |
| 847 | MDRV_PIA6821_MODIFY( "pia", a800xl_pia_interface ) |
| 848 | |
| 830 | 849 | MDRV_MACHINE_START( a800xl ) |
| 831 | 850 | |
| 832 | 851 | MDRV_SCREEN_MODIFY("screen") |
| r4590 | r4591 | |
| 936 | 955 | CONFIG_RAM_DEFAULT(16 * 1024) |
| 937 | 956 | SYSTEM_CONFIG_END |
| 938 | 957 | |
| 958 | |
| 959 | // VERY WIP code to load OS at start and, hopefully, go on with the implementation... |
| 960 | static DRIVER_INIT( a800xl ) |
| 961 | { |
| 962 | UINT8 *rom = memory_region(machine, "maincpu"); |
| 963 | |
| 964 | memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xa000, 0xbfff, 0, 0, SMH_BANK1, SMH_UNMAP); |
| 965 | memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0x5000, 0x57ff, 0, 0, SMH_BANK2, SMH_UNMAP); |
| 966 | memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xc000, 0xcfff, 0, 0, SMH_BANK3, SMH_UNMAP); |
| 967 | memory_install_readwrite8_handler(cputag_get_address_space(machine, "maincpu", ADDRESS_SPACE_PROGRAM), 0xd800, 0xffff, 0, 0, SMH_BANK4, SMH_UNMAP); |
| 968 | memory_set_bankptr(machine, 1, rom + 0x10000); |
| 969 | memory_set_bankptr(machine, 2, rom + 0x15000); |
| 970 | memory_set_bankptr(machine, 3, rom + 0x14000); |
| 971 | memory_set_bankptr(machine, 4, rom + 0x15800); |
| 972 | } |
| 973 | |
| 939 | 974 | /*************************************************************************** |
| 940 | 975 | |
| 941 | 976 | Game driver(s) |
| r4590 | r4591 | |
| 947 | 982 | COMP ( 1979, a400pal, a400, 0, a400pal, a800, 0, a400, "Atari", "Atari 400 (PAL)" , 0) |
| 948 | 983 | COMP ( 1979, a800, 0, 0, a800, a800, 0, a800, "Atari", "Atari 800 (NTSC)" , 0) |
| 949 | 984 | COMP ( 1979, a800pal, a800, 0, a800pal, a800, 0, a800, "Atari", "Atari 800 (PAL)" , 0) |
| 950 | | COMP ( 1983, a800xl, a800, 0, a800xl, a800xl, 0, a800, "Atari", "Atari 800XL", GAME_NOT_WORKING ) |
| 985 | COMP ( 1983, a800xl, a800, 0, a800xl, a800xl, a800xl,a800, "Atari", "Atari 800XL", GAME_NOT_WORKING ) |
| 951 | 986 | CONS ( 1982, a5200, 0, 0, a5200, a5200, 0, a5200, "Atari", "Atari 5200", 0) |