'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...        es.geocities.com/jm00092
'
'______________________________________________________________________
'
DECLARE FUNCTION codi$ (txt$, clave$, que!)
PALETTE 3, 40
PALETTE 6, 54
COLOR 15, 3: CLS
COLOR 15, 1: PRINT SPACE$(80)
LOCATE 1, 10: PRINT "Codificador Basic Hecho en Ronda"
LOCATE 3, 1: COLOR 0, 6: PRINT "      Codificaci¢n "
COLOR 15, 3: LOCATE 4, 3: LINE INPUT "Texto: ", txt$
LOCATE 5, 3: LINE INPUT "Clave: ", clv$
codifi$ = codi$(txt$, clv$, 0)
COLOR 15, 3: LOCATE 7, 3: PRINT "Codificado: ";
COLOR 10, 3: PRINT codifi$
LOCATE 9, 1: COLOR 0, 6: PRINT "   Descodificaci¢n "
LOCATE 25, 10: COLOR 1, 3: PRINT "Para salir escribir Clave = SALIR";
VIEW PRINT 10 TO 24
DO
   COLOR 15: LINE INPUT "  Clave: ", cl$
   PRINT "  Descodificado: ";
   COLOR 10: PRINT codi$(codifi$, cl$, 1)
   PRINT
LOOP UNTIL UCASE$(cl$) = "SALIR"
COLOR 13

'
'  © JM. :: Hecho en Ronda
'
'
'  Procedente de...    www.jm-web.tk     ::    es.geocities.com/jm00092
'
'______________________________________________________________________
'
'
'       txt$......Texto para codificar o decodificar
'       clave$....Clave de codificaci¢n
'       que.......¨Que hacer?: 0=Codificar  1= Decodificar
'
FUNCTION codi$ (txt$, clave$, que)
IF txt$ = "" OR clave$ = "" THEN SOUND 1200, 2: EXIT FUNCTION
salto = LEN(clave$)
Nuevotxt$ = ""
FOR n = 1 TO LEN(txt$) STEP salto
   trozo$ = MID$(txt$, n, salto)
   FOR nn = 1 TO LEN(trozo$)
      A = ASC(MID$(clave$, nn, 1))
      B = ASC(MID$(trozo$, nn, 1))
      SELECT CASE que
         CASE 0
            IF A + B - 30 > 255 THEN A = A - 256
            Nuevaletra$ = CHR$(A + B - 30)
         CASE ELSE
            IF B - A + 30 < 32 THEN Nuevaletra$ = "ş" ELSE Nuevaletra$ = CHR$(B - A + 30)
      END SELECT
      Nuevotxt$ = Nuevotxt$ + Nuevaletra$
   NEXT
NEXT
codi$ = Nuevotxt$
END FUNCTION

