int acia_snapshot_read_module(struct snapshot_s *p) { if (_acia_snapshot_read_module(p) < 0) { _acia_enabled = 0; return -1; } /* FIXME: Why do we need to do so??? */ if (acia_enable() == 0) { acia_reset(); /* Clear interrupts. */ _acia_enabled = 1; } return 0; }
static void acia_write_byte(LONG addr, BYTE data) { CLOCK("Wait states: 6"); cpu_add_extra_cycles(6); switch(addr) { case 0xfffc00: DEBUG("Control %02x", data); if(data == 3) { DEBUG("Reset"); acia_reset(); } else if((data & 0x7C) != 0x14) DEBUG("Unsupported configuration"); acia_control = data; break; case 0xfffc02: TRACE("Write %02x", data); ikbd_write_byte(data); break; } }
/* PLUS4-specific reset sequence. */ void machine_specific_reset(void) { serial_traps_reset(); acia_reset(); rs232drv_reset(); printer_reset(); plus4tcbm1_reset(); plus4tcbm2_reset(); ted_reset(); sid_reset(); cs256k_reset(); h256k_reset(); drive_reset(); datasette_reset(); }
void acia_write(uint16_t addr, uint8_t val) { if (addr & 1) { putchar(val); // acia_sr &= 0xFD; // acia_updateint(); } else if (val != acia_cr) { if (!(val & 0x40)) // interupts disabled as serial TX buffer empties. fflush(stdout); acia_cr = val; if (val == 3) acia_reset(); switch (val & 3) { case 1: acia_tapespeed=0; break; case 2: acia_tapespeed=1; break; } } }
void main_reset() { m6502_reset(); crtc_reset(); video_reset(); sysvia_reset(); uservia_reset(); serial_reset(); acia_reset(&sysacia); wd1770_reset(); i8271_reset(); scsi_reset(); vdfs_reset(); sid_reset(); music4000_reset(); music5000_reset(); sn_init(); if (curtube != -1) tubes[curtube].reset(); else tube_exec = NULL; tube_reset(); memset(ram, 0, 64 * 1024); }