public bool GetDO(int port)
        {
            Func <short, int> getDO = ty =>
            {
                int s;
                N.GT_GetDo(card, ty, out s).Verify();
                return(s);
            };

            var p = port;

            if (p < 0)
            {
                return(false);
            }

            if (p < 16)
            {
                return(CheckBit(getDO(Api.MC_GPO), p));
            }
            p -= 16;

            if (p < 8)
            {
                return(CheckBit(getDO(Api.MC_ENABLE), p));
            }
            p -= 8;

            if (p < 8)
            {
                return(CheckBit(getDO(Api.MC_CLEAR), p));
            }

            return(false);
        }