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

| 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 visto desde arriba |
|
 |
| Conector visto desde abajo |
|
 |
| Conector insertado en la FX850P |
|
 |
| 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:
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.
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).
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:
- http://www.oocities.org/timessquare/hangar/8416/880/. "CasioMaster-Fx880": Recopilación de multitud de programas y documentos. Programas avanzados, referencias y fichas de las librerias, funciones no documentadas, alteraciones del hardware, trucos... En la sección de Utilidades de estas páginas se puede encontrar el documento "Los secretos del Alquimista" que incluye mucha información no oficial sobre el software y hardware de la FX 850P. También resulta muy interesante la sección de Trucos.
- http://www.usersmanualguide.com. Página con una inmensa lista de manuales de usuario de equipos, incluyendo calculadoras. En concreto, aquí está disponible una versión del manual de la FX 850P en formato PDF en inglés.
- http://www.silrun.de/. "Silrun Systems - The home of programmable Casio pocket calculators". En estas páginas
se puede encontrar el manual de la FX 850/880P en inglés y alemán, además de los manuales de otras computadoras de bolsillo y colecciones de programas.
- http://jave.aussi-net.com/. "Página de Josep
A. Avellaneda". Página personal con información sobre como
comunicar el FX 850P/880P con el PC y con varios programas.
- http://home.t-online.de/home/milan.urosevic/homepage.htm. "Data Link - Cables for CASIO Devices". Página dedicada a cables de
conexión para agendas y calculadoras Casio. Tiene un apartado sobre el interfaz del FX 850P, con artículos de la revista Elecktor sobre
la creación de los interfaces serie o paralelo para este ordenador, y que también muestran las señales del conector.
- http://pocket.free.fr/index.html. "The Pocket Computer Museum". Página con información y fotografias
de gran cantidad de computadoras de bolsillo, incluyendo las casio.
- http://pocketcomputerworld.free.fr/. "The Geoffroy's Pocket computer collection".
- http://www.casio.co.jp/edu_e/support/faq/faq_pcom.html.
Una simple página de soporte de Casio para la FX 880P donde se indica los pasos para configurar y establecer una conexión con un PC.
- http://en.wikipedia.org/wiki/Casio_FX-850P. Página de la Wikipedia dedicada a la FX 850P, con algunos tetalles técnicos sobre la misma.
- http://www.lawebdelprogramador.com. Dentro de La Web del Programador, entre los foros sobre calculadoras progarmables, se puede encontar un foro donde se discute como reiniciar la calculadora FX-850P después de haber realizado un cambio simultáneo de todas la baterias.
Estos son los enlaces a slgunos programas de terminal gratuitos y populares:
- http://sites.google.com/site/terminalbpp/. Terminal de Bray++. Aplicación muy completa para la comunicación a través de puertos serie.
- http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html. PuTTY de Simon Tatham. Potente programa de terminal que además deconectarse a través del puerto serie, puede concetarse con servidores Telnet o SSH.
- http://www.hilgraeve.com/hyperterminal-trial/. Versión de prueba de la última versión del programa Hyperterminal para Windows Vista y Windows 7.
- http://elblogdecachivache.com/2010/04/13/hyperterminal-en-windows-vista-y-7/. Página de EL Blog de Cachivache donde se describe como hacer funcionar el Hyperterminal de Windows XP en Windows Vista o Windows 7.
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. |