--- np2/io/dipsw.c 2003/10/16 17:57:50 1.1.1.1 +++ np2/io/dipsw.c 2005/02/07 14:46:11 1.5 @@ -1,22 +1,24 @@ #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; + UINT8 set; UINT update; 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); + set = value & 0xfc; + if ((np2cfg.dipsw[0] ^ set) & 0xfc) { + np2cfg.dipsw[0] &= ~(0xfc); np2cfg.dipsw[0] |= set; update |= SYS_UPDATECFG; } @@ -25,9 +27,9 @@ void IOOUTCALL dipsw_w8(UINT port, BYTE case 0x0500: if (!(iflags[value] & 0x04)) { - set = value & 0xaf; - if ((np2cfg.dipsw[1] ^ set) & 0xaf) { - np2cfg.dipsw[1] &= ~(0xaf); + set = value & 0xef; + if ((np2cfg.dipsw[1] ^ set) & 0xef) { + np2cfg.dipsw[1] &= ~(0xef); np2cfg.dipsw[1] |= set; update |= SYS_UPDATECFG; } @@ -36,9 +38,9 @@ void IOOUTCALL dipsw_w8(UINT port, BYTE case 0x0600: if (!(iflags[value] & 0x04)) { - set = (value ^ 0x08) & 0x3f; - if ((np2cfg.dipsw[2] ^ set) & 0x3f) { - np2cfg.dipsw[2] &= ~(0x3f); + set = value & 0x7f; + if ((np2cfg.dipsw[2] ^ set) & 0x7f) { + np2cfg.dipsw[2] &= ~(0x7f); np2cfg.dipsw[2] |= set; update |= SYS_UPDATECFG; } @@ -55,6 +57,7 @@ void IOOUTCALL dipsw_w8(UINT port, BYTE set = (value >> 2) & 0x03; if (np2cfg.BEEP_VOL != set) { np2cfg.BEEP_VOL = set; + beep_setvol(set); update |= SYS_UPDATECFG; } } @@ -73,27 +76,28 @@ void IOOUTCALL dipsw_w8(UINT port, BYTE 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 = np2cfg.dipsw[0] & 0xfc; if (iflags[ret] & 0x04) { ret |= 0x01; } break; case 0x0500: - ret = np2cfg.dipsw[1] & 0xaf; + ret = np2cfg.dipsw[1] & 0xef; if (iflags[ret] & 0x04) { ret |= 0x10; } break; case 0x0600: - ret = (np2cfg.dipsw[2] ^ 0x02) & 0x33; + ret = np2cfg.dipsw[2] & 0x7f; if (iflags[ret] & 0x04) { ret |= 0x80; }