    ' ============================ SIELIB.BAS ===========================
SUB Abajo (Y%, X%, INI%, NO%, OP%, OPCION$)
    COLOR 15, 7                                             ' 7, 0
    LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
    Y% = Y% + 1
    OP% = OP% + 1
    COLOR 15, 1                                             ' 0, 7
    IF (OP% > NO%) THEN
      OP% = 1
      Y% = INI%
    END IF
    LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
    COLOR 15, 7                                             ' 7, 0
END SUB

SUB Arriba (Y%, X%, INI%, NO%, OP%, OPCION$)
    COLOR 15, 7                                             ' 7, 0
    LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
    Y% = Y% - 1
    OP% = OP% - 1
    IF (OP% = 0) THEN
      Y% = NO% + INI% - 1
      OP% = NO%
    END IF
    COLOR 15, 1                                             ' 0, 7
    LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
    COLOR 15, 7                                             ' 7, 0
END SUB

SUB DespliegaFunciones (REN%, F1$, F2$, F3$, F4$, F5$, F6$, F7$, F8$)
  Imprime REN%, 1,     "ÚÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄÂÄÄÄÄÄÄÄÄÄ¿", 1
  Imprime REN% + 1, 1, "³        ³         ³         ³         ³         ³         ³         ³         ³", 1
  Imprime REN% + 2, 1, "³        ³         ³         ³         ³         ³         ³         ³         ³", 1
  Imprime REN% + 3, 1, "ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ", 1

  COL% = 1
  FOR I = 1 TO 8                                           ' ASIGNA FUNCION I
    SELECT CASE I
      CASE IS = 1
        	F$ = F1$
      CASE IS = 2
        	F$ = F2$
      CASE IS = 3
        	F$ = F3$
      CASE IS = 4
        	F$ = F4$
      CASE IS = 5
        	F$ = F5$
      CASE IS = 6
        	F$ = F6$
      CASE IS = 7
        	F$ = F7$
      CASE IS = 8
        	F$ = F8$
      CASE ELSE
    END SELECT
    Imprime REN% + 1, COL%, "         ", 2                 ' IMPRIME BARRA INVERSA
    Imprime REN% + 2, COL%, "         ", 2

    Imprime REN%, 1,     "Ú", 1
    Imprime REN% + 1, 1, "³", 1
    Imprime REN% + 2, 1, "³", 1
    Imprime REN% + 3, 1, "À", 1

    P = 0                                                  ' BUSCA POS DE LA COMA
    FOR J = 1 TO LEN(F$)
      IF MID$(F$, J, 1) = "," THEN
        	P = J
      END IF
    NEXT J
    IF (P <> 0) AND (LEN(F$) <= 9) THEN
      GOTO A
    END IF
    IF LEN(F$) > 9 THEN
      A:
      P = 0
      FOR J = 1 TO LEN(F$)
        IF MID$(F$, J, 1) = "," THEN
          P = J
        END IF
      NEXT J
      S1$ = MID$(F$, 1, P - 1)
      S2$ = MID$(F$, P + 1, LEN(F$) - P)
      P = (9 - LEN(S1$)) / 2
      C% = COL% + P
      Imprime REN% + 1, C%, S1$, 2
      P = (9 - LEN(S2$)) / 2
      C% = COL% + P
      Imprime REN% + 2, C%, S2$, 2
    ELSE
      P = (9 - LEN(F$)) / 2
      C% = COL% + P
      Imprime REN% + 1, C%, F$, 2
    END IF
    C% = COL% + 3
    F$ = ""
    N$ = "12345678"
    F$ = "F" + MID$(N$, I, 1)
    Imprime REN%, C%, F$, 1
    COL% = COL% + 10
  NEXT I
END SUB

SUB DespliegaMenu (Y%, X%, NO%)
  COLOR 15,7                                               ' ** agrego
  FOR J = 1 TO NO%                                         ' imprime opciones
    LOCATE Y% + J, X% + 1
    PRINT OPCION$(J)
  NEXT J
END SUB

SUB Imprime (REN%, COL%, MENSAJE$, ATR%)                   ' IMPRIME FUNCIONES
  SELECT CASE ATR%
    CASE IS = 1
      COLOR 15, 7                                           ' 0, 7
    CASE IS = 2
      COLOR 15, 7                                           ' 0, 7
    CASE ELSE
  END SELECT
  LOCATE REN%, COL%
  PRINT MENSAJE$;
  COLOR 7, 0                                               ' 7, 0
END SUB

SUB MenuOpciones (Y%, X%, Y2%, X2%, NO%, OPCION$, MARCO%, OP%, DM%, IND%)
      LOCATE 25,79
      IND% = 0
      FOR I = 1 TO NO%
        OPCION$(I) = " " + OPCION$(I)
        FOR J = 1 TO ((X2% - X% - 1) - LEN(OPCION$(I)))
          OPCION$(I) = OPCION$(I) + " "
        NEXT J
      NEXT I
      IF DM% = 0 THEN
        Ventana Y%, X%, Y2%, X2%, MARCO%
        DespliegaMenu Y%, X%, NO%
      END IF
      COLOR 15, 1                                          ' 0, 7
      LOCATE Y% + OP%, X% + 1: PRINT OPCION$(OP%)
      COLOR 15, 1                                          ' 7, 0
      INI% = Y%                                            ' PRIMERA OPCION
      Y% = Y% + OP% - 1
      DO
      LOCATE 25, 79
      X$ = INKEY$
      SELECT CASE UCASE$(X$)
        CASE IS = CHR$(0) + CHR$(72)                       ' FLECHA ARRIBA
           Arriba Y%, X%, INI%, NO%, OP%, OPCION$

        CASE IS = CHR$(0) + CHR$(80)                       ' FLECHA ABAJO
           Abajo Y%, X%, INI%, NO%, OP%, OPCION$

        CASE IS = CHR$(0) + CHR$(71)                       ' HOME
           LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
           Y% = INI%
           OP% = 1
           COLOR 15, 1                                     ' 0, 7
           LOCATE Y% + 1, X% + 1:
           PRINT OPCION$(1)
           COLOR 15, 7                                     ' 7, 0
        CASE IS = CHR$(0) + CHR$(79)                       ' END
           LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
           Y% = INI% + NO% - 1
           OP% = NO%
           COLOR 15, 1                                      ' 0, 7
           LOCATE INI% + NO%, X% + 1:
           PRINT OPCION$(OP%)
           COLOR 15, 7                                     ' 7, 0
        CASE "1" TO CHR$(NO% + 48)                         ' 1 AL 9 AUTOMATIC
           COLOR 15,7
           LOCATE Y% + 1, X% + 1: PRINT OPCION$(OP%)
           OP% = VAL(X$)
           X$ = CHR$(13)
           COLOR 15, 1                                      ' 0, 7
           LOCATE INI% + OP%, X% + 1: PRINT OPCION$(OP%)
           COLOR 15, 7                                      ' 7, 0
        CASE (CHR$(0)+CHR$(59))                            ' F1
           OP%=101
           X$=CHR$(13)                                     ' F2
        CASE (CHR$(0)+CHR$(60))
           OP%=102
           X$=CHR$(13)
        CASE (CHR$(0)+CHR$(61))                            ' F3
           OP%=103
           X$=CHR$(13)
        CASE (CHR$(0)+CHR$(62))                            ' F4
           OP%=104
           X$=CHR$(13)
        CASE (CHR$(0)+CHR$(63))                            ' F5
           OP%=105
           X$=CHR$(13)
        CASE (CHR$(0)+CHR$(64))                            ' F6
           OP%=106
           X$=CHR$(13)
        CASE (CHR$(0)+CHR$(65))                            ' F7
           OP%=107
           X$=CHR$(13)
        CASE (CHR$(0)+CHR$(66))                            ' F8
           OP%=108
           X$=CHR$(13)
        CASE ELSE
      END SELECT
LOOP UNTIL (X$ = CHR$(13)) OR (X$ = CHR$(27))
IF X$ = CHR$(27) THEN
  IND% = 27
END IF
END SUB

SUB Ventana (LineaSup%, ColIzq%, LineaInf%, ColDer%, MARCO%)
    COLOR 0, 7                                             ' ** agregar
     SELECT CASE (MARCO%)
  CASE IS = 256                                            
       E1% = 213: E2% = 191                                ' Õ, ¿
       E3% = 212: E4% = 190                                ' Ô, ¾
       L1% = 205: V1% = 179                                ' Í, ³
 CASE IS = 257
       E1% = 218: E2% = 191                                ' Ú, ¿
       E3% = 192: E4% = 217                                ' Ù, ³
       L1% = 196: V1% = 179                                ' Ä, ³
 CASE IS = 258
       E1% = 201: E2% = 187                                ' É, »
       E3% = 200: E4% = 188                                ' È, ¼
       L1% = 205: V1% = 179                                ' Í, ³
 CASE IS = 259
       E1% = 218: E2% = 191                                ' Ú, ¿
       E3% = 192: E4% = 217                                ' À, Ù
       L1% = 196: V1% = 179                                ' Ä, ³

 CASE ELSE
       E1% = MARCO%: E2% = MARCO%
       E3% = MARCO%: E4% = MARCO%
       L1% = MARCO%: V1% = MARCO%
END SELECT


    'Linea Superior Horizontal
    AnchInt% = ColDer% - ColIzq% - 1
    LOCATE LineaSup%, ColIzq%
    COLOR 15,7
    PRINT CHR$(E1%); STRING$(AnchInt%, CHR$(L1%)); CHR$(E2%);

   'Dibujar Lineas En medio Verticales
    FOR Curline% = LineaSup% + 1 TO LineaInf% - 1
        LOCATE Curline%, ColIzq%:
        COLOR 15,7:PRINT CHR$(V1%); STRING$(AnchInt%, CHR$(32));:COLOR 0,7:PRINT CHR$(V1%);
   NEXT Curline%

   'Dibujar la Linea Inferior Horizontal
   LOCATE LineaInf%, ColIzq%
   COLOR 15,7:PRINT CHR$(E3%);:COLOR 0,7:PRINT STRING$(AnchInt%, CHR$(L1%)); CHR$(E4%);

   'Dibujar Lineas al final
    FOR Curline% = 23 TO 24
        LOCATE Curline%, 80:
        COLOR 0,7:PRINT CHR$(V1%);
   NEXT Curline%
   LOCATE 25,2:PRINT "ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ";
END SUB

