branches/alto2/src/emu/machine/diablo_hd.c
| r26248 | r26249 | |
| 308 | 308 | return; |
| 309 | 309 | } |
| 310 | 310 | |
| 311 | | /* allocate a buffer for this page */ |
| 312 | | m_cache[m_page] = auto_alloc_array(machine(), UINT8, sizeof(diablo_sector_t)); |
| 313 | | /* and read the page from the hard_disk image */ |
| 314 | | if (hard_disk_read(m_disk, m_page, m_cache[m_page])) { |
| 315 | | LOG_DRIVE((2,"[DHD%u] C/H/S:%d/%d/%d => page:%d loaded\n", m_unit, m_cylinder, m_head, m_sector, m_page)); |
| 311 | if (m_disk) { |
| 312 | /* allocate a buffer for this page */ |
| 313 | m_cache[m_page] = auto_alloc_array(machine(), UINT8, sizeof(diablo_sector_t)); |
| 314 | /* and read the page from the hard_disk image */ |
| 315 | if (hard_disk_read(m_disk, m_page, m_cache[m_page])) { |
| 316 | LOG_DRIVE((2,"[DHD%u] C/H/S:%d/%d/%d => page:%d loaded\n", m_unit, m_cylinder, m_head, m_sector, m_page)); |
| 317 | } else { |
| 318 | LOG_DRIVE((0,"[DHD%u] C/H/S:%d/%d/%d => page:%d read failed\n", m_unit, m_cylinder, m_head, m_sector, m_page)); |
| 319 | auto_free(machine(), m_cache[m_page]); |
| 320 | m_cache[m_page] = 0; |
| 321 | } |
| 316 | 322 | } else { |
| 317 | | LOG_DRIVE((0,"[DHD%u] C/H/S:%d/%d/%d => page:%d read failed\n", m_unit, m_cylinder, m_head, m_sector, m_page)); |
| 318 | | auto_free(machine(), m_cache[m_page]); |
| 319 | | m_cache[m_page] = 0; |
| 323 | LOG_DRIVE((2,"[DHD%u] no disk\n", m_unit)); |
| 320 | 324 | } |
| 321 | 325 | } |
| 322 | 326 | |
| r26248 | r26249 | |
| 677 | 681 | |
| 678 | 682 | if (m_rdfirst >= 0) { |
| 679 | 683 | LOG_DRIVE((0, "[DHD%u] RD CHS:%03d/%d/%02d bit#%-5d ... bit#%-5d\n", |
| 680 | | m_unit, m_cylinder, m_head, m_sector, m_rdfirst, m_rdlast)); |
| 684 | m_unit, m_cylinder, m_head, m_sector, m_rdfirst, m_rdlast)); |
| 681 | 685 | } |
| 682 | 686 | m_rdfirst = -1; |
| 683 | 687 | m_rdlast = -1; |
| r26248 | r26249 | |
| 773 | 777 | auto_free(machine(), m_bits[m_page]); |
| 774 | 778 | m_bits[m_page] = 0; |
| 775 | 779 | |
| 776 | | if (!hard_disk_write(m_disk, m_page, m_cache[m_page])) { |
| 777 | | LOG_DRIVE((0,"[DHD%u] write failed for page #%d\n", m_unit, m_page)); |
| 780 | if (m_disk) { |
| 781 | if (!hard_disk_write(m_disk, m_page, m_cache[m_page])) { |
| 782 | LOG_DRIVE((0,"[DHD%u] write failed for page #%d\n", m_unit, m_page)); |
| 783 | } |
| 784 | } else { |
| 785 | LOG_DRIVE((2,"[DHD%u] no disk\n", m_unit)); |
| 778 | 786 | } |
| 779 | 787 | } |
| 780 | 788 | |
branches/alto2/src/emu/cpu/alto2/a2emu.c
| r26248 | r26249 | |
| 312 | 312 | void alto2_cpu_device::f1_emu_load_esrb_1() |
| 313 | 313 | { |
| 314 | 314 | LOG((LOG_EMU,2," ESRB←; BUS[12-14] (%#o)\n", m_bus)); |
| 315 | | m_s_reg_bank[m_task] = A2_GET32(m_bus,16,12,14); |
| 315 | m_s_reg_bank[m_task] = A2_GET16(m_bus,16,12,14); |
| 316 | 316 | } |
| 317 | 317 | |
| 318 | 318 | /** |
| r26248 | r26249 | |
| 558 | 558 | */ |
| 559 | 559 | void alto2_cpu_device::f2_load_ir_1() |
| 560 | 560 | { |
| 561 | | UINT16 r = (A2_BIT32(m_bus,16,0) << 3) | A2_GET32(m_bus,16,5,7); |
| 561 | UINT16 r = (A2_BIT16(m_bus,16,0) << 3) | A2_GET16(m_bus,16,5,7); |
| 562 | 562 | |
| 563 | 563 | /* special logging of some opcodes */ |
| 564 | 564 | switch (m_bus) { |
| r26248 | r26249 | |
| 630 | 630 | r = IR_SH(m_emu.ir) ^ 3; /* complement of SH */ |
| 631 | 631 | LOG((LOG_EMU,2," IDISP←; branch on SH^3 (%#o|%#o)\n", m_next2, r)); |
| 632 | 632 | } else { |
| 633 | | int addr = CTL2K_U3(f2_emu_idisp) + A2_GET32(m_emu.ir,16,1,7); |
| 633 | int addr = CTL2K_U3(f2_emu_idisp) + A2_GET16(m_emu.ir,16,1,7); |
| 634 | 634 | /* 0???????xxxxxxxx */ |
| 635 | 635 | r = m_ctl2k_u3[addr]; |
| 636 | 636 | LOG((LOG_EMU,2," IDISP←; IR (%#o) branch on PROM ctl2k_u3[%03o] (%#o|%#o)\n", m_emu.ir, addr, m_next2, r)); |
| r26248 | r26249 | |
| 664 | 664 | r = IR_SH(m_emu.ir) ^ 3; /* complement of SH */ |
| 665 | 665 | LOG((LOG_EMU,2," ←ACSOURCE; branch on SH^3 (%#o|%#o)\n", m_next2, r)); |
| 666 | 666 | } else { |
| 667 | | int addr = CTL2K_U3(f2_emu_acsource) + A2_GET32(m_emu.ir,16,1,7); |
| 667 | int addr = CTL2K_U3(f2_emu_acsource) + A2_GET16(m_emu.ir,16,1,7); |
| 668 | 668 | /* 0???????xxxxxxxx */ |
| 669 | 669 | r = m_ctl2k_u3[addr]; |
| 670 | 670 | LOG((LOG_EMU,2," ←ACSOURCE; branch on PROM ctl2k_u3[%03o] (%#o|%#o)\n", addr, m_next2, r)); |
branches/alto2/src/emu/cpu/alto2/a2disp.c
| r26248 | r26249 | |
| 83 | 83 | * |
| 84 | 84 | * Decoded states of this PROM: |
| 85 | 85 | * |
| 86 | | * STATE PROM binary HBLANK HSYNC NEXT SCANEND HLCGATE |
| 86 | * STATE PROM binary HBLANK HSYNC NEXT SCANEND HLCGATE |
| 87 | 87 | * ---------------------------------------------------------- |
| 88 | 88 | * 000 0007 00000111 1 1 001 0 0 |
| 89 | 89 | * 001 0013 00001011 1 1 002 0 0 |
| r26248 | r26249 | |
| 214 | 214 | *pix++ = (word & 0000001) ? BLACK : WHITE; |
| 215 | 215 | } |
| 216 | 216 | |
| 217 | #define HLC1 ((m_dsp.hlc >> 0) & 1) //!< horizontal line counter bit 0 |
| 218 | #define HLC2 ((m_dsp.hlc >> 1) & 1) //!< horizontal line counter bit 1 |
| 219 | #define HLC4 ((m_dsp.hlc >> 2) & 1) //!< horizontal line counter bit 2 |
| 220 | #define HLC8 ((m_dsp.hlc >> 3) & 1) //!< horizontal line counter bit 3 |
| 221 | #define HLC16 ((m_dsp.hlc >> 4) & 1) //!< horizontal line counter bit 4 |
| 222 | #define HLC32 ((m_dsp.hlc >> 5) & 1) //!< horizontal line counter bit 5 |
| 223 | #define HLC64 ((m_dsp.hlc >> 6) & 1) //!< horizontal line counter bit 6 |
| 224 | #define HLC128 ((m_dsp.hlc >> 7) & 1) //!< horizontal line counter bit 7 |
| 225 | #define HLC256 ((m_dsp.hlc >> 8) & 1) //!< horizontal line counter bit 8 |
| 226 | #define HLC512 ((m_dsp.hlc >> 9) & 1) //!< horizontal line counter bit 9 |
| 227 | #define HLC1024 ((m_dsp.hlc >> 10) & 1) //!< horizontal line counter bit 10 |
| 228 | |
| 229 | #define GET_SETMODE_SPEEDY(mode) A2_GET16(mode,16,0,0) //!< get the pixel clock speed from a SETMODE<- bus value |
| 230 | #define GET_SETMODE_INVERSE(mode) A2_GET16(mode,16,1,1) //!< get the inverse video flag from a SETMODE<- bus value |
| 231 | |
| 232 | //!< helper to extract A3-A0 from a PROM a63 value |
| 233 | #define A63_NEXT(n) ((n >> 2) & 017) |
| 234 | |
| 235 | //!< test the HBLANK (horizontal blanking) signal in PROM a63 being high |
| 236 | #define A63_HBLANK_HI(a) ((a & A63_HBLANK) ? true : false) |
| 237 | //!< test the HBLANK (horizontal blanking) signal in PROM a63 being low |
| 238 | #define A63_HBLANK_LO(a) ((a & A63_HBLANK) ? false : true) |
| 239 | //!< test the HSYNC (horizontal synchonisation) signal in PROM a63 being high |
| 240 | #define A63_HSYNC_HI(a) ((a & A63_HSYNC) ? true : false) |
| 241 | //!< test the HSYNC (horizontal synchonisation) signal in PROM a63 being low |
| 242 | #define A63_HSYNC_LO(a) ((a & A63_HSYNC) ? false : true) |
| 243 | //!< test the SCANEND (scanline end) signal in PROM a63 being high |
| 244 | #define A63_SCANEND_HI(a) ((a & A63_SCANEND) ? true : false) |
| 245 | //!< test the SCANEND (scanline end) signal in PROM a63 being low |
| 246 | #define A63_SCANEND_LO(a) ((a & A63_SCANEND) ? false : true) |
| 247 | //!< test the HLCGATE (horz. line counter gate) signal in PROM a63 being high |
| 248 | #define A63_HLCGATE_HI(a) ((a & A63_HLCGATE) ? true : false) |
| 249 | //!< test the HLCGATE (horz. line counter gate) signal in PROM a63 being low |
| 250 | #define A63_HLCGATE_LO(a) ((a & A63_HLCGATE) ? false : true) |
| 251 | |
| 217 | 252 | /** |
| 218 | 253 | * @brief unload the next word from the display FIFO and shift it to the screen |
| 219 | 254 | */ |
| 220 | 255 | int alto2_cpu_device::unload_word(int x) |
| 221 | 256 | { |
| 222 | | int y = ((m_dsp.hlc - m_dsp.vblank) & ~(1024|1)) + HLC1024(); |
| 257 | int y = ((m_dsp.hlc - m_dsp.vblank) & ~(1024|1)) + HLC1024; |
| 223 | 258 | UINT16* scanline = m_dsp.scanline[y]; |
| 224 | 259 | |
| 225 | 260 | UINT32 word = m_dsp.inverse; |
| r26248 | r26249 | |
| 289 | 324 | * @param arg the current displ_a63 PROM address |
| 290 | 325 | * @result returns the next state of the display state machine |
| 291 | 326 | */ |
| 292 | | int alto2_cpu_device::display_state_machine(int arg) |
| 327 | UINT8 alto2_cpu_device::display_state_machine(UINT8 arg) |
| 293 | 328 | { |
| 294 | | int next, a63, a66; |
| 295 | | |
| 296 | 329 | LOG((LOG_DISPL,5,"DSP%03o:", arg)); |
| 297 | 330 | if (020 == arg) { |
| 298 | 331 | LOG((LOG_DISPL,2," HLC=%d", m_dsp.hlc)); |
| 299 | 332 | } |
| 300 | 333 | |
| 301 | | a63 = m_disp_a63[arg]; |
| 302 | | |
| 334 | UINT8 a63 = m_disp_a63[arg]; |
| 303 | 335 | if (A63_HLCGATE_HI(a63)) { |
| 304 | 336 | /* reset or count horizontal line counters */ |
| 305 | 337 | if (m_dsp.hlc == ALTO2_DISPLAY_HLC_END) |
| r26248 | r26249 | |
| 313 | 345 | m_task_wakeup |= 1 << task_ether; |
| 314 | 346 | } |
| 315 | 347 | } |
| 316 | | if (HLC256() || HLC512()) { |
| 348 | UINT8 a66 = 017; |
| 349 | if (HLC256 || HLC512) { |
| 317 | 350 | // PROM a66 is disabled, if any of HLC256 or HLC512 are high |
| 318 | | a66 = 017; |
| 319 | 351 | } else { |
| 320 | 352 | // PROM a66 address lines are connected the HLC1 to HLC128 signals |
| 321 | 353 | a66 = m_disp_a66[m_dsp.hlc & 0377]; |
| 322 | 354 | } |
| 323 | 355 | |
| 324 | 356 | // next address from PROM a63, use A4 from HLC1 |
| 325 | | next = (16 * (HLC1() ^ 1)) | A63_NEXT(a63); |
| 357 | UINT8 next = ((HLC1 ^ 1) << 4) | A63_NEXT(a63); |
| 326 | 358 | |
| 327 | | if (A66_VBLANK_HI(a66, HLC1024())) { |
| 359 | if (A66_VBLANK_HI(a66, HLC1024)) { |
| 328 | 360 | /* VBLANK: remember hlc */ |
| 329 | 361 | m_dsp.vblank = m_dsp.hlc | 1; |
| 330 | 362 | |
| 331 | 363 | LOG((LOG_DISPL,1, " VBLANK")); |
| 332 | 364 | |
| 333 | 365 | /* VSYNC is always within VBLANK */ |
| 334 | | if (A66_VSYNC_HI(a66, HLC1024())) { |
| 335 | | if (A66_VSYNC_LO(m_dsp.a66, HLC1024())) { |
| 366 | if (A66_VSYNC_HI(a66, HLC1024)) { |
| 367 | if (A66_VSYNC_LO(m_dsp.a66, HLC1024)) { |
| 336 | 368 | LOG((LOG_DISPL,1, " VSYNC/ (wake DVT)")); |
| 337 | 369 | /* |
| 338 | 370 | * The display vertical task DVT is awakened once per field, |
| r26248 | r26249 | |
| 345 | 377 | } |
| 346 | 378 | } |
| 347 | 379 | } else { |
| 348 | | if (A66_VBLANK_HI(m_dsp.a66, HLC1024())) { |
| 380 | if (A66_VBLANK_HI(m_dsp.a66, HLC1024)) { |
| 349 | 381 | /** |
| 350 | 382 | * VBLANKPULSE: |
| 351 | 383 | * The display horizontal task DHT is awakened once at the |
| r26248 | r26249 | |
| 431 | 463 | m_task_wakeup |= 1 << task_curt; |
| 432 | 464 | } |
| 433 | 465 | |
| 434 | | |
| 435 | 466 | LOG((LOG_DISPL,1, " NEXT:%03o\n", next)); |
| 436 | 467 | |
| 437 | 468 | m_dsp.a63 = a63; |
| r26248 | r26249 | |
| 447 | 478 | */ |
| 448 | 479 | void alto2_cpu_device::f2_evenfield_1() |
| 449 | 480 | { |
| 450 | | UINT16 r = HLC1024() ^ 1; |
| 481 | UINT16 r = HLC1024 ^ 1; |
| 451 | 482 | LOG((LOG_DISPL,2," evenfield branch on HLC1024 (%#o | %#o)\n", m_next2, r)); |
| 452 | 483 | m_next2 |= r; |
| 453 | 484 | } |
branches/alto2/src/emu/cpu/alto2/alto2.h
| r26248 | r26249 | |
| 20 | 20 | #define ALTO2_TAG "alto2" |
| 21 | 21 | |
| 22 | 22 | #ifndef ALTO2_DEBUG |
| 23 | | #define ALTO2_DEBUG 1 //!< define to 1 to enable logerror() output |
| 23 | #define ALTO2_DEBUG 0 //!< define to 1 to enable logerror() output |
| 24 | 24 | #endif |
| 25 | 25 | |
| 26 | 26 | #define USE_PRIO_F9318 0 //!< define to 1 to use the F9318 priority encoder code |
| r26248 | r26249 | |
| 35 | 35 | #define ALTO2_BUSSRC 8 //!< 8 bus sources |
| 36 | 36 | #define ALTO2_F1MAX 16 //!< 16 F1 functions |
| 37 | 37 | #define ALTO2_F2MAX 16 //!< 16 F2 functions |
| 38 | | #define ALTO2_UCYCLE 271 //!< time in nano seconds for a CPU micro cycle: 29.4912MHz/8 -> 3.6864MHz ~= 271ns/clock |
| 38 | #define ALTO2_UCYCLE 170 //!< time in nano seconds for a CPU micro cycle: 29.4912MHz/8 -> 3.6864MHz ~= 271ns/clock |
| 39 | 39 | |
| 40 | 40 | #define ALTO2_ETHER_FIFO_SIZE 16 |
| 41 | 41 | |
| r26248 | r26249 | |
| 819 | 819 | bool m_ether_enable; //!< set to true, if the ethernet should be simulated |
| 820 | 820 | bool m_ewfct; //!< set by Ether task when it want's a wakeup at switch to task_mrt |
| 821 | 821 | int m_dsp_time; //!< display_state_machine() time accu |
| 822 | | int m_dsp_state; //!< display_state_machine() previous state |
| 822 | UINT8 m_dsp_state; //!< display_state_machine() previous state |
| 823 | 823 | int m_unload_time; //!< unload word time accu |
| 824 | 824 | int m_unload_word; //!< unload word number |
| 825 | 825 | int m_bitclk_time; //!< bitclk call time accu |
| r26248 | r26249 | |
| 1603 | 1603 | UINT16 **scanline; //!< array of pointers to the scanlines |
| 1604 | 1604 | } m_dsp; |
| 1605 | 1605 | |
| 1606 | | //! horizontal line counter bit 0 |
| 1607 | | inline int HLC1() { return A2_BIT16(m_dsp.hlc,11,10); } |
| 1608 | | //! horizontal line counter bit 1 |
| 1609 | | inline int HLC2() { return A2_BIT16(m_dsp.hlc,11,9); } |
| 1610 | | //! horizontal line counter bit 2 |
| 1611 | | inline int HLC4() { return A2_BIT16(m_dsp.hlc,11,8); } |
| 1612 | | //! horizontal line counter bit 3 |
| 1613 | | inline int HLC8() { return A2_BIT16(m_dsp.hlc,11,7); } |
| 1614 | | //! horizontal line counter bit 4 |
| 1615 | | inline int HLC16() { return A2_BIT16(m_dsp.hlc,11,6); } |
| 1616 | | //! horizontal line counter bit 5 |
| 1617 | | inline int HLC32() { return A2_BIT16(m_dsp.hlc,11,5); } |
| 1618 | | //! horizontal line counter bit 6 |
| 1619 | | inline int HLC64() { return A2_BIT16(m_dsp.hlc,11,4); } |
| 1620 | | //! horizontal line counter bit 7 |
| 1621 | | inline int HLC128() { return A2_BIT16(m_dsp.hlc,11,3); } |
| 1622 | | //! horizontal line counter bit 8 |
| 1623 | | inline int HLC256() { return A2_BIT16(m_dsp.hlc,11,2); } |
| 1624 | | //! horizontal line counter bit 9 |
| 1625 | | inline int HLC512() { return A2_BIT16(m_dsp.hlc,11,1); } |
| 1626 | | //! horizontal line counter bit 10 |
| 1627 | | inline int HLC1024() { return A2_BIT16(m_dsp.hlc,11,0); } |
| 1628 | | |
| 1629 | | //! get the pixel clock speed from a SETMODE<- bus value |
| 1630 | | static inline UINT16 GET_SETMODE_SPEEDY(UINT16 mode) { return A2_GET16(mode,16,0,0); } |
| 1631 | | //! get the inverse video flag from a SETMODE<- bus value |
| 1632 | | static inline UINT16 GET_SETMODE_INVERSE(UINT16 mode) { return A2_GET16(mode,16,1,1); } |
| 1633 | | |
| 1634 | 1606 | /** |
| 1635 | 1607 | * @brief PROM a38 contains the STOPWAKE' and MBEMBPTY' signals for the FIFO |
| 1636 | 1608 | * <PRE> |
| r26248 | r26249 | |
| 1662 | 1634 | }; |
| 1663 | 1635 | |
| 1664 | 1636 | //! PROM a38 bit O1 is STOPWAKE' (stop DWT if bit is zero) |
| 1665 | | inline int FIFO_STOPWAKE_0() { return m_disp_a38[m_dsp.fifo_rd * 16 + m_dsp.fifo_wr] & A38_STOPWAKE; } |
| 1637 | inline UINT8 FIFO_STOPWAKE_0() { return m_disp_a38[m_dsp.fifo_rd * 16 + m_dsp.fifo_wr] & A38_STOPWAKE; } |
| 1666 | 1638 | |
| 1667 | 1639 | //! PROM a38 bit O3 is MBEMPTY' (FIFO is empty if bit is zero) |
| 1668 | | inline int FIFO_MBEMPTY_0() { return m_disp_a38[m_dsp.fifo_rd * 16 + m_dsp.fifo_wr] & A38_MBEMPTY; } |
| 1640 | inline UINT8 FIFO_MBEMPTY_0() { return m_disp_a38[m_dsp.fifo_rd * 16 + m_dsp.fifo_wr] & A38_MBEMPTY; } |
| 1669 | 1641 | |
| 1670 | 1642 | /** |
| 1671 | 1643 | * @brief emulation of PROM a63 in the display schematics page 8 |
| r26248 | r26249 | |
| 1706 | 1678 | A63_SCANEND = (1 << 6), //!< PROM a63 B6 SCANEND signal, which resets the FIFO counters |
| 1707 | 1679 | A63_HLCGATE = (1 << 7) //!< PROM a63 B7 HLCGATE signal, which enables counting the HLC |
| 1708 | 1680 | }; |
| 1709 | | //!< helper to extract A3-A0 from a PROM a63 value |
| 1710 | | static inline UINT8 A63_NEXT(UINT8 n) { return (n >> 2) & 017; } |
| 1711 | 1681 | |
| 1712 | | //!< test the HBLANK (horizontal blanking) signal in PROM a63 being high |
| 1713 | | static inline bool A63_HBLANK_HI(UINT8 a) { return (a & A63_HBLANK) ? true : false; } |
| 1714 | | //!< test the HBLANK (horizontal blanking) signal in PROM a63 being low |
| 1715 | | static inline bool A63_HBLANK_LO(UINT8 a) { return (a & A63_HBLANK) ? false : true; } |
| 1716 | | //!< test the HSYNC (horizontal synchonisation) signal in PROM a63 being high |
| 1717 | | static inline bool A63_HSYNC_HI(UINT8 a) { return (a & A63_HSYNC) ? true : false; } |
| 1718 | | //!< test the HSYNC (horizontal synchonisation) signal in PROM a63 being low |
| 1719 | | static inline bool A63_HSYNC_LO(UINT8 a) { return (a & A63_HSYNC) ? false : true; } |
| 1720 | | //!< test the SCANEND (scanline end) signal in PROM a63 being high |
| 1721 | | static inline bool A63_SCANEND_HI(UINT8 a) { return (a & A63_SCANEND) ? true : false; } |
| 1722 | | //!< test the SCANEND (scanline end) signal in PROM a63 being low |
| 1723 | | static inline bool A63_SCANEND_LO(UINT8 a) { return (a & A63_SCANEND) ? false : true; } |
| 1724 | | //!< test the HLCGATE (horz. line counter gate) signal in PROM a63 being high |
| 1725 | | static inline bool A63_HLCGATE_HI(UINT8 a) { return (a & A63_HLCGATE) ? true : false; } |
| 1726 | | //!< test the HLCGATE (horz. line counter gate) signal in PROM a63 being low |
| 1727 | | static inline bool A63_HLCGATE_LO(UINT8 a) { return (a & A63_HLCGATE) ? false : true; } |
| 1728 | | |
| 1729 | 1682 | /** |
| 1730 | 1683 | * @brief vertical blank and synch PROM |
| 1731 | 1684 | * |
| r26248 | r26249 | |
| 1748 | 1701 | }; |
| 1749 | 1702 | |
| 1750 | 1703 | //! test the VSYNC (vertical synchronisation) signal in PROM a66 being high |
| 1751 | | static inline bool A66_VSYNC_HI(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VSYNC_ODD : A66_VSYNC_EVEN) ? true : false; } |
| 1704 | static inline bool A66_VSYNC_HI(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VSYNC_ODD : A66_VSYNC_EVEN) ? false : true; } |
| 1752 | 1705 | //! test the VSYNC (vertical synchronisation) signal in PROM a66 being low |
| 1753 | | static inline bool A66_VSYNC_LO(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VSYNC_ODD : A66_VSYNC_EVEN) ? false : true; } |
| 1706 | static inline bool A66_VSYNC_LO(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VSYNC_ODD : A66_VSYNC_EVEN) ? true : false; } |
| 1754 | 1707 | //! test the VBLANK (vertical blanking) signal in PROM a66 being high |
| 1755 | | static inline bool A66_VBLANK_HI(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VBLANK_ODD : A66_VBLANK_EVEN) ? true : false; } |
| 1708 | static inline bool A66_VBLANK_HI(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VBLANK_ODD : A66_VBLANK_EVEN) ? false : true; } |
| 1756 | 1709 | //! test the VBLANK (vertical blanking) signal in PROM a66 being low |
| 1757 | | static inline bool A66_VBLANK_LO(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VBLANK_ODD : A66_VBLANK_EVEN) ? false : true; } |
| 1710 | static inline bool A66_VBLANK_LO(UINT8 a, int hlc1024) { return a & (hlc1024 ? A66_VBLANK_ODD : A66_VBLANK_EVEN) ? true : false; } |
| 1758 | 1711 | |
| 1759 | 1712 | //! screen bitmap |
| 1760 | 1713 | bitmap_ind16* m_displ_bitmap; |
| r26248 | r26249 | |
| 1773 | 1726 | * @param arg the current m_disp_a63 PROM address |
| 1774 | 1727 | * @return next state of the display state machine |
| 1775 | 1728 | */ |
| 1776 | | int display_state_machine(int arg); |
| 1729 | UINT8 display_state_machine(UINT8 arg); |
| 1777 | 1730 | |
| 1778 | 1731 | //! branch on the evenfield flip-flop |
| 1779 | 1732 | void f2_evenfield_1(void); |