Amstrad NC100.

Leng Año
Disp.
Exp.
Gráf.
Medidas
Z804Mhz BBC BASIC1992 64KB35KB 1MB 8x80480x64 1Kg295x210x28 4xAAA EN EN
Resg.
Valor 1
Valor 2
Valor 3
I. Rareza
Observaciones
CR2032 *137 *392 B *166s ASM *30s XX 50 € 60 € 125 €
Con el ordenador portátil NC100, al igual que con el resto de su familia (El NC-150 o NC-200) nos encontramos, a nuestro entender, con una máquina cuando menos controvertida. La razón es que para el año en la que salen al mercado -1992-, la informática ya se ha desarrollado bastante, y observamos una máquina de unas prestaciones bastante bajas para lo que ya había entonces. Es cierto que se alimenta con 4 simples batería AAA y que dura unas 20 horas, mucho más que la autonomía de un ordenador portátil de la época, pero aquellos le superaban con muchísimas creces en cuanto a prestaciones. Quizás sólo aguataban 1 hora y media o 2, pero disponían de pantallas completas CGA, Hércules y hasta VGA de gran resolución. Podían ejecutar programas ya bastante potentes como Wordstar, WordPerfect con WYSIWYG (What you see is what you get), y poseían una elevada potencia de cálculo, proporcionada por los procesadores 286, 386 y casi 486. Eso sólo por mencionar ciertas capacidades, dejando a un lado, la memoria, el disco duro, cantidad de software disponible para PC, etc....

Después de esta reflexión, que nos parecía negativo obviarla, vamos a pasar a analizar las características de este Amstrad NC100. Es una máquina bastante portable, del tamaño de un folio DIN A4 aproximadamente, que lógicamente le aleja del concepto de ordenador de bolsillo, pero que le hace bastante manejable al poder ser transportado en cualquier cartera de mano, con un peso bastante reducido. Posee una pantalla, un poco más grande que la de los ordenadores de bolsillo, pero que tampoco se puede considerar grande, ni cómoda para la ejecución de tareas profesionales, como el tratamiento de hojas de cálculo, o desarrollo de documentos de texto. Cuenta con estos programas, pero resulta obvia que no se trabaja cómodamente en una pantalla LCD sin retroiluminación de 8 líneas x 40 caracteres. La memoria RAM es de 64 KBs, con la posibilidad de utilizar además, almacenamiento en tarjetas PC CARD de SRAM Tipo I de hasta 1 Mb. Desgraciadamente no admite tarjeras PC CARD FLASH, aunque éste es un mal menor.

Dispone igualmente de un completo teclado, de tamaño ordenador de sobremesa, lo que hace que la introducción de datos sí sea muy cómoda. Completan este ordenador, dos puertos estándar serie RS-232 y paralelo para comunicaciones con el ordenador o conexión de impresora y otros periféricos. Dispone igualmente de una batería de salvaguarda de datos CR2032, y una toma de alimentación externa para conectarlo a la red cuando se trabaja en casa o la oficina.
Como vemos, estas características, ya las tenían, más o menos, ordenadores similares una década antes, como los Tandy TRS-80 Modelos 100 y 200, el Epson HX-20 o el Canon X-07.

El NC100 monta el archi-extendido procesador Z80 de la marca Zilog de 8 bits. Como software de programación, trae la poderosa versión de BASIC BBC BASIC, que puede ejecutar código de máquina del Z80, ya que además, trae incorporado incluso un ensamblador del citado código de máquina, lo que hace extremadamente versátil y fácil su programación, al poder utilizar los nemónicos del ensamblador.

Dispone también de un altavoz para la ejecución de alarmas, sonidos o su programación en BASIC.

Como aplicaciones grabadas en la ROM, dispone de un Procesador de Textos, una Calculadora, Una Libreta de Direcciones, Diario, Agenda con gestor de Fechas y Alarmas y el ya mencionado BBC BASIC.

A nuestro entender, si le hubieran añadido una salida de video para la conexión a un televisor con las capacidades de video de un Amstrad CPC-464, que básicamente son dos o tres modos de video y 16 colores, hubieran creado una máquina muy interesante, ya que como hemos comentado, la existente, se queda bastante corta para 1992.

Se fabricó en versiones de otras marcas y empresas como NAKAJIMA ES210, en España el DATOR 3000 introducido por FLAMAGAS, el FACIT M-110 y el BESTAR MSS 5000, todos ellos con el BBC BASIC como utilidad de programación. Hubo otras versiones como las máquinas DREAMWRITER, que se limitaban a ser meros procesadores de texto.

Programación en código de máquina desde BBC BASIC.
Como hemos comentado, BBC BASIC tiene un compilador de lenguaje ensamblador del Z80. El ensamblador es de un solo paso, pero se puede hacer funcionar como si fuera el típico de 2 pasos, si usamos las posibilidades del pseudo-comando OPT y un bucle FOR. Lo describimos en un sencillo, pero completo programa que listamos más abajo.

Antes, vamos a ver la manera de insertar código, así como sus características principales:
  • Para iniciar el ensamblador, sólo hay que incluir una línea en BASIC con el comando "[". Obviamente, la parte de código en ensamblador, finalizará con el comando "] en otra línea separada.
  • A continuación incluimos el pseudo-comando OPT, que tiene los siguientes parámetros. Por defecto es OPT 3. En el ejemplo vemos, que con un bucle FOR hacemos dos pasadas, la primera con OPT 0, y la segunda con OPT 3.
    • OPT 0 Sin errores, sin listado.
    • OPT 1 Sin errores, con listado.
    • OPT 2 Con errores, sin listado.
    • OPT 3 Con errores, con listado.
    • Existe también OPT 4 a 7, pero lo vamos a obviar en este artículo.
    • Normalmente es necesario el ensamblado en dos pasadas. Si se introducen etiquetas en el código, en la primera pasada se codifican las instrucciones y en la segunda pasada, cuando ya se conocen las direcciones exactas de las etiquetas, se introducen en el código en aquellas instrucciones en las que sean necesarias (CALL, saltos, cargas de datos desde direcciones, etc).
  • Las etiquetas de definen como ".ETIQUETA", y se llaman sin el punto "CALL ETIQUETA". Pueden ser mayúsculas o minúsculas.
  • Se dispone de los pseudo-comandos DEFB(byte),DEFW (palabra de 16 bits) y DEFM (cadena de caracteres).
  • Un byte se puede expresar de múltiple formas. 0, &FF, ASC"A".
  • Se pueden insertar comentarios con la barra invertida \. "\Esto es un comentario".
  • La sintaxis del Ensamblador en básicamente la convencional de un Ensamblador de Z80 estándar.
  • El código ensamblado se colocará en P%, que es una variable BASIC normal, y que el Ensamblador modificará según vaya codificando. Su valor normal es 0, por lo que es vital asignarle un valor antes de usar el Ensamblador. Por ejemplo mediante un simple P%=&4000. O como veremos más adelante, reservando espacio con una variable DIM Z% 200, y luego pasando el valor del puntero de Z% a P% con P%=Z%.
  • Se puede y deben utilizarse las routinas de la ROM. La mayoría de ellas activan el el carry flag si se ejecutan con éxito. Se debe asumir, si no se dice lo contrario en la descripción de cada rutina, que el contenido del registo doble AF se corrompe, y que el resto de registros se preservan, incluyendo los flags. El registro alternativo se corrompe.
  • Para usar las rutinas de la ROM, se cargan los registros como se describe para cada rutina y se llama a la dirección asignada a cada rutina.
  • Aunque el empleo, o llamada a una rutina de la ROM pueda implicar el cambio de banco de memoria, esto es siempre transparente para el programador, y no debe preocuparle.
  • Las variables A%, B%, C%, D%, E%, F%, H% y L%, se corresponden directamente con los registros del Z80, cuando son tratados como registros simples de 8 bits (y sólo de 8 bits, no vale DE%, etc). Si se quiere que suene un pitido, basta con hacer esto en BASIC sin ni siquiera compilar: A%=7, y luego CALL &B833.
  • Se pueden utilizar todos los registros en el código sin restricciones y sin tener que guardar ninguno.
  • Las variables numéricas del BASIC pueden ser utilizadas en el código ensamblador. Normalmente se guardan en variables las rutinas de la ROM que luego se van a usar "CALL TXTOUTPUT".
  • Se pueden poner más de una instrucción en la misma línea separándolas con ":". Ejemplo: "100 LD HL,0:CALL TXTSETCURSOR", carga 0 en H y L, y llama a la rutina de la ROM que pone el cursor en los valores de H y L, en este caso en 0,0.
    BBC Basic devuelve el contenido de los registros a esas mismas variables cuando finaliza con un RET un comando CALL o USR.
  • La lista completa de Rutinas de la ROM con explicación de cada una de ellas se puede encontrar aquí.
A continuación mostramos un sencillo, pero completo programa a modo de ejemplo, que carga en A el caracter "A", y lo imprime en pantalla a través de la rutina de la ROM TXTOUTPUT. Después de hacer RUN para compilar, ejecutar el código de máquina con CALL Z%.
PROGRAMA EJEMPLO.
-----------------------
10 CLS
15 DIM Z% 100
20 TXTOUTPUT=&B833
30 FOR PASO=0 TO 3 STEP 3
35 P%=Z%
40 [
50 OPT PASO
55 \Esto es un comentario
60 LD A,ASC("A")
70 CALL TXTOUTPUT
80 RET
90 ]
100 NEXT
Comentarios:
------------------------------

Dimensionamos Z% con 100 Bytes. Z% almacena la dirección del primer byte (NO es Z%(100)).
TXTOUTPUT. Dirección de la ROM que imprime en pantalla el carácter cargado en registro A.
Inicializamos el bucle FOR para dos pasadas de OPT 0 y 3.
Se lo pasamos a P%. El ensamblador irá construyendo el código a partir de esa dirección.
El corchete marca el inicio del código ensamblador.
Se ensambla según el valor de PASO en el bucle.

Carga el registro A(Acumulador) con el código del caracter A.
Llama a la dirección de la ROM TXTOUTPUT.
Finaliza el código de máquina y vuelve.
El cierre de corchete marca el fin del código ensamblador.
Fin de bucle de ensamblado.
Al ejecutar el programa:
-------------------------
1383           OPT PASO
1383 3E 07     LD A,7
1385 CD 33 B8  CALL TXTOUTPUT
1388 C9        RET









Otros programas simples a modo de ejemplo. Después de hacer RUN para compilar, ejecutar el código de máquina con CALL Z%.
PROGRAMA "HOLA MUNDO".
-----------------------
10 CLS
15 DIM Z% 100
20 TEXTOUT=&B81E
30 FOR PASO=0 TO 3 STEP 3
35 P%=A%
40 [
50 OPT PASO
55 CALL &B824 \CLS(BORRA PANTALLA)
60 LD HL,TEXTO
70 CALL TEXTOUT
80 RET
90 .TEXTO
95 DEFM "HOLA MUNDO !!!":100 DEFB 0
110 ]
120 NEXT









PROGRAMA CONTADOR DE 1 A 10000
------------------------------
10 CLS
20 DIM Z% 200
30 TEXTOUT=&B81E
40 TXTSETCURSOR=&B836
50 FOR PASO=0 TO 3 STEP 3
60 P%=Z%
70 [
80 OPT PASO
90 CALL &B824 \CLS
100 LD HL,1
110 LD(NUMERO),HL
120 .INI:LD HL,(NUMERO)
130 LD DE,CADENA
140 CALL NM2DEC
150 LD HL,0:CALL TXTSETCURSOR
160 LD HL,CADENA
170 CALL TEXTOUT
180 LDE DE,(NUMERO)
190 INC DE
200 LD (NUMERO),DE
210 LD HL,10000
220 SBC HL,DE
230 JP NZ,INI
240 RET
(..continuación..)

245 REM ----------------------
250 .NM2DEC: LD BC,-10000
260 CALL NUM1
270 LD BC,-1000
280 CALL NUM1
290 LD BC,-100
300 CALL NUM1
310 LD C,-10
320 CALL NUM1
330 LD C,B
340 .NUM1: LD A,-1
350 .NUM2: INC A
360 ADD HL,BC
370 JR C, NUM2
380 SBC HL,BC
390 ADD A,48
400 LD (DE),A
410 INC DE
420 RET
245 REM ----------------------
430 .CADENA:DEFM "00001":DEFB 0
440 .NUMERO:DEFW 1
450 ]
460 NEXT


Teclado. El teclado es completo tipo QWERTY con tamaño de teclas de ordenador de sobremesa, en un único bloque, sin teclas de función en la parte superior, ni teclado numérico separado a la derecha. Dispone de 4 teclas de colores, que facilitan el intercambio de las aplicaciones a las que dan acceso. En general, es un teclado bastante adecuado y cómodo para la introducción de datos de manera rápida y segura, con una buena respuesta de las teclas.

Memoria. Dispone de una ROM de 256 KBs para el firmware de aplicaciones y 64KBs de RAM en dos chips de 32KBs. Esta memoria RAM está distribuido en 15K para el sistema, 11K para la memoria superior y 38K para la baja.

Se puede ampliar con tarjetas PC-CARD SRAM tipo I, no aceptando las PC-CARD FLASH. El tamaño máximo que acepta de estas tarjetas es de 1Mb.

Pantalla. Pantalla LCD sin retroiluminación de 8 líneas x 80 caracteres. Adecuada, pero ajustada para el tratamiento de textos. Además se puede emplear en modo gráfico con una resolución de 480x64 puntos, únicamente a dos colores. La gestión del modo gráfico es sencilla gracias a los comandos existentes en el BBC BASIC; pudiéndose programar igualmente en código máquina a través de las direcciones de la ROM documentadas del Sistema Operativo. La lista completa de direcciones de la ROM, así como otra documentación técnica de interés se puede encontrar aquí.

Modelo de almacenamiento de programas. Con BBC BASIC, para limpiar el área del editor de programa se emplea el comando NEW. Una vez cargado el programa completo en memoria, se puede salvar con un nombre mediante el comando SAVE "NOMBRE", y cargarlo en el editor con el comando LOAD "NOMBRE". No hay limitación al número de programas, salvo la cantidad de memoria disponible tanto de RAM, como la que dispongamos en las tarjetas PC CARD SRAM. BBC no almacena en ningún sitio los programas, por lo que si salimos de él sin haber salvado el programa, se perderá.
No obstante, se dispone del comando OLD, que recupera el último programa editado, o si se ha ejecutado el comando NEW, y todavía no se han introducido nuevos datos.

Pros y contras.

PROs
CONTRAs
Teclado tamaño normal muy cómodo.Máquina con características limitadas para el año en el que sale al mercado. Se le podía haber añadido una salida de video para conexión a un monitor externo con al menos 16 colores. Los programadores de Z80 hubieran hecho maravillas.
Posibilidad de programarla en código de máquina Z80.Poca nitidez de la pantalla, y ausencia de retroiluminación
Versión BBC BASIC, una de las más completas del mercado.
Puertos de comunicación serie y paralelo, y posibilidad de almacenamiento externo en PC CARDs tipo I SRAM.
Software incluido de manejo sencillo e intuitivo.
Circuitos principales.
El Amstrad NC100 dispone de dos placas que se pueden observar en la primera fotografía. La principal donde va montado el procesador con el resto de CHIPS de apoyo, y una placa específica para la pantalla, en cuyo anverso va la pantalla LCD y en el reverso lo circuito integrados que le dan servicio.
En la placa principal, la ROM es el único circuito integrado EEPROM de 256KBs que va montada en su anverso, yendo soldados el resto en el otro lado. En la fotografía del centro se muestran todos los CHIPs de la placa principal, con una etiqueta descriptiva. Es de destacar el procesador, que es el archiconocido Z80, en este caso una versión fabricada por la propia ZILOG.
La fotografía de la derecha muestra el reverso de la placa de la pantalla con 6 ICs MSM5299C "80-DOT LCD SEGMENT DRIVER" más un IC MSM5298A "68-DOT COMMON DRIVER" que completan el control de la matriz de 480x68 pixels.

En la parte inferior se muestran las siguientes imágenes que se pueden ampliar para mayor detalle:
  • A la izquierda el conjunto de las dos placas con el teclado.
  • En el centro la cara de la placa principal donde van montados todos los componentes, menos la ROM EEPROM.
  • A la derecha, la parte trasera de la placa de la pantalla.
Características no documentadas y trucos.


Es una máquina avanzada con posibilidades de programación en código de máquina de Z80 en el propio BBC BASIC incluido en el firmware, por lo que tiene mucho sentido hablar de características no documentadas y trucos, dado que las posibilidades son infinitas.

- Para comprobar la versión del firmware de la ROM de la máquina pulsar la tecla SECRET/MENU cuando se está en el menú principal. Aparecerá en la primera línea.
- Para entrar en el modo comunicaciones, pulsar la tecla FUNCTION(Amarilla)+S. Una vez allí, al pulsar la tecla SECRET/MENU se accede al menu de configuración de parámetros tanto del puerto paralelo, como del puerto serie.

Enlaces a páginas de interés.
A continuación te mostramos los enlaces más interesantes sobre este ordenador personal. Debido a sus posibilidades y a la gran comercialización de este ordenador, es una de las máquinas de las que más información hay disponible en Internet.

Página Wiki del Amstrad NC100 con completa información técnica: Pulsar aquí
Página de Tim Surtell. Quizás la más completa recopilación en Internet sobre los Amstrad NC, no sólo desde el punto de vista técnico o de manuales de referencia; sino también por la recopilación de programas:  Pulsar aquí.
Referencia rápida de BBC BASIC de la Página de Tim Surtell: Pulsar aquí.
Recopilación de programas para los Amstrad NC: Pulsar aquí.
Página del simulador de los Amstrad NC (también en nuestra sección de emuladores): Pulsar aquí.
CP/M los Amstrad NC: Pulsar aquí.