示例#1
0
文件: Util.c 项目: lgnq/tw8836
void WaitVBlank(BYTE cnt)
{
	XDATA	BYTE i;
	WORD loop;
	DECLARE_LOCAL_page

	ReadTW88Page(page);
	WriteTW88Page(PAGE0_GENERAL );

	for ( i=0; i<cnt; i++ ) {
		WriteTW88(REG002, 0xff );
		loop = 0;
		while (!( ReadTW88(REG002 ) & 0x40 ) ) {
			// wait VBlank
			loop++;
			if(loop > VBLANK_WAIT_VALUE  ) {
				wPrintf("\nERR:WaitVBlank");
				break;
			}
		}		
	}
	WriteTW88Page(page);
}
示例#2
0
void TERMWINDOWMEMBER shownode(const NodesCitC *nd, ModemConsoleE W)
    {
    assert (nd);

    if (!read_node_ddata())
        {
        wPrintf(W, getmsg(59));
        return;
        }

    const char **nettypes = (const char **) nddd->next->aux;
    const char **nodemsgs = (const char **) nddd->next->next->aux;

    wPrintf(W, getnodemsg(14), nd->GetName());                  wDoCR(W);
    wPrintf(W, getnodemsg(15), nd->GetOldRegion());             wDoCR(W);
    wPrintf(W, getnodemsg(16), nd->GetAlias(), nd->GetLocID()); wDoCR(W);
#ifdef WINCIT
    wPrintf(W, "IpAddress:   %s", nd->GetIpAddress());          wDoCR(W);
    wPrintf(W, "IpPort:      %d", nd->GetIpPort());             wDoCR(W);
#endif
    wPrintf(W, getnodemsg(17), nd->GetPreDial());               wDoCR(W);
    wPrintf(W, getnodemsg(18), nd->GetDialOut());               wDoCR(W);
    wPrintf(W, getnodemsg(19), bauds[nd->GetBaud()]);           wDoCR(W);
    wPrintf(W, getnodemsg(20), nd->GetLoginMacro());            wDoCR(W);
    wPrintf(W, getnodemsg(21), nd->GetDialTimeout());           wDoCR(W);
    wPrintf(W, getnodemsg(22), nd->GetProtocol());              wDoCR(W);
    wPrintf(W, getnodemsg(23), nd->GetWaitTimeout());           wDoCR(W);
    wPrintf(W, getnodemsg(24), nd->GetMailFileName());          wDoCR(W);

    label Buffer;
    wPrintf(W, getnodemsg(25), nd->GetAutoHall() > 0 ?
            HallData[nd->GetAutoHall()].GetName(Buffer, sizeof(Buffer)) : getnodemsg(28));
    wDoCR(W);

    wPrintf(W, getnodemsg(26), nd->GetAutoGroup() > 0 ?
            GroupData[nd->GetAutoGroup()].GetName(Buffer, sizeof(Buffer)) : getnodemsg(28));
    wDoCR(W);

    wPrintf(W, getnodemsg(27), GroupData[nd->GetMapUnknownGroup()].GetName(Buffer, sizeof(Buffer)));
    wDoCR(W);

    wPrintf(W, getnodemsg(29), nettypes[nd->GetNetworkType()],
            nd->GetNetworkRevisionNumber() ? nd->GetNetworkRevisionNumber() + '@' : ' ');
    wDoCR(W);

    wPrintf(W, getnodemsg(30), nd->GetCreatePacket());          wDoCR(W);
    wPrintf(W, getnodemsg(31), nd->GetExtractPacket());         wDoCR(W);
    wPrintf(W, getnodemsg(32), nd->IsAutoRoom());               wDoCR(W);
    wPrintf(W, getnodemsg(33), nd->GetRequest());               wDoCR(W);
    wPrintf(W, getnodemsg(34), nd->IsGateway());                wDoCR(W);
    wPrintf(W, getnodemsg(35), nd->GetFetch());                 wDoCR(W);
    wPrintf(W, getnodemsg(36), nd->GetNetFail());               wDoCR(W);
    wPrintf(W, getnodemsg(37), nd->GetRedial());                wDoCR(W);
    wPrintf(W, getnodemsg(38), nd->GetOutputPace());            wDoCR(W);

    dump_node_ddata();
    }
示例#3
0
Bool ResolveMessageAddressingIssues(Message *Msg, ModemConsoleE W)
#endif
	{
	l_slot logslot;

	if (*Msg->GetToNodeName())
		{
		logslot = FindPersonByPartialName(Msg->GetToNodeName(), NULL);
		}
	else
		{
		logslot = FindPersonByPartialName(Msg->GetToUser(), NULL);
		}

	if (logslot == CERROR && *Msg->GetDestinationAddress())
		{
		logslot = nodexists(Msg->GetDestinationAddress(), NULL);

		if (logslot != CERROR)
			{
			label Buffer;
			Msg->SetToNodeName(LogTab[logslot].GetName(Buffer, sizeof(Buffer)));

			label Buffer1, ToAddress;
			makeaddress(LogTab[logslot].GetAlias(Buffer, sizeof(Buffer)),
					LogTab[logslot].GetLocID(Buffer1, sizeof(Buffer1)), ToAddress);
			Msg->SetDestinationAddress(ToAddress);
			}
		}

	if (logslot == CERROR)
		{
		if (!*Msg->GetToNodeName())
			{
			// forward 'sysop' messages to #sysop if #forward
			if (SameString(Msg->GetToUser(), getmsg(386)) && cfg.forward && (FindPersonByName(cfg.sysop, NULL) != CERROR))
				{
				Msg->SetToUser(cfg.sysop);

				if (TW)
					{
					tw()wPrintf(W, getmsg(563), cfg.Lmsg_nym, cfg.sysop);
					tw()wDoCR(W);
					}
				}
			else if (!SameString(Msg->GetToUser(), getmsg(386)) && !SameString(Msg->GetToUser(), getmsg(385)) &&
					!IsMailingList(Msg->GetToUser()))
				{
				if (TW)
					{
					tw()wDoCR(W);
					tw()wPrintf(W, getmsg(595), Msg->GetToUser());
					tw()wDoCR(W);
					}

				return (FALSE);
				}
			}
		}
	else
		{
		if (*Msg->GetToNodeName())
			{
			label Buffer;
			Msg->SetToNodeName(LogTab[logslot].GetName(Buffer, sizeof(Buffer)));
			}
		else
			{
			label Buffer;
			Msg->SetToUser(LogTab[logslot].GetName(Buffer, sizeof(Buffer)));
			}

		if (LogTab[logslot].IsNode() && !(*Msg->GetToNodeName()))
			{
			Msg->SetToNodeName(Msg->GetToUser());
			Msg->SetToUser(getmsg(386));

			if (TW)
				{
				tw()wPrintf(W, getmsg(562), cfg.Umsg_nym, Msg->GetToNodeName());
				tw()wDoCR(W);
				}
			}
		}

	if (logslot != CERROR && !*Msg->GetToNodeName())
		{
		LogEntry1 Log1;
		label ForwardAddr;

		if (Log1.Load(LogTab[logslot].GetLogIndex()) && *(Log1.GetForwardAddr(ForwardAddr, sizeof(ForwardAddr))))
			{
			if (!Log1.IsForwardToNode())
				{
				// Regular forwarding
				l_slot logslot2;

				logslot2 = FindPersonByName(ForwardAddr, NULL);

				if (logslot2 != CERROR)
					{
					label Buffer;
					LogTab[logslot2].GetName(Buffer, sizeof(Buffer));

					Msg->SetForward(Buffer);

					if (TW)
						{
						tw()wPrintf(W, getmsg(561), cfg.Umsg_nym);
						tw()wPrintf(W, pcts, Msg->GetForward());
						}
					}

				if (TW)
					{
					tw()wDoCR(W);
					}
				}
			else
				{
				// Forwarding to node
				label Buffer;
				Log1.GetForwardAddrNode(Buffer, sizeof(Buffer));

				Msg->SetForward(ForwardAddr);
				Msg->SetToNodeName(Buffer);

				if (TW)
					{
					tw()wPrintf(W, getmsg(561), cfg.Umsg_nym);
					tw()wPrintf(W, getmsg(101), ForwardAddr, Buffer);
					}
				}
			}
		}

	return (TRUE);
	}