Previous 15994 Revisions Next

r9909 Monday 3rd January, 2011 at 20:38:28 UTC by Wilbert Pol
[OSBEXEC] Added simple support for special attribute bits copying when copying normal vram data.
[src/mess/drivers]osbexec.c

src/mess/drivers/osbexec.c
r9908r9909
4747   UINT8   *fontram;
4848   UINT8   *vram;
4949   UINT8   *ram_0000;
50   UINT8   *ram_c000;
51   UINT8   temp_attr;
5052   emu_timer *video_timer;
5153
5254   /* PIA 0 (UD12) */
r9908r9909
7375      memory_set_bankptr( machine, "0000", ram_0000 + 0x0000 );
7476      memory_set_bankptr( machine, "2000", ram_0000 + 0x2000 );
7577      memory_set_bankptr( machine, "4000", ram_0000 + 0x4000 );
76      memory_set_bankptr( machine, "c000", ram_0000 + 0xc000 );
78      ram_c000 = ram_0000 + 0xc000;
7779      memory_set_bankptr( machine, "e000", ram_0000 + 0xe000 );
7880
7981      if ( pia0_porta & 0x80 )
r9908r9909
8486      }
8587
8688      if ( pia0_porta & 0x40 )
87         memory_set_bankptr(machine, "c000", vram_region->base() );
89         ram_c000 = vram_region->base();
8890   }
8991
9092   void update_irq_state(running_machine *machine)
r9908r9909
114116}
115117
116118
119static READ8_HANDLER( osbexec_c000_r )
120{
121   osbexec_state *state = space->machine->driver_data<osbexec_state>();
122   UINT8   data = state->ram_c000[offset];
123
124   if ( ( state->pia0_porta & 0x40 ) && offset < 0x1000 )
125   {
126      state->temp_attr = state->ram_c000[ 0x1000 + offset ];
127   }
128
129   return data;
130}
131
132
133static WRITE8_HANDLER( osbexec_c000_w )
134{
135   osbexec_state *state = space->machine->driver_data<osbexec_state>();
136
137   state->ram_c000[offset] = data;
138
139   if ( ( state->pia0_porta & 0x40 ) && offset < 0x1000 )
140   {
141      state->ram_c000[ 0x1000 + offset ] = state->temp_attr;
142   }
143}
144
145
117146static READ8_HANDLER( osbexec_kbd_r )
118147{
119148   UINT8 data = 0xFF;
r9908r9909
158187   AM_RANGE( 0x0000, 0x1FFF ) AM_READ_BANK("0000") AM_WRITE( osbexec_0000_w )   /* ROM and maybe also banked ram */
159188   AM_RANGE( 0x2000, 0x3FFF ) AM_RAMBANK("2000")                        /* Banked RAM */
160189   AM_RANGE( 0x4000, 0xBFFF ) AM_RAMBANK("4000")                        /* Banked RAM */
161   AM_RANGE( 0xC000, 0xDFFF ) AM_RAMBANK("c000")                        /* Video ram / Banked RAM */
190   AM_RANGE( 0xC000, 0xDFFF ) AM_READWRITE( osbexec_c000_r, osbexec_c000_w )   /* Video ram / Banked RAM */
162191   AM_RANGE( 0xE000, 0xEFFF ) AM_RAMBANK("e000")                        /* Banked RAM */
163192   AM_RANGE( 0xF000, 0xFFFF ) AM_RAM                                 /* 4KB of non-banked RAM for system stack etc */
164193ADDRESS_MAP_END

Previous 15994 Revisions Next


© 1998-2018 The MESS Team