--- np2/io/dipsw.c 2003/10/16 17:57:50 1.1 +++ np2/io/dipsw.c 2007/11/11 13:54:14 1.6 @@ -1,46 +1,43 @@ #include "compiler.h" #include "sysmng.h" -#include "i286.h" +#include "cpucore.h" #include "pccore.h" #include "iocore.h" +#include "sound.h" +#include "beep.h" -void IOOUTCALL dipsw_w8(UINT port, BYTE value) { +void IOOUTCALL dipsw_w8(UINT port, REG8 value) { - BYTE set; - UINT update; + UINT8 set; - update = 0; switch(port & 0x0f00) { case 0x0400: if (!(iflags[value] & 0x04)) { - set = (value ^ 0x04) & 0xbc; - if ((np2cfg.dipsw[0] ^ set) & 0xbc) { - np2cfg.dipsw[0] &= ~(0xbc); - np2cfg.dipsw[0] |= set; - update |= SYS_UPDATECFG; + set = value & 0xfc; + if ((pccore.dipsw[0] ^ set) & 0xfc) { + pccore.dipsw[0] &= ~(0xfc); + pccore.dipsw[0] |= set; } } break; case 0x0500: if (!(iflags[value] & 0x04)) { - set = value & 0xaf; - if ((np2cfg.dipsw[1] ^ set) & 0xaf) { - np2cfg.dipsw[1] &= ~(0xaf); - np2cfg.dipsw[1] |= set; - update |= SYS_UPDATECFG; + set = value & 0xef; + if ((pccore.dipsw[1] ^ set) & 0xef) { + pccore.dipsw[1] &= ~(0xef); + pccore.dipsw[1] |= set; } } break; case 0x0600: if (!(iflags[value] & 0x04)) { - set = (value ^ 0x08) & 0x3f; - if ((np2cfg.dipsw[2] ^ set) & 0x3f) { - np2cfg.dipsw[2] &= ~(0x3f); - np2cfg.dipsw[2] |= set; - update |= SYS_UPDATECFG; + set = value & 0x7f; + if ((pccore.dipsw[2] ^ set) & 0x7f) { + pccore.dipsw[2] &= ~(0x7f); + pccore.dipsw[2] |= set; } } break; @@ -48,14 +45,14 @@ void IOOUTCALL dipsw_w8(UINT port, BYTE case 0x0700: if (!(iflags[value] & 0x04)) { set = (value & 0x20) >> 1; - if ((np2cfg.dipsw[1] ^ set) & 0x10) { - np2cfg.dipsw[1] ^= 0x10; - update |= SYS_UPDATECFG; + if ((pccore.dipsw[1] ^ set) & 0x10) { + pccore.dipsw[1] ^= 0x10; } set = (value >> 2) & 0x03; if (np2cfg.BEEP_VOL != set) { np2cfg.BEEP_VOL = set; - update |= SYS_UPDATECFG; + beep_setvol(set); + sysmng_update(SYS_UPDATECFG); } } break; @@ -63,44 +60,43 @@ void IOOUTCALL dipsw_w8(UINT port, BYTE case 0x0e00: if (!(iflags[value] & 0x04)) { set = (value & 0x10) << 3; - if ((np2cfg.dipsw[2] ^ set) & 0x80) { - np2cfg.dipsw[2] ^= 0x80; - update |= SYS_UPDATECFG; + if ((pccore.dipsw[2] ^ set) & 0x80) { + pccore.dipsw[2] ^= 0x80; } } break; } - sysmng_update(update); } -BYTE IOINPCALL dipsw_r8(UINT port) { +REG8 IOINPCALL dipsw_r8(UINT port) { - BYTE ret = 0xff; + REG8 ret; + ret = 0xff; switch(port & 0x0f00) { case 0x0400: - ret = (np2cfg.dipsw[0] ^ 0x04) & 0xbc; + ret = pccore.dipsw[0] & 0xfc; if (iflags[ret] & 0x04) { ret |= 0x01; } break; case 0x0500: - ret = np2cfg.dipsw[1] & 0xaf; + ret = pccore.dipsw[1] & 0xef; if (iflags[ret] & 0x04) { ret |= 0x10; } break; case 0x0600: - ret = (np2cfg.dipsw[2] ^ 0x02) & 0x33; + ret = pccore.dipsw[2] & 0x7f; if (iflags[ret] & 0x04) { ret |= 0x80; } break; case 0x0700: - ret = ((np2cfg.dipsw[1] & 0x10) << 1) | + ret = ((pccore.dipsw[1] & 0x10) << 1) | ((np2cfg.BEEP_VOL & 0x03) << 2); if (iflags[ret] & 0x04) { ret |= 0x80; @@ -108,7 +104,7 @@ BYTE IOINPCALL dipsw_r8(UINT port) { break; case 0x0e00: - ret = (np2cfg.dipsw[2] & 0x80) >> 3; + ret = (pccore.dipsw[2] & 0x80) >> 3; if (iflags[ret] & 0x04) { ret |= 0x80; }