DIM SHARED OUT$, myname$
DIM l AS _UNSIGNED _BYTE
 
PRINT "[Steve's Mini Messenger]"
client = _OPENCLIENT("TCP/IP:7993:172.93.60.23") ' Attempt to connect to Steve's PC host as a client
PRINT "[connected to " + _CONNECTIONADDRESS(client) + "]"
 
INPUT "Enter your name: ", myname$
OUT$ = myname$ + " connected!"
l = LEN(OUT$)
PUT #client, , l
PUT #client, , OUT$
'PRINT "OUT$: "; OUT$
DO
    GetMessage client
    SendMessage mymessage$, client ' display current input on screen
    _LIMIT 30
LOOP
 
'.................... END OF MAIN PROGRAM ................
 
 
SUB GetMessage (client) ' get & display any new message
    DIM l AS _UNSIGNED _BYTE
    GET #client, , l
    IF l > 0 THEN
        _DELAY .1 'some delay so the other 'puter can send the info to us across spiderman's excretions!
        OUT$ = SPACE$(l)
        GET #client, , OUT$
        VIEW PRINT 1 TO 20
        LOCATE 20, 1
        PRINT OUT$
        VIEW PRINT 1 TO 24
    ELSE
        OUT$ = ""
    END IF
END SUB
 
SUB SendMessage (mymessage$, client) ' simple input handler
    DIM l AS _UNSIGNED _BYTE
    k$ = INKEY$
    IF LEN(k$) THEN
        IF k$ = CHR$(8) AND LEN(mymessage$) <> 0 THEN
            mymessage$ = LEFT$(mymessage$, LEN(mymessage$) - 1)
        ELSE
            IF LEN(k$) = 1 AND ASC(k$) >= 32 THEN mymessage$ = mymessage$ + k$
        END IF
    END IF
    VIEW PRINT 1 TO 24
    LOCATE 22, 1: PRINT SPACE$(80); ' erase previous message displayed
    LOCATE 23, 1: PRINT SPACE$(80); ' erase previous message displayed
    t$ = myname$ + ": " + mymessage$
    LOCATE 22, 1: PRINT t$;
    IF k$ = CHR$(13) OR LEN(t$) = 255 THEN ' [Enter] sends the message
        IF mymessage$ = "" THEN SYSTEM ' [Enter] with no message ends program
        mymessage$ = myname$ + ":" + mymessage$
        l = LEN(mymessage$)
        PUT #client, , l
        PUT #client, , mymessage$
        _TITLE mymessage$
 
        mymessage$ = ""
    END IF
    IF k$ = CHR$(27) THEN SYSTEM ' [Esc] key ends program
END SUB