10 CLS:SCREEN 0:WIDTH 40:KEY OFF
20 COLOR 15,4,4:DEFINT A-Z
25 CLEAR 200,&HC000
30 DIM IP(4)
40 INPUT "IP destino ";IP$
45 IF IP$="" THEN PRINT "IP INVALIDO! REDIGITE.": GOTO 40
50 P = 1: IP(1)=0:IP(2)=0:IP(3)=0:IP(4)=0
60 FOR I=1 TO LEN(IP$)
70 IF MID$(IP$,I,1) = "." THEN P=P+1:GOTO 100
80 V=VAL(MID$(IP$,I,1))
90 IP(P) = IP(P) * 10 + V
100 IF P > 4 THEN I=LEN(IP$)
110 NEXT
120 IF P <> 4 THEN PRINT "ERRO! IP NAO TEM 4 OCTETOS, REDIGITE!":GOTO 40
130 FOR I = 1 TO 4
140 IF IP(I) < 0 OR IP(I) > 255 THEN PRINT "OCTETO ";I;" FORA DA FAIXA! REGIDITE.": GOTO 40
150 NEXT
160 OUT &H90, 20 : REM LIMPA BUFFERS
170 FOR I = 1 TO 4:OUT &h91,IP(I) : NEXT : REM SETA 4 OCTETOS DO IP DESTINO
180 OUT &h90,45 : REM MANDA COMANDO PARA SETAR IP DESTINO
190 GOSUB 2000
200 CLS: LINHA = 1 : MSG$="": U$ = ""
210 GOSUB 500
220 OUT &H90, 0 : REM PERGUNTA TAMANHO DO BUFFER
230 L=INP(&H91):IF L = 0 THEN GOTO 300
240 FOR I = 1 TO L : A = INP(&H91)
250 IF A > 31 AND A < 128 THEN MSG$ = MSG$ + CHR$(A)
260 IF LEN(MSG$)>30 THEN GOSUB 1000
270 GOSUB 600
280 NEXT:GOSUB 1000
300 GOSUB 600
310 GOTO 220

500 REM MOSTRA MENSAGEM NA ULTIMA LINHA PEDINDO PARA USUARIO DIGITAR FRASE
510 LOCATE 1,23: COLOR 15: PRINT "VOCE: ";
520 RETURN

600 REM VERIFICA SE USUARIO DIGITOU ALGO
610 A$ = INKEY$: IF A$ = "" THEN RETURN
620 A = ASC(A$):IF A = 8 AND U$ <> "" THEN U$=LEFT$(U$,LEN(U$)-1)
625 IF A > 31 AND A < 128 THEN U$=U$+A$
630 IF A = 13 OR LEN(U$) > 30 THEN GOSUB 1100
640 LOCATE 7,23:COLOR 15:PRINT U$;STRING$(30-LEN(U$)," ");
650 RETURN

1000 REM EXIBE MENSAGEM RECEBIDA DE FORA
1010 IF LEN(MSG$)=0 THEN RETURN
1020 LOCATE 1,LINHA: COLOR 15:PRINT "REC: ";
1025 COLOR 15:PRINT MSG$
1030 MSG$=""
1040 LINHA = LINHA + 1
1050 IF LINHA > 20 THEN GOSUB 1500
1060 RETURN

1100 REM EXIBE MENSAGEM ENVIADA E A ENVIA
1110 LOCATE 1,LINHA: COLOR 15:PRINT "ENV: ";
1120 COLOR 15:PRINT U$
1130 IF U$="" THEN GOTO 1150
1140 FOR I = 1 TO LEN(U$):OUT &H91,ASC(MID$(U$,I,1)):NEXT
1150 OUT &H91, 13 : REM ENVIA CR
1160 OUT &H90, 50 : REM ENVIA DADOS VIA UDP
1170 U$=""
1180 LINHA = LINHA + 1
1190 IF LINHA > 20 THEN GOSUB 1500
1200 RETURN

1500 REM ROLA TELA
1510 A=USR(0)
1520 LINHA=20
1530 RETURN

2000 REM CARREGA CODIGO MAQUINA
2010 FOR I=1 TO 25:READ A:POKE &HBFFF+I, A:NEXT
2020 DEFUSR=&HC000
2030 RETURN

2100 DATA &H21,&H28,&H00,&H11,&H00,&HC1,&H01,&H48,&H03,&HCD
2110 DATA &H59,&H00,&H21,&H00,&HC1,&H11,&H00,&H00,&H01,&H48
2120 DATA &H03,&HCD,&H5C,&H00,&HC9
