DISARM, desensamblador para CPC

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
Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

DISARM, desensamblador para CPC

Mensajepor Meta » Sab 01 Oct , 2022 6:17 pm

Muy buenas,

Me estoy currando un ensamblador para el CPC (que quizá algún día acabe) y os traigo una parte del programa que he decidido convertir en una pequeña utilidad en ROM, y quiero compartir con todos vosotros y el sitio de Amstrad ESP.

Lo único que hace es sacar por pantalla las instrucciones de memoria, incluidas no documentadas. Creo que puede ser útil para combinar con el BASIC, pokes, etc...lo que haría cualquier desensamblador vamos,.. :lamo: pero quizá el atractivo puede estar en su sencillez. No hay menús, ni cargas, nada más que un comando: |ORG,dirección

Lista, pausa, reanuda y vuelve al basic, no hay más de momento. El listado no tiene fin, cuando supere toda la memoria volverá al principio de nuevo y se debe usar la tecla ESC un par de veces para salir.

Espero que os guste, para cualquier sugerencia, duda, bug, etc, por favor, házmelo saber en este mismo hilo.
Gracias.
Adjuntos
DISARM13.rar
DISARM 1.3b
(29.89 KiB) Descargado 9 veces
Última edición por Meta el Dom 10 Dic , 2023 9:19 am, editado 1 vez en total.

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: DISARM, desensamblador para CPC

Mensajepor Urusergi » Dom 02 Oct , 2022 2:37 pm

Vaya sorpresón! :shock: está muy chulo el programa, enhorabuena =D> me recuerda a cuando yo usaba en aquellos tiempos el desensamblador de J. Epalza, que le publicaron el listado en una ¿Amstrad User?. Ahora todos tiramos del debugger del winape :lamo:

Por cierto, estaría genial si hicieras un tutorial de cómo crear ROMs para los que no tenemos ni idea :oops:

Saludos.

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Dom 02 Oct , 2022 6:09 pm

Hola Urusergi,

Me alegro de que te guste el programilla, no es gran cosa la verdad, lo único que hace es indexar unas tablas y sacar el texto concatenado. Que por cierto, me vas a reñir, al final tanta historia con el txt_ouput y he dejado el programa sin las mejoras que hicimos el otro día, pero bueno, el caso es que funciona bastante bien creo yo, aunque se puede optimizar bastante por que el código viene de otra historia.

Hacer una ROM es muy fácil (desde winape y hasta donde yo sé), solo hay que tener un par de cosas en cuenta:
El winape hay que configurarlo para que escriba en el upper rom, poner una cabecera correctamente, una tabla de nombres de RSX con sus saltos y poco más. Luego hay más cosas que se pueden hacer, como parámetros especiales y tal, pero ahí no he profundizado mucho. La verdad es que sé lo básico para que funcione.

Dame un rato que te preparo un mini tutorial e investigamos el tema.

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Dom 09 Oct , 2022 12:01 pm

Buenas, dejo por aquí la versión 1.1 con algunas mejoras.

V1.1.0
  • añadida columna de caracteres.
  • eliminada búsqueda que calculaba la instrucción anterior a ORG y auto-completaba la siguiente.
  • actualizado cálculo de tamaño de las instrucciones extendidas; algunas instrucciones desconocidas ahora se muestran con 2 bytes de memoria en vez de 4.
  • añadida subrutina RST; la instrucción RST ahora se muestra con la dirección al vector en vez de número.
  • optimización general de subrutinas de operandos.
Bugs:
matrices, búferes y pilas del firmware no se muestran correctamente debido al uso de llamadas propias del sistema.Como por ejemplo la matriz UDG (#B736 en 6128), la pila temporal de las interrupciones (<#B8B3), búferes de teclado, etc.

Espero que sea útil, saludos
Adjuntos
DISARM11.rar
DISARM V1.1
(2.33 KiB) Descargado 30 veces

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: DISARM, desensamblador para CPC

Mensajepor Urusergi » Lun 10 Oct , 2022 4:41 pm

Sigue así, te está quedando de lujo 8)

También me gustaría hacer programas, pero, como ya me pasaba en aquellos años, no tenía imaginación y eso a pesar del nivelón de basic que gastaba por aquél entonces. Ahora parece que he aprendido algo de ensamblador pero sigo con el mismo problema :lol:

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Lun 10 Oct , 2022 10:33 pm

Gracias por los ánimos :)

Te tengo por alguien que domina el tema, estoy seguro de que cualquier cosa que te propongas eres capaz de hacerla.
Si quieres te pongo tareas, ya verás que rápido usas la imaginación.. :plane:

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: DISARM, desensamblador para CPC

Mensajepor Urusergi » Mar 11 Oct , 2022 10:06 pm

Si quieres te pongo tareas, ya verás que rápido usas la imaginación.. :plane:

No sé si recoger el guante, miedo me da. :lol:
Si necesitas optimizar código puedo echar una mano, que dicen por ahí que soy bueno en esa tarea :compress:

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Mié 12 Oct , 2022 1:00 am

Tranki que estoy de broma :) pero si me quedo en blanco ya te pediré ayuda. :notworthy:

Aunque, no será por cosas que se pueden hacer, aunque parezca que está todo inventado.

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Dom 25 Dic , 2022 11:55 am

Feliz navidad!!!

Traigo otra versión del desensamblador que soluciona el bug que me dejé en la versión anterior, donde los datos no se correspondían leyendo ciertas partes de la memoria que utiliza el firmware. La solución era sencilla, preservar los 4 bytes del puntero antes de hacer nada con el firmware (cosa que no tuve en cuenta en su día). Para ello, he cambiado bastante el programa, y de paso optimizar un poquito algunas subrutinas. Los datos de los búferes cambiarán igualmente pero al menos ahora las columnas se corresponden.

Iba a meter un traductor de instrucciones pero lo dejé hace algunas semanas, así que he dejado las listas de instrucciones que uso para tests en &C400, por si alguien quiere curiosear.

Que paséis un buen día!
Adjuntos
DISARM12.rar
DISARM V1.2
(5.24 KiB) Descargado 20 veces

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Dom 10 Dic , 2023 9:41 am

De nuevo por aquí

Subo una nueva versión con cosas que tenía pendientes y doy por concluida esta parte del desensamblador que deseo compartir. (La dejo en el primer post y borro la anterior que tenía errores).

V1.3.0 b
- Tabulación en el mnemónico y mayor espacio en la columna de operandos en detrimento del espacio de la columna de memoria. (necesario para las nuevas instruciones).
- Mejora de la notación de instrucciones de índice combinadas. De: LD B,RLC (IX+&xx) a LD A,SET 7,(IX+&xx) en vez de RLC (IX+&xx),B o SET 7,(IX+&xx),A etc. Lo mismo para el registro IY.
- Los registros de medio índice ahora se muestran en el listado como HX, LX, HY y LY, en vez de IXH, IXL, etc.

El código viene incluido por si quereis trastear, el programa es muy corto y asequible. Para ensamblar el programa se debe poner empty.rom en la slot 2 y ensamblar DISARM.ASM, despues hacer un cold reset en el winape y aparecerá la nueva inicialización en el emulador. Si la slot 2 estuviera ocupada se puede cambiar la linea del main:
WRITE DIRECT -1,2,#c0

De lo contrario, puedes añadir DISARM13.ROM con el programa ya ensamblado en cualquier slot (que no sea el basic, etc). Lo mismo para tu CPC si dispones de un medio para instalar roms.

Por el momento no hay mucho más, pero ya tengo bastante avanzada la otra parte del proyecto si hay interés. Para cualquier pregunta o sugerencia intentaré responder lo antes posible.
Un saludo y gracias por este espacio.
Adjuntos
Dibujo.JPG

Urusergi
Forum Addict
Forum Addict
Mensajes: 380
Registrado: Sab 25 Feb , 2006 5:45 pm

Re: DISARM, desensamblador para CPC

Mensajepor Urusergi » Dom 10 Dic , 2023 5:22 pm

=D> Naturalmente que hay interés en que saques todo el proyecto [-o<

Lo que me chirría un poco es el LD B,RLC (IX+&xx) y otros, que es cierto que es una representación exacta de lo que hace la instrucción, y aunque la clásica ha sido desde siempre RLC (IX+&xx),B yo, de largo, preferiría verlo así: RLC B,(IX+&xx)

Después de 36 años me siguen flipando los comandos RSX, hay que ver :oops:
Échale un ojo, si no lo has hecho ya, al CATRUN de NoRecess, para mi ya es fundamental.

Meta
Forero habitual
Forero habitual
Mensajes: 103
Registrado: Jue 04 Ene , 2018 9:36 am

Re: DISARM, desensamblador para CPC

Mensajepor Meta » Dom 10 Dic , 2023 7:28 pm

Estas instrucciones son dífíciles de manejar y muy raras de ver, a si que tampoco creo que sea muy relevante. A mi, la clásica, me chirriaba total, y esta aunque dice lo correcto es más larga y tediosa de escribir. La verdad, no se me habia ocurrido ponerla como dices pero quizá también le chirrie a más de uno. En winape es con LD (ensamblada)...y si lo dice el Richarld... aún así, ya me has dejado el token jodio ;)

La utilidad que mencionas tiene buena pinta, no la conocía, lo cierto es que las ROMS son una bendición para el Amstrad.


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro


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