Annotation of researchv9/jtools/src/pads/x11/protocol.c, revision 1.1

1.1     ! root        1: #define PADS_TERM
        !             2: #include <pads.pri>
        !             3: 
        !             4: static void Proto(p)
        !             5: {
        !             6:        PutRemote(p);
        !             7: }
        !             8: 
        !             9: static void CheckProto( p )
        !            10: {
        !            11:        if( GetRemote() != p ) ProtoErr("");
        !            12: }
        !            13: 
        !            14: static long ShiftIn( bytes )
        !            15: register bytes;
        !            16: {
        !            17:        register long shifter = 0;
        !            18: 
        !            19:        CheckProto( bytes );
        !            20:        while( bytes-- ) shifter = (shifter<<8) + (GetRemote()&0xFF);
        !            21:        return shifter;
        !            22: }
        !            23: 
        !            24: long  RcvLong()  { return (long)  ShiftIn( P_LONG  ); }
        !            25: short RcvShort() { return (short) ShiftIn( P_SHORT ); }
        !            26: unsigned char RcvUChar() { return (unsigned char) ShiftIn( P_UCHAR ); }
        !            27: 
        !            28: static void ShiftOut( bytes, shifter )
        !            29: register bytes;
        !            30: register long shifter;
        !            31: {
        !            32:        Proto( bytes );
        !            33:        do PutRemote( (char)(shifter>>( (--bytes)*8 )) ); while( bytes );
        !            34: }
        !            35: 
        !            36: void SendLong(x)  long  x; { ShiftOut( P_LONG,  (long) x ); }
        !            37: void SendShort(x) short x; { ShiftOut( P_SHORT, (long) x ); }
        !            38: void SendUChar(x) unsigned char x; { ShiftOut( P_UCHAR, (long) x ); }
        !            39: 
        !            40: char *RcvString( s )
        !            41: register char *s;
        !            42: {
        !            43:        register unsigned char len;
        !            44: 
        !            45:        assertf( (long) s );
        !            46:        CheckProto( P_STRING );
        !            47:        len = RcvUChar();
        !            48:        while( len-->0 ) *s++ = GetRemote();
        !            49:        *s = '\0';
        !            50:        return s;
        !            51: }
        !            52: 
        !            53: void SendString(s)
        !            54: register char *s;
        !            55: {
        !            56:        Proto( P_STRING );
        !            57:        SendUChar( strlen(s) );
        !            58:        while( *s ) PutRemote(*s++); 
        !            59: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.