Previous 199869 Revisions Next

r41733 Saturday 14th November, 2015 at 20:26:25 UTC by Nigel Barnes
mc6845: fixed hd6845 rasters in interlace mode
- bbc now uses correct hd6845
- saa5050 outputs all 20 scanlines
[3rdparty/genie/src/actions/cmake]cmake_project.lua
[3rdparty/genie/src/host]scripts.c
[scripts/src]cpu.lua
[src/devices/video]mc6845.cpp mc6845.h saa5050.cpp
[src/mame/drivers]apricot.cpp bbc.cpp namcos23.cpp
[src/mame/includes]bbc.h
[src/mame/machine]bbc.cpp
[src/mame/video]bbc.cpp

trunk/3rdparty/genie/src/actions/cmake/cmake_project.lua
r250244r250245
4242         for _,v in ipairs(cfg.includedirs) do
4343            _p('include_directories(../%s)', premake.esc(v))
4444         end
45         for _,v in ipairs(cfg.defines) do
46            _p('add_definitions(-D%s)', premake.esc(v))
47         end
48         break
4945      end
50      break
5146   end
5247
5348   if (prj.kind=='StaticLib') then
trunk/3rdparty/genie/src/host/scripts.c
r250244r250245
176176   "function premake.cmake.workspace(sln)\n_p('cmake_minimum_required(VERSION 2.8.4)')\n_p('')\nfor i,prj in ipairs(sln.projects) do\nlocal name = premake.esc(prj.name)\n_p('add_subdirectory(%s)', name)\nend\nend\n",
177177
178178   /* actions/cmake/cmake_project.lua */
179   "local cmake = premake.cmake\nlocal tree = premake.tree\nfunction cmake.files(prj)\nlocal tr = premake.project.buildsourcetree(prj)\ntree.traverse(tr, {\nonbranchenter = function(node, depth)\nend,\nonbranchexit = function(node, depth)\nend,\nonleaf = function(node, depth)\n_p(1, '../%s', node.cfg.name)\nend,\n}, true, 1)\nend\nfunction premake.cmake.project(prj)\nio.indent = \"  \"\n_p('cmake_minimum_required(VERSION 2.8.4)')\n_p('')\n_p('project(%s)', premake.esc(prj.name))\n_p('set(')\n_p('source_list')\ncmake.files(prj)\n_p(')')\nlocal platforms = premake.filterplatforms(prj.solution, premake[_OPTIONS.cc].platforms, \"Native\")\nfor i = #platforms, 1, -1 do\nif premake.platforms[platforms[i]].iscrosscompiler then\ntable.remove(platforms, i)\nend\nend \nfor _, platform in ipairs(platforms) do\nfor cfg in premake.eachconfig(prj, platform) do\nfor _,v in ipairs(cfg.includedirs) do\n_p('include_directories(../%s)', premake.esc(v))\nend\nfor _,v in ipairs(cfg.defines) do\n_p('add_definitions(-D%s)', premake.esc("
180   "v))\nend\nbreak\nend\nbreak\nend\nif (prj.kind=='StaticLib') then\n_p('add_library(%s STATIC ${source_list})',premake.esc(prj.name))\nend\nif (prj.kind=='SharedLib') then\n_p('add_library(%s SHARED ${source_list})',premake.esc(prj.name))\nend\nif (prj.kind=='ConsoleApp') then\n_p('add_executable(%s ${source_list})',premake.esc(prj.name))\nend\nif (prj.kind=='WindowedApp') then\n_p('add_executable(%s ${source_list})',premake.esc(prj.name))\nend\nend\n",
179   "local cmake = premake.cmake\nlocal tree = premake.tree\nfunction cmake.files(prj)\nlocal tr = premake.project.buildsourcetree(prj)\ntree.traverse(tr, {\nonbranchenter = function(node, depth)\nend,\nonbranchexit = function(node, depth)\nend,\nonleaf = function(node, depth)\n_p(1, '../%s', node.cfg.name)\nend,\n}, true, 1)\nend\nfunction premake.cmake.project(prj)\nio.indent = \"  \"\n_p('cmake_minimum_required(VERSION 2.8.4)')\n_p('')\n_p('project(%s)', premake.esc(prj.name))\n_p('set(')\n_p('source_list')\ncmake.files(prj)\n_p(')')\nlocal platforms = premake.filterplatforms(prj.solution, premake[_OPTIONS.cc].platforms, \"Native\")\nfor i = #platforms, 1, -1 do\nif premake.platforms[platforms[i]].iscrosscompiler then\ntable.remove(platforms, i)\nend\nend \nfor _, platform in ipairs(platforms) do\nfor cfg in premake.eachconfig(prj, platform) do\nfor _,v in ipairs(cfg.includedirs) do\n_p('include_directories(../%s)', premake.esc(v))\nend\nend\nend\nif (prj.kind=='StaticLib') then\n_p('add_library(%s STATIC ${sour"
180   "ce_list})',premake.esc(prj.name))\nend\nif (prj.kind=='SharedLib') then\n_p('add_library(%s SHARED ${source_list})',premake.esc(prj.name))\nend\nif (prj.kind=='ConsoleApp') then\n_p('add_executable(%s ${source_list})',premake.esc(prj.name))\nend\nif (prj.kind=='WindowedApp') then\n_p('add_executable(%s ${source_list})',premake.esc(prj.name))\nend\nend\n",
181181
182182   /* actions/make/_make.lua */
183183   "_MAKE = { }\npremake.make = { }\nlocal make = premake.make\nfunction _MAKE.esc(value)\nlocal result\nif (type(value) == \"table\") then\nresult = { }\nfor _,v in ipairs(value) do\ntable.insert(result, _MAKE.esc(v))\nend\nreturn result\nelse\nresult = value:gsub(\"\\\\\", \"\\\\\\\\\")\nresult = result:gsub(\" \", \"\\\\ \")\nresult = result:gsub(\"%%(\", \"\\\\%(\")\nresult = result:gsub(\"%%)\", \"\\\\%)\")\nresult = result:gsub(\"$\\\\%((.-)\\\\%)\", \"$%(%1%)\")\nreturn result\nend\nend\nfunction premake.make_copyrule(source, target)\n_p('%s: %s', target, source)\n_p('\\t@echo Copying $(notdir %s)', target)\n_p('\\t-$(call COPY,%s,%s)', source, target)\nend\nfunction premake.make_mkdirrule(var)\n_p('\\t@echo Creating %s', var)\n_p('\\t-$(call MKDIR,%s)', var)\n_p('')\nend\nfunction make.list(value)\nif #value > 0 then\nreturn \" \" .. table.concat(value, \" \")\nelse\nreturn \"\"\nend\nend\nfunction _MAKE.getmakefilename(this, searchprjs)\nlocal count = 0\nfor sln in premake.solution.each() do\nif (sln.loca"
trunk/scripts/src/cpu.lua
r250244r250245
18951895      MAME_DIR .. "src/devices/cpu/tms9900/tms9995.h",
18961896      MAME_DIR .. "src/devices/cpu/tms9900/ti990_10.cpp",
18971897      MAME_DIR .. "src/devices/cpu/tms9900/ti990_10.h",
1898      MAME_DIR .. "src/devices/cpu/tms9900/99xxcore.h",
18981899      MAME_DIR .. "src/devices/cpu/tms9900/tms99com.h",
18991900   }
19001901end
trunk/src/devices/video/mc6845.cpp
r250244r250245
220220      case 0x06:  m_vert_disp        =   data & 0x7f; break;
221221      case 0x07:  m_vert_sync_pos    =   data & 0x7f; break;
222222      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;
224224      case 0x0a:  m_cursor_start_ras =   data & 0x7f; break;
225225      case 0x0b:  m_cursor_end_ras   =   data & 0x1f; break;
226226      case 0x0c:  m_disp_start_addr  = ((data & 0x3f) << 8) | (m_disp_start_addr & 0x00ff); break;
r250244r250245
456456{
457457   UINT16 hsync_on_pos, hsync_off_pos, vsync_on_pos, vsync_off_pos;
458458
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)
460460   // Would be useful for 'interlace and video' mode support...
461461   // UINT16 frame_char_height = (MODE_INTERLACE_AND_VIDEO ? m_max_ras_addr / 2 : m_max_ras_addr) + 1;
462462
r250244r250245
654654   // For rudimentary 'interlace and video' support, m_raster_counter increments by 1 rather than the correct 2.
655655   // The correct test would be:
656656   // 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 )
658658   {
659659      /* Check if we have reached the end of the vertical area */
660660      if ( m_line_counter == m_vert_char_total )
r250244r250245
922922UINT8 mc6845_device::draw_scanline(int y, bitmap_rgb32 &bitmap, const rectangle &cliprect)
923923{
924924   /* 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));
926926
927927   /* check if the cursor is visible and is on this scanline */
928928   int cursor_visible = m_cursor_state &&
r250244r250245
943943   if (MODE_ROW_COLUMN_ADDRESSING)
944944   {
945945      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));
947947      UINT16 ma = (cr << 8) | cc;
948948
949949      m_update_row_cb(bitmap, cliprect, ma, ra, y, m_horiz_disp, cursor_x, de, hbp, vbp);
r250244r250245
954954   }
955955
956956   /* 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)
958958      m_current_disp_addr = (m_current_disp_addr + m_horiz_disp) & 0x3fff;
959959
960960   return ra;
r250244r250245
10641064   m_line_address = 0;
10651065   m_current_disp_addr = 0;
10661066   m_disp_start_addr = 0;
1067   m_noninterlace_adjust = 1;
1068   m_interlace_adjust = 1;
10671069
10681070   save_item(NAME(m_show_border_area));
10691071   save_item(NAME(m_visarea_adjust_min_x));
r250244r250245
11731175   m_supports_status_reg_d6 = false;
11741176   m_supports_status_reg_d7 = false;
11751177   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;
11761183}
11771184
11781185
trunk/src/devices/video/mc6845.h
r250244r250245
167167   void set_hpixels_per_column(int hpixels_per_column);
168168
169169   /* updates the screen -- this will call begin_update(),
170      followed by update_row() reapeatedly and after all row
170      followed by update_row() repeatedly and after all row
171171      updating is complete, end_update() */
172172   UINT32 screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
173173
r250244r250245
283283    ************************/
284284
285285   bool m_show_border_area;        /* visible screen area (false) active display (true) active display + blanking */
286   int m_interlace_adjust; /* adjust max ras in interlace mode */
286   int m_noninterlace_adjust;      /* adjust max ras in non-interlace mode */
287   int m_interlace_adjust;         /* adjust max ras in interlace mode */
287288
288289   /* visible screen area adjustment */
289290   int m_visarea_adjust_min_x;
r250244r250245
314315    * vblank/hblank timing not supported yet! */
315316   mc6845_on_update_addr_changed_delegate m_on_update_addr_changed_cb;
316317
317   /* if specified, this gets called for every change of the disply enable pin (pin 18) */
318   /* if specified, this gets called for every change of the display enable pin (pin 18) */
318319   devcb_write_line            m_out_de_cb;
319320
320321   /* if specified, this gets called for every change of the cursor pin (pin 19) */
trunk/src/devices/video/saa5050.cpp
r250244r250245
1212
1313    TODO:
1414
15    - interlace, use CRS to output odd/even fields
1516    - remote controller input
1617    - boxing
1718
r250244r250245
535536      m_ra++;
536537      m_ra %= 20;
537538
538      if (m_ra == 19)
539      if (!m_ra)
539540      {
540541         if (m_double_height_bottom_row)
541542            m_double_height_bottom_row = false;
trunk/src/mame/drivers/apricot.cpp
r250244r250245
401401   MCFG_PALETTE_ADD_MONOCHROME_GREEN_HIGHLIGHT("palette")
402402
403403   MCFG_MC6845_ADD("ic30", MC6845, "screen", XTAL_15MHz / 10)
404   MCFG_MC6845_INTERLACE_ADJUST(1)
404   MCFG_MC6845_INTERLACE_ADJUST(2)
405405   MCFG_MC6845_SHOW_BORDER_AREA(false)
406406   MCFG_MC6845_CHAR_WIDTH(10)
407407   MCFG_MC6845_UPDATE_ROW_CB(apricot_state, crtc_update_row)
trunk/src/mame/drivers/bbc.cpp
r250244r250245
3030    ARM1  - ARM Evaluation System
3131    ADB20 - Master Compact
3232
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
3339******************************************************************************/
3440
3541/* Core includes */
r250244r250245
136142   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                                     /*    8000-bfff                 Paged ROM                       */
137143   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                                              /*    c000-fbff                 OS ROM                          */
138144   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)
142148   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
143149   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
144150   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
145151   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               */
148154   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              */
150156   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
151157   AM_RANGE(0xfe60, 0xfe7f) AM_NOP                                                                             /*    fe60-fe7f  6522 VIA       # USER VIA                      */
152158   AM_RANGE(0xfe80, 0xfe9f) AM_NOP                                                                             /*    fe80-fe9f  8271/1770 FDC  # Floppy disc controller        */
r250244r250245
162168
163169   AM_RANGE(0xc000, 0xfbff) AM_READ_BANK("bank7")                                                              /*    c000-fbff                 OS ROM                          */
164170   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)
168174   AM_RANGE(0xfe08, 0xfe08) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, status_r, control_w)  /*    fe08-fe0F  6850 ACIA      Serial controller               */
169175   AM_RANGE(0xfe09, 0xfe09) AM_MIRROR(0x06) AM_DEVREADWRITE("acia6850", acia6850_device, data_r, data_w)
170176   AM_RANGE(0xfe10, 0xfe17) AM_READWRITE(bbc_fe_r, bbc_SerialULA_w)                                            /*    fe10-fe17  Serial ULA     Serial system chip              */
171177   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               */
174180   AM_RANGE(0xfe40, 0xfe5f) AM_DEVREADWRITE("via6522_0", via6522_device, read, write)                          /*    fe40-fe5f  6522 VIA       SYSTEM VIA                      */
175181   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          */
177183   AM_RANGE(0xfea0, 0xfebf) AM_READ(bbc_fe_r)                                                                  /*    fea0-febf  68B54 ADLC     ECONET controller               */
178184   AM_RANGE(0xfec0, 0xfedf) AM_DEVREADWRITE("upd7002", upd7002_device, read, write)                            /*    fec0-fedf  uPD7002        Analogue to digital converter   */
179185   AM_RANGE(0xfee0, 0xfeff) AM_READ(bbc_fe_r)                                                                  /*    fee0-feff  Tube ULA       Tube system interface           */
r250244r250245
186192   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
187193   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
188194   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              */
190196   AM_RANGE(0xfe80, 0xfe83) AM_DEVICE("i8271", i8271_device, map)                              /*    fe80-fe83  8271 FDC       Floppy disc controller          */
191197   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("i8271", i8271_device, data_r, data_w)             /*    fe84-fe9f  8271 FDC       Floppy disc controller          */
192198   AM_IMPORT_FROM(bbc_base)
r250244r250245
198204   AM_RANGE(0x4000, 0x7fff) AM_READ_BANK("bank3") AM_WRITE(bbc_memoryb3_w)                     /*    4000-7fff                 Regular Ram                     */
199205   AM_RANGE(0x8000, 0xbfff) AM_READ_BANK("bank4") AM_WRITE(bbc_memoryb4_w)                     /*    8000-bfff                 Paged ROM                       */
200206   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              */
202208   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
203209   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
204210   AM_IMPORT_FROM(bbc_base)
r250244r250245
211217   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
212218   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6")                                              /*    b000-bfff                 Rest of paged ROM area          */
213219   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              */
215221   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
216222   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
217223   AM_IMPORT_FROM(bbc_base)
r250244r250245
224230   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_128_w)                /*    8000-afff                 Paged ROM or 12K of SWRAM       */
225231   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6") AM_WRITE(bbc_memorybp6_128_w)                /*    b000-bfff                 Rest of paged ROM area          */
226232   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              */
228234   AM_RANGE(0xfe80, 0xfe83) AM_WRITE(bbc_wd1770_status_w)                                      /*    fe80-fe83  1770 FDC       Drive control register          */
229235   AM_RANGE(0xfe84, 0xfe9f) AM_DEVREADWRITE("wd1770", wd1770_t, read, write)                   /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
230236   AM_IMPORT_FROM(bbc_base)
r250244r250245
237243   AM_RANGE(0x8000, 0xafff) AM_READ_BANK("bank4") AM_WRITE(bbc_memorybp4_w)                    /*    8000-afff                 Paged ROM or 12K of SWRAM       */
238244   AM_RANGE(0xb000, 0xbfff) AM_READ_BANK("bank6")                                              /*    b000-bfff                 Rest of paged ROM area          */
239245   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              */
241247   AM_RANGE(0xfe80, 0xfe83) AM_NOP                                                             /*    fe80-fe83  1770 FDC       Drive control register          */
242248   AM_RANGE(0xfe84, 0xfe9f) AM_NOP                                                             /*    fe84-fe9f  1770 FDC       Floppy disc controller          */
243249   AM_IMPORT_FROM(bbc_base)
r250244r250245
758764
759765   /* video hardware */
760766   MCFG_SCREEN_ADD("screen", RASTER)
767   //MCFG_SCREEN_RAW_PARAMS( XTAL_17_73447MHz / 4, 1024, 80, 80 + 640 + 48, 625, 12, 12 + 256 + 13 )
761768   MCFG_SCREEN_SIZE(640, 256)
762769   MCFG_SCREEN_VISIBLE_AREA(0, 640-1, 0, 256-1)
763770   MCFG_SCREEN_REFRESH_RATE(50)
764771   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)
766773
767774   MCFG_PALETTE_ADD("palette", 16)
768775   MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
r250244r250245
771778   MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
772779
773780   /* crtc */
774   MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000)
781   MCFG_MC6845_ADD("hd6845", HD6845, "screen", 2000000)
775782   MCFG_MC6845_SHOW_BORDER_AREA(false)
776783   MCFG_MC6845_CHAR_WIDTH(12)
777784   MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row)
r250244r250245
875882   /* software lists */
876883   MCFG_SOFTWARE_LIST_ADD("cass_ls_b", "bbcb_cass")
877884   MCFG_SOFTWARE_LIST_ADD("flop_ls_b", "bbcb_flop")
885   //MCFG_SOFTWARE_LIST_ADD("flop_ls_b_orig", "bbcb_orig_flop")
878886   MCFG_SOFTWARE_LIST_ADD("flop_ls_z80", "bbc_z80_flop")
879887   MCFG_SOFTWARE_LIST_ADD("flop_ls_32016", "bbc_32016_flop")
880888MACHINE_CONFIG_END
r250244r250245
970978   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
971979   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
972980   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
981   //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
973982   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
974983MACHINE_CONFIG_END
975984
r250244r250245
990999   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
9911000   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
9921001   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1002   //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
9931003   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
9941004MACHINE_CONFIG_END
9951005
r250244r250245
10411051   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
10421052   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
10431053   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1054   //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
10441055   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
10451056   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
10461057MACHINE_CONFIG_END
r250244r250245
10771088   MCFG_SCREEN_VBLANK_TIME(ATTOSECONDS_IN_USEC(128))
10781089   MCFG_SCREEN_SIZE(640, 256)
10791090   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
10811093   MCFG_PALETTE_ADD("palette", 16)
10821094   MCFG_PALETTE_INIT_OWNER(bbc_state,bbc)
10831095
r250244r250245
10851097   MCFG_SAA5050_SCREEN_SIZE(40, 25, 40)
10861098
10871099   /* crtc */
1088   MCFG_MC6845_ADD("mc6845", MC6845, "screen", 2000000)
1100   MCFG_MC6845_ADD("hd6845", HD6845, "screen", 2000000)
10891101   MCFG_MC6845_SHOW_BORDER_AREA(false)
10901102   MCFG_MC6845_CHAR_WIDTH(12)
10911103   MCFG_MC6845_UPDATE_ROW_CB(bbc_state, crtc_update_row)
r250244r250245
11281140   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_a", "bbca_cass")
11291141   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("cass_ls_b", "bbcb_cass")
11301142   MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b", "bbcb_flop")
1143   //MCFG_SOFTWARE_LIST_COMPATIBLE_ADD("flop_ls_b_orig", "bbcb_orig_flop")
11311144
11321145   /* acia */
11331146   MCFG_DEVICE_ADD("acia6850", ACIA6850, 0)
r250244r250245
12171230   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
12181231   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m")
12191232   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1233   //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
12201234   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
12211235   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
12221236
r250244r250245
12781292   /* eeprom pcd8572 */
12791293   //MCFG_DEVICE_REMOVE("rtc")
12801294
1295   MCFG_MACHINE_START_OVERRIDE(bbc_state, bbcmc)
1296   MCFG_MACHINE_RESET_OVERRIDE(bbc_state, bbcmc)
1297
12811298   /* software lists */
12821299   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_m")
12831300   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_a")
12841301   MCFG_SOFTWARE_LIST_REMOVE("cass_ls_b")
12851302   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_m")
12861303   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b")
1304   //MCFG_SOFTWARE_LIST_REMOVE("flop_ls_b_orig")
12871305   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_z80")
12881306   MCFG_SOFTWARE_LIST_REMOVE("flop_ls_32016")
12891307   MCFG_SOFTWARE_LIST_REMOVE("cart_ls_m")
trunk/src/mame/drivers/namcos23.cpp
r250244r250245
33773377INPUT_PORTS_END
33783378
33793379
3380static INPUT_PORTS_START( downhill )
3381   PORT_START("P1")
3382   PORT_BIT( 0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN )
33833380
3384   PORT_START("P2")
3385   PORT_BIT( 0xfff, IP_ACTIVE_LOW, IPT_UNKNOWN )
33863381
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)
33953382
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 ) )
3426INPUT_PORTS_END
3427
3428
34293383/***************************************************************************
34303384
34313385  Machine Drivers
r250244r250245
51275081GAME( 1997, rapidrvrv2c, rapidrvr, gorgon,      rapidrvr,  namcos23_state, s23, ROT0, "Namco", "Rapid River (RD2 Ver. C)",     GAME_FLAGS ) // 97/11/27, Europe
51285082GAME( 1997, rapidrvrp,   rapidrvr, gorgon,      rapidrvrp, namcos23_state, s23, ROT0, "Namco", "Rapid River (prototype)",      GAME_FLAGS ) // 97/11/10, USA
51295083GAME( 1997, finfurl,     0,        gorgon,      finfurl,   namcos23_state, s23, ROT0, "Namco", "Final Furlong (FF2 Ver. A)",   GAME_FLAGS )
5130GAME( 1997, downhill,    0,        s23,         downhill,  namcos23_state, s23, ROT0, "Namco", "Downhill Bikers (DH3 Ver. A)", GAME_FLAGS )
5084GAME( 1997, downhill,    0,        s23,         s23,       namcos23_state, s23, ROT0, "Namco", "Downhill Bikers (DH3 Ver. A)", GAME_FLAGS )
51315085GAME( 1997, motoxgo,     0,        s23,         s23,       namcos23_state, s23, ROT0, "Namco", "Motocross Go! (MG3 Ver. A)",   GAME_FLAGS )
51325086GAME( 1997, motoxgov2a,  motoxgo,  s23,         s23,       namcos23_state, s23, ROT0, "Namco", "Motocross Go! (MG2 Ver. A)",   GAME_FLAGS )
51335087GAME( 1997, motoxgov1a,  motoxgo,  s23,         s23,       namcos23_state, s23, ROT0, "Namco", "Motocross Go! (MG1 Ver. A, set 1)", GAME_FLAGS )
trunk/src/mame/includes/bbc.h
r250244r250245
3434
3535#define RS232_TAG       "rs232"
3636
37enum machine_type_t
38{
39   MODELA,
40   MODELB,
41   BPLUS,
42   MASTER,
43   COMPACT
44};
45
3746class bbc_state : public driver_device
3847{
3948public:
r250244r250245
4150      driver_device(mconfig, type, tag),
4251      m_maincpu(*this, "maincpu"),
4352      m_ram(*this, RAM_TAG),
44      m_mc6845(*this, "mc6845"),
53      m_hd6845(*this, "hd6845"),
4554      m_adlc(*this, "mc6854"),
4655      m_sn(*this, "sn76489"),
4756      m_trom(*this, "saa5050"),
r250244r250245
137146   DECLARE_MACHINE_RESET(bbcm);
138147   DECLARE_VIDEO_START(bbcm);
139148
149   DECLARE_MACHINE_START(bbcmc);
150   DECLARE_MACHINE_RESET(bbcmc);
151
140152   DECLARE_PALETTE_INIT(bbc);
141153   UINT32 screen_update_bbc(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
142154   INTERRUPT_GEN_MEMBER(bbcb_vsync);
r250244r250245
190202private:
191203   required_device<cpu_device> m_maincpu;
192204   required_device<ram_device> m_ram;
193   required_device<mc6845_device> m_mc6845;
205   required_device<hd6845_device> m_hd6845;
194206   optional_device<mc6854_device> m_adlc;
195207   optional_device<sn76489_device> m_sn;
196208public: // HACK FOR MC6845
r250244r250245
227239
228240   void check_interrupts();
229241
242   machine_type_t m_machinetype;
243
230244   bool m_os01;            // flag indicating whether OS 0.1 is being used
231245   int m_SWRAMtype;        // this stores the DIP switch setting for the SWRAM type being used
232246   int m_Speech;           // this stores the CONF setting for Speech enabled/disabled
trunk/src/mame/machine/bbc.cpp
r250244r250245
551551   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
552552   {
553553      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);
556556      if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) return m_acia ? m_acia->status_r(space, myo-0x08) : 0xfe;       /* Serial controller */
557557      if ((myo>=0x09) && (myo<=0x0f) && (myo & 1))      return m_acia ? m_acia->data_r(space, myo-0x09) : 0xfe;
558558      if ((myo>=0x10) && (myo<=0x17))                   return 0xfe;                                                    /* Serial System Chip */
r250244r250245
569569      if ((myo>=0x60) && (myo<=0x7f))                   return m_via6522_1 ? m_via6522_1->read(space, myo-0x60) : 0xfe;
570570      if ((myo>=0x80) && (myo<=0x9f))                   return 0xfe;
571571      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;
574574   }
575575   return 0xfe;
576576}
r250244r250245
582582   if ((offset>=0x200) && (offset<=0x2ff)) /* SHEILA */
583583   {
584584      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);
587587      if ((myo>=0x08) && (myo<=0x0e) && (myo+0x01) & 1) if (m_acia) m_acia->control_w(space, myo-0x08, data);           /* Serial controller */
588588      if ((myo>=0x09) && (myo<=0x0f) && (myo & 1))      if (m_acia) m_acia->data_w(space, myo-0x09, data);
589589      if ((myo>=0x10) && (myo<=0x17))                   bbc_SerialULA_w(space, myo-0x10, data);                         /* Serial System Chip */
r250244r250245
893893         }
894894         break;
895895      case 1:
896         if (m_rtc && m_MC146818_WR == 0)
896         if (m_machinetype == MASTER && m_MC146818_WR == 0)
897897         {
898898            /* BBC Master has NVRAM Here */
899899            m_MC146818_WR = 1;
r250244r250245
911911         }
912912         break;
913913      case 2:
914         if (m_rtc && m_MC146818_DS == 0)
914         if (m_machinetype == MASTER && m_MC146818_DS == 0)
915915         {
916916            /* BBC Master has NVRAM Here */
917917            m_MC146818_DS = 1;
r250244r250245
976976         }
977977         break;
978978      case 1:
979         if (m_rtc && m_MC146818_WR == 1)
979         if (m_machinetype == MASTER && m_MC146818_WR == 1)
980980         {
981981            /* BBC Master has NVRAM Here */
982982            m_MC146818_WR = 0;
r250244r250245
994994         }
995995         break;
996996      case 2:
997         if (m_rtc && m_MC146818_DS == 1)
997         if (m_machinetype == MASTER && m_MC146818_DS == 1)
998998         {
999999            /* BBC Master has NVRAM Here */
10001000            m_MC146818_DS = 0;
r250244r250245
10511051   }
10521052
10531053
1054   if (m_rtc)
1054   if (m_machinetype == MASTER)
10551055   {
10561056      //set the Address Select
10571057      if (m_MC146818_AS != BIT(data,7))
r250244r250245
17201720
17211721MACHINE_START_MEMBER(bbc_state, bbca)
17221722{
1723   m_machinetype = MODELA;
17231724   bbc_setup_banks(m_bank4, 4, 0, 0x4000);
17241725}
17251726
r250244r250245
17491750
17501751MACHINE_START_MEMBER(bbc_state, bbcb)
17511752{
1753   m_machinetype = MODELB;
17521754   m_mc6850_clock = 0;
17531755   bbc_setup_banks(m_bank4, 16, 0, 0x4000);
17541756}
r250244r250245
17711773
17721774MACHINE_START_MEMBER(bbc_state, bbcbp)
17731775{
1776   m_machinetype = BPLUS;
17741777   m_mc6850_clock = 0;
17751778
17761779   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcbp_direct_handler), this));
r250244r250245
17951798
17961799MACHINE_START_MEMBER(bbc_state, bbcm)
17971800{
1801   m_machinetype = MASTER;
17981802   m_mc6850_clock = 0;
17991803
18001804   m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(bbc_state::bbcm_direct_handler), this));
r250244r250245
18181822
18191823   bbcb_IC32_initialise(this);
18201824}
1825
1826
1827MACHINE_START_MEMBER(bbc_state, bbcmc)
1828{
1829   MACHINE_START_CALL_MEMBER(bbcm);
1830
1831   m_machinetype = COMPACT;
1832}
1833
1834MACHINE_RESET_MEMBER(bbc_state, bbcmc)
1835{
1836   MACHINE_RESET_CALL_MEMBER(bbcm);
1837}
No newline at end of file
trunk/src/mame/video/bbc.cpp
r250244r250245
7676   if (BIT(ma,13))
7777   {
7878      // IC 10 and IC 11
79      m = ((ma&0x3ff) | 0x3c00) | ((s&0x8)<<11);
79      m = ((ma & 0x3ff) | 0x3c00) | ((s & 0x8)<<11);
8080   } else {
8181      // IC 8 and IC 9
82      m = ((ma&0xff)<<3) | (s<<11) | (ra&0x7);
82      m = ((ma & 0xff)<<3) | (s<<11) | (ra & 0x7);
8383   }
8484   if (m_memorySize == 16)
8585      return  m & 0x3fff;
r250244r250245
144144   // Set the control register in the Video ULA
145145   case 0:
146146      m_videoULA_Reg = data;
147      m_videoULA_master_cursor_size     = (m_videoULA_Reg>>7)&0x01;
147      m_videoULA_master_cursor_size     = BIT(m_videoULA_Reg,7);
148148      m_videoULA_width_of_cursor        = (m_videoULA_Reg>>5)&0x03;
149      m_videoULA_6845_clock_rate        = (m_videoULA_Reg>>4)&0x01;
149      m_videoULA_6845_clock_rate        = BIT(m_videoULA_Reg,4);
150150      m_videoULA_characters_per_line    = (m_videoULA_Reg>>2)&0x03;
151      m_videoULA_teletext_normal_select = (m_videoULA_Reg>>1)&0x01;
152      m_videoULA_flash_colour_select    =  m_videoULA_Reg    &0x01;
151      m_videoULA_teletext_normal_select = BIT(m_videoULA_Reg,1);
152      m_videoULA_flash_colour_select    = BIT(m_videoULA_Reg,0);
153153
154154      m_videoULA_palette_lookup = m_videoULA_flash_colour_select ? m_videoULA_palette0 : m_videoULA_palette1;
155155
r250244r250245
161161      else
162162         m_pixels_per_byte = pixels_per_byte_set[m_videoULA_characters_per_line | (m_videoULA_6845_clock_rate<<2)];
163163
164      m_mc6845->set_hpixels_per_column(m_pixels_per_byte);
164      m_hd6845->set_hpixels_per_column(m_pixels_per_byte);
165165      if (m_videoULA_6845_clock_rate)
166         m_mc6845->set_clock(XTAL_16MHz/8);
166         m_hd6845->set_clock(XTAL_16MHz/8);
167167      else
168         m_mc6845->set_clock(XTAL_16MHz/16);
168         m_hd6845->set_clock(XTAL_16MHz/16);
169169      break;
170170   // Set a palette register in the Video ULA
171171   case 1:
172      int tpal = (data >> 4)&0x0f;
173      int tcol = data&0x0f;
172      int tpal = (data >> 4) & 0x0f;
173      int tcol = data & 0x0f;
174174      m_videoULA_palette0[tpal] = tcol;
175175      m_videoULA_palette1[tpal] = tcol<8 ? tcol : tcol^7;
176176      break;
r250244r250245
226226            bitmap.pix32(y, (x_pos*m_pixels_per_byte)+pixelno) = rgb;
227227         }
228228      }
229
230      if (ra == 18)
231      {
232         m_trom->lose_w(1);
233         m_trom->lose_w(0);
234      }
235229   }
236230   else
237231   {


Previous 199869 Revisions Next


© 1997-2024 The MAME Team