Tutorial y biblioteca C-Kermit / Programación Kermit 95

By Marglin Araujo | Created: December 28, 2023 | Last updated: May 08, 2025 | Read Time: 39 minutes

Por: Frank da Cruz
Artículo original: https://www.kermitproject.org/ckscripts.html

Actualización más reciente: Vier Jul 14 19:40:54 2023

C-Kermit Tutorial / Kermit 95 Tutorial / Ver los scripts /... / Variables incorporadas / Funciones incorporadas

Contenido:

  • Introducción
  • Descargador/instalador de scripts de Kermit
  • Tutorial de scripts
  • Últimas adiciones a la biblioteca de scripts
  • Archivos de inicialización de C-Kermit
  • Scripts HTML
  • Scripts FTP
  • Scripts de Internet
  • Scripts de registro
  • Scripts de módem
  • Scripts de buscapersonas
  • Scripts de formateo de pantalla
  • Scripts de raspado de pantalla
  • Scripts de transferencia de archivos
  • Scripts de gestión de archivos
  • Scripts de cálculo numérico
  • Aritmética fecha-hora
  • Programación orientada a objetos
  • Pruebas de tortura de lenguajes de script
  • Para MS-DOS Kermit...

SCRIPTS RECIENTES (detalles más abajo)

Julio de 2023. Para jubilados que viven en apartamentos: haga un seguimiento de sus ingresos frente a su alquiler año tras año; vea cuál sube más rápido. Ilustra cómo incrustar datos tabulares en el propio script en lugar de leerlos de un fichero externo; cómo descomponer una fila de tabla en sus elementos; el uso de múltiples matrices asociativas al mismo tiempo; cómo direccionar simbólicamente elementos de matrices asociativas; y el uso de expresiones S cuando se necesitan resultados en coma flotante (porcentajes en este caso).

Junio 2023. Crea una entrada para la tabla de builds de C-Kermit 10.0, para ser usada después de construir una versión Beta de prueba, o para el caso, la verdadera versión 10.0 cuando esté lista. Por ahora, sólo para sistemas operativos de la familia Unix.

Marzo 2023. Para sitios web: encuentra páginas perdidas que tienen archivos de copia de seguridad de Emacs, así que si no puedes encontrar la página real en cualquier lugar al menos puedes restaurar desde la última copia de seguridad.

Abril 2022. Script de Kermit 95 para entrar en un host cuyo servidor SSH no soporta ninguno de los cifrados que soporta el cliente SSH de K95 usando un host o subsistema Linux como relay. Ya no es necesario ahora que C-Kermit 10.0 para Windows está disponible.

Mayo 2021. Convertir la página de archivo Kermit para que siga mostrando listas de archivos después de convertir los enlaces de ftp: a http: debido a la "depreciación" de FTP por los principales navegadores web en marzo-abril de 2021. Básicamente, este script hace que se pueda hacer clic en los nombres de archivo de un listado de directorios para poder verlos o descargarlos.

2013-2023 (proyecto activo). Un script de producción para crear, modificar y actualizar galerías de imágenes en la Web.

Mayo de 2017. Convierte archivos de texto plano a html. Este es también el primer script de Kermit que se puede utilizar en tuberías Unix.

2016. Un simple programa recordatorio que puede ser invocado desde su perfil de inicio de sesión.

2014. Descarga e instalación automatizada de scripts de la biblioteca de scripts de Kermit. Actualizado en 2022 para "cumplir" con la "deprecación" del protocolo ftp para descarga.

2014. Una forma automatizada de reemplazar un bloque de texto (como un aviso de copyright multilínea) en todos los archivos que lo contienen.

2013. Produce un listado del directorio de archivos de imagen JPG que muestra la fecha en que se tomaron, la anchura, la altura y si es vertical u horizontal.

2013. Un script para renombrar archivos JPG (por ejemplo, de cámaras, escáneres o teléfonos móviles) según la "hora de toma" o la "hora de creación". Se puede renombrar un montón de imágenes de diferentes dispositivos en orden fecha-hora.

PREFACIO

Mientras escribo esto, cada vez menos gente sabe lo que es Kermit; si es tu caso, puedes hacer clic aquí para obtener una visión general. El apogeo de Kermit fue en los años 80 y 90, cuando casi todo el mundo que utilizaba ordenadores para comunicarse con otros ordenadores usaba Kermit como emulador de terminal y para la transferencia de archivos. C-Kermit para Unix y VMS y MS-DOS Kermit para DOS se desarrollaron conjuntamente. Cuando empezamos a añadir capacidades de automatización, el lenguaje de scripting era común a ambos programas. Cuando salió Kermit 95 para Windows, tenía el mismo lenguaje de secuencias de comandos, ya que está basado en C-Kermit.

Al principio, el lenguaje de scripts estaba orientado a las comunicaciones y a las tareas de transferencia de archivos, pero con el tiempo se ha convertido en un lenguaje de programación de propósito general a una escala intermedia entre los scripts de shell y Perl, con partes de scripts de shell Unix, C, Bliss, Lisp, Snobol, Algol y PL/I mezclados, con bucles, variables, matrices, funciones, aritmética, matrices asociativas, recursión, lógica booleana, manipulación de cadenas, i/o y gestión de archivos, concordancia de patrones, procesamiento de listas, etcétera.

Hoy en día se pueden escribir programas de script Kermit para hacer casi cualquier cosa, sin importar si implica comunicación o no (y si implica comunicación, puede ser a través de conexiones serie, conexiones de red de texto claro o conexiones de red seguras). Los principales usos de Kermit ahora son la administración de sistemas y sitios web y el desarrollo de sitios web, y puedes ver muchos ejemplos de scripts de producción en estas áreas a continuación.

Hablando por mí mismo, he programado desde mediados de los 60, he dominado muchos lenguajes de programación, y desearía que todos ellos, excepto C, no hubieran desaparecido (echamos mucho de menos PL/I, Snobol y Mainsail; eran potentes, estables, consistentes y estaban bien documentados). Las opciones actuales (C, shell scripts, etc.) son blancos móviles; los programas escritos en estos lenguajes no permanecen escritos; decaen con el tiempo a medida que los lenguajes y las bibliotecas y utilidades asociadas se redefinen constantemente. Por eso ahora escribo todos mis programas (excepto C-Kermit propiamente dicho, claro) en lenguaje Kermit... Porque el lenguaje en sí no cambia de forma incompatible con versiones anteriores, de modo que los "viejos" scripts nunca necesitan ser "actualizados", simplemente siguen funcionando, incluso cuando se publican nuevas versiones del propio Kermit. Y también porque siempre que hay un error en el lenguaje puedo arreglarlo yo mismo, y cuando hay algo que necesito hacer que no está en el lenguaje, puedo añadirlo yo mismo. Siempre de forma retro compatible.

Todavía no existe un manual coherente para el lenguaje Kermit. Todo está documentado en alguna parte, pero está disperso en libros (que ahora están en línea) y en una serie de páginas web. En julio de 2019, elaboré una guía completa con toda la información. Es como un índice; AQUÍ ESTÁ. Mientras tanto, esta página (la que estás leyendo) es un lugar bastante bueno para empezar: Encuentra un script que haga algo similar a lo que quieres hacer y úsalo como guía. Y cuando veas un comando o función que no entiendas, usa el comando HELP incorporado en C-Kermit para encontrar información sobre él:

help ?

Muestra los temas de ayuda

help command

Da información sobre el comando dado

help set command

Proporciona información sobre el comando SET dado

help function name

Proporciona información sobre la función incorporada.

Utilice también el cuadro de diálogo de búsqueda de Google en la página de inicio y pruebe la nueva "Tabla de contenido".

-Frank da Cruz, May Day 2017, actualizado el 29 de agosto de 2019.

INTRODUCCIÓN

El lenguaje de comandos y scripts de C-Kermit y Kermit 95 se describe en Using C-Kermit, 2nd Edition, complementado por C-Kermit 7.0 Supplement, C-Kermit 8.0 Supplement y C-Kermit 9.0 Supplement. También puede obtener información general y tutoriales AQUÍ para Kermit en general y AQUÍ para Kermit 95 en particular.

El software Kermit apareció por primera vez en 1981 para microordenadores CP/M y mainframes DECSYSTEM-20 e IBM. Y poco después para los PC IBM (y otros) con MS-DOS, y posteriormente para plataformas informáticas cada vez más distintas, en particular Unix y Microsoft Windows. El lenguaje de comandos, la sintaxis y (en la mayoría de los casos) la edición y asistencia de comandos se adaptaron del TOPS-20 EXEC, es decir, la interfaz de usuario (o "shell" en lenguaje moderno) del DECSYSTEM-20, que fue la plataforma principal para la informática académica en Columbia de 1977 a 1988. Entre sus características destacan la ayuda por campo con '?', el completado de palabras clave y nombres de archivo con Tab o Esc, y la ayuda integrada. Las capacidades de programación se añadieron al lenguaje de comandos a partir de C-Kermit 5A(190) para Unix, VMS, AOS/VS, Plan 9 (etc), y MS-DOS Kermit, y se han mejorado y ampliado desde entonces. Una característica única de los scripts Kermit es que son portables no sólo entre diferentes plataformas informáticas (como Unix y Windows) sino también entre diferentes métodos de comunicación (Telnet, FTP, Telnet seguro, FTP seguro, SSH, SSL, Kerberos IV/V, más de 100 tipos diferentes de módems y puerto serie directo).

Esta página ofrece una breve introducción a los scripts de Kermit, y una biblioteca de ejemplo, que se enumeran a continuación. Los marcados con (*) son scripts "kerbang" que, en UNIX, pueden utilizarse exactamente igual que los scripts de shell si se les da permiso de ejecución:

chmod +x scriptname

Los argumentos de la línea de comandos se aceptan de la forma esperada, p. ej:

autotelnet xyz.com myuserid

Esto hace que los argumentos de la línea de comandos estén disponibles para el script en las variables \%0 (nombre del script), \%1 (primer argumento), \%2 (segundo argumento), etc.

La primera línea de cada script kerbang tiene el siguiente aspecto:

#!/usr/local/bin/wermit +

(pero sin la sangría). Indica la ruta del ejecutable C-Kermit que va a ejecutar el script; cambie esta línea según sea necesario. El signo + al final es necesario si se van a pasar argumentos de línea de comandos al script (y no hace daño si no es así). La función "kerbang" requiere C-Kermit 7.0 o posterior. Para más información sobre los scripts kerbang, consulte la Sección del Suplemento de C-Kermit 7.0 sobre este tema.

ADVERTENCIA: En sistemas operativos basados en Unix, el archivo de script debe estar en formato de texto Unix para que el mecanismo Kerbang funcione. Es decir, las líneas deben estar terminadas y separadas sólo por salto de línea, no por retorno de línea y salto de línea (como ocurriría, por ejemplo, si cargara el archivo desde Windows en modo binario en lugar de en modo texto). Si la línea Kerbang termina con CR y LF, el shell Unix pensará que el CR es parte del nombre del archivo si no se incluye el signo '+', y fallará al encontrar "un intérprete válido" (es decir, Kermit) para el script. Si se incluye un signo +, el CR puede impedir que Kermit lo reconozca. Estas son características del shell Unix, y se aplican a los scripts de shell, scripts Perl, y cualquier otro tipo de script que utilice la convención "shebang" para invocar al intérprete apropiado. Para eliminar los retornos de carro utilice los siguientes comandos del shell Unix:

En plataformas no UNIX, estas secuencias de comandos se ejecutan mediante:

1- Dando un comando TAKE filename a Kermit. En C-Kermit 7.0 y posteriores, el filename puede ir seguido de argumentos, que se asignan a las variables \%1, \%2, ..., \%9.

2- Incluyendo el nombre de archivo del script como primer argumento de la línea de comandos del programa Kermit, seguido de un signo más, seguido de los argumentos. En VMS y Windows, el signo "más" parece causar problemas con el intérprete de comandos, por lo que en ese caso puede sustituirlo por un signo igual, pero poniéndolo después del nombre del archivo de guión en lugar de antes:

kermit script.ksc = arg1 arg2 arg3 ... VMS
k95 script.ksc = arg1 arg2 arg3 ... Windows

Esto asigna arg1 a \%1, arg2 a \%2, y así sucesivamente.

3- En Windows 95/98/ME/NT/2000/XP/etc, por asociación de tipo de archivo (cuando el nombre de archivo del script tiene el sufijo ".ksc"), pero en este caso Windows no proporciona un mecanismo para pasar argumentos al script.

Fuera de UNIX, la línea "kerbang" no tiene ningún efecto, ya que es un comentario para Kermit. En VMS, cualquier referencia a "variables de entorno" puede satisfacerse mediante nombres lógicos o símbolos DCL.

Los scripts de esta página sólo tienen fines ilustrativos y no conllevan ninguna garantía, expresa o implícita.

SCRIPT PARA LA DESCARGA DE SCRIPTS

Desde enero de 2014 está disponible un nuevo script que simplifica la descarga de scripts de la Kermit Script Library y su instalación en tu propio ordenador. Se llama getkermitscript, PULSE AQUÍ para verlo (y descargarlo). Puede utilizar este script en un ordenador basado en Unix que tenga instalado C-Kermit 8.0 o posterior para descargar e instalar scripts de Kermit desde aquí en un simple comando como "getkermitscript photogallery.ksc". Algunas cosas a tener en cuenta

- Todos los nombres de archivos de script de la biblioteca Kermit están en minúsculas. El script getkermitscript lo sabe y pone en minúsculas cualquier argumento que usted haya puesto en mayúsculas.

- Los scripts de la biblioteca se almacenan sin ninguna extensión, aunque puede que los veas referidos como nombre.ksc.

PULSE AQUÍ para ver las instrucciones completas.

TUTORIAL DE SCRIPTING

El lenguaje de scripting Kermit es un lenguaje de programación similar a Perl, pero con una sintaxis diferente (porque el lenguaje Kermit es anterior a Perl y a muchos otros lenguajes de scripting). El lenguaje Kermit es portable a través de UNIX (Linux, AIX, HP-UX, Solaris, FreeBSD, IRIX, SINIX, QNX, SCO, Tru64, y cualquier otra variación conocida de UNIX), VMS, Stratus VOS, Data General AOS/VS, Windows 95/98/ME/NT/2000/XP/7/8/10, OS/2, Plan 9, OS-9/68000, Commodore Amiga, y otras plataformas, y funciona uniformemente en conexiones serie (directas o marcadas) y conexiones de red (texto claro o seguro). Por tanto, aprender el lenguaje es una buena inversión de su tiempo, ya que puede aplicarse a casi cualquier problema de comunicaciones. El lenguaje de scripts Kermit está documentado en el libro Using C-Kermit, pero por supuesto se han hecho muchas mejoras desde que se publicó el libro, que se explican en las actualizaciones de las versiones 7.0, 8.0 y 9.0, y se ilustran con scripts de ejemplo que se enumeran a continuación.

El lenguaje de scripts de Kermit es fácil de aprender si ya utiliza Kermit, ya que es el mismo que el lenguaje de comandos de Kermit. Un programa de script de Kermit es simplemente una serie de comandos de Kermit recopilados en un archivo o una macro. Para ejecutar el script, le dices a Kermit que TOME el archivo o HAGA la macro. O en UNIX también puedes ejecutarlo como si fuera un script de shell, como se describe al principio de esta página. En ambos casos puedes pasar parámetros al script en el comando que lo invoca.

Cuando se utiliza Kermit "manualmente", es decir, interactuando con el host directamente, normalmente se establece una conexión (SSH, TELNET, DIAL, etc.), y luego se interactúa con el otro ordenador directamente, alternando entre la pantalla de comandos de Kermit y la pantalla del terminal. El comando para pasar de la pantalla de comandos a la pantalla de terminal es CONNECT (C es una abreviatura suficiente). Para volver de la pantalla del terminal a la pantalla de comandos se requiere una "secuencia de escape" especial como Ctrl-\C, Ctrl-]C o Alt-x (Alt-x se utiliza en Kermit 95 y MS-DOS Kermit). Tenga en cuenta que el comando TELNET de Kermit es un atajo para SET HOST seguido de CONNECT; es decir, TELNET incluye un comando CONNECT implícito.

Cuando se automatiza una sesión, no se pasa de una "pantalla" a otra; no se CONECTA ni se escapa hacia atrás. En un script, todo se hace en modo comando. No hay pantalla de terminal en un script. En lugar de CONNECT (o TELNET, o RLOGIN, o SSH), use los siguientes comandos, que le dicen a Kermit que haga lo que usted haría "a mano":

SET HOST [ switches ] hostname-or-address [ switches ]

Abre una conexión de red pero permanece en modo comando, es decir, sin entrar en la pantalla Terminal o en modo CONNECT. Utilícelo en lugar de TELNET, CONNECT, SSH u otro comando que permita entrar en la pantalla del terminal. Sinónimo: OPEN HOST (que puede ser más evocador de la acción realizada).

Para conexiones serie o por módem, utilice:

SET MODEM TYPE [ name-of-modem or NONE ]

SET LINE device-name

SET SPEED interface-speed

[ DIAL phone-number ]

Abre una conexión serie directa o marcada pero permanece en modo comando. Tenga en cuenta que cuando el comando DIAL se ejecuta desde un archivo de comandos o macro, no entra automáticamente en modo CONNECT.Una vez abierta la conexión, utilice los siguientes comandos para simular lo que haría de forma interactiva:

INPUT tiempo de espera cadena

Espera hasta un máximo de segundos a que la cadena dada llegue desde el otro ordenador. Si llega, este comando tiene éxito; de lo contrario, el comando falla. Ejemplo: INPUT 10 login: El comando INPUT puede aceptar no sólo cadenas simples sino también patrones. Una forma alternativa, MINPUT, acepta una lista de cadenas y/o patrones coincidentes.

SET INPUT ECHO ON

Normalmente no ves diálogos con guión en tu pantalla. Utilice este comando para ver lo que Kermit y el host se dicen. Esto no afecta al funcionamiento del script, sólo a lo que puedes ver.

Comando IF FAILURE

Si el comando precedente (SET HOST, INPUT, o cualquier otro comando) falló, ejecute el comando dado.

Ejemplo: IF FAIL EXIT 1 "No login prompt". El comando puede ser una lista de comandos encerrados entre llaves, y la sentencia IF también puede tener una parte ELSE, que también puede ser un único comando o una lista de comandos.

Comando IF SUCCESS

Si el comando anterior tuvo éxito, ejecute el comando dado.

STOP [ number [ string ] ]

Detiene el script y vuelve al prompt de Kermit. El número es un código de éxito: 0 para éxito, distinto de cero para fracaso; el comando que invocó el archivo de comandos actual (TAKE) o macro (DO o "DO implícito") puede ser probado con IF SUCCESS o IF FAILURE basado en este código. Si se incluye una cadena, se imprime.

END [ number [ string ] ]

Como STOP, pero salta la pila de comandos sólo un nivel en lugar de volver al principio. Utilícelo para devolver antes de tiempo una macro o un fichero de comandos a su invocador. Sinónimo: POP.

EXIT [ number [ string ] ]

Detiene el script y sale de Kermit. El número es el código de estado de salida de Kermit, normalmente 0 para éxito, distinto de cero para fallo. Si se da un mensaje, se imprime.

OUTPUT cadena

Envía la cadena dada al otro ordenador. Los caracteres de control pueden incluirse en la cadena utilizando la notación \ddd (donde las d son dígitos, y ddd representa el código numérico para el carácter de control.

Ejemplo: OUTPUT olga\13

LINEOUT cadena

(C-Kermit 7.0 y posteriores; Kermit 95 1.1.20 y posteriores) Dado que es tan común imprimir una línea con un retorno de línea al final, este comando lo hace por ti, para que no tengas que acordarte de incluir \13 al final. lineout foo es equivalente a output foo\13.

INPUT toma el lugar de tus ojos, OUTPUT toma el lugar de tus dedos, e IF toma el lugar de tu cerebro.

El resto es programación normal: FOR, WHILE, SWITCH, GOTO, variables, arrays, funciones, estructura de bloques, nesting, scoping, y el resto, listado AQUÍ y documentado en el manual (igual que cualquier otro lenguaje de programación está documentado en su propio manual).

Aquí hay un ejemplo muy simple de hacer una conexión Telnet a UNIX e iniciar sesión:

set host foo.bar.baz.com ; Realiza la conexión

if fail stop 1 Conexión fallida ; Comprueba que se ha realizado

input 20 login: ; Espera 20 segundos a que aparezca login: prompt

if fail stop 1 No login prompt ; Comprueba que se ha producido

output myuserid\13 ; o "lineout myuserid"

input 5 Password: ; Espere 5 segundos a que aparezca Password: prompt

if fail stop 1 No Password prompt ; Compruebe que ha llegado

output mypassword\13 ; o "lineout mypassword"

Esto ilustra cómo sus acciones en la pantalla del terminal son simuladas por INPUT (ojos), OUTPUT (dedos), e IF (cerebro). Se puede elaborar en cualquier grado deseado: para utilizar variables en lugar de constantes para el host, nombre de usuario o contraseña; para pedir la contraseña para que no tenga que almacenarla en un archivo; para intentar algún tipo de acción de recuperación si un comando falla en lugar de simplemente detenerse, y así sucesivamente. Y, por supuesto, puedes añadir más pasos: hacer que transfiera un archivo, envíe un correo electrónico, lo que quieras.

La sintaxis del lenguaje de programación Kermit debería ser familiar para cualquiera que utilice otros lenguajes de scripting como el shell de UNIX. Es un lenguaje de sustitución de cadenas, por lo que se utiliza un "carácter de escape" (barra invertida) para indicar la sustitución de cadenas. Dado que se pueden sustituir muchos tipos de elementos, la barra invertida va seguida de un segundo carácter para indicar qué tipo de sustitución se va a realizar: una variable escalar, un elemento de matriz, el resultado de una función, un carácter especial, etc. Por ejemplo:

 \%a

Variable escalar definida por el usuario, evaluada recursivamente

\m(name)

Una variable escalar definida por el usuario, evaluada a un nivel de profundidad

\v(name)

Una variable incorporada (como \v(time), "show var" para una lista)

\&a[1]

Un elemento de matriz, evaluado recursivamente

\fname(args)

Una invocación a una función ("show func" para una lista, "help func xxx" para detalles de la función xxx)

\x0F

Un carácter cuyo código es el número hexadecimal dado (00-ff)

\123

Un carácter cuyo código es el número decimal dado (0-255)

\\ 

Una barra invertida literal.

(PULSE AQUÍ para una explicación más detallada de esta notación).

Esto debería darle una idea de cómo leer los scripts de la biblioteca, y cómo escribir un script sencillo o adaptar uno de ellos a sus necesidades. Para obtener una breve descripción de un determinado comando o función de Kermit, utilice el comando HELP de Kermit. Para obtener una descripción de una función incorporada, escriba "help function xxx" en el prompt, donde xxx es el nombre de la función. Para un tratamiento exhaustivo, consulte el manual.

Por último, recuerde:

  • No ponga un comando CONNECT en un script a menos que realmente quiera suspender la ejecución del script y entregar el control manual al usuario. Y recuerde que el comando CONNECT sólo puede funcionar si el trabajo tiene un terminal de control; no puede funcionar en un trabajo por lotes o cron donde no hay terminal.
  • No se puede poner texto para el host "en línea". Kermit lee comandos del script, no texto para el host. Para enviar texto al host, utilice el comando OUTPUT o TRANSMIT.
  • TELNET host es un atajo para SET HOST host, IF SUCCESS CONNECT. Dado que TELNET incluye un comando CONNECT implícito, no pongas un comando TELNET en tu script a menos que realmente quieras suspender la ejecución del script y entregar el control manual al usuario. Lo mismo ocurre con SSH y RLOGIN. En un script, use SET HOST en su lugar, con los switches apropiados (si es necesario) para indicar el tipo de conexión. HELP SET HOST para más detalles.
  • Para más ejemplos, eche un vistazo a la biblioteca de abajo, y también vea los casos de estudio de C-Kermit. Consulte también la FAQ de C-Kermit, "¿Por qué no funciona mi script?".

C-Kermit / Kermit 95 / Kermit home

LA BIBLIOTECA DE SCRIPTS DE KERMIT

Añadidos recientes

Agosto de 2013, con actualizaciones posteriores. Un script de producción para crear, modificar y actualizar galerías de imágenes para la Web. Se requiere C-Kermit 9.0 o posterior. Sustituye al anterior script photoalbum, que era sólo una demo, no apto para producción.

Un programa que convierte un archivo de texto plano en una página Web. A diferencia de todos los otros scripts presentados aquí, éste puede ser usado en una tubería Unix.

Un simple programa recordatorio que puede ser invocado desde su perfil de acceso, o directamente, o de cualquier otra forma que desee. Ilustra algunas de las funciones de manejo de fechas de C-Kermit (conversión de formatos, comparación, ordenación). El texto de ayuda está AQUÍ.

Febrero de 2014. Una forma automatizada de reemplazar un bloque de texto (como un aviso de copyright multilínea) en todos los archivos que lo contienen. C-Kermit 9.0 o posterior.

Enero de 2014. Un script para descargar scripts de Kermit desde la Kermit Script Library e instalarlos en tu ordenador sin necesidad de editarlos ni dar ningún otro comando (antes siempre había que editar la "línea kerbang" y cambiar los permisos). Sólo Unix por ahora. Requiere C-Kermit 8.0 o posterior. Actualizado en 2022 para solucionar la desaparición del protocolo FTP de Intenet.

Septiembre de 2013. Produce un listado de directorios de archivos de imagen JPG que incluye (para cada archivo) fecha de toma, anchura, altura y si es vertical u horizontal.

Abril de 2013. Un script para renombrar archivos JPG según la "hora tomada" o la "hora creada". Esto permite que imágenes de múltiples fuentes, o cuyos nombres de archivo se han "enrollado" aparezcan en orden cronológico por nombre de archivo. Se requiere C-Kermit 9.0.304.

2009-2011. Un script de producción para configurar servidores HP Blade a través de su interfaz Integrated Lights Out (iLO).

Un conjunto de scripts para obtener informes de un Rolm CBX. C-Kermit 8.0 o posterior o Kermit 95 2.1 o posterior.

Kermit construye un mapa del sitio para un sitio web basado en un simple archivo de control que usted crea, indicando qué archivos e imágenes desea incluir. Es compatible con las extensiones de Google Image Sitemap. Si su archivo de control contiene texto codificado en ISO 8859-1 u otros conjuntos de caracteres de uso común, Kermit lo convierte a UTF-8, que es necesario en los sitemaps. Documentado AQUÍ. Requiere C-Kermit 9.0.

Lee un registro web TSV (Tab-Separated Record) de un sitio web bilingüe español-inglés, extrae las búsquedas en Google, normaliza el juego de caracteres y las mayúsculas de las cadenas de búsqueda en la medida de lo posible, e imprime las 20 búsquedas principales, junto con sus recuentos. Documentado AQUÍ. Requiere C-Kermit 9.0. [A partir de octubre de 2011 este script es en gran parte académico porque Google ya no incluye el texto de búsqueda en sus parámetros de URL].

Un sencillo script para comprobar la estructura #if/#ifdef/#ifndef..#endif en un archivo de código fuente C.

Como ifdef pero también muestra #define y #undef.

Macro para comparar dos números de cualquier longitud, enteros o de coma flotante, con o sin signo, incluso si son más largos que el tamaño de palabra de la máquina subyacente. Requiere C-Kermit 8.0 o posterior o K95 2.0 o posterior.

Macros para convertir cadenas de números decimales con signo a formato hexadecimal de complemento a dos y viceversa. Realiza su propia aritmética de cadenas, por lo que no está limitado por el tamaño de palabra de la máquina o el modelo de memoria. Tal como está escrito puede manejar enteros de hasta 128 bits. Obviamente, este funciona más lento que twoscomplementv1, que utiliza aritmética de máquina. Requiere C-Kermit 8.0 o posterior o K95 2.0 o posterior. (El script twoscomplementv2 sólo convertía en una dirección, esta versión incluye ambas direcciones).

Un script para convertir cadenas de números decimales con signo al formato de complemento a dos y mostrarlos en hexadecimal. Utiliza aritmética de máquina, por lo que los resultados están limitados por el tamaño de palabra subyacente y el modelo de memoria (por ejemplo, 32 bits). Requiere C-Kermit 8.0 o posterior o K95 2.0 o posterior.

Script CGI para procesar un formulario Web (en este caso una encuesta).

Crea un índice Web a partir del sitio FTP de Kermit, miles de archivos convertidos en enlaces clicables. Requiere C-Kermit 9.0 o posterior.

  • pop.ksc Un script de producción completamente elaborado para obtener el correo de un servidor POP3 a través de una conexión protegida por SSL. Para una explicación y documentación, PULSE AQUÍ. Requiere C-Kermit 9.0 o posterior. Yo mismo utilicé este script (y el siguiente, mailcheck) para obtener mi correo electrónico todos los días hasta que Columbia cambió el correo Unix tradicional por Gmail.
  • mailcheck Una envoltura para el script pop.ksc, que recoge su contraseña una vez, y luego comprueba si hay correo nuevo cada 5 minutos (u otro intervalo seleccionado) y lo recupera si hay alguno.

Scripts FTP:

A partir de 2022, estos ya no son útiles en la mayoría de los casos, ya que el protocolo y los servidores FTP han sido purgados de Internet.

Cómo automatizar sesiones FTP con C-Kermit 8.0 y Kermit 95 2.0 o posterior. El propio FTP ha pasado de moda, lo cual es una pena, pero algunos lugares todavía tienen servidores FTP a los que puedes acceder desde un cliente FTP en modo texto (pero no desde un navegador web como Chrome o Firefox).

Realiza una conexión FTP segura a IBM InfoExchange. Se requiere una versión segura de Kermit 95 2.0 (o posterior) o C-Kermit 8.0 (o posterior).

Renombrado múltiple: Muestra cómo renombrar una lista de archivos en un servidor FTP. Requiere Kermit 95 2.0 (o posterior) o C-Kermit 8.0 (o posterior).

Cómo obtener un listado de directorios de un servidor FTP que muestre la marca de tiempo completa de cada archivo. Requiere Kermit 95 2.0 o C-Kermit 8.0 (o posterior).

Muestra cómo enviar un archivo a un servidor FTP con un nombre único garantizado, incluso si el servidor no soporta STOU. Requiere Kermit 95 2.0 (o posterior) o C-Kermit 8.0 (o posterior).

Descarga diaria de nuevos RPMs desde el servidor Rawhide de Red Hat Linux. Requiere Kermit 95 2.0 (o posterior) o C-Kermit 8.0 (o posterior).

Utiliza FTP para sincronizar un directorio local con un directorio de un servidor remoto. Descarga archivos nuevos y archivos que han cambiado, omite archivos que no han cambiado, borra archivos locales que no tienen homólogos en el servidor. Funciona en todas las plataformas (cliente Windows o Unix; Unix, VMS, Windows o casi cualquier otro servidor); el cambio de modo texto-binario se realiza automáticamente. Kermit 95 2.0 (o posterior) o C-Kermit 8.0 (o posterior).

Utiliza FTP para sincronizar un árbol de directorios de un servidor remoto con un árbol de directorios local. El árbol de directorios local se duplica en el servidor. Sube archivos nuevos y archivos que han cambiado, omite archivos que no han cambiado. Funciona en todas las plataformas mediante el cambio automático de modo texto-binario. Kermit 95 2.0 (o posterior) o C-Kermit 8.0 (o posterior).

Otros scripts de Internet:

Un simple WHOIS de un solo paso, un front end a la utilidad regular whois para buscar cualquier dominio en un solo paso en lugar de dos.

Cómo presentar una interfaz orientada a comandos a los usuarios que acceden a Kermit directamente desde el exterior: dialup (ANSWER), Internet (SET HOST *), o incluso con Kermit ejecutándose como un servicio bajo inetd. En estas situaciones no hay controlador de terminal, por lo que Kermit debe manejar el eco y la edición por sí mismo, así como el análisis sintáctico de comandos y su ejecución. Este ejemplo implementa una simple "BBS" donde el usuario puede obtener listados de archivos y descargar archivos. Funciona con cualquier versión reciente de C-Kermit o Kermit 95.

Cliente para un subsistema SSH de transferencia y gestión de ficheros en C-Kermit: una alternativa a SFTP más potente, amigable y compatible con scripts. PULSE AQUÍ para ver la documentación. Requiere C-Kermit 8.0.201 o K95 2.0 (o posterior).

Realiza una sesión SSH automatizada. Se requiere C-Kermit 8.0 o K95 2.0 o posterior.

Realiza una conexión Telnet automática. Se requiere C-Kermit 7.0 o K95 1.1.19 o posterior. Telnet prácticamente ha desaparecido de la faz de la tierra, a pesar de que es muy superior a SSH. Se crearon versiones seguras de Telnet, pero nadie las utiliza y ahora también han desaparecido. "Lo malo expulsa a lo bueno".

Realiza una conexión Telnet automatizada. Igual que "autotelnet" pero no utiliza ninguna de las nuevas características de C-Kermit 7.0. Se requiere C-Kermit 6.0 o K95 1.1.13 o posterior.

Absorbe y registra inofensivamente ataques al puerto TCP 80, como Code Red y Nimda. Se reinicia cada hora, momento en el que también (a) carga el registro de la hora en un sitio FTP seleccionado; (b) envía por correo electrónico un resumen a una dirección seleccionada. Puede escuchar en el puerto TCP 80 o en cualquier otro puerto TCP deseado. Funciona bien en el puerto 80 con Code Red, Code Red II y Nimda. Requiere: C-Kermit 8.0.

Recupera correo electrónico de un servidor POP3. Requiere C-Kermit 7.0. Por Mark Sapiro. Véase también el nuevo script POP3 seguro.

Edita un archivo remoto usando el editor de tu ordenador local. Requiere C-Kermit 7.0 o K95 1.1.19.

Obtiene un archivo o archivos de un servidor Kermit de Internet. Requiere C-Kermit 7.0. No se necesitan scripts en C-Kermit 8.0 o K95 2.x, que soportan URLs kermit:// en la línea de comandos (URLs FTP, HTTP y Telnet también).

El monitor de visualización en tiempo real Internet Kermit Service Daemon. Se requiere C-Kermit 7.0 o K95 2.0 o posterior.

Añade marcas de tiempo a la visualización del registro del sistema basado en Telnet. Se requiere C-Kermit 7.0 o K95 1.1.19. Nota: C-Kermit 8.0 y Kermit 95 2.0 y posteriores tienen una opción integrada para registros de sesión con marca de tiempo.

Se utiliza con un enrutador Linksys Ethernet Cable/DSL para recuperar la dirección IP para su uso con la autenticación Kerberos 5 cuando está activada la traducción de direcciones de red (NAT). Se requiere C-Kermit 8.0.

Scripts de registro:

Registra los datos que llegan a un puerto serie. Útil para registrar registros de llamadas de PBX, mensajes en puertos de control de routers, etc. Requiere C-Kermit 8.0.211 o posterior.

Registra los datos entrantes en cualquier tipo de conexión (asume que hay una conexión abierta). Una elaboración del script logport que rota automáticamente el fichero log cada día a medianoche. Debería funcionar con cualquier versión reciente de K95 o C-Kermit.

Scripts de módem:

Este es el script básico de marcación automática e inicio de sesión. Configura el módem y los parámetros de comunicación, marca, opcionalmente negocia a través de un servidor de terminal, y luego inicia sesión en un host Unix. Debería funcionar con cualquier versión de C-Kermit o Kermit 95.

Dada una lista de dispositivos serie utilizables para marcar, encuentra y asigna el primero libre. Se requiere C-Kermit 7.0 o K95 1.1.19 o posterior.

Dada una lista de servidores TCP/IP modem-pool, reúne un censo de puertos en uso y libres enviándoles comandos "finger" y acumulando los resultados, tanto por servidor como por número de teléfono, así como acumulativos. Se ejecuta en UNIX. Requiere C-Kermit 8.0.

Dada una lista de números de teléfono de un grupo de módems, realiza repetidas llamadas a cada uno de ellos y registra los resultados de cada llamada (BUSY, CONNECT 48000, etc) por fecha y hora en un formato adecuado para el análisis estadístico. Funciona en UNIX, Windows 95/98/ME/NT/2000/XP o VMS. Se requiere C-Kermit 7.0 o K95 1.1.19 o posterior.

Dada una lista de números de teléfono de grupos de módems, realiza llamadas repetidas a cada uno de ellos; se conecta a un host especificado, transfiere archivos de un lado a otro y mantiene un archivo de registro de estadísticas de conexión y rendimiento. Funciona en UNIX, Windows 9x/ME/NT/2000/XP o VMS. Se requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior. CLICK AQUÍ para obtener una versión anterior que funciona con C-Kermit 7.0 y K95 1.1.19.

Muestra un formulario que el usuario debe rellenar para seleccionar el tipo de módem, el puerto, la velocidad y el número de teléfono, y luego marca cuando el usuario lo ordena. Se requiere C-Kermit 7.0 o K95 1.1.19 o posterior. Nota: Este es también un script de formateo de pantalla.

Un script de marcación que selecciona el proveedor de larga distancia más apropiado según la hora del día, y que también realiza un ciclo a través de los proveedores en caso de señales de ocupado (en caso de que el propio proveedor esté ocupado, en lugar del número de destino). Para uso con SET DIAL MACRO. Por Peter Eichhorn, Assyst GmbH, München. Se requiere C-Kermit 7.0 o K95 1.1.19.

Scripts de buscapersonas:

Script para beepers o localizadores numéricos. Se requiere C-Kermit 7.0 o K95 1.1.19 o posterior.

Script de paginación alfanumérica TAP/IXO (ACTUALIZADO en marzo de 2003). Se requiere C-Kermit 8.0 o K95 2.0 o posterior.

Script de paginación alfanumérica TAP/IXO que puede ser utilizado por C-Kermit 6.0 o K95 1.1.13 o posterior.

El script de paginación alfanumérica TAP/IXO modificado por R.M. Almeria para enviar una serie de páginas, en lugar de una sola. Se requiere C-Kermit 8.0 o K95 2.0 o posterior.

Scripts de formateo de pantalla:

Un simple script de una línea que utiliza C-Kermit para poner el cursor en la línea inferior de la pantalla. Requiere C-Kermit 7.0 o K95 1.1.19.

Esqueleto de una aplicación de menú. Requiere C-Kermit 7.0 o K95 1.1.19.

  • Véase también el script dialout, que utiliza técnicas de dibujo de pantalla.

Scripts de raspado de pantalla:

En Kermit 95, los scripts pueden interactuar con el emulador de terminal para recuperar cadenas de caracteres de ubicaciones específicas de la pantalla del terminal, de forma similar a HLLAPI. En este script, los formularios de pantalla se analizan para seleccionar y recuperar imágenes de una base de datos del ordenador central. Por Max Evarts. Se requiere K95 1.1.17 o posterior.

Scripts de transferencia de archivos:

Captura un archivo de texto de un host VMS sin protocolo de transferencia de archivos Kermit.

Script que entrega el archivo o archivos especificados a su destino, incluso si la conexión se interrumpe en mitad de la transferencia. Se requiere C-Kermit 6.0 o K95 1.1.8 o posterior.

Script que sincroniza árboles de directorios en dos hosts de Internet a través de una conexión Telnet. Sólo se transfieren los archivos que son más recientes en el origen que en el destino. Los directorios se crean automáticamente según sea necesario en el destino. Los archivos que desaparecen del origen se borran en el destino. Se puede manejar cualquier mezcla de archivos de texto y binarios. No es necesario que los dos hosts tengan el mismo sistema operativo o sistema de archivos. Se contacta con el host de destino y se inicia sesión en él automáticamente (por lo que también se trata de un script de Internet); de este modo, toda la operación puede ejecutarse sin supervisión. Se requiere C-Kermit 7.0 o K95 1.1.19.

Scripts de gestión de archivos:

Concatena todos los archivos del directorio actual en un archivo grande. Resulta útil (por ejemplo) después de descargar un montón de archivos de transacciones EDI que deben combinarse para que el ordenador pueda procesarlos todos a la vez.

Responde a la pregunta más frecuente: "¿Dónde está grep recursivo?" Busca entre los archivos de un árbol de directorios cuyos nombres coincidan con el patrón dado e imprime todas las líneas de todos los archivos que coincidan con el patrón dado. Se requiere C-Kermit 7.0 o K95 1.1.19. Nota: En C-Kermit 8.0, ya no es necesario un script puesto que GREP (incluyendo una opción recursiva) es un comando incorporado.

Análogo de una línea al bucle del shell UNIX "for i in *; do blah; done". Se requiere C-Kermit 7.0 o K95 1.1.19. Esta funcionalidad está integrada en C-Kermit a partir de la versión 8.0.211; PULSE AQUÍ para ver la documentación del comando RENAME.

Elaboración de un script de cambio de nombre a un script de cambio de tipo de archivo de propósito general; los tipos de archivo antiguos y nuevos y la lista de archivos se dan como argumentos de línea de comandos, p. ej., "changetype hlp txt *" cambia el nombre de los archivos *.hlp a *.txt. Se requiere C-Kermit 7.0 o K95 1.1.19. Esta funcionalidad también está integrada en C-Kermit a partir de la versión 8.0.211; PULSE AQUÍ para más detalles.

Responde a la pregunta frecuente "¿Cómo borro archivos con más de n días de antigüedad?". Se requiere C-Kermit 7.0 o K95 1.1.19.

Revisa archivos de forma interactiva. Todo lo que siempre quisiste en un explorador de archivos en modo texto. Requiere C-Kermit 7.0 o K95 1.1.19.

Rota los registros de conexión mensualmente. Requiere C-Kermit 7.0 o K95 1.1.19.

Una aplicación de gestión de archivos bastante compleja (utilizada, de hecho, para gestionar la actualización e instalación de los binarios de prueba de C-Kermit 7.0 Beta en nuestro servidor ftp). Requiere C-Kermit 7.0.

Mueve los nuevos binarios de las pruebas Beta de C-Kermit desde un área de preparación al sitio ftp, borrando los binarios correspondientes de las pruebas Beta anteriores a medida que avanza, para no llenar el disco del servidor ftp. Se requiere C-Kermit 7.0.

Fusiona cualquier número de archivos preclasificados en un único archivo de salida. Ilustra el paquete de entrada/salida de archivos de C-Kermit que funciona con varios archivos a la vez. Requiere C-Kermit 7.0.

Analiza un registro de transferencia de archivos en formato wu-ftpd, que también es creado por el formato FTP SET TRANSACTION-LOG de C-Kermit. Enumera los cinco archivos más populares e imprime también un histograma del recuento de archivos por número de accesos. Ilustra las matrices asociativas. Requiere C-Kermit 7.0.

Scripts de cálculo numérico:

Dado un fichero en el que cada línea contiene un par de números, X e Y, calcula e imprime el máximo, el mínimo, la media, la varianza y la desviación estándar de X e Y, y el coeficiente de correlación de X e Y. Los números del fichero pueden (aunque no es necesario) tener decimales y partes fraccionarias. Ilustra las funciones aritméticas de coma flotante introducidas en C-Kermit 7.0.

Como las estadísticas, pero implementadas (de forma mucho más sencilla) utilizando expresiones S de C-Kermit 8.0.

Aritmética fecha-hora:

Calcula la fecha de Pascua para cualquier año entre 1900 y 2099 utilizando S-Expressions. Requiere C-Kermit 7.0 o posterior o K95 1.1.20 o posterior.

Igual que el anterior excepto que éste utiliza una nueva característica de C-Kermit 8.0.212 que fuerza la aritmética de enteros, necesaria en este tipo de cálculos.

Como 'cal' de Unix - imprime un calendario para cualquier mes de cualquier año entre 1859 y 9999. Requiere C-Kermit 8.0 o posterior o K95 2.0 o posterior.

Cómo borrar archivos que son más antiguos que una edad dada, en la configuración cliente/servidor.

Archivos de inicialización de C-Kermit:

El archivo de inicialización de C-Kermit estándar. Incluye definiciones para el directorio de servicios con macros de inicio de sesión automático para varias plataformas y métodos de comunicación. Es más una demostración del lenguaje de scripting que de uso práctico.

Ejemplo de archivo de personalización de C-Kermit. Se requiere C-Kermit 6.0 o posterior.

Aumento del protocolo Kermit:

Macro de implementación del (desaparecido) comando REMOTE MESSAGE para C-Kermit 8.0 y Kermit 95 2.0 o posterior.

Mapas clave:

Establece un teclado "por sonido" para las letras cirílicas que se utilizará con el modo de teclado ruso en Kermit 95. Esto permite "escribir al tacto" en cirílico a las personas que tienen teclados QWERTY (las letras cirílicas se emparejan con letras romanas que tienen el "mismo sonido", más o menos). El modo de teclado ruso normal utiliza el diseño de teclado cirílico estándar, que no es familiar para los mecanógrafos QWERTY. Cualquier versión de Kermit 95 anterior a la 1.1.8 puede utilizar este mapa de teclas. Para ver una versión de este archivo de guión que también muestra la versión cirílica de cada carácter, haga clic aquí, pero es posible que tenga que decirle a su navegador que la codificación de texto es utf-8 (a pesar de que se supone que es la codificación predeterminada y preferida para el texto en la Web). Y PULSE AQUÍ para obtener una versión HTML con los caracteres cirílicos correctos que puede imprimir en una página.

Mapa de teclas Kermit 95 necesario para acceder al servicio de reclamaciones de Medicare del estado de Arkansas.

Scripts HTML

Convierte un archivo de texto plano a HTML. Completamente reescrito para su uso en producción en 2017.

Programación orientada a objetos:

(Y otras técnicas creativas de programación.) Esta sección por Dat Thuc Nguyen ([email protected])

Programación basada en reglas en Kermit: Taxonomía Animal. Requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior, además del módulo rule-engine.

Programación basada en reglas en Kermit. Requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Demostración de "rulebase". Requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Programación lógica declarativa tipo Prolog en Kermit. Requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Patrones y predicados. Requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Simulación de una heladería: Llegadas de clientes, pedidos de clientes, salidas de clientes, todo programado como objetos. Requiere la macro de clase definida AQUÍ y C-Kermit 8.0 o Kermit 95 2.0 o posterior.

El Problema de los Filósofos Comensales: semáforo, proceso, temporizador y concurrencia. Requiere la macro de clase definida AQUÍ y C-Kermit 8.0 o Kermit 95 2.0 o posterior.

El Problema de los Filósofos Comedores, ¡con vino!

Permutación recursiva de cadenas. Se requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Encuentra el camino más corto a través de una red. Ilustra expresiones S y funciones. Se requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Funciones Fibonacci recursivas e iterativas. Ilustra funciones y expresiones S. Se requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

¿Cuántas formas hay de cambiar un dólar? Ilustra S-Expressions y funciones. Se requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

El problema de las 8 reinas. Ilustra matrices, expresiones S y expresiones booleanas compuestas. Se requiere C-Kermit 8.0 o Kermit 95 2.0 o posterior.

Cálculo del impuesto sobre la renta. Ilustra S-Expressions, aritmética de coma flotante. Se requiere C-Kermit 8.0.

Torres de Hanoi. Ilustra expresiones S, recursividad. Requiere C-Kermit 8.0.

Una versión más rápida de Towers of Hanoi. Ilustra cómo acelerar funciones recursivas. Requiere C-Kermit 8.0.

Realiza programación orientada a objetos en C-Kermit 8.0, utiliza algunas características de S-Expression. Requiere C-Kermit 8.0.

Una aplicación demo que utiliza el mismo ejemplo que la mayoría de dialectos Smalltalk utilizan como introducción a la programación orientada a objetos. Para ejecutar esta demo:

· C-Kermit> take class
· C-Kermit> take account

Se requiere C-Kermit 8.0.

Ejecución en cortocircuito de macros en serie (a) mientras todas tienen éxito, (b) hasta que una de ellas tiene éxito. Se requiere C-Kermit 7.0 o K95 1.1.19.

Este pequeño paquete define una serie de operadores aritméticos tipo LISP para C-Kermit y Kermit 95. Se requiere C-Kermit 7.0 o K95 1.1.19 (obsoleto por la sintaxis LISP incorporada de C-Kermit 8.0).

La matriz es un elemento esencial en muchos ámbitos informáticos. C-Kermit y Kermit 95 pueden realizar operaciones matriciales fácilmente. Este script crea dos matrices, A y B, y luego calcula su suma: matriz C.

"SWITCH Considerado Nocivo"

Programación orientada a objetos en C-Kermit y Kermit 95. Diversión con perros y gatos.

Los números complejos no son un tipo incorporado en muchos lenguajes de programación. Aquí la programación orientada a objetos viene al rescate con el tipo definido por el usuario. Este script define una clase de números complejos en C-Kermit, ofreciendo la interfaz familiar de C++. Se requiere C-Kermit 7.0.

El recuento de palabras es el Excel de los lenguajes de scripting como awk y Perl. Con OOP, C-Kermit también maneja la tarea cómodamente. Este script define y utiliza la clase Words para contar las ocurrencias de palabras únicas de un fichero de texto plano. La clase Palabras blinda los detalles de implementación y promueve la reutilización, el buque insignia de la POO. Se requiere C-Kermit 7.0.

Ningún lenguaje de programación orientado a objetos se va de casa sin herencia. Este script muestra la herencia en C-Kermit y Kermit 95.

La herencia múltiple enriquece el diseño de software. No todos los lenguajes de programación orientada a objetos la tienen: C++ la tiene; Java y Smalltalk no. Este script implementa la herencia múltiple en C-Kermit. La famosa clase animal que se encuentra en muchas referencias de C++ y Smalltalk se utiliza para presentar el tema.

El contenedor es un concepto clave en la programación orientada a objetos. Smalltalk, C++, etc. tienen bibliotecas estándar de contenedores. Este script define la clase 'bag' en C-Kermit/Kermit 95. Bag ofrece una rica interfaz de uso.

Una clase string rudimentaria basada en el modelo Smalltalk.

Utilizamos semáforos para coordinar tareas informáticas, compartir recursos, etc. Este script define clases de semáforos en los estilos Smalltalk y C++. Requiere C-Kermit 6.0 / K95 1.1.17.

En la comunidad de patrones, el singleton es una clase que sólo puede tener una instancia. Todos los objetos instanciados a partir de esa clase se refieren al único singleton. El singleton es muy útil cuando sólo hay un recurso disponible y varias funciones definidas por el usuario acceden a ese recurso bajo diferentes referencias. La clase singleton garantiza que sólo se pueda instanciar un objeto a partir de ella, aunque con nombres diferentes.

La máquina de estados finitos es un concepto útil en muchas aplicaciones. Este script sugiere un marco para una máquina de estados.

Pruebas de tortura con lenguaje de script:

Una "prueba de tortura" interactiva para el lenguaje de scripts de C-Kermit. Se requiere C-Kermit 7.0 o K95 1.1.19.

Ejercitador para expresiones booleanas compuestas. Se requiere C-Kermit 7.0 o K95 1.1.19.

Ejercitador de funciones. Se requiere C-Kermit 7.0 o K95 1.1.19.

Ejercitador de matrices locales. Se requiere C-Kermit 7.0 o K95 1.1.19.

Ejercitador para formatos fecha-hora y aritmética. Se requiere C-Kermit 7.0 o posterior. Script actualizado el 26 de abril de 2020.

Ejercitador para expresiones S y aritmética de punto flotante. Se requiere C-Kermit 8.0 o K95 2.0.

Enlaces:


Author profile
Marglin Araujo

Meet Marglin Araujo, a seasoned translator with a keen ability to wield linguistic finesse in bridging cultures and capturing nuanced meanings. With a discerning eye for detail and a profound understanding of language intricacies, Marglin ensures that the essence of each text is vividly conveyed across languages, immersing readers in the richness of diverse cultures and ideas.


Related Articles
logo
Estadísticas Descriptivas Estadísticas Descriptivas CSR

Original article: https://hawksites.newpaltz.edu/glenngeher/descriptivestats/
By: Dr. Glenn Geher


Funciones Básicas de SPSS

1.Frecuencias, Descriptivos, Histogramas

Al trabajar con datos, un primer paso típico es calcular frecuencias para todas las variables categóricas y calcular estadísticas descriptivas para todas las variables continuas. Además, crear histogramas para variables continuas es un buen primer paso. En esta primera sección, donde está aprendiendo estas habilidades, podría ser útil si elige variables específicas de su propio conjunto de datos para analizar.

Así es como se hace todo esto divertido:

El comando "frecuencias" en SPSS le permite saber qué tan comunes son los diferentes valores de una variable categórica en la muestra. Por ejemplo, puede usar este comando para determinar cuántos hombres y mujeres (en una variable, quizás, llamada "género") se incluyeron en su muestra. Para calcular las frecuencias, haga lo siguiente:

A. Elija una variable categórica.

B. En la vista de datos, haga clic en "analizar", luego en "estadísticas descriptivas", luego en "frecuencias".

C. Elija la variable categórica apropiada para incluir en su lista de variables.

D. Luego haga clic en "pegar" para colocar el comando en un archivo de sintaxis.

E. Ejecute esa parte del archivo de sintaxis.

El comando "descriptivos" proporciona información sobre variables continuas. Por ejemplo, puede obtener información sobre el rango de puntuaciones, la media de la variable, la desviación estándar y el número de casos. Para ejecutar este comando, haga lo siguiente:

A. Elija una variable continua.

B. En la vista de datos, haga clic en "analizar", luego en "estadísticas descriptivas", luego en "descriptivos".

C. Elija la variable continua apropiada para incluir en su lista de variables.

D. Luego haga clic en "pegar" para colocar el comando en un archivo de sintaxis.

E. Ejecute esa parte del archivo de sintaxis.

El comando "histograma" proporciona un gráfico de cuán común es cada puntuación para una variable continua. Este gráfico puede, por ejemplo, darle una idea de si su variable está distribuida normalmente. Para ejecutar este comando, haga lo siguiente:

A. Elija una variable continua.

B. En la vista de datos, haga clic en "gráficos", luego en "cuadros de diálogo heredados", luego en "histograma".

C. Elija la variable continua apropiada para incluir en su lista de variables.

D. Luego haga clic en "pegar" para colocar el comando en un archivo de sintaxis.

E. Ejecute esa parte del archivo de sintaxis.

F. ¡Mire su hermoso gráfico!

2. Frecuencias, Descriptivos, Histogramas para datos medidos en clase.

Para esta parte, necesita recopilar datos de las personas en el laboratorio sobre una variable continua y una variable categórica. Recopilará estos datos en grupo (es decir, toda la clase acordará la variable a medir). Un ejemplo de la variable continua podría ser la altura (en pulgadas); un ejemplo de la variable categórica podría ser el género (masculino o femenino). Recopile datos de todos en el laboratorio. A continuación, analizará estos datos y redactará un breve informe de laboratorio.

A. La variable continua.

Para esta variable, usará SPSS para calcular estadísticas descriptivas. En su informe, indique el rango, la media, la desviación estándar y la N para esta variable. A continuación, use SPSS para crear un histograma para esta variable. Resuma brevemente este histograma e incluya la salida de SPSS (como un archivo adjunto) tanto con el resumen de los descriptivos como con el histograma.

B. La variable categórica.

Para esta variable, usará SPSS para calcular frecuencias. Simplemente resuma la frecuencia de los diferentes valores en su informe. Incluya también la salida de SPSS para el comando de frecuencias como un archivo adjunto. Si tiene algo interesante que decir sobre estos resultados, describa estos puntos en su informe.

Qué entregar:

Su informe resumiendo (a) qué variables se examinaron y (b) los resultados con respecto a estos análisis.

Una impresión del archivo(s) de sintaxis para todos los comandos.

Una impresión del archivo(s) de datos.

Una impresión del archivo(s) de salida.

logo
Una charla divertida sobre teletransportación Una charla divertida sobre teletransportación CSR

Artículo original: https://www-users.york.ac.uk/~sb54/tport.html

Por:Samuel L. Braunstein

Di una charla al Club de Ciencia Ficción de Rehovot el 31 de enero sobre teletransportación cuántica y otras cosas locas. Me pidieron que intentara escribir la primera parte de mi charla donde consideraba qué significa "teletransportación" y cuán difícil podría ser realmente. No pretendo que esto sea definitivo sobre el tema, solo mis pensamientos al respecto. Mis propios intereses de investigación se encuentran realmente en los fenómenos cuánticos fundamentales y fuera de ese campo es probable que tropiece como cualquier otro.

Para empezar, preguntémonos qué podríamos querer decir con el término "teletransportación". Después de todo, si alguien se te acerca diciendo "mira, finalmente lo hice, descubrí cómo teletransportar...", nos gustaría poder decidir si estábamos hablando el mismo idioma. Bien, así que he visto Star Trek®, así que creo que puedo intentar definirlo:

La teletransportación es algún tipo de transporte "desmaterializado" instantáneo.

¡Ahora espera un segundo, no puedo comprar eso! La teoría de la relatividad de Einstein, y muchas décadas de evidencia experimental lo respaldan hasta el fondo, dicen que la velocidad más rápida es la velocidad de la luz. Si tomamos esto como parte de la ciencia normativa, tendremos que cambiar nuestra definición inmediatamente a:

La teletransportación es algún tipo de transporte "desmaterializado".

(Al menos por el momento.)

Bueno, eso es un poco mejor, pero he sido bastante vago con lo que quiero decir con desmaterializado. Quizás debería dejar que la siguiente figura sea nuestra mejor guía sobre lo que eso podría significar:

Creo que si pienso en esta definición por un rato, empiezo a darme cuenta de que ya tenemos muchos ejemplos de teletransportación a nuestro alrededor todos los días:

  • teléfono: transporta ondas de sonido como electricidad.
  • fax: transporta una imagen.
  • Red mundial:...

Bueno, ¿esto cuenta como teletransportación? Son realmente procesos de copia. Dejan el sonido, la imagen, lo que sea atrás y envían la copia disparándose a través del espacio de una manera incorpórea. Mmm, ¿deberíamos comprar esto? No dejan una copia atrás en nuestro programa de televisión favorito. Bueno, tal vez eso es lo que hacen. Tienen una máquina que mide las posiciones y velocidades y los tipos de átomos a través de toda la persona y luego envían esa información (digamos por ondas de radio) al lugar donde el cuerpo es reconstruido por otra máquina. Bueno, en la televisión también aprendieron a recrear a la persona a partir de la información aparentemente sin una máquina para recibirla. (¡Una cosa a la vez, por favor!)

¿Qué pasa con el original? Bueno, tal vez la máquina que mide todos esos átomos tenga que cortar a la persona en pedazos para hacerlo. Supongo que sería como una fotocopiadora con una lámpara de flash que estaba demasiado caliente (vaporizando el original). Esto no sería un requisito absoluto. Tan pronto como alguien descubriera cómo construir un proceso de copia más suave, podrían dejar el original atrás. ¿Quisieran? ¿Se copiaría el alma? ¿Tendría que seguir pagando impuestos la copia si el original todavía estuviera presente? Supongo que no puedo responder todas las preguntas urgentes.

Por supuesto, si alguna vez pudiéramos aprender a hacer esto, podríamos encontrar nuevos campos de investigación como la "religión experimental". ¿Quién sabe?

¿De cuánta información estamos hablando de todos modos? Bueno, el proyecto del cuerpo humano visible del Instituto Nacional de Salud de Estados Unidos requiere aproximadamente 10 Gigabytes (eso es aproximadamente 10^11 = 100,000,000,000 "bits", o respuestas sí/no, esto es aproximadamente diez CD ROM) para dar los detalles tridimensionales completos de un humano hasta una resolución de un milímetro en cada dirección. Si olvidamos reconocer los átomos y medir sus velocidades y simplemente escalamos eso a una resolución de una longitud atómica en cada dirección, eso es aproximadamente 10^32 bits (un uno seguido de treinta y dos ceros). ¡Esta es tanta información que incluso con las mejores fibras ópticas concebibles tomaría más de cien millones de siglos transmitir toda esa información! ¡Sería más fácil caminar! Si empaquetáramos toda esa información en CD ROM cabría en un cubo de casi 1000 kilómetros de lado! ¿Suficiente dicho?

Oye, pero todos ustedes están gritando "¿qué pasa con el principio de incertidumbre, puedes realmente medir las cosas con tanta precisión?" Bueno, la teoría cuántica nos dice que la precisión con la que podemos medir la posición y la velocidad de cualquier partícula está limitada por una fórmula muy simple:

Si queremos medir cada átomo dentro de un tamaño atómico típico, esto significa que las velocidades serán inciertas en aproximadamente 300 metros por segundo (si la partícula pesa tanto como un átomo de hidrógeno, digamos).

Esto suena rápido, pero no es tan malo. El bamboleo ordinario de nuestros átomos debido a que estamos a temperatura ambiente es más grande que esto en un factor de tres o más. En otras palabras, el principio de incertidumbre no parece ser demasiado restrictivo en términos de cuán bien podemos medir esos átomos.

Por supuesto, eso no es todo. ¿Qué pasa con el "estado cuántico" de esos átomos? ¿Importa en qué niveles de energía están todos? ¿Necesitan las reacciones químicas tener esta información para funcionar una vez que volvamos a ensamblar los átomos para hacer una persona? Bueno, ¡mi mejor suposición es que no! Como lo es la mejor suposición de varios otros científicos a los que también les he preguntado. Pero esa no es una respuesta definitiva. Creo que lo que tiende a convencerme de que el estado cuántico detallado no es importante para hacerlo bien cuando quieres copiar a una persona y hacer una nueva a partir de la información parcial es que las personas suelen ir a los hospitales para realizar resonancias magnéticas nucleares (RMN) y resonancias de espín electrónico (ESR) escaneos para ver dentro de ellos. Estos procedimientos mezclan los estados cuánticos de al menos un gran número de átomos y núcleos de las personas escaneadas, pero no parece perturbar su apetito (eso los hace seguir siendo humanos en mi libro). Así que aquí nuevamente la naturaleza cuántica de nuestros átomos y moléculas no parece descartar el método de copia para la teletransportación.

¡La enorme cantidad de información involucrada sigue siendo alucinante! ¡Quizás deberíamos empezar con algo más pequeño ...!

logo
Limitaciones de la arquitectura IBM PC Limitaciones de la arquitectura IBM PC CSR

Limitaciones de la arquitectura IBM PC

o

La maldición de los segmentos

Artículo Original: https://theworld.com/~swmcd/steven/rants/pc.html

Por: Steven W. McDougall

Historia antigua

Altair comercializó el primer "ordenador personal" en 1975. Era un verdadero ordenador, y podía comprarse en forma de kit, por 400 dólares. La entrada se realizaba a través de interruptores de palanca en el panel frontal; la salida a través de LEDs en el panel frontal (encendido/apagado, no de 7-segmentos). Su mercado estaba formado principalmente por aficionados y piratas informáticos.

A finales de los 70, había ordenadores personales de muchos fabricantes como Tandy, Commodore, TI y Apple. Los ordenadores de distintos fabricantes no eran compatibles. Cada fabricante tenía su propia arquitectura, su propio sistema operativo, su propia interfaz de bus y su propio software. Cuando se compraba un ordenador, implícitamente se asumía un importante compromiso con los estándares de ese proveedor.

El 6502

En 1980, el Commodore 6502 ejemplificaba el estado del arte de la arquitectura. El 6502 es un microprocesador de un solo chip, con una arquitectura 8/16, es decir, un bus de datos de 8 bits y un bus de direcciones de 16 bits. El modelo de programación refleja la arquitectura del hardware: los registros que contienen valores de datos, como el acumulador, son de 8 bits, mientras que los registros que contienen direcciones, como el contador de programa, son de 16 bits. Un bus de direcciones de 16 bits produce un espacio de direcciones de 64K bytes. A principios de los 80, las DRAM de 64K estaban ampliamente disponibles, y los ordenadores basados en el 6502, como el Commodore 64 y el Apple ][, se comercializaban con un complemento completo de 64K bytes de RAM.

En 1980, IBM decidió entrar en el mercado de los PC. Se dieron cuenta -correctamente- de que la interminable caída de los precios de la DRAM pronto dejaría obsoleta la arquitectura 8/16. El siguiente paso lógico habría sido, digamos, una arquitectura 16/32, como la del Motorola 68000. Una arquitectura 16/32 habría mejorado el rendimiento duplicando el ancho de banda de la memoria y habría proporcionado un espacio de direcciones de 4G bytes, suficiente para el futuro previsible.

Lamentablemente, el 68000 no estaba disponible en 1980, como tampoco lo estaba ningún otro microprocesador de un solo chip con arquitectura 16/32. El problema es que el tamaño de la matriz aumenta directamente con la anchura de registro. Cuando se pasa de 8/16 a 16/32, todos los registros son el doble de grandes, todas las rutas de datos son el doble de anchas, la cadena de transporte del sumador de la ALU tiene el doble de términos... Todo el diseño duplica su tamaño. Y en 1980, la tecnología de procesos no había alcanzado el punto en el que se pudiera fabricar un microprocesador 16/32 de un solo chip a un precio comercializable.

El 8086

Lo que estaba disponible era el Intel 8086. El 8086 fue un intento mal concebido de proporcionar un espacio de direcciones mayor de 64K bytes sin incurrir realmente en los costes de una arquitectura mayor. El 8086 es básicamente una arquitectura 16/16. Tiene un contador de programa de 16 bits, una ALU de 16 bits, cuatro registros de propósito general de 16 bits y algunos registros de índice de 16 bits. También tiene cuatro registros de segmento de 16 bits. El 8086 realiza todos los cálculos y transferencias de datos en aritmética de 16 bits, con una excepción. Inmediatamente antes de pasar una dirección al bus de direcciones externo, el 8086 selecciona uno de los registros de segmento, lo desplaza 4 bits a la izquierda y le añade la dirección, utilizando aritmética de 20 bits. La dirección externa es por tanto de 20 bits, y el procesador tiene un espacio de direcciones de 1M de bytes.

Los cuatro registros de segmento definen cuatro segmentos:

CS

el segmento de código

DS

el segmento de datos

SS

el segmento de pila

ES

el segmento extra

La mayoría de las operaciones utilizan implícitamente el registro de segmento correcto: las búsquedas de instrucciones utilizan CS, las cargas y los almacenamientos utilizan DS, y las inserciones y extracciones utilizan SS. Unas pocas operaciones, como el movimiento de bloque, utilizan tanto DS como ES: uno para el origen y otro para el destino.

La documentación de Intel describe esta arquitectura como una comodidad de programación: aquí está tu código, aquí están tus datos, cada uno almacenado ordenadamente en su propio segmento. A los estudiantes de informática también les gustan las arquitecturas segmentadas por varias razones relacionadas con el diseño de sistemas operativos.

Sin embargo, programar esta máquina es una pesadilla. Nunca se puede abordar cualquier cosa. Primero, tienes que asegurarte de que un registro de segmento está configurado para ello, y luego tienes que construir la dirección como un offset en ese segmento. Un registro de segmento puede apuntar a cualquier lugar en todo el espacio de direcciones de 1M de bytes, pero una vez que se ha configurado, sólo proporciona acceso a un segmento de 64K. Si tienes más de 64K de código o datos, tienes que recargar los registros de segmento sobre la marcha. Un problema particular es que no hay una buena manera de indexar en un array que es mayor de 64K bytes.

IBM y los clones

En circunstancias normales, un diseño tan retorcido y defectuoso como el 8086 simplemente habría sido ignorado por el mercado y se habría desvanecido. Sin embargo, 1980 fue el año de la suerte para Intel. IBM eligió el 8086 como procesador para el PC. Respaldado por el poder de marketing y el reconocimiento del nombre de IBM, el IBM PC se hizo rápidamente con la mayor parte del mercado. Otros fabricantes abandonaron el mercado del PC (TI), se dedicaron a nichos de mercado (Commodore, Apple) o abandonaron su propia arquitectura en favor de la de IBM (Tandy). Con una cuota de mercado cercana al 90%, el PC se convirtió en un estándar de facto. Los fabricantes de software crearon sistemas operativos (MicroSoft DOS, Digital Research DOS), hojas de cálculo (Lotus 123), procesadores de texto (WordPerfect, WordStar) y compiladores (MicroSoft C, Borland C) para PC. Los proveedores de hardware fabrican unidades de disco, impresoras y sistemas de adquisición de datos que se conectan al bus externo del PC.

Aunque IBM acaparó inicialmente el mercado de los ordenadores personales, posteriormente lo perdió en favor de los vendedores de clónicos. Acostumbrada a ser un proveedor monopolístico de ordenadores centrales, IBM no estaba preparada para la feroz competencia que surgió cuando Compaq, Leading Edge, AT&T, Dell, ALR, AST, Ampro, Diversified Technologies y otros se disputaron una parte del mercado de PC. Además de precios bajos y alto rendimiento, los vendedores de clónicos aportaron otra cosa muy importante al mercado de PC: un estándar de hardware absoluto. Para vender un clon de PC, el fabricante tenía que poder garantizar que ejecutaría todo el software de PC existente del cliente y que funcionaría con todo el hardware periférico existente del cliente. La única forma de conseguirlo era diseñar el clon para que fuera idéntico al IBM PC original a nivel de registros. Así, el estándar que definió el IBM PC quedó grabado en piedra cuando docenas de proveedores de clónicos distribuyeron millones de máquinas que se ajustaban a él en todos sus detalles. Esta estandarización ha sido un factor importante en el bajo coste y la amplia disponibilidad de los sistemas PC. También ha sido un serio obstáculo en el intento de superar las limitaciones de la arquitectura del PC.

Espacio de direcciones azul

El 8086 proporciona al PC un espacio de direcciones de 1M de bytes. Esto se muestra convenientemente como dieciséis segmentos disjuntos de 64K bytes, asignados de la siguiente manera:

Segmento

Uso

0-9

RAM

A-B

RAM de vídeo

C-D

ROM en tarjetas de E/S

E-F

ROM BIOS (código del sistema operativo)

Con 10 segmentos permitidos para la RAM, el PC puede direccionar hasta 640K bytes de memoria principal. El espacio entre 640K y 1M se reserva para uso del hardware y del sistema operativo. A mediados de los 80, esta arquitectura se estaba quedando obsoleta. Había disponibles chips DRAM de 256K y 1M bytes; los usuarios compraban PCs con una dotación completa de 640K de RAM y querían más. Desgraciadamente, como muestra la tabla anterior, no hay sitio para poner más memoria en un PC.

Una solución fueron los sistemas de memoria de selección bancaria. Un vendedor diseñaba una tarjeta de memoria, añadía algunos registros de selección de banco y asignaba bloques seleccionados de memoria al espacio de direcciones del PC, normalmente en C0000. Con un sistema de selección de banco, el programador es el responsable de gestionar los registros de selección de banco y de realizar un seguimiento de qué banco tiene qué datos. En la actualidad, los sistemas de selección de banco suelen ajustarse a la especificación de memoria expandida de Lotus/Intel/MicroSoft (LIM-EMS). En este contexto, la palabra "ampliada" se refiere específicamente a un sistema de selección de bancos.

La memoria expandida permitió sin duda que algunos programas utilizaran más de 640K de RAM, pero es claramente inadecuada como solución a largo plazo a la necesidad de más memoria. La única solución real es pasar a una arquitectura más grande. Intel dio el primer paso introduciendo el procesador 80286.

El 80286

El 80286 es similar al 8086 en concepto. Es una arquitectura 16/24. Los buses de datos y registros son de 16 bits. El bus de direcciones externo es de 24 bits, proporcionando un espacio de direcciones de 16M bytes. Las direcciones se especifican con un selector de segmento de 16 bits y un offset de 16 bits. El selector de segmento especifica un descriptor de segmento residente en memoria. El descriptor de segmento tiene una base de segmento de 24 bits, un tamaño de segmento de 16 bits y algunos bits de atributo. Para generar una dirección, el desplazamiento de segmento de 16 bits se añade a la dirección base de segmento de 24 bits utilizando aritmética de 24 bits y, a continuación, se envía al bus de dirección externo.

El 80286 proporciona al programador un espacio de direcciones de 16M bytes. Sin embargo, todavía está limitado por la necesidad de manipular registros de segmento, y el hecho de que cada segmento está limitado a 64K bytes, como en el 8086. Más importante aún, el 80286 está limitado por la necesidad de seguir siendo compatible con PC.

Intel sabía que no podría comercializar un nuevo procesador a menos que pudiera ejecutar los programas de PC existentes. Por lo tanto, diseñaron el 80286 con dos modos de ejecución diferentes: modo real y modo protegido. El modo protegido es la arquitectura 16/24 que acabamos de describir. El modo real es una emulación exacta de la arquitectura 8086 16/16. El modo real es a veces llamado modo DOS. Cuando un 80286 se enciende, arranca en modo real. Esto le permite funcionar como el procesador de un clon de IBM PC. Utilizado de esta manera, el 80286 proporciona un aumento de rendimiento, debido a sus relojes más rápidos y buses de datos de 16 bits. Sin embargo, el programador aún está restringido a la arquitectura PC, con su espacio de direcciones de 1M de bytes y la limitación de 640K de RAM. Dado que los programas DOS y PC no se ejecutarán en un procesador 80286 en modo protegido, la mayoría de los procesadores 80286 se ejecutan en modo real.

La locura de la memoria extendida

Hoy en día, la mayoría de los PCs 80286 se entregan con varios megabytes de RAM. Dado que el 80286 tiene un espacio de direcciones de 16M bytes, esta memoria se direcciona linealmente-no es necesario hardware de selección de banco. En modo protegido, toda la memoria es utilizable. En modo real, los primeros 640K de memoria son accesibles, como en la arquitectura estándar de PC, y el resto no. La memoria que es inaccesible porque se encuentra por encima del límite de 640K de la arquitectura original del PC se denomina memoria extendida, que no debe confundirse con la memoria expandida.

El uso más común de la memoria extendida es proporcionar un disco RAM para un sistema DOS. Cuando el programa quiere acceder a los datos almacenados en el disco RAM, activa un bit de modo que cambia el 80286 a modo protegido. Esto le da acceso a la memoria extendida. El programa entonces realiza la transferencia de datos deseada entre su propio espacio de memoria y el disco RAM en la memoria extendida. Resulta que no hay forma de volver del modo protegido al modo real, por lo que el programa debe entonces guardar su estado y reiniciar el procesador. Al reiniciarse, el procesador reanuda la ejecución del programa original en modo real. En la práctica, todo esto es manejado por un controlador de dispositivo para el disco RAM, como RAMDRIVE.SYS.

Intel pretendía que el 80286 proporcionara un camino para la evolución ascendente de los sistemas de PC. En concreto, esperaban que su modo de compatibilidad con DOS le permitiera ganar aceptación y que, una vez que hubiera una base instalada suficiente de procesadores 80286, los desarrolladores de software empezaran a escribir sistemas operativos y programas que utilizaran las características del modo protegido. Lo que ocurrió en realidad fue que los vendedores de clónicos de PC lo utilizaron como un 8086 de alto rendimiento, los usuarios lo ejecutaron casi exclusivamente en modo real y los desarrolladores de software se resistieron a las complejidades y limitaciones de la arquitectura segmentada en modo protegido.

El 80386

La siguiente oferta de Intel fue el 80386. Como el 80286, el 80386 tiene una arquitectura segmentada, y como el 80286, tiene dos modos de ejecución: real y protegido.

En modo protegido, el 80386 es una arquitectura 32/32. El esquema de segmentación es aún más complejo que el del 80286, y te ahorraré los detalles. Sin embargo, permite desplazamientos de segmento de 32 bits, por lo que un único segmento puede tener hasta 4G bytes. Esto permite al programador definir un único segmento que cubra toda la memoria disponible, en lugar de tener que hacer malabarismos continuamente con una colección de segmentos de 64K bytes. También permite indexar en matrices de más de 64K bytes.

En modo real, el 80386 proporciona una emulación exacta de la arquitectura 8086 16/16.

Desafortunadamente, las capacidades del 80386 son poco más utilizadas que las del 80286. Los programas DOS y PC no se ejecutarán en un procesador 80386 en modo protegido, por lo que la mayoría de los procesadores 80386 se ejecutan en modo real. El procesador de mi máquina actual funciona en modo real. Proporciona acceso a 640K bytes de memoria principal y a un disco RAM de 3456K bytes, para un total de 4M bytes de RAM instalada.

Modelos de memoria

Nos guste o no, existen millones de PCs y tenemos que programarlos en modo real. MicroSoft C proporciona amplias facilidades para sacar lo mejor de una mala situación.

Una cuestión es si las direcciones son de 16 bits o de 32 bits. Una dirección de 16 bits proporciona un desplazamiento dentro de un único segmento. El registro del segmento ya debe estar cargado con la dirección base correspondiente. Una dirección de 32 bits proporciona tanto una dirección base de segmento como un desplazamiento dentro de ese segmento. Cuando se accede a la memoria a través de una dirección de 32 bits, el programa carga primero el registro de segmento a partir de los 16 bits superiores de la dirección y, a continuación, utiliza los 16 bits inferiores de la dirección como desplazamiento dentro de ese segmento. Las direcciones de 32 bits requieren más memoria y más ciclos de CPU, pero proporcionan acceso a todo el espacio de direcciones de 1M de bytes del procesador 8086.

Si un programa tiene menos de 64K de datos, entonces puede poner todos sus datos en un único segmento de datos y utilizar direcciones de 16 bits para acceder a él. Del mismo modo, si un programa tiene menos de 64K de código, puede poner todo su código en un único segmento de código y utilizar direcciones de 16 bits para saltos y llamadas a subrutinas. Por el contrario, si el código o los datos no caben dentro de estos límites, el programa debe utilizar direcciones de 32 bits. MicroSoft C contempla las cuatro posibilidades mediante un conjunto de modelos de memoria:

Modelo de memoria

Direcciones de datos

Direcciones de código

Pequeña

16 bits

16 bits

Pequeña

16 bits

16 bits

Compacta

32 bits

16 bits

Mediana

16 bits

32 bits

Grande

32 bits

32 bits

Enorme

32 bits

32 bits

El modelo de memoria Tiny es igual que el modelo Small, salvo que el tamaño de los segmentos de código y datos juntos no debe superar los 64K bytes. Además, el modelo Tiny produce un archivo .COM en lugar de un archivo .EXE. Los archivos .COM son ligeramente más pequeños y se cargan más rápido en DOS.

El modelo de memoria Enorme es el mismo que el modelo de memoria Grande, excepto que las matrices individuales pueden superar los 64K bytes de tamaño. Sin embargo, las direcciones se siguen almacenando como pares segmento:offset, y el compilador no realiza la aritmética completa de direcciones de 32 bits en ellas. En consecuencia, las matrices de gran tamaño están sujetas a la restricción de que el tamaño del elemento de la matriz debe ser una potencia de 2.

La elección del modelo de memoria es una opción en tiempo de compilación, por lo que puede experimentar fácilmente con diferentes modelos.

_________________________________________________________________________________________________________________________

Notas

mal concebido, retorcido y defectuoso

En mi opinión

8086

En realidad, el IBM PC utilizaba el 8088, no el 8086. El 8088 es el mismo que el 8086 internamente, pero tiene un bus de datos externo de 8 bits. De este modo, el ancho de banda de la memoria se sustituye por un menor coste del sistema.

expandido

Piensa en un acordeón, con el fuelle expandiéndose por detrás del teclado.

80286

También existe un procesador 80186. Es esencialmente un 8086 con relojes, controladores de interrupción y otros circuitos de apoyo integrados en un solo chip. Se utiliza principalmente como procesador integrado en equipos de control industrial.

extendido

Piensa en una torre, con pisos adicionales que se extienden cada vez más alto.

reiniciar el procesador

No me lo estoy inventando.

___________________________________________________________________________________________________________________________


Esta obra está bajo una Licencia Creative Commons Atribución 4.0 Internacional.

Steven W. McDougall / curriculum vitae / [email protected] / febrero de 1992

logo
Confrontación con las Autoridades en Greenville, Alabama Confrontación con las Autoridades en Greenville, Alabama CSR

Articulo Original: https://www.crmvet.org/lets/65wolfe.htm

Por crmvet.org

Rev. Dr. Janet E. Wolfe

6 de Agosto de 1945

...¡Aleluya! ¡Acabamos de presenciar la firma de la Ley Federal de Derechos Electorales! Sin embargo, es tan tarde que definitivamente ha limitado la efectividad de nuestro trabajo para registrar negros durante el Proyecto SCOPE.

Tenemos la emoción aquí, en caso de que no lo hayan leído en la prensa. La semana pasada, Hosea Williams, director del Proyecto SCOPE, emitió una orden para manifestaciones generales para acelerar la aprobación final del proyecto de ley de derechos electorales.

Programamos una manifestación sobre eso y sobre el hecho de que los registradores no nos habían notificado quién había pasado la prueba de alfabetización. Solicitamos un permiso; fue denegado; marchamos de todos modos. Bajamos unas dos cuadras por South Park Street desde el árbol chinaberry, nuestra "iglesia", donde se celebraban reuniones masivas. La policía había bloqueado la calle con sus coches y estaba armada con garrotes y gases lacrimógenos. El jefe anunció que no toleraría una violación de la ley. Entonces nos sentamos en medio de la calle, unas 150 personas. Permanecimos sentados en la calle desde las 11:00 a.m. hasta las 6:15 p.m., cantando canciones, escuchando discursos y rezando.

Aproximadamente a las 3:00 p.m., la policía levantó una barricada de madera al otro lado de la calle. A las 6:15, R.B. Cottonreader, líder del Proyecto SCOPE, decidió intentar moverse. Derribó la barricada y nos formamos en una columna. La policía no nos advirtió, pero empezó a lanzar bombas de gas lacrimógeno. Como se había acordado de antemano, nos tiramos al suelo con toallas tapándonos la cara. Algunos corrieron; Sentí que tres o cuatro me pasaban por encima. Retrocedimos lentamente hacia las mangueras de agua instaladas detrás de nosotros por el médico; el mejor tratamiento para el gas lacrimógeno es el agua.

La policía usó gas fuerte; generalmente no lastima a las personas, pero algunos recibieron quemaduras de primer y segundo grado. Una niña fue golpeada con un garrote. ¡La policía les quitó las toallas a algunos de la primera fila, incluso a niños pequeños! Luego les rociaron gas directamente en la cara.

¡Nos reagrupamos debajo del árbol chinaberry y tuvimos la reunión masiva más grande del verano! Ahora tenemos un movimiento. Las madres no se sientan a ver cómo sus hijos reciben gas lacrimógeno y garrotes sin involucrarse en el movimiento.

Como solemos cantar "Ain't gonna let nobody turn me round" (No voy a dejar que nadie me detenga), decidimos volver a la barricada el miércoles. Salimos del árbol chinaberry a la 1:00 p.m. y nos sentamos en la calle, a unos 30 pies detrás de la barricada, hasta las 6:15. En ese momento nos desorganizamos un poco; demasiada gente deambulaba detrás de nosotros. Además, un gran grupo de acosadores blancos se había reunido a media cuadra detrás de la policía. (Todo esto ocurría en el sector de color.)

Estábamos en proceso de reagruparnos. De repente, Elijah Poole, el nervioso abogado de la ciudad, y la policía atravesaron la barrera hacia nosotros. Estábamos cantando "We Shall Overcome" (Venceremos). Poole anunció en su altavoz portátil: "Les doy un minuto para dispersarse. Cualquiera que no sea parte de esta basura, es mejor que se largue." Nos tiramos en la calle, con la cara tapada. Como solo quedaban unas 50 personas, maltrataron a casi todos.

Un bote de gas lacrimógeno explotó muy cerca de mi oído izquierdo y no pude escuchar la orden de R.B. Cottonreader de marcharme. Permanecí acostada durante cinco minutos, según me dijo un periodista. Un policía me tiró de la toalla y me roció gas en la cara, en todo el bolso y la ropa. Le quité la toalla sin golpearlo. Tiré el bolso a los arbustos. Me golpeó en el brazo con un garrote. Cuando finalmente me levanté, no quedaba nadie más que la policía en el área. Caminé detrás de una casa y entré a otra donde me lavé.

Stuckey, el peor policía, golpeó a Cottonreader. Tiene el ligamento de la rodilla torcido. Varias personas sufrieron quemaduras peores esta vez.

La confrontación directa es lo que saca a relucir el amor y el odio en las personas. Habíamos cantado "Amo a todos", modificamos 1 Corintios 13 como grupo, etc., y aún así el odio y la confusión volvieron a nosotros a través de la barricada. A veces parecía que les estábamos llegando. De hecho, molestamos tanto la conciencia de Elijah Poole que instaló un altavoz que reproducía "Waltzing Matilda" y "Brahms' Lullaby" para tratar de ahogarnos.

El significado de la fe se vuelve mucho más claro bajo una situación de sufrimiento por una causa de un grupo grande. Todos nos sentimos más unidos y la mayoría de nosotros no odiamos a la policía. La Sra. Lula Robinson, la mujer de 72 años con quien Pam y yo nos quedamos, la que usa la "túnica del profeta" blanca cuando sale, se paró justo en medio del gas con su túnica ambos días. Varias otras personas mayores también estaban allí. Pudimos evitar la violencia grave por parte de los negros. Se necesita verdadera fuerza para evitar ser violento cuando los tuyos están siendo castigados. La mayoría de la gente puede soportar el castigo por sí misma, pero es más difícil dejar que otros lo soporten también. Charles Cheatham, un joven que trabajaba con nosotros, tuvo una verdadera lucha para evitar ir tras Stuckey porque le había rociado gas lacrimógeno en la cara a su hermana pequeña, su hermano y su madre.
Ayer planeamos marchar de nuevo, ya que aún no habíamos llegado a nuestro objetivo, el juzgado, y queríamos protestar por el trato que habíamos recibido el día anterior. Esta vez, el alcalde envió a uno de sus "títeres" para averiguar qué queríamos. Dijimos que queríamos ir al juzgado. Esta vez emitió un permiso. Hicimos una marcha silenciosa hacia el juzgado, esta vez con escolta policial, y celebramos una reunión de oración y canto de 20 minutos en las escalinatas. La gente blanca estaba asomándose por las ventanas todo el tiempo. En el distrito de negocios vimos algunos gestos obscenos, pero el efecto general en la comunidad blanca fue de asombro ante la procesión ordenada, de dos en dos, de 205 negros hacia el juzgado. Incluso Elijah Poole se quitó el casco verde durante la oración. Sin embargo, ningún otro blanco lo hizo.

... Por ahora hemos terminado de manifestarnos. Se demostró nuestro punto, la comunidad negra está mucho más unida en la lucha, los negros se han enfrentado a los blancos con la fuerza del amor y Elijah Poole está empezando a aprender que el mundo le pasó por encima. Habrá mucho más trabajo aquí: empleos, escuelas, biblioteca, lugares públicos y registro continuo de votantes. Necesitaremos a cientos de personas en el juzgado el lunes 16 de agosto para demostrar que necesitamos un registrador federal para dirigir este condado de manera justa. Los registradores locales suspendieron a casi todos bajo la ley de Alabama, pero la prueba de alfabetización ahora está abolida.

Nos marcharemos de aquí después del registro de votantes. Tengo que estar en San Francisco el 23 de agosto para comenzar el seminario. Espero volver aquí varias veces más para trabajar. Es una experiencia tremenda que recomiendo encarecidamente.

P.D., 2014: Según recuerdo, tuvimos una participación masiva en el registro de votantes, algo así como 200. Para incomodarnos lo más posible, los funcionarios apagaron el aire acondicionado en el juzgado y el calor y la humedad estaban alrededor de los 35 grados Celsius (aproximadamente 95 grados Fahrenheit). La espera fue muy larga. Según el informe del Proyecto SCOPE, unos 1.000 intentaron registrarse durante nuestro proyecto, y 325 pudieron hacerlo..