Notas Sobre Clipper 5.3 Después de un mes de uso.

Notas sobre Clipper 5.3 después de un mes de uso (escrito en 1997)

El objetivo de este reporte es dar una versión preliminar sobre el manejo de CLIPPER 5.3, así como sus nuevas funciones, únicamente en entorno DOS.

Características Principales

  1. Modo Gráfico 640* 480 a 16 colores, que a su vez es compatible con ordenes en modo Texto, equivalentes a una pantalla de 80*30.
  2. Funciones incorporadas para manejo de Iconos, Bitmaps, etc.
  3. Nuevos Objetos: ListBox, CheckBox, Menú, ETC.
  4. Soporte a Mouse tipo Arquitectura Abierta, es decir, debe programarse COMPLETAMENTE para ser utilizable, pero es

100 % compatible con librería Gráfica incluida y objetos incluidos.
Dos Enlazadores: BLINKER (modo real) y EXOSPACE (modo Protegido)
Cambios en el trasfondo a algunas ordenes (alert y ReadVar Por ejemplo)
Nuevas funciones para fines varios.
El uso de EXOSPACE elimina las restricciones de falta de acceso a memoria.
Es necesario hacer un breve desglose punto por punto.

Modo Gráfico 640* 480 a 16 colores, que a su vez es compatible con ordenes en modo Texto, equivalentes a una pantalla de 80*30.
Este modo gráfico permite una resolución muy decente y mezclar recursos de ambos modos de vídeo. Si el código se realiza de manera adecuada, aun es compilable bajo 5.2, y no hay penalización apreciable al usar aplicaciones en modo “texto”. Noto una carencia en CLIPPER, ya que no hay una función que detecte el tipo de TARJETA de video, pero he realizado una en ensamblador con ese fin.

Funciones incorporadas para manejo de Iconos, Bitmaps, etc.
Es posible crear librerías de Iconos y Bitmaps legibles por Clipper, pero no por otros programas. Los Iconos deben ser tipo 766 bytes, y los Bitmaps están sujetos a la restricción del modo de video. En el directorio BIN hay varias utilerías específicas, y las 10 o 20 pruebas que he hecho, demuestran que esta función es sumamente versátil.

Sin embargo, las pruebas mencionadas las realicé con aplicaciones sencillas, enlazadas con BLINKER. Al tratar de incorporarlas de entrada a Suministros me enfrenté con un problema: La librería LLIBG es del tipo residente, y si se enlaza en modo real, ocupa casi toda la memoria disponible, si la aplicación es grande, no es posible ejecutar el código, y la falta de memoria sale del programa sin aviso de error de ningún tipo. Pero al enlazar con EXOSPACE, el código funcionó bien, excepto el detalle anotado en EXOSPACE, ENSAMBLADOR, Y C.

Las pruebas se realizaron en un sistema AMD K5 200 256 K Cache, con una tarjeta de video TRIDENT ISA con 1 MB y disco duro lento. Por el tipo de disco los resultados en bitmaps no fueron tan espectaculares, pero el tiempo de carga de *. BMP no es precisamente rápido, sin ser lento.

Para agilizar el sistema desarrollé un ejecutable que crea el código MASM necesario para crear el archivo icono, lo que permite crear una librería de creación de Iconos, que resulta 22.4 veces más rápida que las librerías BML de Clipper, eliminando también la restricción de nombre. Si se crean los iconos en un disco RAM de 10 Kb no hay demora alguna. El precio de incorporar una librería con los objetos *. ASM, es el requerimiento de un KB de memoria LOAD por Icono, lo que fuerza a usar EXOSPACE.

Nuevos Objetos: ListBox, CheckBox, Menú, ETC.
Debido a la falta de tiempo, no me fue posible correr estos objetos a su máxima capacidad, pero se caracterizan por estas características:

En modo texto el resultado es muy decente, pero en modo gráfico no son de muy buen ver
No tienen apoyo integrado a Mouse
La configuración de colores es confusa
Pueden ser herramientas muy potentes, pero es necesario conocerlas a fondo antes de poder utilizarlas de manera adecuada
Creo que será más conveniente realizar un equivalente basado en iconos, porque su utilidad principal será en modo gráfico.

Soporte a Mouse tipo Arquitectura Abierta, es decir, debe programarse COMPLETAMENTE para ser utilizable, pero es 100 % compatible con librería Gráfica y objetos incluidos.
El manejo de Ratón es sumamente adaptable, ya que realiza funciones directas a las principales, si no todas, interrupciones de DOS (#33), pero será necesario hacer uso intensivo de MSHOW y MHIDE o su equivalente, manejándolas a diestra y siniestra, de manera similar al manejo de Mouse en C. Lo único en que tuve dificultad fue en cambiar el cursor del Mouse, pero se debe a que no manejo todavía al 100% las funciones de Mouse 5.3

Dos Enlazadores: BLINKER (modo real) y EXOSPACE (modo Protegido)
El enlazador BLINKER es parecido al RTLINK (igual sintaxis), pero es más rápido. El único pero que encontré, es que hasta el momento no he encontrado el modo de hacer un OVERLAY a la librería de gráficos LLIBG, desde BLINKER, lo que quita casi toda la memoria convencional. Este enlazador solo es utilizable en 5.3.

EXOSPACE. En un equipo con 8 MB de memoria XMS liberó cerca de 6.8 MB para uso del programa. Sin embargo, requiere para COMPILAR 2MB de memoria no utilizada por SMARTDRV. Si se liberan estos 2 MB, el resultado es rápido. No permite crear código cuando hay EXTERNALS sin definir, lo que es bueno o malo según el punto de vista.

Aparentemente es incompatible con el controlador de dispositivo DISPLAY.SYS.

Una situación especial se encontró con el reloj residente en memoria, por lo que sugiero se revise la nota EXOSPACE, ENSAMBLADOR, Y C.

Cambios en el trasfondo a algunas ordenes ( Alert y ReadVar Por ejemplo )
Algunas funciones han sido modificadas de manera drástica con relación a las versiones anteriores. Al momento he tenido problemas con Alert, ya que la nueva función no permite uso de colores, y en ocasiones se muestra incompleto el borde derecho de la pantalla. Para corregirlo he creado una función nueva, que sustituye ventajosamente a la de Clipper 5.2 y Clipper 5.3, sin cambios en Sintaxis.

ReadVar devolvía el nombre de la variable GET utilizada, pero actualmente parece tener más amplio alcance, lo que hace que deba considerarse como una función completamente diferente. No he realizado pruebas intensivas, pero el problema parece ser que la versión nueva funciona incluso en las operaciones que realizan evaluación de tiempos de espera, devolviendo valores pertenecientes al mismo código de Clipper y no de la aplicación.

Es posible que otras funciones tengan cambios, pero a la fecha no lo he detectado.

Nuevas funciones para fines varios.
Clipper incluye un modulo mejorado de Memos, llamados BLOBS, que se ven mas complicados que la versión anterior, con poca funcionalidad adicional. Además de estos cambios hay unas cuantas funciones para manejo de directorios, conteo de DispBegin() abiertos, y traslaciones de campos a archivos y viceversa, pero no parecen excesivamente funcionales.

El uso de EXOSPACE elimina las restricciones de falta de acceso a memoria.
Con el uso de EXOSPACE, la memoria extendida no utilizada por el sistema esta disponible para los programas, pero en equipos con 4MB, esto obliga a desactivar SMARTDRV, lo que reduce el rendimiento ligeramente, y causa un cierto retraso en operaciones de refresco de pantalla, sobre todo en modo gráfico. Para Suministros Si significa problemas, ya que según palabras de Ana Claudia Pérez, jefa de Suministros en Supremo, “Tu nos acostumbraste a que el sistema obedecía muy rápido”.

Es muy probable que con 8 MB el rendimiento pueda ajustarse a niveles mas que aceptables.

EXOSPACE, ENSAMBLADOR y C

Una de las reglas principales de programación en modo protegido es el no alterar los segmentos DS / ES, pero muchas de las aplicaciones normales no lo considera. Esto obliga a no utilizar un modo reentrante ni punteros de segmento amplio, entre otras operaciones. Para fines prácticos, todo lo que llame al sector “Cabecera” de información de un ejecutable En ejecución, provoca alteración en DS, por lo que el programa termina de manera brusca. Esto me obligó a modificar las funciones en MASM, sobre todo EXEPATH, que devolvía el nombre del ejecutable en proceso. La versión original funcionaba sin problemas, pero una segunda versión completamente diferente presentó el mismo problema. Tomé un código *.OBJ de la librería de Dominio publico KLIPPER, que no tiene el problema mencionado. El código del reloj residente no funciona en EXOSPACE por lo mismo, y agradecería cualquier sugerencia que eliminara esta situación.

Finalmente, una función llamada WHOAMI.C, para identificar a usuario según la red, realizada en MICROSOFT, presenta resultados diferentes ya enlazada según la versión de Clipper. En 5.0 – 5.2 devuelve valor correcto, pero en 5.3, responde como si no existiera red, o no se hubiera realizado el Login correspondiente.

« (Previous Post)
(Next Post) »

Comments are Closed