trunk/src/devices/video/mc6845.cpp
| r250244 | r250245 | |
| 220 | 220 | case 0x06: m_vert_disp = data & 0x7f; break; |
| 221 | 221 | case 0x07: m_vert_sync_pos = data & 0x7f; break; |
| 222 | 222 | case 0x08: m_mode_control = data & 0xff; break; |
| 223 | | case 0x09: m_max_ras_addr = data & 0x1f; if (MODE_INTERLACE_AND_VIDEO) m_max_ras_addr += m_interlace_adjust; break; |
| 223 | case 0x09: m_max_ras_addr = data & 0x1f; break; |
| 224 | 224 | case 0x0a: m_cursor_start_ras = data & 0x7f; break; |
| 225 | 225 | case 0x0b: m_cursor_end_ras = data & 0x1f; break; |
| 226 | 226 | case 0x0c: m_disp_start_addr = ((data & 0x3f) << 8) | (m_disp_start_addr & 0x00ff); break; |
| r250244 | r250245 | |
| 456 | 456 | { |
| 457 | 457 | UINT16 hsync_on_pos, hsync_off_pos, vsync_on_pos, vsync_off_pos; |
| 458 | 458 | |
| 459 | | UINT16 video_char_height = m_max_ras_addr + 1; // fix garbage at the bottom of the screen (eg victor9k) |
| 459 | UINT16 video_char_height = m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust); // fix garbage at the bottom of the screen (eg victor9k) |
| 460 | 460 | // Would be useful for 'interlace and video' mode support... |
| 461 | 461 | // UINT16 frame_char_height = (MODE_INTERLACE_AND_VIDEO ? m_max_ras_addr / 2 : m_max_ras_addr) + 1; |
| 462 | 462 | |
| r250244 | r250245 | |
| 654 | 654 | // For rudimentary 'interlace and video' support, m_raster_counter increments by 1 rather than the correct 2. |
| 655 | 655 | // The correct test would be: |
| 656 | 656 | // if ( m_raster_counter == (MODE_INTERLACE_AND_VIDEO ? m_max_ras_addr + 1 : m_max_ras_addr) ) |
| 657 | | if ( m_raster_counter == m_max_ras_addr ) |
| 657 | if ( m_raster_counter == m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust) - 1 ) |
| 658 | 658 | { |
| 659 | 659 | /* Check if we have reached the end of the vertical area */ |
| 660 | 660 | if ( m_line_counter == m_vert_char_total ) |
| r250244 | r250245 | |
| 922 | 922 | UINT8 mc6845_device::draw_scanline(int y, bitmap_rgb32 &bitmap, const rectangle &cliprect) |
| 923 | 923 | { |
| 924 | 924 | /* compute the current raster line */ |
| 925 | | UINT8 ra = y % (m_max_ras_addr + 1); |
| 925 | UINT8 ra = y % (m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust)); |
| 926 | 926 | |
| 927 | 927 | /* check if the cursor is visible and is on this scanline */ |
| 928 | 928 | int cursor_visible = m_cursor_state && |
| r250244 | r250245 | |
| 943 | 943 | if (MODE_ROW_COLUMN_ADDRESSING) |
| 944 | 944 | { |
| 945 | 945 | UINT8 cc = 0; |
| 946 | | UINT8 cr = y / (m_max_ras_addr + 1); |
| 946 | UINT8 cr = y / (m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust)); |
| 947 | 947 | UINT16 ma = (cr << 8) | cc; |
| 948 | 948 | |
| 949 | 949 | m_update_row_cb(bitmap, cliprect, ma, ra, y, m_horiz_disp, cursor_x, de, hbp, vbp); |
| r250244 | r250245 | |
| 954 | 954 | } |
| 955 | 955 | |
| 956 | 956 | /* update MA if the last raster address */ |
| 957 | | if (ra == m_max_ras_addr) |
| 957 | if (ra == m_max_ras_addr + (MODE_INTERLACE_AND_VIDEO ? m_interlace_adjust : m_noninterlace_adjust) - 1) |
| 958 | 958 | m_current_disp_addr = (m_current_disp_addr + m_horiz_disp) & 0x3fff; |
| 959 | 959 | |
| 960 | 960 | return ra; |
| r250244 | r250245 | |
| 1064 | 1064 | m_line_address = 0; |
| 1065 | 1065 | m_current_disp_addr = 0; |
| 1066 | 1066 | m_disp_start_addr = 0; |
| 1067 | m_noninterlace_adjust = 1; |
| 1068 | m_interlace_adjust = 1; |
| 1067 | 1069 | |
| 1068 | 1070 | save_item(NAME(m_show_border_area)); |
| 1069 | 1071 | save_item(NAME(m_visarea_adjust_min_x)); |
| r250244 | r250245 | |
| 1173 | 1175 | m_supports_status_reg_d6 = false; |
| 1174 | 1176 | m_supports_status_reg_d7 = false; |
| 1175 | 1177 | m_supports_transparent = false; |
| 1178 | |
| 1179 | // Non-interlace Mode, Interlace Sync Mode - When total number of rasters is RN, RN-1 shall be programmed. |
| 1180 | m_noninterlace_adjust = 1; |
| 1181 | // Interlace Sync & Video Mode - When total number of rasters is RN, RN-2 shall be programmed. |
| 1182 | m_interlace_adjust = 2; |
| 1176 | 1183 | } |
| 1177 | 1184 | |
| 1178 | 1185 | |
trunk/src/mame/drivers/bbc.cpp
| r250244 | r250245 | |
| 30 | 30 | ARM1 - ARM Evaluation System |
| 31 | 31 | ADB20 - Master Compact |
| 32 | 32 | |
| 33 | Acorn Business Computer |
| 34 | |
| 35 | ABC110 - 64K, 10MB HDD, Z80, CP/M 2.2 |
| 36 | ABC210/ACW443 - 4096K, 20MB HDD, 32016, PanOS |
| 37 | ABC310 - 1024K, 10MB HDD, 80286, DOS 3.1/GEM |
| 38 | |
| 33 | 39 | ******************************************************************************/ |
| 34 | 40 | |
| 35 | 41 | /* Core includes */ |
| r250244 | r250245 | |
| 136 | 142 | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ |
| 137 | 143 | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 138 | 144 | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 139 | | /* fe00-feff SHEILA Address Page */ |
| 140 | | AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 141 | | AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w) |
| 145 | /* fe00-feff SHEILA Address Page */ |
| 146 | AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 147 | AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, register_r, register_w) |
| 142 | 148 | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) /* fe08-fe0F 6850 ACIA Serial controller */ |
| 143 | 149 | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 144 | 150 | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 145 | 151 | AM_RANGE(0xfe18, 0xfe1f) AM_NOP /* fe18-fe1f INTOFF/STATID # ECONET Interrupt Off / ID No. */ |
| 146 | | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */ |
| 147 | | /* W: fe20-fe2f Video ULA Video system chip */ |
| 152 | AM_RANGE(0xfe20, 0xfe2f) AM_READWRITE(bbc_fe_r, bbc_videoULA_w) /* R: fe20-fe2f INTON # ECONET Interrupt On */ |
| 153 | /* W: fe20-fe2f Video ULA Video system chip */ |
| 148 | 154 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selecta_w) /* R: fe30-fe3f NC Not Connected */ |
| 149 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 155 | /* W: fe30-fe3f 74LS161 Paged ROM selector */ |
| 150 | 156 | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 151 | 157 | AM_RANGE(0xfe60, 0xfe7f) AM_NOP /* fe60-fe7f 6522 VIA # USER VIA */ |
| 152 | 158 | AM_RANGE(0xfe80, 0xfe9f) AM_NOP /* fe80-fe9f 8271/1770 FDC # Floppy disc controller */ |
| r250244 | r250245 | |
| 162 | 168 | |
| 163 | 169 | AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7") /* c000-fbff OS ROM */ |
| 164 | 170 | AM_RANGE(0xfc00, 0xfdff) AM_NOP /* fc00-fdff FRED & JIM Pages */ |
| 165 | | /* fe00-feff SHEILA Address Page */ |
| 166 | | AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 167 | | AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("mc6845", mc6845_device, register_r, register_w) |
| 171 | /* fe00-feff SHEILA Address Page */ |
| 172 | AM_RANGE(0xfe00, 0xfe00) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, status_r, address_w) /* fe00-fe07 6845 CRTC Video controller */ |
| 173 | AM_RANGE(0xfe01, 0xfe01) AM_MIRROR(0x06) AM_DEVREADWRITE("hd6845", hd6845_device, register_r, register_w) |
| 168 | 174 | AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w) /* fe08-fe0F 6850 ACIA Serial controller */ |
| 169 | 175 | AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w) |
| 170 | 176 | AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w) /* fe10-fe17 Serial ULA Serial system chip */ |
| 171 | 177 | AM_RANGE(0xfe18, 0xfe1f) AM_READ_PORT("STATID") /* fe18-fe1f INTOFF/STATID ECONET Interrupt Off / ID No. */ |
| 172 | | AM_RANGE(0xfe20, 0xfe2f) AM_WRITE(bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ |
| 173 | | /* W: fe20-fe2f Video ULA Video system chip */ |
| 178 | AM_RANGE(0xfe20, 0xfe2f) AM_READWRITE(bbc_fe_r, bbc_videoULA_w) /* R: fe20-fe2f INTON ECONET Interrupt On */ |
| 179 | /* W: fe20-fe2f Video ULA Video system chip */ |
| 174 | 180 | AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write) /* fe40-fe5f 6522 VIA SYSTEM VIA */ |
| 175 | 181 | AM_RANGE(0xfe60, 0xfe7f) AM_DEVREADWRITE("via6522_1", via6522_device, read, write) /* fe60-fe7f 6522 VIA USER VIA */ |
| 176 | | /* fe80-fe9f FDC Floppy disc controller */ |
| 182 | /* fe80-fe9f FDC Floppy disc controller */ |
| 177 | 183 | AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r) /* fea0-febf 68B54 ADLC ECONET controller */ |
| 178 | 184 | AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write) /* fec0-fedf uPD7002 Analogue to digital converter */ |
| 179 | 185 | AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r) /* fee0-feff Tube ULA Tube system interface */ |
| r250244 | r250245 | |
| 186 | 192 | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */ |
| 187 | 193 | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ |
| 188 | 194 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */ |
| 189 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 195 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 190 | 196 | AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271", i8271_device, map) /* fe80-fe83 8271 FDC Floppy disc controller */ |
| 191 | 197 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w) /* fe84-fe9f 8271 FDC Floppy disc controller */ |
| 192 | 198 | AM_IMPORT_FROM(bbc_base) |
| r250244 | r250245 | |
| 198 | 204 | AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w) /* 4000-7fff Regular Ram */ |
| 199 | 205 | AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w) /* 8000-bfff Paged ROM */ |
| 200 | 206 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectb_w) /* R: fe30-fe3f NC Not Connected */ |
| 201 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 207 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 202 | 208 | AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ |
| 203 | 209 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 204 | 210 | AM_IMPORT_FROM(bbc_base) |
| r250244 | r250245 | |
| 211 | 217 | AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */ |
| 212 | 218 | AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */ |
| 213 | 219 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ |
| 214 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 220 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 215 | 221 | AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ |
| 216 | 222 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 217 | 223 | AM_IMPORT_FROM(bbc_base) |
| r250244 | r250245 | |
| 224 | 230 | AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w) /* 8000-afff Paged ROM or 12K of SWRAM */ |
| 225 | 231 | AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w) /* b000-bfff Rest of paged ROM area */ |
| 226 | 232 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ |
| 227 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 233 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 228 | 234 | AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w) /* fe80-fe83 1770 FDC Drive control register */ |
| 229 | 235 | AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write) /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 230 | 236 | AM_IMPORT_FROM(bbc_base) |
| r250244 | r250245 | |
| 237 | 243 | AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w) /* 8000-afff Paged ROM or 12K of SWRAM */ |
| 238 | 244 | AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") /* b000-bfff Rest of paged ROM area */ |
| 239 | 245 | AM_RANGE(0xfe30, 0xfe3f) AM_READWRITE(bbc_fe_r, bbc_page_selectbp_w) /* R: fe30-fe3f NC Not Connected */ |
| 240 | | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 246 | /* W: fe30-fe3f 84LS161 Paged ROM selector */ |
| 241 | 247 | AM_RANGE(0xfe80, 0xfe83) AM_NOP /* fe80-fe83 1770 FDC Drive control register */ |
| 242 | 248 | AM_RANGE(0xfe84, 0xfe9f) AM_NOP /* fe84-fe9f 1770 FDC Floppy disc controller */ |
| 243 | 249 | AM_IMPORT_FROM(bbc_base) |
| r250244 | r250245 | |
| 758 | 764 | |
| 759 | 765 | /* video hardware */ |
| 760 | 766 | MCFG_SCREEN_ADD("screen", RASTER) |
| 767 | //MCFG_SCREEN_RAW_PARAMS( XTAL_17_73447MHz / 4, 1024, 80, 80 + 640 + 48, 625, 12, 12 + 256 + 13 ) |
| 761 | 768 | MCFG_SCREEN_SIZE(640, 256) |
| 762 | 769 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1) |
| 763 | 770 | MCFG_SCREEN_REFRESH_RATE(50) |
| 764 | 771 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128)) |
| 765 | | MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update) |
| 772 | MCFG_SCREEN_UPDATE_DEVICE("hd6845", hd6845_device, screen_update) |
| 766 | 773 | |
| 767 | 774 | MCFG_PALETTE_ADD("palette", 16) |
| 768 | 775 | MCFG_PALETTE_INIT_OWNER(bbc_state,bbc) |
| r250244 | r250245 | |
| 771 | 778 | MCFG_SAA5050_SCREEN_SIZE(40, 25, 40) |
| 772 | 779 | |
| 773 | 780 | /* crtc */ |
| 774 | | MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000) |
| 781 | MCFG_MC6845_ADD("hd6845", HD6845, "screen", 2000000) |
| 775 | 782 | MCFG_MC6845_SHOW_BORDER_AREA(false) |
| 776 | 783 | MCFG_MC6845_CHAR_WIDTH(12) |
| 777 | 784 | MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row) |
| r250244 | r250245 | |
| 875 | 882 | /* software lists */ |
| 876 | 883 | MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass") |
| 877 | 884 | MCFG_SOFTWARE_LIST_ADD("flop_ls_b", "bbcb_flop") |
| 885 | //MCFG_SOFTWARE_LIST_ADD("flop_ls_b_orig", "bbcb_orig_flop") |
| 878 | 886 | MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_z80_flop") |
| 879 | 887 | MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_32016_flop") |
| 880 | 888 | MACHINE_CONFIG_END |
| r250244 | r250245 | |
| 970 | 978 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a") |
| 971 | 979 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 972 | 980 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b") |
| 981 | //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig") |
| 973 | 982 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016") |
| 974 | 983 | MACHINE_CONFIG_END |
| 975 | 984 | |
| r250244 | r250245 | |
| 990 | 999 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a") |
| 991 | 1000 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 992 | 1001 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b") |
| 1002 | //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig") |
| 993 | 1003 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80") |
| 994 | 1004 | MACHINE_CONFIG_END |
| 995 | 1005 | |
| r250244 | r250245 | |
| 1041 | 1051 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a") |
| 1042 | 1052 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 1043 | 1053 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b") |
| 1054 | //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig") |
| 1044 | 1055 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80") |
| 1045 | 1056 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016") |
| 1046 | 1057 | MACHINE_CONFIG_END |
| r250244 | r250245 | |
| 1077 | 1088 | MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128)) |
| 1078 | 1089 | MCFG_SCREEN_SIZE(640, 256) |
| 1079 | 1090 | MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1) |
| 1080 | | MCFG_SCREEN_UPDATE_DEVICE("mc6845", mc6845_device, screen_update) |
| 1091 | MCFG_SCREEN_UPDATE_DEVICE("hd6845", hd6845_device, screen_update) |
| 1092 | |
| 1081 | 1093 | MCFG_PALETTE_ADD("palette", 16) |
| 1082 | 1094 | MCFG_PALETTE_INIT_OWNER(bbc_state,bbc) |
| 1083 | 1095 | |
| r250244 | r250245 | |
| 1085 | 1097 | MCFG_SAA5050_SCREEN_SIZE(40, 25, 40) |
| 1086 | 1098 | |
| 1087 | 1099 | /* crtc */ |
| 1088 | | MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000) |
| 1100 | MCFG_MC6845_ADD("hd6845", HD6845, "screen", 2000000) |
| 1089 | 1101 | MCFG_MC6845_SHOW_BORDER_AREA(false) |
| 1090 | 1102 | MCFG_MC6845_CHAR_WIDTH(12) |
| 1091 | 1103 | MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row) |
| r250244 | r250245 | |
| 1128 | 1140 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass") |
| 1129 | 1141 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass") |
| 1130 | 1142 | MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b", "bbcb_flop") |
| 1143 | //MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b_orig", "bbcb_orig_flop") |
| 1131 | 1144 | |
| 1132 | 1145 | /* acia */ |
| 1133 | 1146 | MCFG_DEVICE_ADD("acia6850", ACIA6850, 0) |
| r250244 | r250245 | |
| 1217 | 1230 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 1218 | 1231 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m") |
| 1219 | 1232 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b") |
| 1233 | //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig") |
| 1220 | 1234 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80") |
| 1221 | 1235 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016") |
| 1222 | 1236 | |
| r250244 | r250245 | |
| 1278 | 1292 | /* eeprom pcd8572 */ |
| 1279 | 1293 | //MCFG_DEVICE_REMOVE("rtc") |
| 1280 | 1294 | |
| 1295 | MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcmc) |
| 1296 | MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcmc) |
| 1297 | |
| 1281 | 1298 | /* software lists */ |
| 1282 | 1299 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m") |
| 1283 | 1300 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a") |
| 1284 | 1301 | MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b") |
| 1285 | 1302 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m") |
| 1286 | 1303 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b") |
| 1304 | //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig") |
| 1287 | 1305 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80") |
| 1288 | 1306 | MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016") |
| 1289 | 1307 | MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m") |
trunk/src/mame/drivers/namcos23.cpp
| r250244 | r250245 | |
| 3377 | 3377 | INPUT_PORTS_END |
| 3378 | 3378 | |
| 3379 | 3379 | |
| 3380 | | static INPUT_PORTS_START( downhill ) |
| 3381 | | PORT_START("P1") |
| 3382 | | PORT_BIT( 0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 3383 | 3380 | |
| 3384 | | PORT_START("P2") |
| 3385 | | PORT_BIT( 0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN ) |
| 3386 | 3381 | |
| 3387 | | PORT_START("IN01") |
| 3388 | | PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_BUTTON3) // brake left |
| 3389 | | PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_START1) // start |
| 3390 | | PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_SERVICE) PORT_TOGGLE // test switch |
| 3391 | | PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_JOYSTICK_UP) // select up |
| 3392 | | PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN) // select down |
| 3393 | | PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_BUTTON1) // enter |
| 3394 | | PORT_BIT(0xf00c, IP_ACTIVE_LOW, IPT_UNKNOWN) |
| 3395 | 3382 | |
| 3396 | | PORT_START("IN23") |
| 3397 | | PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_BUTTON4) // brake right |
| 3398 | | PORT_BIT(0xfbff, IP_ACTIVE_LOW, IPT_UNKNOWN) |
| 3399 | | |
| 3400 | | PORT_START("SERVICE") |
| 3401 | | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 ) // service coin |
| 3402 | | |
| 3403 | | PORT_START("DSW") |
| 3404 | | PORT_SERVICE( 0x01, IP_ACTIVE_LOW ) |
| 3405 | | PORT_DIPNAME( 0x02, 0x02, "Skip POST" ) |
| 3406 | | PORT_DIPSETTING( 0x02, DEF_STR( Off ) ) |
| 3407 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3408 | | PORT_DIPNAME( 0x04, 0x04, "Freeze?" ) |
| 3409 | | PORT_DIPSETTING( 0x04, DEF_STR( Off ) ) |
| 3410 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3411 | | PORT_DIPNAME( 0x08, 0x08, DEF_STR( Unknown ) ) |
| 3412 | | PORT_DIPSETTING( 0x08, DEF_STR( Off ) ) |
| 3413 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3414 | | PORT_DIPNAME( 0x10, 0x10, DEF_STR( Unknown ) ) |
| 3415 | | PORT_DIPSETTING( 0x10, DEF_STR( Off ) ) |
| 3416 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3417 | | PORT_DIPNAME( 0x20, 0x20, DEF_STR( Unknown ) ) |
| 3418 | | PORT_DIPSETTING( 0x20, DEF_STR( Off ) ) |
| 3419 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3420 | | PORT_DIPNAME( 0x40, 0x40, DEF_STR( Unknown ) ) |
| 3421 | | PORT_DIPSETTING( 0x40, DEF_STR( Off ) ) |
| 3422 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3423 | | PORT_DIPNAME( 0x80, 0x80, DEF_STR( Unknown ) ) |
| 3424 | | PORT_DIPSETTING( 0x80, DEF_STR( Off ) ) |
| 3425 | | PORT_DIPSETTING( 0x00, DEF_STR( On ) ) |
| 3426 | | INPUT_PORTS_END |
| 3427 | | |
| 3428 | | |
| 3429 | 3383 | /*************************************************************************** |
| 3430 | 3384 | |
| 3431 | 3385 | Machine Drivers |
| r250244 | r250245 | |
| 5127 | 5081 | GAME( 1997, rapidrvrv2c, rapidrvr, gorgon, rapidrvr, namcos23_state, s23, ROT0, "Namco", "Rapid River (RD2 Ver. C)", GAME_FLAGS ) // 97/11/27, Europe |
| 5128 | 5082 | GAME( 1997, rapidrvrp, rapidrvr, gorgon, rapidrvrp, namcos23_state, s23, ROT0, "Namco", "Rapid River (prototype)", GAME_FLAGS ) // 97/11/10, USA |
| 5129 | 5083 | GAME( 1997, finfurl, 0, gorgon, finfurl, namcos23_state, s23, ROT0, "Namco", "Final Furlong (FF2 Ver. A)", GAME_FLAGS ) |
| 5130 | | GAME( 1997, downhill, 0, s23, downhill, namcos23_state, s23, ROT0, "Namco", "Downhill Bikers (DH3 Ver. A)", GAME_FLAGS ) |
| 5084 | GAME( 1997, downhill, 0, s23, s23, namcos23_state, s23, ROT0, "Namco", "Downhill Bikers (DH3 Ver. A)", GAME_FLAGS ) |
| 5131 | 5085 | GAME( 1997, motoxgo, 0, s23, s23, namcos23_state, s23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)", GAME_FLAGS ) |
| 5132 | 5086 | GAME( 1997, motoxgov2a, motoxgo, s23, s23, namcos23_state, s23, ROT0, "Namco", "Motocross Go! (MG2 Ver. A)", GAME_FLAGS ) |
| 5133 | 5087 | GAME( 1997, motoxgov1a, motoxgo, s23, s23, namcos23_state, s23, ROT0, "Namco", "Motocross Go! (MG1 Ver. A, set 1)", GAME_FLAGS ) |
trunk/src/mame/machine/bbc.cpp
| r250244 | r250245 | |
| 551 | 551 | if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */ |
| 552 | 552 | { |
| 553 | 553 | myo = offset-0x200; |
| 554 | | if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) return m_mc6845->status_r(space, myo-0x00); /* Video controller */ |
| 555 | | if ((myo>=0x01) && (myo<=0x07) && (myo & 1)) return m_mc6845->register_r(space, myo-0x01); |
| 554 | if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) return m_hd6845->status_r(space, myo-0x00); /* Video controller */ |
| 555 | if ((myo>=0x01) && (myo<=0x07) && (myo & 1)) return m_hd6845->register_r(space, myo-0x01); |
| 556 | 556 | if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) return m_acia ? m_acia->status_r(space, myo-0x08) : 0xfe; /* Serial controller */ |
| 557 | 557 | if ((myo>=0x09) && (myo<=0x0f) && (myo & 1)) return m_acia ? m_acia->data_r(space, myo-0x09) : 0xfe; |
| 558 | 558 | if ((myo>=0x10) && (myo<=0x17)) return 0xfe; /* Serial System Chip */ |
| r250244 | r250245 | |
| 569 | 569 | if ((myo>=0x60) && (myo<=0x7f)) return m_via6522_1 ? m_via6522_1->read(space, myo-0x60) : 0xfe; |
| 570 | 570 | if ((myo>=0x80) && (myo<=0x9f)) return 0xfe; |
| 571 | 571 | if ((myo>=0xa0) && (myo<=0xbf)) return m_adlc ? m_adlc->read(space, myo & 0x03) : 0xfe; |
| 572 | | if ((myo>=0xc0) && (myo<=0xdf)) return 0xfe; |
| 573 | | if ((myo>=0xe0) && (myo<=0xff)) return 0xfe; |
| 572 | if ((myo>=0xc0) && (myo<=0xdf)) return 0xff; |
| 573 | if ((myo>=0xe0) && (myo<=0xff)) return 0xff; |
| 574 | 574 | } |
| 575 | 575 | return 0xfe; |
| 576 | 576 | } |
| r250244 | r250245 | |
| 582 | 582 | if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */ |
| 583 | 583 | { |
| 584 | 584 | myo=offset-0x200; |
| 585 | | if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) m_mc6845->address_w(space, myo-0x00, data); /* Video Controller */ |
| 586 | | if ((myo>=0x01) && (myo<=0x07) && (myo & 1)) m_mc6845->register_w(space, myo-0x01, data); |
| 585 | if ((myo>=0x00) && (myo<=0x06) && (myo+0x01) & 1) m_hd6845->address_w(space, myo-0x00, data); /* Video Controller */ |
| 586 | if ((myo>=0x01) && (myo<=0x07) && (myo & 1)) m_hd6845->register_w(space, myo-0x01, data); |
| 587 | 587 | if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) if (m_acia) m_acia->control_w(space, myo-0x08, data); /* Serial controller */ |
| 588 | 588 | if ((myo>=0x09) && (myo<=0x0f) && (myo & 1)) if (m_acia) m_acia->data_w(space, myo-0x09, data); |
| 589 | 589 | if ((myo>=0x10) && (myo<=0x17)) bbc_SerialULA_w(space, myo-0x10, data); /* Serial System Chip */ |
| r250244 | r250245 | |
| 893 | 893 | } |
| 894 | 894 | break; |
| 895 | 895 | case 1: |
| 896 | | if (m_rtc && m_MC146818_WR == 0) |
| 896 | if (m_machinetype == MASTER && m_MC146818_WR == 0) |
| 897 | 897 | { |
| 898 | 898 | /* BBC Master has NVRAM Here */ |
| 899 | 899 | m_MC146818_WR = 1; |
| r250244 | r250245 | |
| 911 | 911 | } |
| 912 | 912 | break; |
| 913 | 913 | case 2: |
| 914 | | if (m_rtc && m_MC146818_DS == 0) |
| 914 | if (m_machinetype == MASTER && m_MC146818_DS == 0) |
| 915 | 915 | { |
| 916 | 916 | /* BBC Master has NVRAM Here */ |
| 917 | 917 | m_MC146818_DS = 1; |
| r250244 | r250245 | |
| 976 | 976 | } |
| 977 | 977 | break; |
| 978 | 978 | case 1: |
| 979 | | if (m_rtc && m_MC146818_WR == 1) |
| 979 | if (m_machinetype == MASTER && m_MC146818_WR == 1) |
| 980 | 980 | { |
| 981 | 981 | /* BBC Master has NVRAM Here */ |
| 982 | 982 | m_MC146818_WR = 0; |
| r250244 | r250245 | |
| 994 | 994 | } |
| 995 | 995 | break; |
| 996 | 996 | case 2: |
| 997 | | if (m_rtc && m_MC146818_DS == 1) |
| 997 | if (m_machinetype == MASTER && m_MC146818_DS == 1) |
| 998 | 998 | { |
| 999 | 999 | /* BBC Master has NVRAM Here */ |
| 1000 | 1000 | m_MC146818_DS = 0; |
| r250244 | r250245 | |
| 1051 | 1051 | } |
| 1052 | 1052 | |
| 1053 | 1053 | |
| 1054 | | if (m_rtc) |
| 1054 | if (m_machinetype == MASTER) |
| 1055 | 1055 | { |
| 1056 | 1056 | //set the Address Select |
| 1057 | 1057 | if (m_MC146818_AS != BIT(data,7)) |
| r250244 | r250245 | |
| 1720 | 1720 | |
| 1721 | 1721 | MACHINE_START_MEMBER(bbc_state, bbca) |
| 1722 | 1722 | { |
| 1723 | m_machinetype = MODELA; |
| 1723 | 1724 | bbc_setup_banks(m_bank4, 4, 0, 0x4000); |
| 1724 | 1725 | } |
| 1725 | 1726 | |
| r250244 | r250245 | |
| 1749 | 1750 | |
| 1750 | 1751 | MACHINE_START_MEMBER(bbc_state, bbcb) |
| 1751 | 1752 | { |
| 1753 | m_machinetype = MODELB; |
| 1752 | 1754 | m_mc6850_clock = 0; |
| 1753 | 1755 | bbc_setup_banks(m_bank4, 16, 0, 0x4000); |
| 1754 | 1756 | } |
| r250244 | r250245 | |
| 1771 | 1773 | |
| 1772 | 1774 | MACHINE_START_MEMBER(bbc_state, bbcbp) |
| 1773 | 1775 | { |
| 1776 | m_machinetype = BPLUS; |
| 1774 | 1777 | m_mc6850_clock = 0; |
| 1775 | 1778 | |
| 1776 | 1779 | m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcbp_direct_handler), this)); |
| r250244 | r250245 | |
| 1795 | 1798 | |
| 1796 | 1799 | MACHINE_START_MEMBER(bbc_state, bbcm) |
| 1797 | 1800 | { |
| 1801 | m_machinetype = MASTER; |
| 1798 | 1802 | m_mc6850_clock = 0; |
| 1799 | 1803 | |
| 1800 | 1804 | m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcm_direct_handler), this)); |
| r250244 | r250245 | |
| 1818 | 1822 | |
| 1819 | 1823 | bbcb_IC32_initialise(this); |
| 1820 | 1824 | } |
| 1825 | |
| 1826 | |
| 1827 | MACHINE_START_MEMBER(bbc_state, bbcmc) |
| 1828 | { |
| 1829 | MACHINE_START_CALL_MEMBER(bbcm); |
| 1830 | |
| 1831 | m_machinetype = COMPACT; |
| 1832 | } |
| 1833 | |
| 1834 | MACHINE_RESET_MEMBER(bbc_state, bbcmc) |
| 1835 | { |
| 1836 | MACHINE_RESET_CALL_MEMBER(bbcm); |
| 1837 | } |
| | No newline at end of file |