trunk/src/mame/machine/archimds.c
| r29545 | r29546 | |
| 58 | 58 | |
| 59 | 59 | if (m_ioc_regs[IRQ_STATUS_B] & m_ioc_regs[IRQ_MASK_B]) |
| 60 | 60 | { |
| 61 | | generic_pulse_irq_line(m_maincpu, ARM_IRQ_LINE, 1); |
| 61 | m_maincpu->set_input_line(ARM_IRQ_LINE, HOLD_LINE); |
| 62 | 62 | } |
| 63 | 63 | } |
| 64 | 64 | |
| r29545 | r29546 | |
| 66 | 66 | { |
| 67 | 67 | m_ioc_regs[FIQ_STATUS] |= mask; |
| 68 | 68 | |
| 69 | //printf("STATUS:%02x IRQ:%02x MASK:%02x\n",m_ioc_regs[FIQ_STATUS],mask,m_ioc_regs[FIQ_MASK]); |
| 70 | |
| 69 | 71 | if (m_ioc_regs[FIQ_STATUS] & m_ioc_regs[FIQ_MASK]) |
| 70 | 72 | { |
| 71 | | generic_pulse_irq_line(m_maincpu, ARM_FIRQ_LINE, 1); |
| 73 | m_maincpu->set_input_line(ARM_FIRQ_LINE, HOLD_LINE); |
| 72 | 74 | } |
| 73 | 75 | } |
| 74 | 76 | |
| r29545 | r29546 | |
| 81 | 83 | void archimedes_state::archimedes_clear_irq_b(int mask) |
| 82 | 84 | { |
| 83 | 85 | m_ioc_regs[IRQ_STATUS_B] &= ~mask; |
| 84 | | archimedes_request_irq_b(0); |
| 86 | //archimedes_request_irq_b(0); |
| 85 | 87 | } |
| 86 | 88 | |
| 87 | 89 | void archimedes_state::archimedes_clear_fiq(int mask) |
| 88 | 90 | { |
| 89 | 91 | m_ioc_regs[FIQ_STATUS] &= ~mask; |
| 90 | | archimedes_request_fiq(0); |
| 92 | //archimedes_request_fiq(0); |
| 91 | 93 | } |
| 92 | 94 | |
| 93 | 95 | void archimedes_state::device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr) |
| r29545 | r29546 | |
| 138 | 140 | offset_ptr = m_vidc_vidstart; |
| 139 | 141 | } |
| 140 | 142 | |
| 141 | | size = m_vidc_vidend-m_vidc_vidstart+0x10; |
| 143 | if(m_cursor_enabled == true) |
| 144 | { |
| 145 | for(m_vidc_ccur = 0;m_vidc_ccur < 0x200;m_vidc_ccur++) |
| 146 | m_cursor_vram[m_vidc_ccur] = (space.read_byte(m_vidc_cinit+m_vidc_ccur)); |
| 147 | } |
| 142 | 148 | |
| 143 | | for(m_vidc_ccur = 0;m_vidc_ccur < 0x200;m_vidc_ccur++) |
| 144 | | m_cursor_vram[m_vidc_ccur] = (space.read_byte(m_vidc_cinit+m_vidc_ccur)); |
| 145 | | |
| 146 | 149 | if(m_video_dma_on) |
| 147 | 150 | { |
| 148 | 151 | m_vid_timer->adjust(m_screen->time_until_pos(m_vidc_regs[0xb4])); |
| r29545 | r29546 | |
| 276 | 279 | } |
| 277 | 280 | |
| 278 | 281 | m_ioc_regs[IRQ_STATUS_A] = 0x10 | 0x80; //set up POR (Power On Reset) and Force IRQ at start-up |
| 279 | | m_ioc_regs[IRQ_STATUS_B] = 0x02; //set up IL[1] On |
| 282 | m_ioc_regs[IRQ_STATUS_B] = 0x00; //set up IL[1] On |
| 280 | 283 | m_ioc_regs[FIQ_STATUS] = 0x80; //set up Force FIQ |
| 281 | 284 | m_ioc_regs[CONTROL] = 0xff; |
| 282 | 285 | } |
| r29545 | r29546 | |
| 967 | 970 | |
| 968 | 971 | |
| 969 | 972 | //#ifdef MAME_DEBUG |
| 970 | | if(0) |
| 973 | if(1) |
| 971 | 974 | logerror("VIDC: %s = %d\n", vrnames[(reg-0x80)/4], m_vidc_regs[reg]); |
| 972 | 975 | //#endif |
| 973 | 976 | |
| r29545 | r29546 | |
| 1001 | 1004 | switch ((data >> 17) & 7) |
| 1002 | 1005 | { |
| 1003 | 1006 | case 0: /* video init */ |
| 1007 | m_cursor_enabled = false; |
| 1004 | 1008 | m_vidc_vidinit = ((data>>2)&0x7fff)*16; |
| 1005 | | //printf("MEMC: VIDINIT %08x\n",m_vidc_vidinit); |
| 1009 | printf("MEMC: VIDINIT %08x\n",m_vidc_vidinit); |
| 1006 | 1010 | break; |
| 1007 | 1011 | |
| 1008 | 1012 | case 1: /* video start */ |
| 1009 | 1013 | m_vidc_vidstart = 0x2000000 | (((data>>2)&0x7fff)*16); |
| 1010 | | //printf("MEMC: VIDSTART %08x\n",m_vidc_vidstart); |
| 1014 | printf("MEMC: VIDSTART %08x\n",m_vidc_vidstart); |
| 1011 | 1015 | break; |
| 1012 | 1016 | |
| 1013 | 1017 | case 2: /* video end */ |
| 1014 | 1018 | m_vidc_vidend = 0x2000000 | (((data>>2)&0x7fff)*16); |
| 1015 | | //printf("MEMC: VIDEND %08x\n",m_vidc_vidend); |
| 1019 | printf("MEMC: VIDEND %08x\n",m_vidc_vidend); |
| 1016 | 1020 | break; |
| 1017 | 1021 | |
| 1018 | 1022 | case 3: /* cursor init */ |
| 1023 | //m_cursor_enabled = true; |
| 1019 | 1024 | m_vidc_cinit = 0x2000000 | (((data>>2)&0x7fff)*16); |
| 1020 | | //printf("MEMC: CURSOR %08x\n",((data>>2)&0x7fff)*16); |
| 1025 | printf("MEMC: CURSOR INIT %08x\n",((data>>2)&0x7fff)*16); |
| 1021 | 1026 | break; |
| 1022 | 1027 | |
| 1023 | 1028 | case 4: /* sound start */ |
trunk/src/mess/drivers/a310.c
| r29545 | r29546 | |
| 100 | 100 | { |
| 101 | 101 | printf("%d IRQ\n",state); |
| 102 | 102 | if (state) |
| 103 | { |
| 103 | 104 | archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY); |
| 104 | | else |
| 105 | | archimedes_clear_fiq(ARCHIMEDES_FIQ_FLOPPY); |
| 105 | } |
| 106 | //else |
| 107 | // archimedes_clear_fiq(ARCHIMEDES_FIQ_FLOPPY); |
| 106 | 108 | } |
| 107 | 109 | |
| 108 | 110 | WRITE_LINE_MEMBER(a310_state::a310_wd177x_drq_w) |
| 109 | 111 | { |
| 110 | 112 | printf("%d DRQ\n",state); |
| 111 | 113 | if (state) |
| 114 | { |
| 112 | 115 | archimedes_request_fiq(ARCHIMEDES_FIQ_FLOPPY_DRQ); |
| 113 | | else |
| 114 | | archimedes_clear_fiq(ARCHIMEDES_FIQ_FLOPPY_DRQ); |
| 116 | } |
| 117 | //else |
| 118 | // archimedes_clear_fiq(ARCHIMEDES_FIQ_FLOPPY_DRQ); |
| 115 | 119 | } |
| 116 | 120 | |
| 117 | 121 | READ32_MEMBER(a310_state::a310_psy_wram_r) |
| r29545 | r29546 | |
| 206 | 210 | PORT_BIT(0x10, 0x00, IPT_KEYBOARD) PORT_NAME("= +") PORT_CODE(KEYCODE_EQUALS) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x1c) PORT_IMPULSE(1) |
| 207 | 211 | PORT_BIT(0x20, 0x00, IPT_KEYBOARD) PORT_NAME("` ~") PORT_CODE(KEYCODE_TILDE) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x10) PORT_IMPULSE(1) |
| 208 | 212 | PORT_BIT(0x40, 0x00, IPT_KEYBOARD) PORT_NAME("BACK SPACE") PORT_CODE(KEYCODE_BACKSPACE) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x1e) PORT_IMPULSE(1) |
| 209 | | PORT_BIT(0x80, 0x00, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) |
| 213 | PORT_BIT(0x80, 0x00, IPT_KEYBOARD) PORT_NAME("TAB") PORT_CODE(KEYCODE_TAB) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x26) PORT_IMPULSE(1) |
| 210 | 214 | |
| 211 | 215 | PORT_START("key2") /* KEY ROW 2 */ |
| 212 | 216 | PORT_BIT(0x01, 0x00, IPT_KEYBOARD) PORT_NAME("q Q") PORT_CODE(KEYCODE_Q) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x27) PORT_IMPULSE(1) |
| r29545 | r29546 | |
| 225 | 229 | PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME("] }") PORT_CODE(KEYCODE_CLOSEBRACE) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x32) PORT_IMPULSE(1) |
| 226 | 230 | PORT_BIT(0x10, 0x00, IPT_KEYBOARD) PORT_NAME("RETURN") PORT_CODE(KEYCODE_ENTER) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x47) PORT_IMPULSE(1) |
| 227 | 231 | PORT_BIT(0x20, 0x00, IPT_KEYBOARD) PORT_NAME("DEL") PORT_CODE(KEYCODE_DEL) |
| 228 | | PORT_BIT(0x40, 0x00, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) |
| 232 | PORT_BIT(0x40, 0x00, IPT_KEYBOARD) PORT_NAME("CTRL") PORT_CODE(KEYCODE_LCONTROL) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x61) PORT_IMPULSE(1) |
| 229 | 233 | PORT_BIT(0x80, 0x80, IPT_KEYBOARD) PORT_NAME("CAPS LOCK") PORT_CODE(KEYCODE_CAPSLOCK) PORT_TOGGLE |
| 230 | 234 | |
| 231 | 235 | PORT_START("key4") /* KEY ROW 4 */ |
| r29545 | r29546 | |
| 256 | 260 | PORT_BIT(0x10, 0x00, IPT_KEYBOARD) PORT_NAME(", <") PORT_CODE(KEYCODE_COMMA) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x55) PORT_IMPULSE(1) |
| 257 | 261 | PORT_BIT(0x20, 0x00, IPT_KEYBOARD) PORT_NAME(". >") PORT_CODE(KEYCODE_STOP) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x56) PORT_IMPULSE(1) |
| 258 | 262 | PORT_BIT(0x40, 0x00, IPT_KEYBOARD) PORT_NAME("/ ?") PORT_CODE(KEYCODE_SLASH) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x23) PORT_IMPULSE(1) |
| 259 | | PORT_BIT(0x80, 0x00, IPT_KEYBOARD) PORT_NAME("SHIFT (R)") PORT_CODE(KEYCODE_RSHIFT) |
| 263 | PORT_BIT(0x80, 0x00, IPT_KEYBOARD) PORT_NAME("SHIFT (R)") PORT_CODE(KEYCODE_RSHIFT) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x58) PORT_IMPULSE(1) |
| 260 | 264 | |
| 261 | 265 | PORT_START("key7") /* KEY ROW 7 */ |
| 262 | 266 | PORT_BIT(0x01, 0x00, IPT_KEYBOARD) PORT_NAME("LINE FEED") |
| 263 | | PORT_BIT(0x02, 0x00, IPT_KEYBOARD) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x26) PORT_IMPULSE(1) |
| 267 | PORT_BIT(0x02, 0x00, IPT_KEYBOARD) PORT_NAME("SPACE") PORT_CODE(KEYCODE_SPACE) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x5f) PORT_IMPULSE(1) |
| 264 | 268 | PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("- (KP)") PORT_CODE(KEYCODE_MINUS_PAD) |
| 265 | 269 | PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME(", (KP)") PORT_CODE(KEYCODE_PLUS_PAD) |
| 266 | 270 | PORT_BIT(0x10, 0x00, IPT_KEYBOARD) PORT_NAME("ENTER (KP)") PORT_CODE(KEYCODE_ENTER_PAD) |
| r29545 | r29546 | |
| 283 | 287 | PORT_BIT(0x02, 0x00, IPT_KEYBOARD) PORT_NAME("*") PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x24) PORT_IMPULSE(1) // (KP?) |
| 284 | 288 | PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("#") PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x25) PORT_IMPULSE(1) // (KP?) |
| 285 | 289 | |
| 290 | PORT_START("keya") |
| 291 | PORT_BIT(0x01, 0x00, IPT_KEYBOARD) PORT_NAME("F1") PORT_CODE(KEYCODE_F1) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x01) PORT_IMPULSE(1) |
| 292 | PORT_BIT(0x02, 0x00, IPT_KEYBOARD) PORT_NAME("F2") PORT_CODE(KEYCODE_F2) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x02) PORT_IMPULSE(1) |
| 293 | PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("F3") PORT_CODE(KEYCODE_F3) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x03) PORT_IMPULSE(1) |
| 294 | PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME("F4") PORT_CODE(KEYCODE_F4) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x04) PORT_IMPULSE(1) |
| 295 | PORT_BIT(0x10, 0x00, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x05) PORT_IMPULSE(1) |
| 296 | PORT_BIT(0x20, 0x00, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x06) PORT_IMPULSE(1) |
| 297 | PORT_BIT(0x40, 0x00, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x07) PORT_IMPULSE(1) |
| 298 | PORT_BIT(0x80, 0x00, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x08) PORT_IMPULSE(1) |
| 299 | |
| 300 | PORT_START("keyb") |
| 301 | PORT_BIT(0x01, 0x00, IPT_KEYBOARD) PORT_NAME("F9") PORT_CODE(KEYCODE_F9) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x09) PORT_IMPULSE(1) |
| 302 | PORT_BIT(0x02, 0x00, IPT_KEYBOARD) PORT_NAME("F10") PORT_CODE(KEYCODE_F10) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x0a) PORT_IMPULSE(1) |
| 303 | PORT_BIT(0x04, 0x00, IPT_KEYBOARD) PORT_NAME("F11") PORT_CODE(KEYCODE_F11) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x0b) PORT_IMPULSE(1) |
| 304 | PORT_BIT(0x08, 0x00, IPT_KEYBOARD) PORT_NAME("F12") PORT_CODE(KEYCODE_F12) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x0c) PORT_IMPULSE(1) |
| 305 | // PORT_BIT(0x10, 0x00, IPT_KEYBOARD) PORT_NAME("F5") PORT_CODE(KEYCODE_F5) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x05) PORT_IMPULSE(1) |
| 306 | // PORT_BIT(0x20, 0x00, IPT_KEYBOARD) PORT_NAME("F6") PORT_CODE(KEYCODE_F6) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x06) PORT_IMPULSE(1) |
| 307 | // PORT_BIT(0x40, 0x00, IPT_KEYBOARD) PORT_NAME("F7") PORT_CODE(KEYCODE_F7) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x07) PORT_IMPULSE(1) |
| 308 | // PORT_BIT(0x80, 0x00, IPT_KEYBOARD) PORT_NAME("F8") PORT_CODE(KEYCODE_F8) PORT_CHANGED_MEMBER(DEVICE_SELF, a310_state, key_stroke, 0x08) PORT_IMPULSE(1) |
| 309 | |
| 310 | |
| 286 | 311 | PORT_START("via1a") /* VIA #1 PORT A */ |
| 287 | 312 | PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START) PORT_PLAYER(1) |
| 288 | 313 | PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START) PORT_PLAYER(2) |