diff options
Diffstat (limited to 'src/mame/machine/elan_eu3a05commonsys.cpp')
-rw-r--r-- | src/mame/machine/elan_eu3a05commonsys.cpp | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/src/mame/machine/elan_eu3a05commonsys.cpp b/src/mame/machine/elan_eu3a05commonsys.cpp index 3f8de8ec50c..b4695f5e5b8 100644 --- a/src/mame/machine/elan_eu3a05commonsys.cpp +++ b/src/mame/machine/elan_eu3a05commonsys.cpp @@ -5,20 +5,20 @@ #include "elan_eu3a05commonsys.h" /* - Both the Elan EU3A05 and EU3A14 CPU types implement some kind of custom interrupt handling + Both the Elan EU3A05 and EU3A14 CPU types implement some kind of custom interrupt handling - It isn't clear if this is a completely new addition to the CPU, or just an interface / controller - sitting on top of the existing NMI or IRQ support in the core providing custom vectors. + It isn't clear if this is a completely new addition to the CPU, or just an interface / controller + sitting on top of the existing NMI or IRQ support in the core providing custom vectors. - The interrupt handlers are 16 4-byte entries starting at 0xffb0 in memory space + The interrupt handlers are 16 4-byte entries starting at 0xffb0 in memory space */ /* - ----------------------- + ----------------------- Custom Interrupt purposes - ----------------------- + ----------------------- TETRIS (enables 5007 : 0a, 5008: 0f) @@ -48,7 +48,7 @@ ffdc (enabled) - probably P2 input related? ADC interrupt? accesses 501d / 501b - ----------------------- + ----------------------- SPACE INVADERS @@ -76,14 +76,14 @@ ffc8 (enabled by phoenix) decreases 304 stuff with 50a5 bit 10 - + ffcc (enabled by phoenix) uses 307 stuff with 50a5 bit 20 ffd0 dead loop - + ffd4 (enabled by all games) main interrupt @@ -105,63 +105,63 @@ ffec dead loop - ----------------------- - - AIR BLASTER JOYSTICK + ----------------------- + + AIR BLASTER JOYSTICK - all these 60xx jumps expect bank 00 or 0e or 3a or 7d to be active, so IRQs must be masked + all these 60xx jumps expect bank 00 or 0e or 3a or 7d to be active, so IRQs must be masked - ffb0: jmp to 6000 (ends up jumping to pointer from RAM) - ffb4: jmp to e08e (stuff with 500c/500d/506e etc.) - ffb8: jmp to 601c (stub handler) (has function in bank 0e - writes 00 then 01 to 50a5) - ffbc: jmp to 602a (stub handler) - ffc0: jmp to 6038 (stub handler) - ffc4: jmp to 6046 (stub handler) - ffc8: jmp to 6054 (stub handler) - ffcc: jmp to 6062 (stub handler) - ffd0: jmp to 6070 (stub handler) - ffd4: jmp to 607e (valid code - main IRQ?) - ffd8: jmp to 608c (stub handler) - ffdc: jmp to 609a (stub handler) - ffe0: jmp to 60a8 (stub handler) - ffe4: jmp to 60b6 (stub handler) - ffe8: jmp to 60c4 (stub handler) - ffec: jmp to 60d2 (stub handler) + ffb0: jmp to 6000 (ends up jumping to pointer from RAM) + ffb4: jmp to e08e (stuff with 500c/500d/506e etc.) + ffb8: jmp to 601c (stub handler) (has function in bank 0e - writes 00 then 01 to 50a5) + ffbc: jmp to 602a (stub handler) + ffc0: jmp to 6038 (stub handler) + ffc4: jmp to 6046 (stub handler) + ffc8: jmp to 6054 (stub handler) + ffcc: jmp to 6062 (stub handler) + ffd0: jmp to 6070 (stub handler) + ffd4: jmp to 607e (valid code - main IRQ?) + ffd8: jmp to 608c (stub handler) + ffdc: jmp to 609a (stub handler) + ffe0: jmp to 60a8 (stub handler) + ffe4: jmp to 60b6 (stub handler) + ffe8: jmp to 60c4 (stub handler) + ffec: jmp to 60d2 (stub handler) - fff0: 7d + fff0: 7d - fffa: e0 60 (60e0 vector) (stub handler) - fffc: 88 e1 (e188 startup vector) - fffe: 02 e0 (e002 vector) + fffa: e0 60 (60e0 vector) (stub handler) + fffc: 88 e1 (e188 startup vector) + fffe: 02 e0 (e002 vector) - ----------------------- - - GOLDEN TEE HOME + ----------------------- - ffb0 rti - ffb4 rti - ffb8 rti - ffbc rti + GOLDEN TEE HOME - ffc0 rti - ffc4 rti - ffc8 rti - ffcc rti + ffb0 rti + ffb4 rti + ffb8 rti + ffbc rti - ffd0 rti - ffd4 main irq? - ffd8 rti - ffdc rti + ffc0 rti + ffc4 rti + ffc8 rti + ffcc rti - ffe0 something with 5045 bit 0x08 and 9d in ram (increase or decrease) (ADC interrupt) - ffe4 something with 5045 bit 0x20 and 9c in ram (increase of decrease) (ADC interrupt) + ffd0 rti + ffd4 main irq? + ffd8 rti + ffdc rti - ffe8 rti - ffec rti + ffe0 something with 5045 bit 0x08 and 9d in ram (increase or decrease) (ADC interrupt) + ffe4 something with 5045 bit 0x20 and 9c in ram (increase of decrease) (ADC interrupt) - regular NMI (e3f0 - jump to ($19e2) which seems to point to rti, but could move..) - regular IRQ (e3f3 - points to rti) + ffe8 rti + ffec rti + + regular NMI (e3f0 - jump to ($19e2) which seems to point to rti, but could move..) + regular IRQ (e3f3 - points to rti) */ @@ -246,12 +246,12 @@ void elan_eu3a05commonsys_device::device_timer(emu_timer &timer, device_timer_id void elan_eu3a05commonsys_device::device_start() { save_item(NAME(m_rombank_lo)); - save_item(NAME(m_rombank_hi)); - save_item(NAME(m_intmask)); - save_item(NAME(m_custom_irq)); - save_item(NAME(m_custom_nmi)); - save_item(NAME(m_custom_irq_vector)); - save_item(NAME(m_custom_nmi_vector)); + save_item(NAME(m_rombank_hi)); + save_item(NAME(m_intmask)); + save_item(NAME(m_custom_irq)); + save_item(NAME(m_custom_nmi)); + save_item(NAME(m_custom_irq_vector)); + save_item(NAME(m_custom_nmi_vector)); m_unk_timer = timer_alloc(TIMER_UNK); m_unk_timer->adjust(attotime::never); @@ -291,10 +291,10 @@ WRITE8_MEMBER(elan_eu3a05commonsys_device::intmask_w) void elan_eu3a05commonsys_device::generate_custom_interrupt(int level) { // Air Blaster uses brk in the code, which is problematic for custom IRQs - // m_custom_irq = 1; - // m_custom_irq_vector = 0xffd4; - // m_maincpu->set_input_line(INPUT_LINE_IRQ0,HOLD_LINE); - + // m_custom_irq = 1; + // m_custom_irq_vector = 0xffd4; + // m_maincpu->set_input_line(INPUT_LINE_IRQ0,HOLD_LINE); + // 5007 5008 // --ee --v- ssss ss-t // 10 5432 10 |