Página personal de Francisco A. Candelas

COMUNICACIONES CON EL ORDENADOR DE BOLSILLO CASIO FX 850P / 880P

1. Introducción

Los ordenadores de bolsillo FX 850P (hasta 40K RAM) y FX 880P (hasta 64K de RAM) de Casio pueden enviar y recibir datos del extereior a través de dos puertos estándar: un puerto serie duplex (envío y recepción simultánea) asíncrono RS-232 y un puerto paralelo de salida a impresora.

El fabricante vende una unidad (FA-6) que se conecta al ordenador a través de un pequeño conector de 30 pines situado en un lateral de esta, y que suministra los puertos serie RS-232 y paralelo (Centronics) mediante unos conectores estándar. Sin embargo, el propio FX 850P incorpora en su interior la mayor parte del hardware necesario para manejar esos puertos, además del software. Así se puede acceder a esos puerto a través del conector del lateral, sin emplear la unidad FA-6.

Los dos puertos estándar hacen de este ordenador de bolsillo un equipo muy versatil, capaz de conectarse con otros equipos como un PC, al igual que hacen otras agendas y equipos de bolsillo. Además su interprete BASIC incorpora suficientes instrucciones para sacar todo el provecho de dischos puertos de forma sencilla.

El puerto más utilizado es el serie, y con el se puede, por ejemplo, enviar programas o datos del banco de datos desde el FX 850P a un ordenador personal. También se puede cargar programas o datos almacenados en un ordenador personal en el FX 850P. Con ello podemos editar los programas en un editor de textos del PC, lo que resulta normalmente más comodo, o mantener bibliotecas o copias de seguridad de de programas y datos. Además se puede utilizar el puerto para otro tipo de comunicaciones dentro de los programas BASIC. Otra posible opción más sencilla es conectar dos ordenadores de bolsillo directamente para intercambiar datos o programas.

Este documento pretende enseñar los conocimientos básicos para empezar a sacar partido de los puertos mencionados. En cualquier caso, siempre será conveniente repasar el manual de usuario del ordenador, sobre todo los capítulos relativos al manejo de archivos y a los comandos de entrada y salida. Tambíen puede resultar muy interesante repasar lás páginas web listadas en el apartado "Direcciones de interés".

IMPORTANTE: El autor no se responsabiliza de los posibles daños que un lector pueda producir en su computadora FX 850P / 880P. Si esto ocurre, probablemente será debido a un mal uso de esta documentación, ya que todo lo aquí presentado ha sido experimentado con éxito por el autor (desde los circuitos necesarios a los programas). Se aconseja leer bien lo aquí presentado, así como el manual de usuario, y comprender lo que se está haciendo antes de proceder a realizar las conexiones a través de los puertos del ordenador. No estarían de más algunos conocimeintos básicos de eléctrónica.

2. Conector de periféricos

Conector del ordenador FX850P
Pin Función TIPO Puerto Descripción
1 Vcc Aliment. - +5V del ordenador.
3 CD Entrada RS-232 Detección de portadora. A +5V cuando van a llegar datos al ordenador.
5 - - -  
7 - - -  
9 RD Entrada RS-232 Recepción de datos.
11 /STB Salida Paralelo Indica dato válido en el puerto paralelo cuando es +5V
13 RTS Salida RS-232 Petición para enviar datos.  A +5V cuando el ordenador quiere enviar datos.
15 /PWR ON Salida - A  0V cuando el ordenadpor está encendido.
17 D4 Sal./Ent. Paralelo Bit 4 del bus de datos interno.
19 D5 Sal./Ent. Paralelo Bit 5 del bus de datos interno.
21 D6 Sal./Ent. Paralelo Bit 6 del bus de datos interno.
23 D7 Sal./Ent. Paralelo Bit 7 del bus de datos interno.
25 AD1 Salida - Bit 1 del cursor?
27 /OE Salida - Habilitar salida de datos.
29 /CS Salida Paralelo Selección de chip para el puerto paralelo. Activa cuando es 0V.
Pin Función TIPO Puerto Descripción
2 DSR Entrada RS-232 Módem preparado. A +5V indica que el equipo al que se conecta está listo.
4 CTS Salida RS-232 Listo para enviar. A +5V indica que el otro equipo puede recibir datos.
6 BUSY Entrada Paralelo Impresora ocupada. A +5V indica que la impresora no puede recibir datos.
8 - - -  
10 /INIT Salida Paralelo Iniciar impresora (0V).
12 DTR Salida RS-232 Ordenador preparado. A +5V indica que el ordenador está listo.
14 TD Salida RS-232 Transmisión de datos.
16 D3 Sal./Ent. Paralelo Bit 3 del bus de datos interno.
18 D2 Sal./Ent. Paralelo Bit 2 del bus de datos interno.
20 D1 Sal./Ent. Paralelo Bit 1 del bus de datos interno.
22 D0 Sal./Ent. Paralelo Bit 0 del bus de datos interno.
24 AD0 Salida - Bit 0 del cursor?
26 AD2 Salida - Bit 2 del cursor?
28 RD/WR Salida Paralelo Indica una operación de lectura (a +5V)  o escritura (+0V).
30 GND Aliment. - Referencia, 0V.
  • Todas las señales emplean niveles de 5V en lógica positiva, es decir, +5V para el '1' y 0V para el '0'.
  • La señal Vcc corresponde a la alimentación del FX 850P, y no debe utilizarse para evitar descargar las baterias de este.
  • Tampoco es buena idea conectar dispositivos de consumo considerable (del orden de mA o más) en las lineas de salida.
  • Cualquier conexión debe hacerce con el FX 850P apagado, y siempre debería verificarse antes de encender la unidad que se utilizan los pines correctos.
  • La conexión seríe se puede realizar utilizando solo tres señales: TD, RD y GND. Las otras señales (CD, RTS, CTS, DTR y DSR) son prescindibles, aunque pueden ser utiles para comunicarse con ciertos dispositivos como por ejemplo, un módem telefónico.

El conector macho necesario para utilizar los puertos del FX 850P no es fácil de encontrar. Normalmente se recurre a hacer uno de forma "artesanal". Se pueden emplear también cables finos como los de telefonía, con el cuidado de insertarlos en la línea correcta cada vez que se realiza la conexión. Yo me he creado un conector a partir de una pequeña placa de fibra de vidreo de doble cara, a la que he soldado horizontalmente los pines necesarios para una conexión serie;  RD y dos más de apoyo para la cara de arriba, y TD, GND y otro más de apoyo para la cara de abajo. El conector se muestra en las siguientes figuras:

Conector (parte de arriba)
Conector visto desde arriba
Conector (parte de abajo)
Conector visto desde abajo
Conector conectado al FX-850
Conector insertado en la FX850P
Conector y circuito de interface
Conector junto con el circuito de interfaz serie y el DB-25 para el RS-232 del PC

3. Conexión serie entre dos FX 850P

Esta conexión resulta muy sencilla, ya que no se requiere convertir niveles de tensión. Para una transmisión básica por el puerto seríe con tres hilos se debe seguir este esquema:

Conexión de 3 hilos

4. Conexión serie con un PC u otro equipo

Las señales RS-232 presentes en el conector del FX 850P emplean niveles TTL de 5V que deben ser adaptados a los niveles RS-232 estándar. En TTL el '1' se representa con +5V y el '0' con 0V. En cambio, en RS-232 el '1' se representa con una tensión de -15V a -3V y el 0 con +3V a +15V.

Un  circuito como el mostrado a continuación puede realizar dicha función para una transmisión básica con tres hilos (TD, RD y GND). En este caso, se utilizan las señales DTR y RTS procedentes del puerto RS-232 del PC (u otro equipo) para obtener una tensión de alimentación para el circuito, y así no se requiere una fuente de alimentación externa.

Circuito de interfaz serie RS-232

El ciruito integrado IC1 es el encargado de transformar e invertir los niveles de tensión. Para alimentar dicho circuito con 5V se requiere el regulador IC2, que se alimenta de la tensión obtenida de las líneas RTS y DTR del puerto del PC con los diodos rectificadores D1 y D2

5. Conexión por el puerto paralelo

Las líneas de datos del interfaz del FX 850P deben pasar a través de un latch que se habilite cuando se realiza una escritura en dicho puerto. Puede utilizarse un circuito como el siguiente, que es una versión de uno expuesto en la revista Elektor (Marzo 1994).

Circuito de interfaz paralelo

Es importante alimentar el circuito con 5V procedentes de una fuente exterior para evitar descargar las baterias de la FX 850P. Por el mismo motivo deben usarse integrados CMOS de bajo consumo (como las series HC o HCT).

La señal de salida PSTROBE, activa cuando tiene 0V, indica a la impresora (u otro dispositivo conectado al interfaz paalelo) que el dato presente es válido. La linea PBSY (BYUSY) sirve para que la impresora indique al ordenador que no puede recibior datos, lo que ocurre cuando vale +5V. El ordenador no enviará datos al puerto paralelo (las instrucciones como LPRINT o LLIST se bloquean)  hasta que esa línea tenga 0V. La linea PINIT (INIT) sirve para inicializar la impresora, cuando vale 0V. Del control de estas líneas se encarga el software del FX 850P cuando se ejecutan los comandos que usan el puerto.

Podría pensarse en utilizar la señal STROBE también para validar el almacenamiento del dato en el latch, junto con las señales WR y CS, pero esto no es correcto porque esta señal se activa con posteioridad a las otras DOS señales. Realmente, STROBE deberá controla otro latch diferente en el dispositivo periférico conectado al puerto.

NOTA: Personalmente he encontrado problemas con este circuito, ya que el latch no almacena correctamente los datos que van al puerto paralelo, al parecer porque las señales Wr y CS no se activan (ponen a 0V) simultánemente. Por eso empleo habitualmente la comunicación serie. Seguiré investigando sobre el uso del puerto paralelo del FX 850P para solucionar estos problemas y ofrecer en está página un circuito de interface paralelo funcional. Hasta ahora he constatado que las señales D0-D7, WE y OE del interface del FX 850P no son especificas del puerto paralelo, y son señales internas del ordenador. La señal CS si que se activa sólo al usar el puerto paralelo. Sería interesante monitorizar estas líneas mientras se emplea el puerto paralelo para ver sus tiempos.

6. Instrucciones del FX 850P relativas al puerto serie

Lo primero a conocer es el llamado descriptor de archivo. Este es una cadena de caracteres que identifica un archivo, dispositivo o puerto y o otros parámetros necesarios y está compuesto de tres partes:

  • Nombre de dispositivo. Identifica al tipo de dispositivo al que se accede. Puede ser CAS0:, CAS1: o COM0:. Las dos primeros permiten acceder a ficheros grabados en cinta. El que tiene interés ahora es el tercero, COM0:, que identifica al puerto serie.

  • Parámetros. Cadena que contiene los valores de ciertos parámetros requeridos por el dispositivo. Para el puerto serie (COM0:) se emplea una cadena formada por 9 valores separados por comas que definen el formato empleado para la transmisión asícrona RS-232. Estos son:
Parámetro Posibles valores Función
Velocidad 1, 2, 3, 4, 5, 6 Velocidad de transmisión en bits por segundo (bps). 1 se refiere a 150bps, 2 a 300bps, 3 a 600bps, 4 a 1200bps, 5 a 2400bps y 6 a 4800bps.
Paridad N, E, O Detección de error de paridad. N si no se usa detección, E para paridad par y O para paridad impar. Al emplear detección el FX 850 genera un error de paridad (PO error, cod 31) cuando detecta erroes en la recepción.
Bits por carácter 7, 8 Número de bits en cada dato transmitido. Normalmente se emplean 8.
Bits de parada 1, 2 Número de bits de paro o final tras el dato transmitido. Cuando se generan erores con velocidades altas (4800) conviene emplear 2 bits.
Usa CTS C, N Esta línea es empleada si el dispositivo en el otro extremo de la conexión requiere ser avisado antes de tranmitir datos hacia el FX 850. Con C se activará la línea para dar el aviso. Con N no se utiliza.
Usa DSR D, N Cuando se emplea estaopción (valor D) se requiere que la línea de entrada DSR esté activa para poder enviar. 
Usa CD C, N Cuando se emplea (valor C) se requiere  que la línea de entrada CD se active antes de recibir datos.
UsaXOn/XOff B, N El protocolo XOn/XOff sirve para controlar el flujo de datos. Durante la recepción, cuando se satura el buffer (en el FX 850P es de 64 bytes) se envía un carácter especial llamado XOff. El emisor parará de enviar cuando reciba un XOff, y volverá a transmitir al recibir un carácter XOn. Con la opción B se activa el uso de este protocolo, lo que es conveniente al tranmitir programas largos o grandes bloques de datos.
Usa SI/SO S, N Cuando se emplean tramisiones de 7 bits (ver valor de Bits por carácter), los datos con valores superiores a 127 se pueden enviar precedidos de un carácter especial llamado SO. Para  volver a enviar datos menores de 128 se envía antes el carácter especial SI. Este modo se activa con la opción S.

Por ejemplo, la cadena "2,E,8,1,N,N,N,B,N" representa que se va a utilizar una transmisión a 300bps (2) con paridad par (E) de 8 bits por caracter (8) y con dos bits de paro (2), empleando además el protocolo XOn/XOff (B). No se emplea ninguna de las señales de control del puerto serie (N). Estos son realmente los valores por defecto empleados por el FX 850P, es decir, con la omisión de uno de los valores se tomará el valor correspondiente indicado. Así, la cadena "6,N" representará una transmisión a 4800bps sin paridad, siendo el resto de parámetros los mismos de antes.

  • Nombre de archivo. Solo se requiere al trabajar con ficheros grabados en cinta, por lo que no se hablará del ellos aquí.

Según lo anterior, se puede hacer referencia a una trasmisión por el puerto serie mediante una cadena de descriptor como "COM0:2,E,8,1,N,N,N,B,N".

Los comandos del FX 850P que posibilitan las comunicaciones por el puerto serie son los siguientes:

  • OPEN descriptor AS #1. Se utiliza dentro de un programa para declarar que un archivo o dispositivo, como puede ser el puerto serie, va a ser utilizado a continuación.

  • PRINT #1, expresión {, ;} expresión... Se utiliza dentro de un programa y funciona como el comando PRINT habitual, solo que escribe los datos en el archivo abierto previamente con OPEN. En el caso del puerto serie, los datos son enviados por las líneas de este. Cuando no se especifica el punto y coma al final del PRINT, se envía la pareja de códigos 0Dh y 0Ah (retorno de carro y avance de línea).

  • INPUT #1, variable, variable... Se utiliza dentro de un programa y permite leer datos de un archivo abierto con OPEN, de igual manera que el comando habitual INPUT. Usado sobre el puerto serie permite leer los datos ya recibidos y guardados en un buffer interno de la unidad.

  • INPUT$ (expresión, #1). Devuelve una cadena con el número de carácteres especificado por expresión procedentes del archivo abierto anteriormente con OPEN. Funciona como INPUT$(expresión) lo hace sobre el teclado de la FX 850P.

  • EOF (1). Permite detectar el final de un archivo. La función devuelve 0 (FALSE) mientras queden datos en un archivo o en el buffer donde se almacenan los datos recibidos por el puerto serie, y -1 (TRUE) cuando se alcanza el final del archivo o ya no quedan datos en el buffer de recepción.

  • CLOSE. Concluye la utilización del archivo declarado con OPEN dentro de un programa.

  • LOAD descriptor. Lee o recibe un programa desde un archivo o del puerto serie. Al recibir el programa, éste se recibe como un archivo ASCII. El comando debe ejecutarse manualmente dentro del modo BASIC.

  • SAVE descriptor. Escribe o envía un programa hacia un archivo o el puerto serie. Al enviar por el puerto serie, se envía como un archivo ASCII. El comando debe ejecutarse manualmente dentro del modo BASIC.

  • LOAD# descriptor. Igual que LOAD, pero para cargar o recibir el contenido del banco de datos.

  • SAVE# descriptor. Igual que SAVE, pero para guardar o enviar el contenido del banco de datos.

Para obtener más información sobre los comandos anteriores se debería consultar el manual de usuario.

7. Intercambiar programas y datos entre dos FX 850P

Considerando que se ha efectuado una conexión como la mostrada en el apartado "Conexión serie entre dos FX 850P",  a continuación se expone la secuencia de acciones para enviar un programa de una FX 850P a otra:

  • Encender ambos ordenadores y pasar al modo BASIC (modo 1).
  • En el ordenador origen situarse en el área del programa que se desea enviar. En el ordenador destino situarse en el área de programa donde se desea cargar lo recibido.
  • En el ordenador origen introducir el comando SAVE "COM0:descriptor" donde descritor es una cadena según lo descrito en el apartado  "Instrucciones del FX 850P relativas al puerto serie" y pulsar EXE. Por ejemplo SAVE "COM0:6,N,8,1,N,N,N,B,N".
  • En el ordenador destino introducir el comando LOAD "COM0:descriptor" y pulsar EXE. Por ejemplo LOAD "COM0:6,N,8,1,N,N,N,B,N".
  • Si en el ordenador destino no acaba la ejecución del comando LOAD en unos segundos pulsar BREAK (en este caso, se puede averiguar cuando finaliza la recepción viendo si ha dejado de parpadear la pantalla del ordenador receptor, ya que en las operaciones con los puertos el refresco de la pantalla es peor).
  • Comprobar que en el destino se ha recibido el programa entero. Si no es así se debe probar la transmisión con parámetros más restrictivos: menor velocidad, 2 bits de parada...

Para intercambiar el contenido del banco de datos se procede igual, pero empleando los comandos SAVE# descriptor y LOAD# descriptor. En este caso no importa el área de programa actual, aunque si es necesario estar en modo 1.

Normalmnete no resulta necesario emplear los tres hilos del esquema del apartado "Conexión serie entre dos FX 850P". Puede bastar con dos: la línea de refrencia o GND, y la línea de datos que va del equipo origen al destino (TxD origen a RxD destino). Esto es así porque ambos equipos emplean los mismos parámetros y tienen el mismo tamaño de buffers internos, con lo que probablemente no se requiera un control de flujo XOn/XOff (aunque se haya especificado -opción B-) y en ese caso solo existe transmisión en el sentido de los datos.

8. Guardar y cargar programas desde un PC u otro ordenador personal

Para intercambiar programas BASIC entre el FX 850P y el ordenador personal conviene emplear una conexión serie RS-232. Se requiere para ello un circuito conversor de niveles como el mostrado en el aparado "Conexión serie con un PC u otro equipo". Aunque en Internet se pueden encontrar otras formas de conectar la FX 850P con el ordenador personal, por ejemplo mediante el puerto paralelo, estas requieren aplicaciones especiales para a cargar y leer programas de la FX 850P. Algunas de estas aplicaciones fueron hechas para el viejo MS DOS y no funcionan bien en equipos con otros sistemas operativos.

Si se dspone de un PC u otro ordenador con un puerto serie, basta con tener una aplicación de terminal que funcione en sus sistema operativo y que permita enviar y recibir textos por el puerto serie. Algunas aplicaciones de termianl populares para PCs con MS Windows son el clásico Hiperterminal de MS. Windows XP (Menú inicio, Ejecutar: hypertrm.exe), el programa PuTTY de Simon Tatham o el Terminal de Bray++. No es difícil encontrar otros programas de terminal gratuitos. En la sección de enlaces de interés se pueden encontrar algunos de estos programas.

Antes de ver los pasos a seguir hay que tener claro que los programas BASIC del FX 850P se transmiten y reciben como archivos de texto ASCII, y en el ordenador personal también se editarán y almacenaran como tales. El FX 850P emplea un juego de carácteres variante del ASCII estándar, y todos los carácteres alfanuméricos y los carácteres de control más importantes coinciden con los empleados en un ordenador personal.

Sin embargo, el FX 850 también tiene otros muchos caracteres propios (que normalmente ocupan posiciones altas de la tabla), y al recibir y editar un archivo de texto con un programa BASIC en el ordenador personal estos carácteres se verán como otros distintos. En cualquier caso, si dichos carácteres no se alteran, al enviar de nuevo el programa al FX 850P, los carácteres se verán correctamente en esta.

Para editar un nuevo programa BASIC en el ordenador personal se debe utilizar un editor de textos simple, como el Bloc de Notas (Notepad.exe), el Wordpad de MS Windows o Word de MS Office. En caso de usar el Word, hay que asegurarse de guardar lo escrito en un archivo de texto simple. En esos archivos de texto un programa se BASIC del FX 850P se escribe como siempre: una serie de líneas de comandos numeradas y acabadas con un retorno de carrro. Es importante tener claro que toda una misma línea de un programa debe estar estar en una misma línea del archivo de texto, con un único retorno de carro al final. No hay que olvidar el retorno de carro al final de la última línea, antes del final del archivo.

En el archivo de texto con el programa BASIC se pueden escribir carácteres propios del FX 850P conociendo su código. Este código lo podemos determinar con la funcion ASC("carácter") en el FX 850P, o mediante una de las tablas que vienen al final del manual de usuario. Dichos carácteres se escriben en el editor con el teclado numérrico; pulsando ALT y teclenado el códido.

Para enviar un programa del FX 850P al ordenador personal hay que seguir estos pasos:

  • Conectar al puerto serie del PC el cable serie RS-232 y el adaptador de niveles (apartado "Conexión serie con un PC u otro equipo"). Arrancar el programa de terminal deseado en el PC.
  • Configurar el programa de terminal con los parámetros de comunicaciones deseados (puerto serie del PC utilizado, velocidad, paridad, bits de parada y tipo de control de flujo), como por ejemplo puerto COM2, 4800Bps, No paridad, 1 Bit de parada y control de flujo XOn XOff (ver el apartado  "Instrucciones del FX 850P relativas al puerto serie"). En el Hyperterminal esto se puede hacer en los diálogos que aparecen tras ejecutar el programa, o en la opción "Propiedades-Configuración" del menú de "Archivo". Además, existe la posibilidad de guardar la configuración para futuros usos mediante la opción "Guardar" del menú "Archivo".
  • Con la FX 850P apagada realizar la conexión de esta con el circuito adaptador.
  • Encender la FX 850P y pasar a modo BASIC (modo 1).
  • En la FX 850P, pasar al área del programa a enviar.
  • Introducir el comando SAVE descriptor (ver el apartado "Instrucciones del FX 850P relativas al puerto serie") en el FX 850 y pulsar EXE. El descriptor debe especificar los mismos parámetros que los indicados al programa de terminal del PC. Siguiendo con el  ejemplo, teclerar SAVE "COM0:6,N,8,1,N,N,N,B,N" y pulsar EXE.
  • En la pantalla del programa de terminal del PC debe aparecer el texto del programa. Si se está trabajando en Windows se podrá seleccionar y copiar ese texto al Portapapeles para luego pegarlo dentro del editor de texto, como el Bloc de Notas (notepad) de MS Windows, para editarlo o guardarlo. Otra opción mejor es escoger una opción tipo "recibir archivo de texto" del programa de terminal, si está disponible, y dar un nombre de archivo en donde guardar el programa recibido. Pero en este caso, dicha opción de guradar debe ejecutarse antes del paso 5.

Con el programa BASIC en un archivo del PC ya se puede hacer una una copia de seguridad en disco, editar el programa, imprimirlo...

Para realizar el proceso inverso, enviar un programa del ordenador personal al FX 850P hay que seguir estos pasos:

  • Pasos 1 a 4 del procedimiento anterior.
  • Pasar en la FX 850 al área de programa donde se desea cargar el archivo BASIC a recibir.
  • Introducir el comando LOAD descriptor (ver apartado "Instrucciones del FX 850P relativas al puerto serie" en la FX 850 y pulsar EXE. El descriptor debe especificar los mismos parámetros que los indicados al programa de terminal del PC. Siguiendo con el ejemplo, teclerar LOAD "COM0:6,N,8,1,N,N,N,B,N" y pulsar EXE.
  • Si el programa de terminal dispone de una opción para enviar un archivo de texto, basta con especificar el archivo con el programa BASIC a enviar y proceder. Por ejemplo, en el Hyperterminal de Windows se puede acceder al menú "Transferir", y escoger la opción "Enviar archivo de texto...". En otros porgramas de terminal, como PuTTY, puede será necesario abrir primero el archivo con el programa en BASIC en un editor de texto como el Bloc de Notas (notepad), copiar todo el texto del programa al portapapeles, y finalmente pegar el texto sobre la ventana del terminal.
  • Si la FX 850 no acaba la ejecución del comando LOAD en unos segundos pulsar BREAK (se puede averiguar cuando finaliza la recepción viendo si ha dejado de parpadear la pantalla de la FX 850P, ya que en las operaciones con los puertos el refresco de la pantalla es peor). No hay que pulsar BREAK muy pronto, ya que se puede cortar la carga del programa antes de su final.
  • Comprobar que en el FX 850P se ha recibido el programa entero. Si no es así se debe probar la transmisión con parámetros más restrictivos: menor velocidad, 2 bits de parada...

También se puede enviar y recibir el contenido completo del banco de datos del FX 850P con los procedimientos anteriores, solo que utilizando los comandos LOAD# y SAVE#. Los datos del banco de datos se envían y reciben también como ficheros de texto ASCII, con un registro del banco de datos (línea) por cada línea del archivo separada por un retorno.

9. Usando el puerto serie desde BASIC en el FX 850P

Se pueden crear programas que usen el puerto serie para enviar o recibir datos, como por ejemplo, el programa de terminal de prueba o el de agenda expuestos en el apartado "Utilización del puerto paralelo". Para ello están disponibles los comandos comentados en el apartado "Instrucciones de la FX 850P relativas al puerto serie".

Una forma sencilla de enviar datos puede ser la mostrada en este programa de ejemplo:

10 CLEAR
20 RESTORE 100
30 desc$="COM0:6,N,8,1,N,N,N,B,N"
40 OPEN desc$ AS #1
50 READ dato$
60 IF dato$="$" THEN 90
70 PRINT #1,a$
80 GOTO 50
90 PRINT #1
95 CLOSE: END
100 "Hola.","Como estas?","$"

El programa enviaría los datos como varias líneas de texto separadas por retornos de carro y avance de línea, más un retorno y avance de línea final. Si comunicasemos el ordenador FX 850P con un PC que tubiese un programa de terminal configurado con los mismos parámetros especifcados en el descriptor desc$, en la pantalla del PC aparecería el texto siguiente:

Hola.
Como estás? _

Un programa para el FX 850 que fuese capaz de recibir y mostrar esas líneas podría ser como este:

10 CLEAR:CLS
20 desc$="COM0:6,N,8,1,N,N,N,B,N"
30 OPEN desc$ AS #1
40 INPUT #1,a$
60 IF LEN(a$)=0 THEN 90
70 PRINT a$
80 GOTO 40
90 CLOSE

Para enviar datos numéricos se pueden convertir estos a cadenas de carácteres formateadas, o sacar mejor partido de las opciones de los comandos PRINT e INPUT (ver manual de usuario).

El anterior programa de recepción queda a la espera de recibir datos. Pero se puede crear un programa que reciba datos si los hay, a la vez que realiza otras operaciones. Por ejemplo:

10 CLEAR
20 desc$="COM0:6,N,8,1,N,N,N,B,N"
30 OPEN desc$ AS #1
40 buf$=""
50 IF EOF(1) THEN 90
60 a$=INPUT(1,#1)
65 IF ASC(a$)=13 OR ASC(a$)=10 THEN 200
70 buf$=buf$+a$
80 GOTO 50
90 PRINT buf$;
100 'Otras operaciones
190 GOTO 40
200 CLOSE

Este programa lee los carácteres recibidos uno a uno, y si la transmisión es lo suficientemente lenta (por ejemplo los carácteres están siendo introducidos por teclado en un terminal en el otro extremo) el bucle de recepción del programa (lineas 50 a 80) saltará a la línea 100 cuando se vacíe el buffer de recepción interno del FX 850P. En las líneas 100 y sucesivas se pueden realizar otras tareas cortas, tras las cuales se regresa de nuevo al bucle de recepción. El programa acaba al recibir un final de línea.

En el apartado "Programas para la FX 850P" se exponen programas más complejos.

10. Utilización del puerto paralelo

Para acceder al puerto paralelo no se requiere un descritor de archivo, ni declarar el uso de un dispositivo o archivo. Directamente se pueden emplear los siguientes comandos para enviar datos:

  • LPRINT expresión {, ;} expresión... Otra variante del comando PRINT, que en este caso permite enviar datos a la impresora conectada al puerto paralelo desde un programa.

  • LPRINT También puede ser utilizado para enviar datos a otros dispositivos conectados al puerto paralelo que no sean precisamente para la impresión. Para ello los datos deben enviarse como carácteres. Por ejemplo, LPRINT 100 generaría los sigientes datos o carácteres ASCII de 8 bits en el puerto paralelo: '1' o 31h, ''0' o 30h, '0' o 30h, LF o 0Ah, y CR o 0Dh. Si realmente se quiere enviar solo el dato de valor 100 (o 64h) debe utilizarse LPRINT CHR$(100); (no olvidar el punto y coma final). Además es necesario desactivar la línea de entrada BUSY que sirve para indicar al ordenador que la impresora está ocupada y no puede recibir datos.

  • LLIST [rango de líneas]. Envía el listado del programa del área actual a la impresora conectada al puerto paralelo. Este comando debe ejecutarse manualmente en modo BASIC.

  • LLIST#. Envía todos los datos del banco de datos a la impresora conectada al puerto paralelo. Este comando debe ejecutarse manualmente en modo BASIC.

11. Programas para la FX 850P

En los siguientes enlaces puedes descargar algunos programas BASIC que he escrito para la FX 850P.

  • Agenda. Agenda que emplea el banco de datos para mantener unos listados de teléfonos, E-mails u otro tipo de datos. Permite listar, buscar añadir y quitar entradas. Cada entrada mantiene una descripción y un valor (Por ejemplo, perosna y teléfono). Además permite enviar o cargar datos desde otro equipo por el puerto serie. También permite generar un listado formateado de los datos por el puerto serie.
  • Terminal para comunicación serie. Programa de prueba del puerto de comunicaciones sereie que permite el envío y recepción simultádea de carácteres. Mientras en un línea de la pantalla se muestran los carácteres recibidos, en la otra se pueden escribir carácteres para ser enviados.
  • Exploración de la tabla de carácteres. Permite ver todos los carácteres de FX 850P (incluidos los de control) así como sus códigos de forma interactiva.
  • Conversión de base. Obtiene la expresión de un número en base 10 según otra base especificada.
  • Conversión Binario-Decimal de números con parte fraccioanaria. Util para trabajar con números en coma flotante.
  • Cálculo de una expresión de sumatorio. Acepta una función de la variable i, y cálcula su valor para un rango de i, sumando todos los resultados.
  • Información sobre la memoria. Información sobre la memoria libre y ocupada.
  • Expresión de spin de los electrones de un átomo según el número atómico.
  • Convertir un número racional en una fracción. Busca un número tipo a/b que se aproxime según un error máximo especificado a un número racional o con parte fraccionaria.
  • Juego de ruleta tragaperras. Trata de conseguir obtener una línea con tres figuras idénticas.
  • Tabla de razones trigonométricas.

También puedes descargar estos otros programas desarrollados por Ryszard. Estos programas tienen un código muy optimizado, y muchos están escritos en castellano.

  • NMat2000. Programa muy completo que incluye muchas herramientas matemáticas accesibles mediante menús: conversion de un valor racional a una fracción, fraciones parciales, calendario universal, conversión a base 10, conversor automático de unidades, interpolaciones con polinomios y funciones definidas por el usuario, circuitos RLC...
  • Bioritmo. Estima tu estado de ánimo según tu bioritmo personal.
  • Excel25. Hoja de cálculo con diversas utilidades.
  • Games1. Programa con diversos juegos sencillos: ahorcado, piedras, test y adivinar.
  • Química. Programa de química inorgánica.
  • Submarin. Juego de hundir barcos, jugando contra el FX850.
  • Sysinfo. Muestra información de la calculadora, tanto general como avanzada. También permite acceder a ciertas funciones internas.

12. Enlaces de interés

He aquí algunos enlaces a webs sobre la calculadora FX 850P:

Estos son los enlaces a slgunos programas de terminal gratuitos y populares:

13. Tablas de funciones y comandos

En los siguientes enlaces puedes decargar las tablas de funciones y comandos BASIC en forma de imágenes JPEG con alta resolución:

14. Contactar con el autor

Si tienes alguna duda o pregunta interesante sobre el tema tratado en este documento envíamela a: fcandela@dfists.ua.es

Trataré de contestarte en medida a mis conocimientos.

Francisco A. Candelas Herías.

Página mantenida por: Francisco A. Candelas Herías
Última actualización: 12-11-2011
Página del grupo AUROVA Enviar Correo