Mostrando entradas con la etiqueta z80. Mostrar todas las entradas
Mostrando entradas con la etiqueta z80. Mostrar todas las entradas

martes, 9 de agosto de 2016

El código máquina...

Eran tiempos revueltos en mi vida cuando alguien me contó como funcionaban realmente las máquinas, como era realmente la vida de un ordenador.

En aquel tiempo yo programaba ya bastante bien en el basic del Spectrum, de hecho hacía mis programas de contabilidad, mis horarios, las chuletas para estudiar en el colegio, los primeros juegos... Luego lo guardaba en cinta y andando.

Pero en las revistas que me llegaban a casa con programas aparecía siempre una palabra, la palabra "POKE", que significaba meter, y luego una cadena de caracteres o de pares de números alfanuméricos, que tenías que meter uno a uno y sin confundirte, ya que si no, el programa o el juego no funcionaba.

Todo eso llamó mi atención y leyendo aquí y allá entendí que lo que hacía el poke era meter una información en un dirección de memoria. 

En aquellos días me dieron un libro, que si mal no recuerdo era "El Zilog Z80", en el cual me explicaban que lo el ordenador lo que hacía era colocar información en memoria, y mandarla a los periféricos.

Pero el ordenador ni siquiera funcionaba con esos hexadecimales sino que funcionaba con 0 y 1, con largas series de 0 y 1 que eran mandatos de la forma pon esto aquí o llevaló allí, o cambia el estado de tal posición...

Eso era el código máquina, el código que usaba el ordenador para mover la información de un lado a otro, para "MOV" o "GO" o "ADD"... Ese código máquina era tan difícil de leer y tan farragoso que lo que se había hecho es crear un lenguaje algo más legible, el lenguaje ensamblador, que correspondía uno a uno a aquellos códigos que yo metía en el POKE.

Ese lenguaje ensamblador era muy complejo en aquellos tiempos y lo que habían hecho los creadores del Spectrum era crear un interprete, es decir, un traductor que se encargaba de hacer que lo que yo escribía en Basic fuera entendido por el ordenador en código máquina. De esta forma cuando ponías print el Basic lo traducía a un código más entendible al ordenador:

print "jose" era traducido a una cadena de comandos de ensamblador que hacían que la cadena jose apareciera en la pantalla, de modo que primero se seleccionaba la traducción del comando PRINT y luego se pasaba a código binario la cadena jose, y se iba imprimiendo punto a punto cada letra de la cadena "jose" en la pantalla.

En los ordenadores actuales, cuando tu enciendes un ordenador y lo haces funcionar, nada se hace en inglés o en español o chino, todo se actualiza a 0 y 1 y fluye de una zona a otra en forma de bits de un lado a otro de tu ordenador o tu movil o tu tablet.

Por eso es tan importante saber que existe y qué es el código máquina.

jueves, 21 de mayo de 2015

¿CÓMO ARRANCAN LOS ORDENADORES?

¿Alguna vez te has preguntado como arrancan los ordenadores?

Un poco de historia nos ayudará a aclarar esto un poco y un poco de lógica. Los primeros grandes ordenadores no eran más que uniones de cables, y válvulas de vacío, que eran los antecesores de los transistores.



De esta forma al arrancar el ordenador la corriente seguía por los diferentes componentes hasta llegar al final de la ejecución, y así no era difícil seguir el flujo de la ejecución. Con el paso del tiempo y la invención del transistor los ordenadores que ocupaban habitaciones enteras pasaron a ocupar la mitad de espacio y con la invención del chip la cosa se redujo hasta llegar a los ordenadores de sobremesa.

Estos ordenadores, si rastreamos el Spectrum, un Z80, respondía al cargo de energía con la ejecución de una Eprom, un programa guardado en un chip grabable, y que era lo primero que se ejecutaba al conectar el ordenador. Este era el responsable de aquella pantalla negra, y del mensaje de Sinclair Spectrum.



Pero también era el responsable de activar la parte gráfica, y de verificar el teclado, y los demás componentes del sistema. También hacía que se cargara el interprete de Basic, que era el que permitía interactuar al humano con la máquina.

Con la evolución de los ordenadores, se fue complicando la cosa, ya que se añadían más y más componentes, y esta Eprom empezó a tener más responsabilidades, pero perdió algunas. Los ordenadores permitieron la carga de sistemas operativos, es decir, de diferentes interpretes entre la máquina y el humano. Esta Eprom se pasó a llamar Bios, y empezó a ser configurable, ya que se podían elegir configuraciones diferentes para sistemas distintos.

Esto hizo que el sistema operativo pudiera estar en una unidad de disco o en una de disco duro, la ventaja era que el disco duro era más veloz, y tenía mayor capacidad, y su vida media era mayor que la de un disco.



El arranque pasó a ser de esta forma, arranque Bios, que revisaba el funcionamiento de todo el hardware o piezas internas del ordenador, y que como último paso tenía la misión de pasar el control al sistema operativo.

Un inciso para recordar que durante muchos años los buses (el lugar donde se colocaban las tarjetas en el ordenador) iba cambiando poco a poco, y era necesario que estas partes fueran compatibles primero con la placa y luego tener un driver para el sistema operativo.

Una de las complicaciones más grandes era elegir el componente apropiado, pero esto se mejoró bastante con la invención del Plug and Play, una especie de compatibilidad que tenían que cumplir tanto las tarjetas como las placas base.

De esta manera, la Bios  chequea la memoria, las tarjetas instaladas, los chips dedicados, la parte gráfica, las unidades instaladas... y le pasa el testigo al sistema operativo, que es el encargado de poner a trabajar cada una de las partes del ordenador, y de gestionar que trabajen de una manera coordinada.



En los primeros ordenadores esto era relativamente sencillo, ya que el número de periféricos era pequeño, pero al tener tantos diferentes componentes, los sistemas operativos tienen que trabajar con muchos diferentes chips y componentes.



Una vez puesto todo a trabajar, se pasa el control al usuario para que arranque sus programas, vea su correo y no se preocupe ni de cómo funciona la pantalla, o el router, o el modem, o de como conectarse a internet.

Es decir, el sistema operativo hace que el usuario solo se preocupe de sus cosas, dejando que otro, se encargue del trabajo sucio.



Si arrancas un móvil, una tablet, o un Pc, es todo igual, se verifican los componentes, se carga el sistema operativo y se da el control al usuario... De hecho la mayor preocupación de todos los fabricantes es que el sistema tarde lo mínimo en arrancar, igual que las aplicaciones tienen que ser rápidas en arrancar y funcionar.




De hecho, algunas máquinas intentan mantenerse el mayor tiempo encendidas, para que la respuesta sea instantánea y la satisfacción máxima.

De echo el modo hibernación vuelca los datos del sistema a la ram (memoria física), para que al pulsar una tecla la revivas, es decir, vuelva todo a estar en el mismo estado en el que estabas justo antes de hibernar.


Por ello si no estas conectado a la corriente y lo dejas un día entero hibernando al final, se apaga y  pierdes el estado en aquel momento, ya que aunque gaste poco siempre gasta algo de energía en mantener esos datos hibernados.


Optimizando tiempos:

Desde siempre que he tenido un ordenador he mirado las posibles mejoras tanto en rendimiento como en velocidad. Cuando usábamos el MSDoS lo cierto es que poco o nada se podía hacer ya que el arranque era casi instantáneo.

Con la llegada de los diferentes Windows la cosa se ha ido complicando, y al querer los programas de terceros arrancar lo más rápido posible y querer estar en el inicio de tu ordenador la labor se fue complicando.

En Windows Xp por ejemplo, era necesario tener grandes conocimientos del registro del sistema para poder ir borrando entradas que ya no valían del mismo para mejorar el arranque, y con la llegada de las extensiones de este sistema el propio Microsoft y otras compañías nos dieron la opción de simplificar la tarea y borrar mejor algunas entradas del mismo.

Yo he visto registros en los que tras un año de uso la cantidad de lineas basura se contaba en miles y esto hacía que la cosas se complicara.

Pero hay más. Las mejoras en la velocidad de los discos, y el uso de memorias flash y usb como discos han hecho mejorar sensiblemente la velocidad de arranque ya que parte de la configuración se graba en estos dispositivos y la carga es inmediata...


Espero que os haya sido de utilidad...

domingo, 26 de abril de 2015

RECORDANDO EL SINCLAIR ZX SPECTRUM


Grandes recuerdos me trae el pensar en aquellos tiempos en los que llegó a mis manos el primer ordenador. Era una cosa pequeña, de un tamaño reducido, pero cuando lo enchufabas a la corriente y le conectabas el cable que lo unía a la televisión empezaba la magia.






Porque si, para mi en aquella época era casi mágico enchufarlo y ver el mensaje de presentación y las pantallas que podéis ver en el vídeo que he grabado,



Eran otros tiempos, en los que solo habían dos canales de televisión, donde solo te podías poner a leer o a escribir, o a escuchar música... Y entonces llegó el Spectrum.

Y llegó el Basic, y empezar a aprender lo que significaba programar.. bueno, realmente lo primero que aprendí fue el LOAD"".

Este comando lo que hacía era dejar el ordenador en modo escucha, esperando que llegara una señal de audio de un reproductor de cintas, o cassettes. Estas grabaciones eran siempre de la misma forma:

Primero un sonido corto, luego uno más largo, de modo que el primero era la cabecera y el segundo era el programa en sí. De hecho en aquellos momentos la gente que tenía una minicadena con doble pletina se dedicaba a copiar los programas de cassette a cassette, de forma que conseguía juegos gratis.

Los juegos eran bastante caros y bastante rudimentarios, pero en poco tiempo se empezaron a copiar cada vez mejor los juegos de las máquinas de salón, y todos queríamos los mejores juegos.

En el rastro se vendían copias ilegales cómo ahora se venden en el top manta, con fotocopia incluida de la carcasa original, lo malo es que muchas veces lo que te daban no era el juego que pensabas. Entonces fue cuando Erbe tubo su revelación, y puso los juegos a 875 pesetas (5,2 €), y todos nos lanzamos como locos a comprar juegos baratos en todas las tiendas (yo iba mucho al corte inglés de Castellana a la planta sótano).


Ese fue mi principio, luego vino el empezar a programar, el apuntarse a una academia, y empezar con los programas que solo hacían pequeñas cosas y los primeros proyectos, los primeros programas complejos, el programa biorritmos, y el juego que hicimos a final de curso.

Por otro lado estaban las revistas, donde venían listados enormes para hacer aplicaciones, complejas y no tan complejas, los juegos y el famoso "POKE USR", el poner una cosa en la memoria, el mover cosas por la pantalla, el diseñar las pantallas...


Así empecé en la informática, así comencé un viaje que debió llevarme a otros mundos pero que al menos fue un viaje alucinante en el que aprendí lo que era un microprocesador, la memoria y los periféricos, los datos...

Y cuando tuvimos el programa juego de invasión terminado, nos enseñaron la última cosa, algo que no recordaría hasta que luego llegara a los 8086, nos enseñaron que los programas de Spectrum se podían compilar, generando así directamente código máquina, y así el programa tardaba casi nada en ser guardado en una cinta, y lo mismo en cargarse en el ordenador.





MI VISIÓN DEL SPECTRUM



También en aquel tiempo fue cuando tuve mi primera impresora, y de ahí salía la segunda parte de hacer programas, el buscar los bugs, ya que los programas que hacías o copiabas a mano eran largos y los fallos se presentaban en cualquier lugar. 

Las sentencias if se anidaban con goto para hacer zonas de programa especificas, pero esos saltos eran complicados de controlar y más difíciles de seguir. Por eso la gente después odiará el Basic porque no era estructurado, porque realmente lo hacíamos desestructurado.

De echo el programa más loco y el más hecho era:

10 Print "hola"
20 Goto 10

Que generaba un bucle infinito, e imprimía una fila infinita de "hola".


Lo más frustrante era copiar un monton de lineas de código de una revista para que luego no fueras capaz de arrancarlo porque salía un error en una zona de programa que tuviera un POKE, es decir, una acceso a memoria directo, y tenías que saber mucho para poder corregirlo.


Paralelamente, seguía jugando, y empecé a querer un joystick, para jugar más cómodamente a los juegos. Pero el Spectrum necesitaba un periférico especial para conectarlo, y cuando lo fui a conectar pensé que lo había roto porque había un pedazo de placa en el periférico, hasta que descubrí que aquello era una guía para conectarlo.

En las revistas aprendimos lo que era un truco, en Micro Hobby y Micro Manía, aprendimos a poner vidas infinitas en nuestros juegos favoritos, aprendimos los trucos ocultos, las zonas que no se veían, y los regalos que los programadores nos dejaban.



Aprendimos también lo que era un volcado de memoria, y vimos el primer volcador que te permitía copiar el estado de la memoria en un momento dado y luego volver a cargarlo para poder hacer una partida perfecta.

Todos queríamos ese dichoso aparatito, pero yo además quería saber cómo funcionaba, y ahí empecé a leer más y más cosas sobre los Z80, sobre el código máquina...




Hasta que en un momento dado cambié de ordenador a un Amstrad, pero eso y es otra historia..