Guía ultra-rapida de MAXAM

Programando el Amstrad en Ensamblador.
Reglas del Foro
Debido a que hay varios temas pidiendo ayuda para programar en ensamblador máquinas distintas al Amstrad CPC, con micro distinto al Z80 y que incluso dependen del sistema operativo, nos vemos en la necesidad de poner por escrito que estos posts son bienvenidos pero que no es el lugar adecuado ya que por estos lares nos dedicamos más al ensamblador del Z80, un microprocesador de 8 bits que tuvo su gran auge en ordenadores y consolas de los años 80.

De todas formas, esto no quita que alguien que sepa del asunto pueda postear alguna respuesta pero es más fácil encontrar foros dedicados a programar en ensamblador en Windows o MS-DOS que ayudarán más que nosotros:
http://www.lawebdelprogramador.com/news ... nsamblador
Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Guía ultra-rapida de MAXAM

Mensajepor Artaburu » Mié 07 Jun , 2006 10:25 am

Guía Ultra-Rápida para el uso del Maxam
(Esta guía está basada en el maxam 1.14, versión disco)

1.Entrada en maxam
Run”disc
|m (si es versión ROM y está instalada no hay que hacer run”disc)

2.Editar texto.
T: Entra en el menú del editor
_Dentro del editor de texto_
E: Editar texto.
Como ejemplo escribimos lo siguiente:
org &4000
ld a, 10
add a
ret

para salir del modo de edición pulsamos ESCape y volvemos al menú de editor.

3. Ensamblando.
En el menú editor de texto: A: Ensamblar. Si todo va bien nos mostrará la información de cómo va quedando nuestro programa en memoria:

ARNOR Z80 ASSEMBLER ver 1.14

0001 4000 (4000) org &4000
0002 4000 3E 0A ld a,0
0003 4002 87 add a
0004 4003 C9 ret

Errors: 0000 Warnings: 0000

La primera columna indica la línea del código, la segunda la posición de memoria, la tercera los bytes ensamblados de la 4 columna.

Volvemos al menú pulsado INTRO

Como no ha habido errores podemos ejecutar el código, pulsamos J y nos pregunta la dirección de memoria inicial, en nuestro caso es &4000.
Execution Adress: 4000 (INTRO)
y vemos que no ocurre nada que veamos, pulsamos intro otra vez y volvemos al menú. El código se ha ejecutado.

Podemos salvar nuestro código fuente: S, nos pide el nombre del archivo. Luego lo podremos recuperar con L.

4. Guardando el binario
Para guardar el archivo ensamblado volvemos a Basic y escribimos:
save”nombre”,B,&4000,4
donde &4000 es la dirección de inicio de nuestro programa y 4 el número de bytes de nuestro programa.
Otra forma de hacerlo es metiendo Write “nombre” en el código fuente. El ensamblador ensamblará a memoria y lo pasará a disco:
org &4000
write “nombre”
ld a, 10
add a
ret
Adjuntos
Maxam 1.14.rar
(23.06 KiB) Descargado 636 veces
Última edición por Artaburu el Lun 05 Mar , 2007 4:16 pm, editado 1 vez en total.
Salu2,
Arta

theblood
Lechoncillo
Lechoncillo
Mensajes: 23
Registrado: Jue 25 May , 2006 7:08 pm

Mensajepor theblood » Mié 07 Jun , 2006 1:07 pm

Gracias por esta mini guia del MAXAM, aunque la verdad resulta muy util.
Por cierto, como se calcula el numero de bytes? supongo que será una pregunta tonta, pero imagino que habrá funciones que ocupen mas de un byte, no?

Gracias por todo.

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Mensajepor Artaburu » Mié 07 Jun , 2006 1:24 pm

Resta la última posición del ensamblado a la primera y súmale uno (porque hay que coger todos los bytes). En el ejemplo &4003-&4000 + 1 = 4 bytes
Salu2,
Arta

theblood
Lechoncillo
Lechoncillo
Mensajes: 23
Registrado: Jue 25 May , 2006 7:08 pm

Mensajepor theblood » Mié 07 Jun , 2006 1:36 pm

Gracias Artaburu por la ayuda. Esta tarde me pondré ha hacer pruebas y ha hacer los ejercicios propuestos, a ver que tal se dan, aunque por lo que veo, pronto tendreis que proponer otros... jejeje.


Un saludo.

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Mensajepor Artaburu » Mié 07 Jun , 2006 2:52 pm

Bueeeeno, mejor si hay que poner más, eso significa que hay interés. Pero poco a poco, que el ejercicio actual da mucho juego porque se pueden aplicar varias cosillas.
Salu2,
Arta

NapalMSX
Lechoncillo
Lechoncillo
Mensajes: 11
Registrado: Mar 24 Abr , 2007 1:05 pm

Mensajepor NapalMSX » Mar 24 Abr , 2007 11:10 pm

Por cierto, a la hora de cargar un bin de disco, ¿soy el unico que ha de poner "memory &1FFF" antes del call para que funcione?

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Mensajepor Artaburu » Mié 25 Abr , 2007 6:51 am

Puedes haber guardado el bin con save"xxxd",b,&4000,&3500,&4100 y entonces no hace falta. Al hacer run"xxxd se cara en la posicion &4000 y se ejecuta desde la &4100
Salu2,
Arta

droman
Lechoncillo
Lechoncillo
Mensajes: 12
Registrado: Vie 23 Oct , 2015 6:59 pm

Re: Guía ultra-rapida de MAXAM

Mensajepor droman » Mar 27 Oct , 2015 8:12 am

De antemano pido perdón por levantar este post del 2007... pero acabo de empezar con el CPC y el ensamblador y tengo una duda a la hora de cargar mis binarios...

El compañero Artaburu indica que para cargar se puede hacer lo siguiente:

Código: Seleccionar todo

save"xxxd",b,&4000,&3500,&4100
Pero no entiendo de donde sale ese &3500...

Pensaba que era de esta manera:

Código: Seleccionar todo

Save "nombre",b(inario),direccion de inicio, longitud en bytes.

Otro problema que tengo es que cuando lo cargo desde mi programa en Basic, hago esto

Código: Seleccionar todo

Load "nombre.bin" o Load "nombre.bin",&4000

Y siempre obtengo el mensaje de memory full.

¿Que estoy haciendo mal? (Toy Confuso) XD

Avatar de Usuario
MiguelSky
Lord of Short Time
Lord of Short Time
Mensajes: 6969
Registrado: Sab 08 Oct , 2005 2:02 am
Contactar:

Re: Guía ultra-rapida de MAXAM

Mensajepor MiguelSky » Mar 27 Oct , 2015 9:12 am

No te preocupes por el reflote, para eso están lo hilos, para aunar las distintas dudas. Así disponemos de las distintas dudas todas juntas.

Código: Seleccionar todo

save"xxxd",b,&4000,&3500,&4100
Pero no entiendo de donde sale ese &3500...

Pensaba que era de esta manera:

Código: Seleccionar todo

Save "nombre",b(inario),dirección de inicio, longitud en bytes.
El último parámetro es la dirección de entrada, que es opcional (sino, la de entrada por defecto es la de inicio). La sintaxis completa es

Código: Seleccionar todo

SAVE "nombre",b(inario),dirección de inicio, longitud en bytes, dirección de ejecución
Otro problema que tengo es que cuando lo cargo desde mi programa en Basic, hago esto

Código: Seleccionar todo

Load "nombre.bin" o Load "nombre.bin",&4000
Y siempre obtengo el mensaje de memory full.
Necesitas reducir el espacio reservado al BASIC mediante la instrucción MEMORY, si no lo haces, dispondría de toda la memoria disponible. Para tu programa valdría con MEMORY &3FFF (ponemos el tope de nuestro programa en BASIC 1 byte por debajo de donde empieza tu programa en binario, pudiendo así convivir ambos en memoria.

droman
Lechoncillo
Lechoncillo
Mensajes: 12
Registrado: Vie 23 Oct , 2015 6:59 pm

Re: Guía ultra-rapida de MAXAM

Mensajepor droman » Mar 27 Oct , 2015 1:28 pm

Muchas gracias por tu respuesta MiguelSky =D>

Funciona perfectamente, el caso es que llevo viendo cargadores casi toda la mañana y raro es el que no lleva esa instrucción casi al principio :D

Voy a ver si leo más :)
Última edición por droman el Mar 27 Oct , 2015 1:36 pm, editado 1 vez en total.

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Guía ultra-rapida de MAXAM

Mensajepor Artaburu » Mar 27 Oct , 2015 1:35 pm

Muchas gracias por tu respuesta MiguelSky =D>

Funciona perfectamente, el caso es que llevo viendo cargadores casi toda la mañana y raro es el que no lleva esa instrucción casi al principio :D

Voy a ver si leo más :)


Por cierto?.... Ya está? Todos los ejercicios de Ensamblador son sumar y restar números?? Se me va a hacer muy corto XD
No había mucho alumno en el curso así que se suspendió. Pero tu avanza y pregunta lo que necesites y te echaremos una mano.
Salu2,
Arta

droman
Lechoncillo
Lechoncillo
Mensajes: 12
Registrado: Vie 23 Oct , 2015 6:59 pm

Re: Guía ultra-rapida de MAXAM

Mensajepor droman » Mar 27 Oct , 2015 2:04 pm

Gracias por la aclaración :)

Que conste que edité el mensaje anterior para que no apareciera lo del curso en un post que no tiene nada que ver con el post sobre ejercicios en ensamblador :)

Si no se me retuerce nada en la cabeza es probable que siga dando guerra, tengo muchas ganas de aprender a programar para este sistema que he tardado 30 años en tener :)

Avatar de Usuario
Artaburu
Trasteador
Trasteador
Mensajes: 8419
Registrado: Vie 07 Oct , 2005 6:18 pm
Ubicación: En tu pantalla

Re: Guía ultra-rapida de MAXAM

Mensajepor Artaburu » Mar 27 Oct , 2015 4:48 pm

Pues ánimo y adelante!
El ensamblador es un poco arduo al principio pero enseguida vas viendo progresos y es muy reconfortante.
En la revista RUA creo que hicimos algo de ensamblador también. Si no me equivoco era ejemplo explicado de pelota que rebota. Igual también te ayuda.
Salu2,
Arta

Avatar de Usuario
Fran123
Me voy lanzando
Me voy lanzando
Mensajes: 74
Registrado: Lun 24 Feb , 2020 2:44 pm

Re: Guía ultra-rapida de MAXAM

Mensajepor Fran123 » Mar 25 Feb , 2020 8:07 am

Hola

Tengo un programa (de prueba) que pone todos los píxiles en amarillo. Cuando termina la ejecución del programa se reinicia el ordenador.
Si cambio RET por HALT, se reinicia a las 2 ó 3 segundos.

Con el programa que proponen más arriba también se reinicia el ordenador.

trocoloco
Megaforero
Megaforero
Mensajes: 335
Registrado: Lun 16 Abr , 2007 11:02 am

Re: Guía ultra-rapida de MAXAM

Mensajepor trocoloco » Mar 25 Feb , 2020 5:01 pm

Bueno en principio con RET debería simplemente salir a basic una vez hecho acabado el programa.
¿Puedes pegar el código? Yo voy cortito de ensamblador pero bueno a ver si te puedo echar una mano


¿Quién está conectado?

Usuarios navegando por este Foro: Ahrefs [Bot]


La Comunidad Española
ESP Soft, juegos para tu CPC Foro de Amstrad CPC Todos los juegos para CPC en un CD Web dedicada al Amstrad CPC (utilidades) Información útil para el CPC (talleres) Selección de juegos de Amstrad CPC Mundo CPC Pree Play then any Key CPC Basic