src/mess/video/abc1600.c
| r10704 | r10705 | |
| 165 | 165 | |
| 166 | 166 | UINT8 data = 0; |
| 167 | 167 | |
| 168 | // monitor orientation (portrait/landscape) |
| 169 | // data |= 0x02; |
| 170 | |
| 168 | 171 | // vertical sync |
| 169 | 172 | data |= m_vs << 6; |
| 170 | 173 | |
| r10704 | r10705 | |
| 379 | 382 | //************************************************************************** |
| 380 | 383 | |
| 381 | 384 | //------------------------------------------------- |
| 385 | // get_drmsk - |
| 386 | //------------------------------------------------- |
| 387 | |
| 388 | inline UINT16 abc1600_state::get_drmsk(UINT8 sh, int udx) |
| 389 | { |
| 390 | /* |
| 391 | |
| 392 | bit description |
| 393 | |
| 394 | A0 SH0 |
| 395 | A1 SH1 |
| 396 | A2 SH2 |
| 397 | A3 SH3 |
| 398 | A4 U/_D X |
| 399 | |
| 400 | */ |
| 401 | |
| 402 | UINT16 drmsk_addr = (udx << 4) | (sh & 0x0f); |
| 403 | UINT8 drmskl = m_drmsk_rom[drmsk_addr]; |
| 404 | UINT8 drmskh = m_drmsk_rom[drmsk_addr + 0x20]; |
| 405 | UINT16 drmsk = (drmskh << 8) | drmskl; |
| 406 | |
| 407 | return drmsk; |
| 408 | } |
| 409 | |
| 410 | |
| 411 | //------------------------------------------------- |
| 412 | // get_shinf - |
| 413 | //------------------------------------------------- |
| 414 | |
| 415 | inline UINT8 abc1600_state::get_shinf(UINT8 xfrom, UINT8 xto, int udx) |
| 416 | { |
| 417 | /* |
| 418 | |
| 419 | bit description |
| 420 | |
| 421 | A0 XFROM0 |
| 422 | A1 XFROM1 |
| 423 | A2 XFROM2 |
| 424 | A3 XFROM3 |
| 425 | A4 XTO0 |
| 426 | A5 XTO1 |
| 427 | A6 XTO2 |
| 428 | A7 XTO3 |
| 429 | A8 U/_D X |
| 430 | |
| 431 | */ |
| 432 | |
| 433 | UINT16 shinf_addr = (udx << 8) | ((xto & 0x0f) << 4) | (xfrom & 0x0f); |
| 434 | |
| 435 | return m_shinf_rom[shinf_addr]; |
| 436 | } |
| 437 | |
| 438 | |
| 439 | //------------------------------------------------- |
| 440 | // get_wrmsk - get mover write mask |
| 441 | //------------------------------------------------- |
| 442 | |
| 443 | inline UINT16 abc1600_state::get_wrmsk(UINT8 xto, UINT8 xsize, int udx, int cmc, int wrms0, int wrms1) |
| 444 | { |
| 445 | /* |
| 446 | |
| 447 | bit description |
| 448 | |
| 449 | A0 XTO0 |
| 450 | A1 XTO1 |
| 451 | A2 XTO2 |
| 452 | A3 XTO3 |
| 453 | A4 XSIZE0 |
| 454 | A5 XSIZE1 |
| 455 | A6 XSIZE2 |
| 456 | A7 XSIZE3 |
| 457 | A8 U/_D X |
| 458 | A9 CMC |
| 459 | A10 WRMS0 |
| 460 | A11 WRMS1 |
| 461 | |
| 462 | */ |
| 463 | |
| 464 | UINT16 wrmsk_addr = (wrms1 << 11) | (wrms0 << 10) | (cmc << 9) | (udx << 8) | ((xsize & 0x0f) << 4) | (xto & 0x0f); |
| 465 | UINT8 wrmskl = m_wrmsk_rom[wrmsk_addr]; |
| 466 | UINT8 wrmskh = m_wrmsk_rom[wrmsk_addr + 0x1000]; |
| 467 | UINT16 wrmsk = (wrmskh << 8) | wrmskl; |
| 468 | |
| 469 | return wrmsk; |
| 470 | } |
| 471 | |
| 472 | |
| 473 | //------------------------------------------------- |
| 474 | // mover - |
| 475 | //------------------------------------------------- |
| 476 | |
| 477 | void abc1600_state::mover() |
| 478 | { |
| 479 | /* UINT16 xsize = m_sx & 0x3ff; |
| 480 | UINT16 ysize = m_sy & 0xfff; |
| 481 | int udx = BIT(m_sx, 11); |
| 482 | int udy = BIT(m_sx, 10);*/ |
| 483 | } |
| 484 | |
| 485 | |
| 486 | //------------------------------------------------- |
| 382 | 487 | // mc6845_interface crtc_intf |
| 383 | 488 | //------------------------------------------------- |
| 384 | 489 | |
| r10704 | r10705 | |
| 477 | 582 | // allocate video RAM |
| 478 | 583 | m_video_ram = auto_alloc_array(machine, UINT8, VIDEORAM_SIZE); |
| 479 | 584 | memset(m_video_ram, 0, VIDEORAM_SIZE); |
| 585 | |
| 586 | // find memory regions |
| 587 | m_wrmsk_rom = machine->region("wrmsk")->base(); |
| 588 | m_shinf_rom = machine->region("shinf")->base(); |
| 589 | m_drmsk_rom = machine->region("drmsk")->base(); |
| 480 | 590 | |
| 481 | 591 | // state saving |
| 482 | 592 | save_pointer(NAME(m_video_ram), VIDEORAM_SIZE); |
| r10704 | r10705 | |
| 512 | 622 | bitmap_fill(&bitmap, &cliprect, get_black_pen(machine)); |
| 513 | 623 | } |
| 514 | 624 | |
| 625 | mover(); |
| 626 | |
| 515 | 627 | return 0; |
| 516 | 628 | } |
| 517 | 629 | |
src/mess/includes/abc1600.h
| r10704 | r10705 | |
| 144 | 144 | inline UINT8 dma_iorq_r(int index, UINT16 offset); |
| 145 | 145 | inline void dma_iorq_w(int index, UINT16 offset, UINT8 data); |
| 146 | 146 | |
| 147 | inline UINT16 get_drmsk(UINT8 sh, int udx); |
| 148 | inline UINT8 get_shinf(UINT8 xfrom, UINT8 xto, int udx); |
| 149 | inline UINT16 get_wrmsk(UINT8 xto, UINT8 xsize, int udx, int cmc, int wrms0, int wrms1); |
| 150 | void mover(); |
| 151 | |
| 147 | 152 | inline UINT16 get_crtca(UINT16 ma, UINT8 ra, UINT8 column); |
| 148 | 153 | void crtc_update_row(device_t *device, bitmap_t *bitmap, const rectangle *cliprect, UINT16 ma, UINT8 ra, UINT16 y, UINT8 x_count, INT8 cursor_x, void *param); |
| 154 | |
| 149 | 155 | |
| 150 | 156 | // memory access controller |
| 151 | 157 | UINT8 m_task; |
| r10704 | r10705 | |
| 160 | 166 | UINT8 m_cause; |
| 161 | 167 | |
| 162 | 168 | // video |
| 169 | const UINT8 *m_wrmsk_rom; |
| 170 | const UINT8 *m_shinf_rom; |
| 171 | const UINT8 *m_drmsk_rom; |
| 163 | 172 | UINT8 *m_video_ram; // video RAM |
| 164 | 173 | int m_endisp; // enable display |
| 165 | 174 | int m_clocks_disabled; // clocks disabled |
src/mess/drivers/abc1600.c
| r10704 | r10705 | |
| 1340 | 1340 | |
| 1341 | 1341 | ROM_REGION( 0x40, "drmsk", 0 ) |
| 1342 | 1342 | ROM_LOAD( "drmskl 6490359-01.1k", 0x00, 0x20, CRC(6e71087c) SHA1(0acf67700d6227f4b315cf8fb0fb31c0e7fb9496) ) |
| 1343 | | ROM_LOAD( "drmskh 6490358-01.1k", 0x20, 0x20, CRC(a4a9a9dc) SHA1(d8575c0335d6021cbb5f7bcd298b41c35294a80a) ) |
| 1343 | ROM_LOAD( "drmskh 6490358-01.1l", 0x20, 0x20, CRC(a4a9a9dc) SHA1(d8575c0335d6021cbb5f7bcd298b41c35294a80a) ) |
| 1344 | 1344 | |
| 1345 | 1345 | ROM_REGION( 0x71c, "plds", 0 ) |
| 1346 | 1346 | ROM_LOAD( "drmsk 6490360-01.1m", 0x000, 0x104, CRC(5f7143c1) SHA1(1129917845f8e505998b15288f02bf907487e4ac) ) // @ 1m,1n,1t,2t |