trunk/src/devices/video/ef9364.cpp
| r253199 | r253200 | |
| 125 | 125 | |
| 126 | 126 | m_screen_out.allocate( bitplane_xres, m_screen->height() ); |
| 127 | 127 | |
| 128 | cursor_cnt = 0; |
| 129 | cursor_state = 0; |
| 130 | |
| 128 | 131 | save_item(NAME(m_border)); |
| 129 | 132 | |
| 130 | 133 | save_item(NAME(m_screen_out)); |
| r253199 | r253200 | |
| 199 | 202 | { |
| 200 | 203 | for( x = 0 ; x < EF9364_NB_OF_COLUMNS * 8 ; x++ ) |
| 201 | 204 | { |
| 202 | | c = m_textram->read_byte( ( r * EF9364_NB_OF_COLUMNS ) + ( x>>3 ) ); |
| 205 | if( ( ( x >> 3 ) != x_curs_pos ) || ( r != y_curs_pos ) || !cursor_state) |
| 206 | { |
| 207 | c = m_textram->read_byte( ( r * EF9364_NB_OF_COLUMNS ) + ( x>>3 ) ); |
| 203 | 208 | |
| 204 | | if( m_charset->u8(((c&0x7F)<<3) + y ) & (0x80>>(x&7)) ) |
| 205 | | m_screen_out.pix32((r*12)+y, x) = palette[1]; |
| 209 | if( m_charset->u8(((c&0x7F)<<3) + y ) & (0x80>>(x&7)) ) |
| 210 | m_screen_out.pix32((r*12)+y, x) = palette[1]; |
| 211 | else |
| 212 | m_screen_out.pix32((r*12)+y, x) = palette[0]; |
| 213 | } |
| 206 | 214 | else |
| 207 | | m_screen_out.pix32((r*12)+y, x) = palette[0]; |
| 215 | { |
| 216 | if(y != 7) |
| 217 | m_screen_out.pix32((r*12)+y, x) = palette[0]; |
| 218 | else |
| 219 | m_screen_out.pix32((r*12)+y, x) = palette[1]; |
| 220 | } |
| 208 | 221 | } |
| 209 | 222 | } |
| 210 | 223 | } |
| 211 | 224 | |
| 225 | cursor_cnt = (cursor_cnt + 1) % 13; |
| 226 | if(!cursor_cnt) |
| 227 | cursor_state ^= 1; |
| 228 | |
| 212 | 229 | copybitmap(bitmap, m_screen_out, 0, 0, 0, 0, cliprect); |
| 213 | 230 | return 0; |
| 214 | 231 | } |
| r253199 | r253200 | |
| 240 | 257 | |
| 241 | 258 | switch( cmd&7 ) |
| 242 | 259 | { |
| 243 | | case 0x0: // Page Erase ² Cursor hiom |
| 260 | case 0x0: // Page Erase & Cursor home |
| 244 | 261 | for( y=0 ; y < EF9364_NB_OF_ROWS ; y++ ) |
| 245 | 262 | { |
| 246 | 263 | for( x=0 ; x < EF9364_NB_OF_COLUMNS ; x++ ) |
| r253199 | r253200 | |
| 313 | 330 | x_curs_pos=0; |
| 314 | 331 | y_curs_pos++; |
| 315 | 332 | if( y_curs_pos >= EF9364_NB_OF_ROWS ) |
| 333 | { |
| 334 | // Scroll |
| 335 | for( j = 1 ; j < EF9364_NB_OF_ROWS ; j++ ) |
| 336 | { |
| 337 | for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ ) |
| 338 | { |
| 339 | m_textram->write_byte ( (j-1) * EF9364_NB_OF_COLUMNS + i , m_textram->read_byte ( j * EF9364_NB_OF_COLUMNS + i ) ); |
| 340 | } |
| 341 | } |
| 342 | // Erase last line |
| 343 | for( i = 0 ; i < EF9364_NB_OF_COLUMNS ; i++ ) |
| 344 | { |
| 345 | m_textram->write_byte ( ( EF9364_NB_OF_ROWS - 1 ) * EF9364_NB_OF_COLUMNS + i , 0x7F ); |
| 346 | } |
| 347 | |
| 316 | 348 | y_curs_pos = EF9364_NB_OF_ROWS - 1; |
| 349 | } |
| 317 | 350 | } |
| 318 | 351 | break; |
| 319 | 352 | |