|
DE LA EDICIÓN 4.0 ELECTRÓNICA*
Licencia de uso y distribución para particulares.
La edición 4.0 (4ª edición) de El Universo Digital del IBM PC, AT y PS/2 es un libro
electrónico/impreso de dominio público; de libre uso, difusión, copia y distribución entre
particulares, en cualquier soporte. Quienes decidan utilizarlo deberán registrarse por vía
electrónica una sola vez, por razones de ética (http://fly.to/udigital). También es
posible hacerlo enviando una carta o postal ordinaria (mejor en un sobre) al autor, con cualquier
texto, a la siguiente dirección:
Indicando claramente que el motivo es registrar el Universo Digital. Los que hayan
comprado la versión impresa en persona no necesitan registrarse, aunque lo recibiría con agrado,
incluso si ha pasado bastante tiempo (pero si lo compraron por correo no deben registrarse:
conservo su pedido). Me gustaría conocer en alguna medida la difusión de la obra, en especial a
partir de este momento, lo que hasta ahora me resultaba algo más sencillo. Por supuesto, los datos
o direcciones indicadas por los usuarios nunca serán divulgados por mí.
Licencia de uso para empresas, asociaciones y organizaciones.
Se aplican exactamente las mismas condiciones que para usuarios particulares, con la
excepción de que se recomienda un único registro electrónico o una sola carta o postal en
representación de todos los posibles usuarios de la entidad.
Licencia de distribución para empresas, asociaciones y organizaciones.
Editando revistas (no libros) la distribución está permitida en cualquier formato digital
(HTML, PostScript, WordPerfect, texto, o cualesquiera otros) tanto en fragmentos como toda la
obra completa. Siendo el formato una revista impresa sólo se permiten fragmentos que no
totalicen más del 75% de la obra en los sucesivos números publicados. Es necesario citar la
procedencia. La distribución por empresas que cobren una cierta cantidad por el soporte es libre.
Mi única sugerencia es que la empresa me envíe una copia del soporte (CD, etc.) en que se
publique, por cortesía.
Tratándose de empresas editoriales u otras cualesquiera que planeen incluirlo, entero o por
fragmentos, en el soporte impreso, electrónico u online de algún libro que vayan a publicar,
deberían contactar primero conmigo para negociar una nueva versión (que en todo caso no
implicaría la desaparición de ésta en su estatus actual).
Modificaciones.
La realización de cambios (añadidos, eliminación de contenidos o reemplazamiento de los
mismos) es competencia exclusiva del autor, que centraliza la generación de nuevas versiones
actualizadas. Quien realizara alguna modificación sin consentimiento habría de destinar la obra
resultante para uso personal e intransferible.
Orígenes de El Universo Digital.
El Universo Digital no nació tras una decisión premeditada. Su objetivo inicial fue dotar
de un manual de apoyo al Curso de Lenguaje Ensamblador, que ofrece todos los años la
asociación Grupo Universitario de Informática de la Universidad de Valladolid, en el marco de
unos Cursos de Introducción a la Informática -para los alumnos y personal en general de la
Universidad- que abarcan un espectro mucho más amplio que el de la programación de los
ordenadores.
La primera versión ocupaba 116 páginas, cuando su denominación era aún la de Curso de
Ensamblador. Sin embargo, en una época en la que era difícil encontrar información, y buena
bibliografía especializada, el autor siguió recopilando material interesante y añadiéndolo al curso.
Una buena parte de dicho material y del añadido después ha sido además de cosecha propia. La
primera edición de El Universo Digital, editada no mucho tiempo después del manual del curso,
rebasó ligeramente las 300 páginas. Posteriormente se incrementaría aún algo más, hasta las 420
de la 3ª edición que ha mantenido durante la mayor parte del tiempo.
El DOS en la actualidad.
Actualmente, y desde hace algún tiempo, la programación en DOS ya no es importante,
y mucho menos al nivel que desarrolla este libro, y ello pese a que incluso Windows 95 corre aún
en alguna parte sobre DOS, comportamiento que irá reduciéndose hasta la eliminación en
próximas versiones.
El futuro de la programación, sin embargo, no es sólo para los programadores de alto
nivel. En alguna manera, los propios usuarios pueden y podrán cada vez en mayor medida hacer
sus propios programas incluso sin darse cuenta. Sin embargo, siempre hay alguien que tiene que
construir los sistemas operativos, y sobre todo, los controladores para dar soporte a los
dispositivos en los diversos sistemas operativos. Por no mencionar las aplicaciones especializadas,
desde máquinas industriales al microprocesador de las sondas espaciales (que, evidentemente, no
corre bajo Windows). Es para los programadores de sistemas, y para aquellos que necesitan o
quieren saber cómo funciona el PC por dentro, como ejemplo práctico de arquitectura interna
de un ordenador, para los que va destinado este libro. Que podrán practicar en un entorno
cómodo para este tipo de programación, como es el DOS (que deja todo el control de la máquina
a cada tarea). Aunque algunos contenidos muy relacionados con el DOS siguen presentes en esta
obra, el lector habrá de tener en cuenta si es pertinente profundizar en ellos o no, en la época que
vivimos.
Mis contactos con editoriales.
Mi objetivo inicial no fue publicarlo, aunque hace dos o tres años sí me lo planteé un poco
en serio.
Las ventajas de una edición oficial sería su no engorrosa distribución (uno de los motivos
por los que siempre ha costado poco es porque nuestra Asociación y el propio autor ha puesto
su mano de obra gratis), así como su mayor difusión. Puesto en contacto con cuatro prestigiosas
editoriales; las que han respondido han valorado muy positivamente la obra, sin embargo la han
rechazado aduciendo otros motivos («sobrecarga del programa editorial», solapamiento en
contenidos con «obras publicadas o en fase de publicación», o simplemente «falta de interés
comercial»). Una de ellas aún no ha respondido.
Los inconvenientes de su publicación por una editorial serían el importante aumento de
precio, y mi renuncia a los derechos de distribución (en particular, nuestra Asociación tendría que
comprar en la librería los ejemplares para nuestros cursos).
Sin embargo, la ventaja de la publicación para facilitar la difusión popular es obvia,
máxime si lo hace una editorial importante (si no, no aparecería en todas las estanterías, la
publicidad la harían los lectores lentamente, como ya se venía haciendo, y la distribución sería
incluso más limitada pese al recurso a los baratos servicios de reprografía por parte de los
usuarios).
El Universo Digital en Internet.
Mi decisión final ya la había acariciado con anterioridad. Algo había que hacer, pues la
distribución gratuita del libro llevaba mucho tiempo.
Uno de los motivos que han terminado empujándome a esta decisión, ha sido la
considerable cantidad de pedidos que hemos recibido desde países de hispanoamérica. Se trata de
ciudadanos que conocen el índice del libro a través del Web y lo piden, sobre todo desde México.
Sin embargo, sólo en la primera ocasión lo he enviado (a Perú); los motivos son,
desgraciadamente, la práctica imposibilidad de comerciar a pequeña escala con esos países (no
existe el envío contrarreembolso, por ejemplo); las enormes demoras del envío por superficie (el
coste del envío aéreo supera el del propio libro) y las complicadas gestiones de pago e injustas
comisiones bancarias (aunque las pague el usuario final); finalmente habría que añadir incluso mi
temor inconsciente a un aumento incontrolado de la demanda, cuando ya había demasiado trabajo
que hacer para atender la de origen nacional (en mi memoria estaba lo que ocurrió cuando
empezaron a aparecer mensajes y comenzaron a recibirse pedidos por FidoNET). Pido desde aquí
disculpas a todos los que lo han solicitado desde fuera de España, mayores además si no he
contestado el E-Mail por no haber tomado aún una decisión al respecto.
El Universo Digital de dominio público en formato electrónico, podrá ser accedido desde
cualquier lugar del mundo, y en cualquier CD de los kioscos.
El inconveniente es que no todos tienen igual acceso a estas redes y medios, aunque ese
inconveniente disminuirá exponencialmente con el tiempo (con el mismo exponente con que
crezca la red).
Fin de la distribución impresa.
Naturalmente, una vez que he renunciado a mis derechos sobre el libro, donándolo al
dominio público, ya no estoy obligado a venderlo impreso (medida tomada únicamente para
mantener el copyright). Realmente, no tenemos tiempo ni medios para atender la demanda actual:
aunque es una medida dura de imponer, lamento renunciar a realizar más envíos de ejemplares
impresos. Renuncio con ello a facilitar su difusión a los lectores menos introducidos en las redes
telemáticas, pero beneficio a otros muchos, que además podrán seguir usando la versión
manuscrita utilizando una impresora.
Por otro lado, haber facturado sólo aproximadamente el coste de impresión y distribución,
me permiten tomar esa decisión sin temer el enfado de quienes lo habían comprado. El coste de
impresión de los últimos números en la reprografía oficial de la Universidad (rechazamos opciones
más baratas de menor calidad), encuadernación y disquete era de 1900 pts. El libro (realmente,
apuntes técnicos fotocopiados) se vendía a 2100 pts más gastos de envío. Ese margen de beneficios
era más bien de maniobra, ya que por ejemplo, en los ejemplares que no llegaban a su destino,
el coste del envío y la devolución lo pagábamos nosotros. Cada envío llevaba una media de 20
minutos de tiempo total de mano de obra, contabilizando la preparación de los libros (transporte
físico, disquete, gestión del pedido...), y la mayoría eran de una sola unidad (pese a que se
penalizaba su envío con 100 pts adicionales). El precio de los más de 1200 Universos Digitales
vendidos ha tenido un crecimiento nominal cero en los cinco años de difusión impresa.
Obtención de ejemplares impresos.
Aunque en general no se harán más envíos, la única excepción corresponderá a los pedidos
realizados desde bibliotecas (universitarias o no universitarias), que tal vez no tengan la impresora
adecuada o tiempo para reproducirlo, lo que perjudicaría a un amplio conjunto potencial de
usuarios. No se harán envíos a otras organizaciones, ni a librerías o a particulares. Subrayamos
que El Universo Digital impreso tiene el carácter legal de apuntes técnicos impresos y no de libro.
Los pedidos de ejemplares impresos serán admitidos sólo desde España. Habrán de
realizarse exclusivamente por carta impresa, que deberá estar compulsada por el sello y en su caso
papel oficial de la biblioteca que hace el pedido, además de debidamente firmada por quien
corresponda. Es conveniente que figure el teléfono de la biblioteca o en su defecto de la
conserjería del centro. Además del nombre completo, dirección y NIF. Nos reservamos el derecho
de rechazar aquellos pedidos que no cumplan alguno de estos requisitos, o los de sospechosa
procedencia. La dirección es: Grupo Universitario de Informática. Apartado 6062. 47080
Valladolid. El precio por ejemplar será el que figure en la factura que realizará el propio servicio
de reprografía (unas 2000 pts/unidad); sumando al final el coste exacto del envío y los disquetes.
Agradecimientos.
Agradezco desde aquí al servicio de Reprografía de la Universidad, ubicado en la Casa del
Estudiante, el esmero puesto durante tanto tiempo en la reproducción y encuadernación de cada
número durante la etapa impresa. Cualquier pequeño problema de calidad se ha debido siempre
a los fallos inevitables que en ocasiones presenta toda máquina, por buena que sea.
Mis agradecimientos también a las diversas instituciones de la Universidad de Valladolid,
que han recibido en ocasión la presión de la demanda a través de incorrectas llamadas telefónicas
solicitando el libro, no siendo ellos los encargados de su distribución; también al Grupo
Universitario de Informática, por su colaboración a todos los niveles.
No puedo decir lo mismo de los funcionarios de Correos: aunque algunos son amables,
en general, el funcionamiento de esa institución es el que cabía esperar de un monopolio no
sometido a la libre competencia en envíos postales ordinarios (y que, por tanto, no tiene la
obligación de tratar bien a sus clientes, porque también volverán mañana). El trato que reciben
los clientes no se diferencia mucho del de los paquetes, y estos son muy expresivos en ocasiones
al llegar al destino. Por otro lado, la cantidad de papeles que hay que rellenar en cada envío, y
algunas normas de la empresa (como el plomo adherido a los paquetes postales) no se han
simplificado desde finales del siglo XIX. Tampoco es comprensible que sólo Argentaria sea aún
la única entidad financiera con el privilegio de gestionar las denominadas Cuentas Corrientes
Postales. Además de que el servicio de correos es caro en la realidad (esto es, cuando se incluye lo
que pagamos en impuestos para cubrir las pérdidas de la compañía) se mantiene el viejo vicio de
indexar las tarifas anuales (aumento del 8% en 1997, cuando hay un 2% de inflación nacional).
Sin embargo, he de reconocer que la fiabilidad de Correos (entendida en cuanto a paquetes
que llegan a su destino o en su defecto vuelven por motivo de dirección incorrecta) es próxima
al 100%: los envíos no suelen perderse, al menos los de los reembolsos. En puntualidad, aunque
hay extremos de gran aleatoriedad (desde paquetes que llegan en tres días a un pueblo perdido en
la otra punta del país, a los que tardan quince en ir de Valladolid a Madrid) el tiempo promedio
podría aproximarse, aunque por debajo, a lo que afirma la empresa.
Ciriaco García de Celis
Valladolid, Noviembre de 1997
DE LA TERCERA EDICIÓN (1994)
Ha pasado un año desde la publicación de la primera edición de esta obra. Desde entonces,
ha continuado la expansión de los interfaces gráficos de usuario y los sistemas operativos
avanzados para PC. Sin embargo, pese a que la programación continúa alejándose cada vez más
del bajo nivel de las máquinas, los programadores de sistemas en el entorno del PC siguen
existiendo y son muchos más que los que trabajan para las empresas punteras en el desarrollo de
los sistemas operativos. Los ordenadores compatibles poseen numerosas aplicaciones en el campo
industrial, para las que es conveniente un conocimiento elevado del funcionamiento interno del
ordenador en general y del MS-DOS en particular. Para aquellas personas que necesitan
comprender el funcionamiento de un ordenador, las máquinas compatibles constituyen una
interesante oportunidad y punto de partida. Este libro pretende cubrir una importante laguna en
la bibliografía disponible actualmente sobre la programación a nivel de sistemas de los ordenadores
compatibles.
Respecto a la primera edición, se han incrementado los contenidos en una proporción
equivalente al 20% de lo que ya existía, corrigiéndose además algunos errores. Aunque el libro
comience con una introducción a la aritmética binaria que pueda indicar todo lo contrario, se
presupone que el lector tiene unos mínimos conocimientos de informática, al menos un dominio
básico del sistema operativo MS-DOS, siendo más que recomendable conocer algún lenguaje de
programación. Seguidamente se explica el lenguaje ensamblador de la serie 80x86 de Intel
separando claramente las instrucciones de los diversos procesadores, aunque dejando de lado
algunas instrucciones del 286 y 386 que se salen del entorno MS-DOS. También se describe la
sintaxis del lenguaje ensamblador; sin embargo, aunque este último aspecto está extensamente
documentado, los lectores que no conozcan el lenguaje ensamblador de ningún microprocesador
habrán de trabajar considerablemente leyendo multitud de listados hasta adquirir la soltura
necesaria y, sobre todo, creando los suyos propios. Aunque sería conveniente describir el lenguaje
C, íntimo aliado del ensamblador en la programación de sistemas, ello se deja por razones de
espacio para otras publicaciones.
El libro describe con profundidad la arquitectura de los ordenadores compatibles, de
manera especial en lo referente a la organización interna de la memoria (actualizada hasta el
MS-DOS 6.0 y el DR-DOS 6.0), los discos y el teclado. El apartado de los gráficos se repasa sólo
superficialmente, ya que por sí solo necesitaría de un buen libro más grueso que este. Se dan pistas
sobre la manera de conmutar los modos de vídeo sin alterar el contenido de la pantalla, aspecto
que resulta de especial interés para los programas residentes.
Las memorias extendida XMS y expandida EMS son descritas con cierto detenimiento,
dada su presencia en todos los ordenadores modernos y su importancia.
Existen apéndices que describen todas las funciones del DOS, de la BIOS y del sistema
usadas en las rutinas y programas desarrollados, así como la totalidad de las funciones XMS y
EMS. Sin embargo, no están ni muchísimo menos todas las interrupciones necesarias, por lo que
se insta al lector a conseguir el impresionante fichero de dominio público INTERRUPT.LST,
complemento ideal de este libro (ver bibliografía).
Los programas residentes reciben un tratamiento especialmente profundo: desde los
métodos más eficientes para que detecten su propia presencia en memoria, a las técnicas más
avanzadas para economizar memoria, pasando por el uso de funciones del DOS de manera
concurrente al programa principal, así como técnicas de empleo de memoria extendida y superior
para conseguir programas que usen 0 Kb dentro de los primeros 640 Kb de la máquina y todo ello
sin olvidar la convivencia con los actuales entornos operativos, como Windows, y la posibilidad
de ser activados desde pantallas gráficas.
Este libro también trata los controladores de dispositivo o device drivers, desde los dos
posibles enfoques de su uso: bien sea la creación de controladores de dispositivo de caracteres, bien
la de nuevas unidades de disco añadidas a las del sistema; en ambos casos se incluyen ejemplos
reales de controladores completos y comprobados, en particular el ejemplo de disco virtual: un
completo ejemplo de controlador redimensionable que soporta memoria convencional, XMS y
EMS.
Existe un capítulo muy próximo al hardware en el que se describen a fondo y sin
omisiones todos los chips del ordenador, para permitir al programador de sistemas un control
completo del equipo. Para asimilar este capítulo hace falta cierta formación previa en los sistemas
digitales; sin embargo, los ejemplos que siguen a la información técnica aclaran las explicaciones
previas y pueden ser aprovechados de manera inmediata incluso sin entender todo lo anterior. Los
chips de apoyo al microprocesador son descritos de manera total: primero, no relacionados con
el PC sino como tales circuitos; después integrándolos en el ordenador y documentando
profusamente su uso, con ejemplos probados. Se consideran el interfaz de periféricos 8255 (útil
para averiguar la configuración de los PC/XT), el temporizador 8253/8254 (para temporización
y síntesis de sonido), el controlador de interrupciones 8259, el controlador de DMA 8237 (para
acceso a disco), el controlador de disquetes 765 (acceso directo a los sectores), la controladora de
disco duro de los AT (IDE, MFM ó Bus Local); el controlador del teclado del AT (8042); el
UART 8250 (empleado en las comunicaciones serie) y el reloj de tiempo real MC146818
(configuración de AT y programación de alarmas y temporizaciones). Los ejemplos en este
capítulo experimentan una importante potenciación respecto a la edición anterior; en particular,
en lo relacionado con el controlador de disquetes se puede considerar que la información vertida
es prácticamente casi toda la existente, existiendo pautas suficientes para que el lector cree sus
propios programas copiones, protecciones de disco, formatos de alta capacidad, etc.
Existen también capítulos que describen el funcionamiento y programación de la
impresora; sin entrar en aspectos particulares relativos a los modelos de las diversas marcas, sí se
suministra información común a todas. También se comenta en un capítulo el funcionamiento
al más bajo nivel del ratón, aspecto que habitualmente no suele ser considerado.
Dada la importancia del lenguaje C en la programación en general y en la programación
de sistemas en particular, tanto en la actualidad como durante los próximos años, se incluye un
capítulo que describe la manera de comunicar el ensamblador con el lenguaje C, con objeto de
superar las limitaciones de este lenguaje en los puntos críticos de la programación de sistemas. Este
capítulo requiere un dominio elemental del lenguaje C por parte del lector, aunque probablemente
sólo sea útil para aquellos que lo conocen más o menos.
Resumiendo, el libro pretende reunir en una sola obra la mayoría de la información
necesaria para el programador de sistemas, exponiendo toda la información y no sólo lo
imprescindible, sin olvidos ni omisiones; también se pretende explicar las técnicas más avanzadas
de creación de programas residentes. Este afán de información completa es el responsable del
título del libro.
Todos los listados de ejemplo se suponen de dominio público y las rutinas pueden ser
incluidas por los lectores libremente en sus propios programas, aunque en el caso de los programas
completos debe citarse la procedencia y dejar bien claro en las versiones modificadas quién las ha
alterado. En todo caso, pese a que todas las rutinas y programas han sido probados debidamente
en un 8088, un 286, un 386 o un 486 -bajo varios sistemas operativos y con diferentes
configuraciones del hardware- el autor del libro no se responsabiliza de su correcto
funcionamiento en todas las circunstancias.