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

1.1     ! root        1: #include "univ.h"
        !             2: #define REMOTEBUFFER 64
        !             3: unsigned char RemoteBuffer[REMOTEBUFFER];
        !             4: int RemoteIndex;
        !             5: 
        !             6: FlushRemote()
        !             7: {
        !             8:        if( RemoteIndex ){
        !             9:                sendnchars(RemoteIndex, RemoteBuffer);
        !            10:                RemoteIndex = 0;
        !            11:        }
        !            12: }
        !            13: 
        !            14: GetRemote()
        !            15: {
        !            16:        register int c;
        !            17: 
        !            18:        while( (c = rcvchar() ) == -1 ){
        !            19:                cursswitch(&Coffee);
        !            20:                wait(RCV);
        !            21:                cursswitch(Pcursor);
        !            22:        }
        !            23:        return c;
        !            24: }
        !            25: 
        !            26: void PutRemote( c )
        !            27: char c;
        !            28: {
        !            29:        if( RemoteIndex >= REMOTEBUFFER ) FlushRemote();
        !            30:        RemoteBuffer[RemoteIndex++] = c;
        !            31: }
        !            32: 
        !            33: ToHost( p, s )
        !            34: Protocol p;
        !            35: short s;
        !            36: {
        !            37:        extern Pad *Current;
        !            38: 
        !            39:        PutRemote( p );
        !            40:        SendLong( HostParent );
        !            41:        SendLong( HostObject );
        !            42:        SendShort( s );
        !            43: }
        !            44:        
        !            45: HostAction( i )
        !            46: Index *i;                      /* <text:action:opand> stored at host   */
        !            47: {
        !            48:        ToHost( P_ACTION, *i );
        !            49: }
        !            50: 
        !            51: HostNumeric( n )
        !            52: long n;                                /* always in short range ! */
        !            53: {
        !            54:        ToHost( P_NUMERIC, (short) n );
        !            55: }
        !            56: 
        !            57: RCVServe()     /* poll the host */ 
        !            58: {
        !            59:        register Cursor *t = Pcursor;
        !            60:        register int op;
        !            61: 
        !            62:        FlushRemote();
        !            63: Again:
        !            64:        if( P->state & RCV ){
        !            65:                op = GetRemote();
        !            66:                switch( op&0xF0 ){
        !            67:                case (int)P_VERSION&0xF0:
        !            68:                        if( RcvLong() != PADS_VERSION )
        !            69:                           ProtoErr( "host/term versions differ - regenerate. " );
        !            70:                        break;
        !            71:                case (int)P_PICK&0xF0:
        !            72:                        PickOp();
        !            73:                        break;
        !            74:                case (int)P_HOSTSTATE&0xF0:
        !            75:                        t = (op==(int)P_BUSY) ? &HostBusy : (Cursor*)0;
        !            76:                        goto Again;
        !            77:                case (int)P_PADDEF&0xF0:
        !            78:                case (int)P_PADOP&0xF0: 
        !            79:                        PadOp(op);
        !            80:                        break;
        !            81:                case (int)P_CACHEOP&0xF0:
        !            82:                        CacheOp(op);
        !            83:                        break;
        !            84:                case (int)P_HELPSTR&0xF0:
        !            85:                        HelpString();
        !            86:                        break;
        !            87:                default:
        !            88:                        ProtoErr( "RCVServe(): " );
        !            89:                }
        !            90:        }
        !            91:        if( t != Pcursor ) cursswitch( Pcursor = t );
        !            92: }
        !            93: 
        !            94: HelpString()
        !            95: {
        !            96:        char s[256];
        !            97: 
        !            98:        RcvString(s);
        !            99:        InvertKBDrect(s,"");
        !           100: }
        !           101: 
        !           102: ProtoErr(s)
        !           103: register char *s;
        !           104: {
        !           105:        extern char KBDStr[];
        !           106:        register char *k = KBDStr, *p = "protocol: ";
        !           107: 
        !           108:        while( *s ) *k++ = *s++;
        !           109:        while( *p ) *k++ = *p++;
        !           110:        for(;;){
        !           111:                PaintKBD();
        !           112:                if( k<&KBDStr[64] ) *k++ = GetRemote()&0x7F;
        !           113:                sleep(2);
        !           114:        }
        !           115: }

unix.superglobalmegacorp.com

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