Пример #1
0
static void reset(MSXMidi* msxMidi) 
{
    boardClearInt(INT_TMR);
    boardClearInt(INT_RXRDY);

	msxMidi->timerIRQlatch   = 0;
	msxMidi->timerIRQenabled = 0;
	msxMidi->rxrdyIRQlatch   = 0;
	msxMidi->rxrdyIRQenabled = 0;

    i8251Reset(msxMidi->i8251);
    i8254Reset(msxMidi->i8254);
}
Пример #2
0
UInt8 philipsMidiReadStatus(PhilipsMidi* midi)
{
    UInt8 val = midi->status;

    boardClearInt(0x400);
    midi->status &= ~ST_INT;

    return val;
}
Пример #3
0
static void enableRxRDYIRQ(MSXMidi* msxMidi, int enabled)
{
	if (msxMidi->rxrdyIRQenabled != enabled) {
		msxMidi->rxrdyIRQenabled = enabled;
		if (!msxMidi->rxrdyIRQenabled && msxMidi->rxrdyIRQlatch) {
            boardClearInt(INT_RXRDY);
		}
	}
}
Пример #4
0
static UInt8 ym2148ReadStatus(YM2148* midi)
{
    UInt8 val = midi->status;

    boardClearInt(0x800);
    midi->status &= ~ST_INT;

    return val;
}
Пример #5
0
static void setRxReady(MSXRs232* msxRs232, int status)
{
    if (~msxRs232->intmask & INTMASK_RXREADY) {
        if (status)
            boardSetInt(1);
        else
            boardClearInt(1);
    }
}
Пример #6
0
void ym2151Irq(void* ptr, int irq)
{
    YM2151* ym2151 = (YM2151*)ptr;
    if (irq) {
        boardSetDataBus(ym2151->irqVector, 0, 0);
		boardSetInt(0x40);
    }
    else {
		boardClearInt(0x40);
    }
}
Пример #7
0
/* status reset	and	IRQ	handling */
void OPL_STATUS_RESET(FM_OPL *OPL,int flag)
{
	/* reset status	flag */
	OPL->status	&=~flag;
	if((OPL->status	& 0x80))
	{
		if (!(OPL->status &	OPL->statusmask) )
		{
			OPL->status	&= 0x7f;
			boardClearInt(0x10);
		}
	}
}
Пример #8
0
static void setRxRDYIRQ(MSXMidi* msxMidi, int status)
{
	if (msxMidi->rxrdyIRQlatch != status) {
		msxMidi->rxrdyIRQlatch = status;
		if (msxMidi->rxrdyIRQenabled) {
			if (msxMidi->rxrdyIRQlatch) {
                boardSetInt(INT_RXRDY);
			}
            else {
                boardClearInt(INT_RXRDY);
			}
		}
	}
}
Пример #9
0
static void enableTimerIRQ(MSXMidi* msxMidi, int enabled)
{
	if (msxMidi->timerIRQenabled != enabled) {
		msxMidi->timerIRQenabled = enabled;
		if (msxMidi->timerIRQlatch) {
			if (msxMidi->timerIRQenabled) {
                boardSetInt(INT_TMR);
			} 
            else {
                boardClearInt(INT_TMR);
			}
		}
        i8254SetGate(msxMidi->i8254, 2, msxMidi->timerIRQenabled && !msxMidi->timerIRQlatch);
	}
}
Пример #10
0
static void setTimerIRQ(MSXMidi* msxMidi, int status)
{
	if (msxMidi->timerIRQlatch != status) {
		msxMidi->timerIRQlatch = status;
		if (msxMidi->timerIRQenabled) {
			if (msxMidi->timerIRQlatch) {
                boardSetInt(INT_TMR);
			} 
            else {
                boardClearInt(INT_TMR);
			}
		}

        i8254SetGate(msxMidi->i8254, 2, msxMidi->timerIRQenabled && !msxMidi->timerIRQlatch);
	}
}