thumb|250px|TRS-80 Model I.
El TRS-80 (Tandy Radio Shack Z-80), también cariñosamente o burlonamente conocido como el "Trash-80" ("Basura-80"), era la designación para varias líneas de sistemas de microcomputadores producidos por Tandy Corporation y vendidos a través de sus almacenes Radio Shack a finales de los 70 y en los 80.
TRS-80 Model I
Anunciado en una rueda de prensa el 2 de febrero de 1977, el Tandy TRS-80 ModeloI fue el punto de entrada de Tandy Corporation en el mercado del computador casero, significando competir directamente contra el Commodore PET2001 y el AppleII. Fue lanzado el 3 de agosto de 1977. Se vendía en $599 en la forma de un paquete que incluyó un monitor en blanco y negro de 12pulgadas, grabador/reproductor de cassettes y la unidad central de procesamiento. Fue el producto más costoso que la cadena de tiendas de productos electrónicos de Tandy, Radio Shack, había ofrecido hasta entonces. La gerencia de la compañía estaba insegura de la atracción en el mercado que el computador podría tener y por ello mantuvo la producción inicial en sólo 3000unidades, de modo que si la computadora no llegaba a venderse, pudiera por lo menos ser utilizada para propósitos de contabilidad dentro de los 3000almacenes de la cadena. Sin embargo, fue tal su éxito que Tandy terminó vendiendo 10000computadores el primer mes y 55000 el primer año. Antes de descatalogarse en enero de 1981, se vendieron más de 250000unidades.
El computador
El TRS-80 ModeloI fue desarrollado para Tandy por Don French y Steve Leininger. Su teclado era muy grueso en comparación con los que aparecieron en otras máquinas ya que los circuitos del computador estaban en la misma carcasa, ocultos justo debajo del teclado. Fue el primer computador hecho de esa manera, seguido 3años después por el VIC-20 fabricado por Commodore. Tenía un microprocesador Zilog Z80 corriendo a 1,77MHz.
Primero apareció el TRS-80 ModeloI LevelI, y pronto el TRS-80 ModeloI LevelII. La diferencia entre estos modelos era el intérprete BASIC que residía en una memoria ROM. Ambos computadores venían con 4kiB o 16kiB de RAM y con o sin teclado numérico. Se vendían kits para convertir un computador con el lenguaje BASIC LevelI a LevelII. Con el tiempo el TRS-80 ModeloI LevelII con 16kiB de memoria RAM se hizo común. Para expandir el computador se necesitaba comprar una "Expansion Interface" (Interfaz de Expansión).
Lenguaje BASIC
Había dos versiones del lenguaje de programación BASIC producidos para el Modelo I. El BASIC LevelI que ocupaba 4k ROM, y BASIC LevelII que ocupaba 12kiB de ROM. El Level I realizaba solo cálculos de simple precisión y tenía un pequeño grupo de órdenes. El lenguaje BASIC LevelII introdujo coma flotante de doble precisión y tenía un conjunto de órdenes más amplio. El LevelII fue posteriormente mejorado cuando se agregó un sistema de discos, y el Disk Based BASIC era cargado. El BASIC NivelI fue el lenguaje Tiny BASIC, producto de software libre creado antes de la aparición del movimiento del software libre y con copyleft incluido, creado por Li-Chen Wang, que fuera modificado por Tandy Corporation para añadirle funcionalidad.
El BASIC NivelII fue programado y licenciado a Microsoft. Debido a que el ModeloI tenía solo 12k de espacio de ROM, el BASIC NivelII era una versión reducida del Extended BASIC de 16kiB. Fue aproximadamente un 30% más rápido que el LevelI.
El Disk Based BASIC agregó la capacidad de realizar entradas y salidas de disco, y en algunos casos (como en los sistemas operativos NewDos/80, MultiDOS, DosPlus, LDOS) se agregaron características para clasificar y buscar archivos, edición de pantalla completa, entre otras.
Microsoft también comercializó una versión mejorada del BASIC basada en cintas de casete llamada LevelIII BASIC. Esta agregó la mayoría de las funciones en la versión completa del Extended BASIC de 16kiB.
Teclado
Muchos usuarios se quejaban del teclado del TRS-80, ya que sus contactos sufrieron de "keyboard bounce" (rebote de teclado), un ruido eléctrico que se produce al cerrar un interruptor. Como resultado, al presionar una tecla aparecían accidentalmente múltiples caracteres repetidos de la tecla pulsada. Para evitar esto, se distribuyó un programa en una cinta de casete con rutinas "De-Bounce" (anti-rebote) para el teclado, pero el programa hacía más lento el escrutinio (polling) del teclado para compensar el problema. Eventualmente, esta rutina fue agregada a una revisión posterior de la ROM.
La transferencia de la información al computador sobre qué teclas eran presionadas era inusual, en el sentido que en vez de transferir los datos mediante un dispositivo o chip de I/O (Entrada/Salida), el hardware del TRS-80 Modelo I asignaba el teclado a una localización predefinida en memoria, es decir, no había memoria 'real' en esta localización, pero ejecutando una lectura de esa área de memoria, retornaría el estado de un conjunto particular de teclas.
Video
thumb|300px|Esquema de los caracteres y píxeles en la pantalla del TRS-80
El computador venía acompañado con un monitor en blanco y negro, que en realidad era un televisor modificado RCA modelo XL-100 de 12pulgadas que carecía del sintonizador. Para rellenar el espacio dejado por el selector de canales se colocó una placa identificadora cuya leyenda era "Radio Shack - TRS-80 - Micro Computer System". El color real de la imagen era ligeramente azulado debido al fósforo estándar "P4" usado en los televisores. Eran comunes filtros de color verde y ámbar o tubos de reemplazo para hacer la visibilidad de la pantalla más fácil para los ojos. Debido a problemas en el ancho de banda en la tarjeta de interfaz que substituyó al sintonizador de TV, se perdía sincronización horizontal si eran mostradas grandes áreas blancas en la pantalla. Para corregir eso, se podía aplicar un simple arreglo del hardware, que implicaba menos de media hora de trabajo.
El hardware de vídeo del computador podía mostrar solamente una resolución de 32 o 64caracteres por 16líneas de texto solo en mayúsculas (64 x 16 o 32 x 16). Esto se debía a que el sistema de memoria de video tenía un kilobyte, de siete bits de ancho, con el séptimo bit usado para distinguir entre el texto y los caracteres "semigráficos" que eran caracteres como las letras del alfabeto o como los símbolos?, +, &, #, etc. que representaban o simulaban píxels encendidos y apagados (muy similares al teletexto). Con estos caracteres semigráficos se permitía desplegar una forma rudimentaria de gráficos. Los caracteres de texto ocupaban los primeros 64caracteres y los semigráficos los siguientes 64caracteres. Había mejoras de hardware para mostrar letras minúsculas, que agregaron un 8.º bit a la memoria de video, y con el uso de un interruptor se podía activarlo o no para cambiar la presentación en la pantalla entre los 7bits con caracteres semigráficos originales y los 8bits con caracteres en minúsculas. Estas modificaciones eran muy populares, y eran conocidas como "Electric Pencil Modification" (Modificación de Lápiz Eléctrico) en referencia a un popular procesador de palabras de entonces.
Los caracteres semigráficos representaban una rejilla de bloques 2 x 3. Cada uno de esos 6bloques representaba un "pixel". Estos píxeles podían estar encendidos o apagados y se necesitaban 64caracteres semigráficos para poder representar todas las combinaciones posibles de tales píxeles. Como cada uno de los caracteres de la pantalla podía ser un carácter semigráfico, la resolución de los "pixels" de la imagen era una rejilla de 128 x 48. Los programas en BASIC podían escribir directamente, encender o apagar, cualquier pixel de esta rejilla.
Cualquier acceso a la memoria de la pantalla, escribiendo a ella la sentencia PRINT del lenguaje BASIC o accediendo directamente la memoria de la imagen, causaba "parpadeo" en la pantalla. La lógica de arbitraje del bus bloquearía la lógica que generaba la imagen mientras el acceso era dado al CPU causando una corta línea negra. Normalmente los programas en BASIC no eran afectados mucho por esto, sin embargo, programas rápidos hechos en lenguaje ensamblador podían ser gravemente afectados por este efecto si el programa no tomaba este problema en consideración.
A pesar de este primitivo hardware para generar la imagen de la pantalla, muchos juegos estilo arcade estaban disponibles para el Tandy TRS-80 ModeloI.
Periféricos
Grabador de casetes
Los programas y los datos del usuario eran almacenados en casetes de audio usando una grabadora convencional que venía con el computador. Las primeras versiones del TRS-80 ModeloI tenían problemas al leer en las unidades de casete. Tandy eventualmente ofreció una pequeña tarjeta que era instalada en los centros de servicio para corregir los primeros modelos. Las ROM en los últimos modelos fueron modificadas para corregir esto.
Interfaz de Expansión
Para ampliar el computador era necesario una "Expansion Interface" (Interfaz de Expansión). La Interfaz de Expansión era una unidad externa que se enchufaba al computador mediante un cable plano. Era colocada debajo del monitor, y contenía, dos puertos para unidades de casetes, un controlador para hasta 4unidades de discos flexibles, un puerto Centronic para la impresora (puerto paralelo), un reloj de tiempo real, 16 o 32kiB RAM adicionales, que junto con 16kiB en el propio computador daba un total de 48kiB y, opcionalmente una interface serial RS-232.
La Interfaz de Expansión fue la parte más molesta y problemática del sistema. Hubo varias modificaciones de estos circuitos y se dijo que una versión de preproducción se veía totalmente diferente, ya que tenía un soporte para tarjetas S-100. Tenía problemas crónicos de paralizaciones y caídas al azar del computador antes de que el buffer en las líneas del bus de conectores de la tarjeta curara esos problemas. Sus conectores del borde de la tarjeta tendían a corroerse debido al uso de dos diferentes metales en contacto y tenían que ser limpiados periódicamente con un borrador de lápiz.
Discos flexibles
Los usuarios de la computadora debían adquirir en forma separada la "Interfaz de Extensión" que permitía conectar una unidad de disquete de simple densidad. La interfaz se basaba en el circuito integrado de Western Digital 1171, pero carecía de un "separador de datos" externo, y por lo tanto era muy poco fiable.
Todos los formatos de disco del TRS-80 eran sectorizados por software con sincronización de índice, en oposición con los formatos del AppleII, que carecían de esa sincronización de índice, ya que muchas unidades de Apple carecían incluso de un detector del agujero del índice, exceptuando algunas de las primeras unidades producidas por Shugart, reconocibles por su posicionador del cabezal tipo "spiral-cam". Todas las unidades de disquete de la TRS-80 eran modelos de 40pistas y doble densidad. La combinación de 40pistas, doble densidad, y la sincronización de índice, dieron una capacidad máxima de 180kB por disquete de una cara, considerablemente mayor que la mayoría de los otros sistemas del momento. Por otra parte, el uso de sincronización de índice significó que para convertir un disquete en un "floppy" era necesario no solo cortar una segunda muesca para permitir escritura, sino también perforar un segundo agujero de índice en la funda del disquete con un gran riesgo de dañar el disco en su interior. Uno podía comprar "floppies" hechos en fábrica, o utilizar el lado trasero para los sistemas informáticos de Apple Computer como lo hicieron algunas empresas de software de entonces.
Controlador de disco de doble densidad