static void store_pa(tpi_context_t *tpi_context, BYTE byte) { if (byte != tpi_context->oldpa) { BYTE tmp = ~byte; ieee_is_dev = byte & 0x01; ieee_is_out = byte & 0x02; parallel_cpu_set_bus((BYTE)(ieee_is_out ? tpi_context->oldpb : 0xff)); if (ieee_is_out) { parallel_cpu_set_ndac(0); parallel_cpu_set_nrfd(0); parallel_cpu_set_dav((BYTE)(tmp & 0x10)); parallel_cpu_set_eoi((BYTE)(tmp & 0x20)); } else { parallel_cpu_set_nrfd((BYTE)(tmp & 0x80)); parallel_cpu_set_ndac((BYTE)(tmp & 0x40)); parallel_cpu_set_dav(0); parallel_cpu_set_eoi(0); } if (ieee_is_dev) { parallel_cpu_set_atn(0); } else { parallel_cpu_set_atn((BYTE)(tmp & 0x08)); } } }
static void reset(via_context_t *via_context) { /* set IEC output lines */ parallel_cpu_set_atn(0); parallel_cpu_set_nrfd(0); printer_userport_write_data(0xff); printer_userport_write_strobe(1); }
static void reset(tpi_context_t *tpi_context) { /* assuming input after reset */ parallel_cpu_set_atn(0); parallel_cpu_set_ndac(0); parallel_cpu_set_nrfd(0); parallel_cpu_set_dav(0); parallel_cpu_set_eoi(0); parallel_cpu_set_bus(0xff); cia1_set_ieee_dir(machine_context.cia1, 0); }
static void store_pa(tpi_context_t *tpi_context, BYTE byte) { if (byte != tpi_context->oldpa) { BYTE tmp = ~byte; cia1_set_ieee_dir(machine_context.cia1, byte & 2); if (byte & 2) { parallel_cpu_set_ndac(0); parallel_cpu_set_nrfd(0); parallel_cpu_set_atn((BYTE)(tmp & 0x08)); parallel_cpu_set_dav((BYTE)(tmp & 0x10)); parallel_cpu_set_eoi((BYTE)(tmp & 0x20)); } else { /* order is important */ parallel_cpu_set_nrfd((BYTE)(tmp & 0x80)); parallel_cpu_set_ndac((BYTE)(tmp & 0x40)); parallel_cpu_set_atn(0); parallel_cpu_set_dav(0); parallel_cpu_set_eoi(0); } } }
static void reset(tpi_context_t *tpi_context) { /* assuming input after reset */ parallel_cpu_set_atn(0); parallel_cpu_set_ndac(0); parallel_cpu_set_nrfd(0); parallel_cpu_set_dav(0); parallel_cpu_set_eoi(0); parallel_cpu_set_bus(0xff); ieee_is_dev = 1; ieee_is_out = 1; }
static void store_prb(via_context_t *via_context, BYTE byte, BYTE myoldpb, WORD addr) { if ((addr == VIA_DDRB) && (via_context->via[addr] & 0x20)) { log_warning(via_context->log, "PET: Killer POKE! might kill a real PET!\n"); } parallel_cpu_set_nrfd((BYTE)(!(byte & 0x02))); parallel_cpu_set_atn((BYTE)(!(byte & 0x04))); if ((byte ^ myoldpb) & 0x8) { datasette_toggle_write_bit((~(via_context->via[VIA_DDRB]) | byte) & 0x8); } }
static BYTE store_pcr(via_context_t *via_context, BYTE byte, WORD addr) { #if 0 if (byte != via_context->via[VIA_PCR]) { register BYTE tmp = byte; /* first set bit 1 and 5 to the real output values */ if ((tmp & 0x0c) != 0x0c) tmp |= 0x02; if ((tmp & 0xc0) != 0xc0) tmp |= 0x20; parallel_cpu_set_atn((byte & 2) ? 0 : 1); parallel_cpu_set_eoi((byte & 0x20) ? 0 : 1); } #endif return byte; }
static void set_ca2(via_context_t *via_context, int state) { parallel_cpu_set_atn((char)(state ? 0 : 1)); }
static void set_ca2(int state) { parallel_cpu_set_atn((char)(state ? 0 : 1)); }