|
|
|||||||||
| El Amiga Me Encanta ha conseguido el permiso por escrito de IDG Comunications España para ofrecer los artículos de la revista Amiga World España. |
Es por esto por lo que un programa creado para Amiga no podrá funcionar en un Atari ST o Macintosh (salvo efectuando varias modificaciones) aunque estos también tengan el procesador 68000. Por lo tanto el siguiente paso que daremos en "Los cuadernos del Ensamblador" será conocer las direcciones importantes del Amiga, así como las funciones de las mismas. También aprovecharemos para desarrollar los primeros programas en este lenguaje. Antes de comenzar estudiaremos las posiciones de memoria (Bancos) ocupados por la RAM en su configuración base, esta cambiará dependiendo de las ampliaciones que posea su equipo (me refiero a las ampliaciones de tipo RAM y tarjetas como pueden ser la Aceleradora o la BridgeBoard (1)). También veremos las posiciones de memoria utilizadas por los Custom Chips, así como las dos CIAs encargadas de controlar los perifericos soportados por el Amiga (Teclado, unidades de disco, ratón, Joystick...). Con algunos de estos 'periféricos' nos detendremos a ver su funcionamiento, ya que el control de estos es especialmente interesante en cualquier tipo de programa (como por ejemplo la lectura del teclado prescindiendo de las funciones del sistema).
|
MAPA DE MEMORIA
|
Como habrán observado, en el esquema de memoria, algunos de los bloques se encuentran marcados como 'Reservada'. De igual forma entre las direcciones $FC0000 y $FFFFFF (recuerde que se trata de valores en Hexadecimal) se encuentran las funciones de la ROM. En cualquiera de los dos casos no se debe intentar 'machacar' dichas posiciones de memoria; en el caso de los bloques que comprenden las CIAs ocurre lo mismo, así como el espacio Autoconfig para tarjetas.
Los únicos bloques de memoria con los cuales se pueden realizar 'experimentos' de escritura directa son los propios de RAM (CHIP o FAST), aunque se deba tener cuidado de no machacar nada importante como programas que en ese momento se encuentren ejecutándose o datos que el sistema almacena en dichas posiciones de memoria ubicadas en RAM.
En cualquiera de los casos no intente demasiadas veces acceder directamente a memoria; en su ordenador puede no pasar nada, pero en el momento que intente ejecutar el mismo programa en otro ordenador con distinta configuración, lo más seguro es que tenga que acabar 'reseteando' (arrancar en caliente) el mismo.
Sin lugar a dudas la forma más eficaz de tratar la memoria, sin correr riesgos, es utilizando las funciones del sistema encargadas de informarnos sobre los bloques de memoria que se encuentran libres; dichas funciones se están publicando actualmente en la serie de artículos 'las librerías del Amiga' y, desde luego, se utilizarán en más de una ocasión para los programas que se realicen en este cursillo.
Desde luego no todos los programadores utilizan el mismo MacroEnsamblador. Actualmente existe en el mercado un amplio número de MacroEnsambladores donde poder elegir, cada uno de ellos con distintas posibilidades, más rápidos, más sencillos; en definitiva: más o menos potentes.
|
En este cursillo se utilizará, como se comentó en un principio, el DevPac 2. El motivo es muy sencillo, al igual que el resto de los usuarios, también tengo mis predilecciones por uno u otro programa. De todas formas a continuación comentaremos las similitudes entre este y otros MacroEnsambladores utilizados mayoritariamente. También veremos las correspondencias en algunas de las funciones para de esta forma 'compatibilizar' los listados que se publiquen entre la mayoría de los 'Macro' posibles.
El DevPac 2, es una versión mejorada del programa con el mismo nombre desarrollado por HISOFT. Este se puede definir como un paquete de ayuda al programador; ya que en un mismo conjunto nos podemos encontrar con un Editor, un Ensamblador, un Linkador (en este caso de Dominio público) y un Debuger, así como un completo manual de referencia en el uso de estos cuatro programas.
El editor del DevPac2 no es uno de los mejores que se pueden encontrar en el mercado, ya que entre sus características destaca su lentitud. Este editor también carece de la típica barra de scroll, con la cual desplazarse a lo largo del texto; con lo cual esta operación resulta bastante lenta, así como también carece de la posibilidad de definir macros y otras ayudas de edición. En el aspecto positivo se puede encontrar el fácil acceso tanto al Ensamblador como al Debuger, mediante dos de las opciones incluidas en el menú del editor; así como la posibilidad de poder ejecutar el programa ensamblador, con retorno al editor una vez finalizada la ejecución de este.
|
|
|
Entre las funciones que si ofrece el editor, se encuentra la de saltar a una línea en concreto del texto, buscar y reemplazar, marcar bloques y operar con estos, etc. Una opción interesante incorporada en el menú pull-down es la definición de configuración, mediante la cual se puede seleccionar la realización de backups del listado, tamaño del buffer de texto, posibilidades de redimensionar la ventana, así como otras.
Como se comentó anteriormente, se puede acceder al Ensamblador mediante la opción incluida en el Editor, aunque a este también se puede acceder mediante una llamada desde el CLI.
El Ensamblador incluido en DevPac2 es muy completo, soprotando todo el set de instrucciones incluidas en el 68000; así como el ensamblado de MACROS definidas por el usuario.
La definición de Macros resulta una función muy interesante a la hora de programar en Ensamblador, ya que mediante estas se consigue una mayor estructura del programa, así como una reducción en el esfuerzo realizado por el programador.
La velocidad del Ensamblador es bastante rápida, dependiendo también del tamaño del listado a ensamblar, así como la cantidad de 'includes' realizados.
Entre las opciones con las que cuenta el Ensamblador se encuentran las de generar el programa ejecutable o linkable, así como la de sacar el listado por pantalla, impresora o a disco. El programa resultante puede ser almacenado tanto en memoria como en disco, así como no salvar este. Esta última posibilidad es especialmente interesante si solamente se desea comprobar los errores del listado.
Sin lugar a dudas |
En la definición de etiquetas no hay apenas restricciones. Salvo unas cuantas, de uso interno del programa, se pueden definir etiquetas de todo tipo; incluyendo la posibilidad de que se diferencien las etiquetas en caja baja o alta. Otra de las funciones de gran ayuda es la función REPT, mediante la cual se pueden realizar lazos o REPeticiones con extrema sencillez.
Las opciones de ensamblado que contiene el programa son entre otras las de expansión de macros, optimización en los direccionamientos y creación de la tabla de símbolos, etc.
La primordial función del Linkador es la de unión entre diversos 'trozos' de programa para la formación del programa total ejecutable; así como la realización de un programa ejecutable a partir de uno ensamblado. Su manejo es similar al Alink (Linkador del MacroAssem), siendo cómodo y funcional.
Al igual que el Ensamblador, el Debuger puede ser ejecutado de dos formas, una desde la opción incluida en el Editor, y la segunda desde la llamada de este desde el CLI. El Debuger es un programa muy apreciado por los programadores, ya que con la ayuda de este se pueden determinar los errores de un programa con la ejecución paso a paso.
El Debuger incluido en DevPac puede resultar un poco complicado al principio, ya que el acceso a las diferentes opciones no se realiza mediante la selección de estas en los menús Pull-Down (de los cuales carece), sino que se accede a ellas mediante diferentes comandos o sentencias tecleadas en la 'caja de diálogo'.
El Debuger se encuentra estructurado en tres ventanas, las cuales muestran las diferentes divisiones del programa a repasar. Dichas divisiones son las de registros, desensamblado, memoria y desensamblar memoria o código.
Al igual que otros Debugers existentes (y tal vez más prácticos), se puede definir diversos puntos de parada a lo largo del programa; consiguiendo de esta forma que sólo se ejecute el programa hasta un punto determinado.
| Envía esta página web a un amigo: Esta opción está desactivada temporalmente, rogamos disculpen las molestias |
|