/* This is called with interrupts off. */ void platform_interrupt(void) { switch (last_interrupt) { case INTERRUPT_WDT: timer_interrupt(); break; case INTERRUPT_USCI_A0: tty_interrupt(); break; } }
/* We assign these to dummy to deal with an sdcc bug (should be fixed in next SDCC) */ void platform_interrupt(void) { uint8_t dummy; uint8_t irq = *((volatile uint8_t *)0x37E0); tty_interrupt(); kbd_interrupt(); if (irq & 0x40) dummy = sdcc_bug_2753(*((volatile uint8_t *)0x37EC)); if (irq & 0x80) { /* FIXME??? */ timer_interrupt(); dummy = sdcc_bug_2753(*((volatile uint8_t *)0x37E0)); /* Ack the timer */ } }
void tty_poll(void) { uint8_t reg; /* Do the VG port */ if (ports & 0x10) { reg = vg_tr1865_wrst; if (reg & 0x01) { reg = vg_tr1865_ctrd; tty_inproc(3, reg); } if ((trs_flow & 0x10) && fullq(&ttyinq[3])) vg_tr1865_ctrd = vg_tr1865_ctrd_save & ~1; } /* Do the Model I/III port */ if (ports & 0x08) tty_interrupt(); }
void platform_interrupt(void) { timer_interrupt(); tty_interrupt(); }