コード例 #1
0
ファイル: monam.c プロジェクト: smylydon/commodore64emulator
dword Immed(byte mnemonic, byte *op)
{
	dword s=0;
	byte adr=A_IMM;
	mnemonic=scan_adr(adr,mnemonic);
	if(ERROR==0)
	{
		s=get_number(op);
		if((ERROR==0)&&(*(op+1)==NULL)&&(nybbles==1))
		{
			mnspoke(cpu.ppc2,(dword)mnemonic);
			mnspoke(cpu.ppc2+1,s);
			disa(1);
			return(0);
		}
		if((ERROR==0)&&(*(op+2)==NULL)&&(nybbles==2))
		{
			mnspoke(cpu.ppc2,(dword)mnemonic);
			mnspoke(cpu.ppc2+1,s);
			disa(1);
			return(0);
		}
	}
	badad();
	return(10);
}
コード例 #2
0
ファイル: monam.c プロジェクト: smylydon/commodore64emulator
dword accimp(byte mnemonic)
{
	int x=0;
	byte adr;
	int address=cpu.ppc2;
	ERROR=0xff;
	while(x<=255)
	{
		adr=adrmode[x];
		if(mnemonic==decode[x])
		{
			if((adr==A_IMPL)||(adr==A_ACCU))
			{
				ERROR=0;
				break;
			}
		}
		x++;
	}
	if(ERROR==0)
	{
		mnspoke(address,x);
		disa(1);
		return(0);
	}
	badad();
	return(0x10);
}
コード例 #3
0
ファイル: monam.c プロジェクト: smylydon/commodore64emulator
dword relative(byte mnemonic,byte *op)
{
	int s=0;
	int address=cpu.ppc2;
	byte adr=A_REL;
	mnemonic=scan_adr(adr,mnemonic);
	if(ERROR==0)
	{
		s=get_number(op)&0xffff;
		if(ERROR==0)
		{
			if(nybbles>=3)
			{
				if(s>=address)
				{
					s=(s+1-(address))&0xff;
				}
				else
				{
					s=0xff-((address+1-s)&0xff);
				}
				mnspoke(address,(int)mnemonic);
				mnspoke(address+1,s);
				disa(1);
				return(0);
			}
			if(nybbles<=2)
			{
				mnspoke(address,(int)mnemonic);
				mnspoke(address+1,s);
				disa(1);
				return(0);
			}
		}
	}
	badad();
	return(10);
}
コード例 #4
0
ファイル: monam.c プロジェクト: smylydon/commodore64emulator
dword indjmp(byte mnemonic, byte *op)
{
	int s=0;
	int address=cpu.ppc2;
	s=get_number(op);

	if((ERROR==0)&&(nybbles<=4))
	{
		op+=nybbles;
		if((*op==')')&&(*(op+1)==NULL))
		{
			mnemonic=scan_adr(A_IND,mnemonic);
			if(ERROR==0)
			{
				mnspoke(address,(int)mnemonic);
				mnspoke(address+1,s&0xff);
				mnspoke(address+2,(s>>8)&0xff);
				disa(1);
				return(0);
			}
コード例 #5
0
ファイル: shut.c プロジェクト: fstltna/empserver
int
shut(void)
{
    int shutdown_minutes;
    int shutdown_was_pending;
    char buf[1024];
    char *p;

    shutdown_minutes =
	onearg(player->argp[1],
	       "Time until shutdown in minutes (-1 to abort shutdown sequence)? ");
    if (player->aborted)
	return RET_SYN;
    if (!updates_disabled()) {
	p = getstarg(player->argp[2], "Disable update [y]? ", buf);
	if (!p)
	    return RET_SYN;
	if (*p != 'n')
	    disa();
    }

    shutdown_was_pending = shutdown_initiate(shutdown_minutes);
    if (shutdown_was_pending < 0)
	return RET_FAIL;

    if (shutdown_minutes >= 0) {
	if (shutdown_was_pending)
	    pr("The shutdown time has been changed to %d minutes!\n",
	       shutdown_minutes);
	else
	    pr("Shutdown sequence begun.\n");
    } else {
	if (shutdown_was_pending)
	    pr("The server shutdown has been cancelled!\n");
	else {
	    pr("No shutdown to abort\n");
	    return RET_FAIL;
	}
    }
    return RET_OK;
}