trunk/src/emu/video/ef9340_1.c
| r20419 | r20420 | |
| 186 | 186 | switch ( m_ef9340.M & 0xE0 ) |
| 187 | 187 | { |
| 188 | 188 | case 0x00: /* Write */ |
| 189 | logerror("%d,%d = %02x, %02x\n", m_ef9340.X, m_ef9340.Y, m_ef9341.TB, m_ef9341.TA); |
| 189 | 190 | m_ef934x_ram_a[addr] = m_ef9341.TA; |
| 190 | 191 | m_ef934x_ram_b[addr] = m_ef9341.TB; |
| 191 | 192 | ef9340_inc_c(); |
| r20419 | r20420 | |
| 209 | 210 | |
| 210 | 211 | case 0x80: /* Write slice */ |
| 211 | 212 | { |
| 213 | UINT8 a = m_ef934x_ram_a[addr]; |
| 212 | 214 | UINT8 b = m_ef934x_ram_b[addr]; |
| 213 | 215 | UINT8 slice = ( m_ef9340.M & 0x0f ) % 10; |
| 214 | 216 | |
| r20419 | r20420 | |
| 216 | 218 | if ( b >= 0xa0 ) |
| 217 | 219 | { |
| 218 | 220 | logerror("write slice external ram %04x\n", external_chargen_address(b,slice)); |
| 219 | | m_ef934x_ext_char_ram[ external_chargen_address( b, slice ) ] = BITSWAP8(m_ef9341.TA,0,1,2,3,4,5,6,7); |
| 221 | m_ef934x_ext_char_ram[ ( ( a & 0x80 ) << 3 ) | external_chargen_address( b, slice ) ] = BITSWAP8(m_ef9341.TA,0,1,2,3,4,5,6,7); |
| 220 | 222 | } |
| 221 | 223 | |
| 222 | 224 | // Increment slice number |
| r20419 | r20420 | |
| 323 | 325 | if ( b & 0x60 ) |
| 324 | 326 | { |
| 325 | 327 | // Extension |
| 326 | | char_data = m_ef934x_ext_char_ram[ external_chargen_address( b & 0x7f, slice ) ]; |
| 328 | char_data = m_ef934x_ext_char_ram[ 0x400 | external_chargen_address( b & 0x7f, slice ) ]; |
| 327 | 329 | fg = bgr2rgb[ a & 0x07 ]; |
| 328 | 330 | bg = bgr2rgb[ ( a >> 4 ) & 0x07 ]; |
| 329 | 331 | } |
| r20419 | r20420 | |
| 345 | 347 | { |
| 346 | 348 | // Extension |
| 347 | 349 | char_data = m_ef934x_ext_char_ram[ external_chargen_address( b & 0x7f, slice ) ]; |
| 348 | | fg = bgr2rgb[ a & 0x07 ]; |
| 350 | |
| 351 | if ( a & 0x40 ) |
| 352 | { |
| 353 | fg = bg; |
| 354 | bg = bgr2rgb[ a & 0x07 ]; |
| 355 | } |
| 356 | else |
| 357 | { |
| 358 | fg = bgr2rgb[ a & 0x07 ]; |
| 359 | } |
| 349 | 360 | } |
| 350 | 361 | else |
| 351 | 362 | { |
| 352 | 363 | // DEL |
| 364 | char_data = 0xff; |
| 365 | fg = bgr2rgb[ a & 0x07 ]; |
| 353 | 366 | } |
| 354 | 367 | } |
| 355 | 368 | else |
| 356 | 369 | { |
| 357 | 370 | // Normal |
| 358 | 371 | char_data = ef9341_char_set[0][b & 0x7f][slice]; |
| 359 | | fg = bgr2rgb[ a & 0x07 ]; |
| 372 | |
| 373 | if ( a & 0x40 ) |
| 374 | { |
| 375 | fg = bg; |
| 376 | bg = bgr2rgb[ a & 0x07 ]; |
| 377 | } |
| 378 | else |
| 379 | { |
| 380 | fg = bgr2rgb[ a & 0x07 ]; |
| 381 | } |
| 360 | 382 | } |
| 361 | 383 | } |
| 362 | 384 | |